Programiranje in algoritmi

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Programiranje in algoritmi"

Transcript

1 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Tržaška cesta 25, Ljubljana, Slovenija Petar VRAČAR Zoran BOSNIĆ Programiranje in algoritmi komplet prosojnic in gradivo za vaje 2009/10 dodatno študijsko gradivo Ljubljana, oktober 2010

2 Avtorja se zahvaljujeta prof. dr. Saši Divjaku in prof. dr. Marku Robniku Šikonji za njun prispevek pri nastanju tega učnega gradiva. VRAČAR, Petar Programiranje in algoritmi: komplet prosojnic in gradivo za vaje 2009/10 / Petar Vračar, Zoran Bosnić Ljubljana : Fakulteta za računalništvo in informatiko, Razmnoževanje dela v celoti ali po delih je brez predhodnega dovoljenja avtorja prepovedano.

3 NAMEN PREDMETA PA 1. Izpopolniti in utrditi znanje iz programiranja (predvsem rekurzije) 2. Naučiti se načrtovati algoritme in analizirati njihovo časovno zahtevnost 3. Podati osnovne abstraktne podatkovne tipe in operacije na njih 4. Spoznati osnovne operacije na dinamičnih podatkovnih strukturah: seznamih, drevesih in grafih

4 RAZVOJ PROGRAMOV

5 ORODJA Operacijski sistem Windows (seveda) LINUX (tudi) Na virtualnem računalniku (Virtual PC, VmWare) Primeren preprost urejevalnik besedila Notepad++ Razvojna orodja za Javo (C++, C#, C,...) Java JDK (in dokumentacija) Eclipse (za resno delo) NetBeans (tudi resno razvojno okolje) ZAGOVORI SEMINARSKIH NALOG: POTEKAJO NA PROGRAMSKI OPREMI, KI JE NA RAZPOLAGO V UČILNICI ALI NA VAŠIH PRENOSNIH RAČUNALNIKIH.

6 ORODJA ZAKAJ UPORABITI INTEGRIRANO RAZVOJNO ORODJE? ALL-IN-ONE: 1. urejevalnik (barvanje kode,...) 2. prevajalnik 3. razhroščevalnik (prekinitvene točke, sklad, spremenljivke, kontrola izvajanja,...) 4. dokumentacija (avtomatsko generiranje,...)

7 VRSTE PROGRAMSKIH NAPAK Sintaksne napake Neupoštevanje formata in strukture jezika, kar odkrije prevajalnik Napake med izvajanjem (run-time error) Povzročijo lahko izjemne dogodke Logične napake Program se normalno zaključi, rezultati pa so napačni

8 VRSTE PROGRAMSKIH NAPAK Napake med izvajanjem (run-time error) problemi z alokacijo pomnilnika uporaba kazalca z vrednostjo null, napačna uporaba velikih/malih črk, nepravilno izvajanje sočasnih dostopov, napačna uporaba indeksov polj, zamenjava prenosov po vrednosti/referenci, prirejanje (=) namesto primerjanja (==), neuspešno prekrivanje metod, dostop do nestatičnih spremenljivk iz statičnih metod

9 VRSTE PROGRAMSKIH NAPAK Logične napake Logične napake najtežje odkrijemo. Program se prevede pravilno, rezultati pa so napačni.

10 VRSTE PROGRAMSKIH NAPAK Logične napake Naslednja koda naj bi povzročila izpis 5 zvezdic, izpiše pa le eno. Zakaj? for(int i = 1; i <= 5; i++); System.out.print( * );

11 VRSTE PROGRAMSKIH NAPAK Sintaksne napake Neupoštevanje formata in strukture jezika, kar odkrije prevajalnik statična analiza! Napake med izvajanjem (run-time error) Povzročijo lahko izjemne dogodke preizkušanje! Logične napake Program se normalno zaključi, rezultati pa so napačni preizkušanje, razhroščevanje!

12 REŠEVANJE NAPAK 1. Statična analiza Statični programski analizatorji pregledajo kodo, ne da bi jo izvedli in ugotovijo: napake v sintaksi kodo, ki ni dosegljiva, nedeklarirane spremenljivke, neinicializirane spremenljivke, neujemanje tipov parametrov, neklicane funkcije in procedure, spremenljivke, ki jih uporabljamo pred inicializacijo, možne prekoračitve mej, napačno uporabo kazalcev.

13 REŠEVANJE NAPAK 2. Preizkušanje preskušanje programa na načrtovan in strukturiran način s ciljem, da probleme odkrijemo, koda, ki jo napišemo, običajno ni takoj pravilna, preskušanje lahko dokaže prisotnost hroščev, ne pa njihove odsotnosti, preizkusiti bi morali vse primere potekov programa, kar je v praksi lahko težko izvedljivo, izbrati moramo testne podatke, s katerimi bi našli večino napak v čim krajšem času.

14 REŠEVANJE NAPAK 3. Razhroščevanje (de-bugging) Tehnike: postopno opazovanje izvajanja programa, branje kode, izvajanje na papirju, diagrami poteka kode,... Dva pristopa: 1. uporaba vmesnih izpisnih stavkov, npr.: if (debug) printf( Pred vstopom v zanko );... // izpiši vrednosti spremenljivk if (debug) printf( Po izstopu iz zanke ); 2. uporaba razhroščevalnika prekinitvene točke (breakpoints) kontrola izvajanja opazovanje vrednosti spremenljivk pregled vsebine sklada

15 RAZHROŠČEVALNIK A) Kontrola izvajanja programa B) Vsebina sklada C) Prekinitvena točka D) Trenutna vrstica izvajanja E) Vrednosti lokalnih spremenljivk F) Organizacija vmesnika G) Način zagona (razhr./normalno)

16 PRAKTIČNO DELO 1. Demo: razhroščevanje programov 2. Poišči hrošče v treh programih: 1. kvadriranje števil Vrednosti funkcije x^2 na intervalu [0.1, 0.2] so: 0.11: : : : množenje matrik rezultat[2][4] = { { 27, 11, 10, 22,}, { 30, 13, 11, 26,}, } 3. iskanje naključnega števila Vrednosti 1999 ni v kupu sena. Vrednost 1999 se nahaja v senu[1955] Vrednost 1999 se nahaja v senu[1989] Vrednost 1999 se nahaja v senu[1997] Racunalnik je zmagal v 7 od 10 iger.

17 PROGRAMIRANJE IN ALGORITMI Dokumentiranje programa, vhod/izhod, optimizacija programske kode 3. laboratorijske vaje (del gradiva je povzet po prosojnicah prof. dr. Saše Divjaka)

18 DOKUMENTIRANJE PROGRAMOV

19 DOKUMENTIRANJE PROGRAMA Zakaj pišemo dokumentacijo? Vrste dokumentacije o za programerja, ki je kodo napisal o za programerja, ki kodo uporablja o za uporabnika aplikacije Java nudi avtomatski sistem dokumentacije, ki tvori za vsak razred datoteko HTML. To zagotavlja program javadoc.

20 SINTAKSA KOMENTARJEV JAVADOC Komentarji začnejo z /** in končajo z */ Te komentarje program javadoc pretvori v dokumentacijo HTML. Komentarje pišemo neposredno pred deklaracijo razreda, polja ali metode, ki jo opisujemo. Prvi stavek v vsakem komentarju mora biti povzetek. Temu pa lahko sledijo dodatne oznake, vsaka v svoji vrstici. dodatne oznake začenjajo

21 KOMENTIRANJE: RAZREDI IN VMESNIKI /** Povzetek razreda/vmesnika <p> Opis razreda/vmesnika v obliki HTML besedila oblikujemo kot Prvi Student, Drugi Student, MojVmesnik */ public class MojRazred implements MojVmesnik

22 KOMENTIRANJE METOD /** Povzetek metode/konstruktorja Opis delovanja v obliki HTML obj1 opis parametra opis rezultata Exception1 opis kdaj do izjeme ReturnType */ public ReturnType mymethod(type1 obj1) throws Exception1

23 KOMENTIRANJE LASTNOSTI /** Opis lastnosti x #getx() int x = 123; # ponazarja povezavo na metodo na isti strani public int getx() { }...

24 JAVADOC V OKOLJU ECLIPSE Project -> Generate Javadoc

25 PRIMER /** * Tole je naš <B>prvi</B> primer uporabe Javadoca. Zelo smo veseli, * da <font color="a312af"> namesto nas generira </font> dokumentacijo. * Zoran Bosnić, zoran.bosnic@fri.uni-lj.si Math.Random */ public class glavni { } /** * Glavni program, obrne podano število args število, ki naj se obrne #obrni(int) * */ public static void main(string[] args) { int stevilo; if (args.length==0) stevilo=100; else stevilo = Integer.parseInt(args[0]); double rezultat = obrni(stevilo); System.out.println(rezultat); } /** * To je naša metoda za izračun obratne vrednosti.. zbosnic stevilo Vrednost stevila, ki naj se obrne. Vrne <B>int</B> vrednost 1/stevilo (torej obratno vrednost) Integer */ public static double obrni(int stevilo) { return 1/(double)stevilo; }

26 PRIMER

27 VHOD in IZHOD

28 VHOD/IZHOD Tokovi (streams) omogočajo vhodno/izhodne operacije, in sicer skozi zaporedje znakov ali bajtov. Razrede za delo s tokovi ponuja zbirka java.io. Pojmi: standardni vhod in izhod, datoteke, omrežna vtičnica

29 InputStream FileInputStream binarni tokovi RandomAccessFile File java.io FilterInputStream BufferedInputStream DataInputStream ObjectInputStream Reader InputStreamReader FileReader BufferedReader znakovni tokovi OutputStream FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputStream Writer OutputStreamWriter FileWriter BufferedWriter PrintWriter Scanner java.util

30 BINARNI TOKOVI Prenašajo se bajti (type byte). Osnovna razreda: InputStream in OutputStream, oziroma za datoteke: FileInputStream in FileOutputStream (uporabljajo int read(byte[] b) in write(byte[] b)) PRIMER 1: kopiranje datotek import java.io.*; public class Kopiraj { } public static void main(string[] args) throws IOException { if(args.length < 2) { System.out.println("Uporaba: java Kopiraj <izvor> <ponor>"); System.exit(1); } InputStream vhod = new FileInputStream(args[0]); // odpremo prvo datoteko OutputStream izhod = new FileOutputStream(args[1]); // odpremo drugo datoteko int bajt; while( (bajt = vhod.read())!= -1 ) // beremo izvor izhod.write(bajt); // pišemo v ponor vhod.close(); // zapremo obe detoteki izhod.close(); }

31 BINARNI TOKOVI Pri delu z datotekami je koristna uporaba medpomnilnika, kar omogočata razreda BufferedInputStream in BufferedOutputStream. Za branje in pisanje podatkov določenega tipa (npr. int, double, ) sta namenjena DataInputStream in DataOutputStream (metode readboolean(), readbyte(), readchar(), readdouble(), readint() itd. in različice write). Ovijanje tokov: obstoječi tok podtaknemo konstruktorju drugega toka FileInputStream tok = new FileInputStream( podatki.dat ); BufferedInputStream med = new BufferedInputStream(tok); DataInputStream podatki = new DataInputStream(med);

32 BINARNI TOKOVI PRIMER 2: branje formatiranih podatkov //primer: v datoteki je najprej zapisano število vseh podatkov, // nato sledijo sami podatki tipa double DataInputStream dis = null; try { dis = new DataInputStream(new BufferedInputStream(new FileInputStream("c:\\test\\data.dat"))); int count = dis.readint(); //preberemo število podatkov for (int i = 0; i < count; i++) System.out.println(dis.readDouble()); //beremo in izpisujemo podatke } catch (IOException ex) { System.err.println("I/O exception");} finally { try { if (dis!= null) dis.close();} catch (IOException ex) { System.err.println("I/O exception");} }

33 ZNAKOVNI TOKOVI Prenašajo se znaki, kodirani kot 16-bitni simboli (tip char), in se samodejno prevedejo v lokalni nabor znakov. Osnovna razreda Reader in Writer oziroma za datoteke: FileReader in FileWriter. Za branje besedila je koristen razred BufferedReader (metoda readline()).... String vrstica; BufferedReader tok = new BufferedReader(new FileReader( besedilo.txt )); while ((vrstica = tok.readline())!= null) { //uporabimo vrstico } tok.close();...

34 RAZRED SCANNER Za formatirano branje besedila (Java 1.5+). v paketu java.util. besedilo razčleni z uporabo ločitvenega vzorca izlušči primitivne podatkovne tipe in nize znakov Ali je kakšen element na vhodu? hasnext() hasnextint(), hasnextdouble(), hasnextline(),... Preberi naslednji element next() nextint(), nextdouble(), nextline(), Sprememba ločila med elementi usedelimiter(string vzorec)

35 RAZRED SCANNER PRIMER: branje s konzole double n = 0; Scanner in = new Scanner(System.in); in.uselocale(locale.us); while (true) { System.out.println("Vpisi realno število:"); if (in.hasnextdouble()) { n = in.nextdouble(); System.out.println("Vnešeno število je " + n); break; } else { in.next(); System.out.println("Nepravilen vnos"); } }

36 OPTIMIZACIJA PROGRAMSKE KODE

37 OPTIMIZACIJA PROGRAMSKE KODE Pohitritve programa glede na vrsto optimizacije: Optimizacija izvorne kode 3x Optimizacija uporabe pomnilnika 4x Izbira ustreznih algoritmov 4-9x Optimizacija opisa problema 4-20x

38 NEKATERI NAJBOLJ POGOSTI PRISTOPI Premik zančno-invariantne kode Nadomestitev večkratnih klicev Poenostavitev klicanih funkcij in operatorjev Optimizacija vhodno/izhodnih operacij Premišljena uporaba sinhronizirane kode Pravilna uporaba knjižnic Uporaba cenejših podatkovnih struktur Zamenjava repne rekurzije v zanko

39 SPLOŠNE SMERNICE IN NASVETI Program se 80% časa zadržuje v 20% napisane programske kode smiselno je torej identificirati in optimizirati ta del kode Programa ne optimiziramo med njegovim pisanjem (osredotočamo se na pravilnost in razumljivost kode) Optimizacijo začnemo s pravilnim definiranjem problema in z izbiro pravilnih algoritmov Uspešnost optimizacije ocenimo s primerjavo meritev časov izvajanja pred in po optimizaciji

40 MERJENJE ČASA IZVAJANJA Izmeriti želimo čas izvajanja nekega programa. Problemi... ločljivost funkcije za merjenje v meritve so vključeni časi tudi drugih vzporednih programov, različni časi izvajanja zaradi arhitekture (predpomnilnik), različni vhodni podatki povzročijo različne čase izvajanja

41 MERJENJE ČASA IZVAJANJA long zacetnicas = System.nanoTime(); for (i = 0; i < stponovitev; i++) { for (j = 0; j < stargumentov; j++) { //izberi argumente //klic metode z izbranimi argumenti } } double casizvajanja = (double)(system.nanotime() - zacetnicas); casizvajanja /= (stponovitev * stargumentov);

42 NALOGE

43 NALOGA 1 Implementirajte program, ki na podlagi argumenta v ukazni vrstici prebere tekstovno datoteko ter izpiše statistiko - koliko besed začenja na posamezno črko. Podano je ogrodje programa, ki ga ustrezno dopolnite.

44 NALOGA 2 Podan je program, ki za vhodno število n preveri ali je praštevilo. Program očitno ni optimalen, saj je število korakov v zanki preveliko. Pohitrite izvajanje programa tako, da optimizirate število iteracij zanke. Izmerite izvajalni čas funkcije pred in po opravljeni optimizaciji. Kako bi spremenili program, če bi zahtevali izpis vseh praštevil na intervalu 1..N? Namig: če ugotovimo, da je število m praštevilo, potem njegovi večkratniki sigurno niso praštevila.

45 NALOGA 3 Podano je ogrodje programa za izračun vrednosti polinoma a 0 + a 1 x + + a n-1 x n-1 + a n x n. Koeficienti a 0 a n se preberejo iz binarne datoteke, vrednost za x pa poda uporabnik iz konzole. Program očitno ni optimalen ker pri izračunu posameznih členov polinoma a i x i vsakič znova računa potenco. Optimizirajte program tako, da izkoristite prejšnji izračun pri računanju vrednosti naslednjega člena. Izmerite izvajalne čase pred in po optimizaciji.

46 NALOGA 4 Podan je program za izračun binomskega člena n k n! k!( n k)! Program uporablja funkcijo za izračun fakultete. Poleg tega, da ni optimalen, program za velike vrednosti n in k poda napačen rezultat zaradi prevelikih vrednosti izračunanih fakultet. Optimizirajte program ter izmerite izvajalne čase pred in po optimizaciji.

47 NALOGA 5 Podano je ogrodje programa, ki najprej iz tekstovne datoteke prebere število in imena predmetov ter ime študenta in njegove ocene. Nato program zgradi in izpiše niz, ki vsebuje nazive predmetov, pri katerih je študent dobil (zase) nadpovprečno visoke ocene. Program ni optimalen iz več razlogov. Optimizirajte ga!

48 PROGRAMIRANJE IN ALGORITMI Iteracija in rekurzija 3. laboratorijske vaje (del gradiva je povzet po prosojnicah prof. dr. Saše Divjaka)

49 ITERACIJA IN REKURZIJA sta krmilna mehanizma, ki skrbita za PONAVLJANJE izvajanja ITERACIJA: zanke REKURZIJA: program kliče samega sebe, dokler ni izpolnjen ustavitveni pogoj

50 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun fakultete n! 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

51 ITERACIJA IN REKURZIJA Fibonaccijeva števila tvorijo naslednje zaporedje n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 F 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 Iterativno Rekurzivno public static int fib(int n) { int prev1=1, prev2=1; for(int i=0; i < n; i++) { int saveprev1 = prev1; prev1 = prev2; prev2 = saveprev1 + prev2; } } return prev1; fib(1) = 1 fib(2) = 1 fib(n) = fib(n 1) + fib(n 2) za n > 2 public static int fib(int n) { if (n <= 2) return 1; else return fib(n-1)+fib(n-2); }

52 ELEMENTI REKURZIJE Rekurzivno fib(1) = 1 fib(2) = 1 fib(n) = fib(n 1) + fib(n 2) za n > 2 public static int fib(int n) { if (n <= 2) return 1; else return fib(n-1)+fib(n-2); } ustavitveni pogoj splošno rekurzivno pravilo

53 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun fakultete n! 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

54 PRIMER 2: IZRAČUN FAKULTETE fakulteta(4)= 4 * fakulteta(3) Vrne 3*2 = 6 in konča fakulteta(4) končno lahko izračuna 4*6, vrne 24 in konča fakulteta(3)= 3 * fakulteta(2) fakulteta(2)= 2 * fakulteta(1) Vrne 2*1 =2 in konča fakulteta(1)= 1 * fakulteta(0) Vrne 1*1 in konča Osnovni primer: fakulteta(0)= 1 Vrne 1 in konča

55 PRIMER 2: IZRAČUN FAKULTETE // int potenca(int x, int p) fakulteta(0) = 1 fakulteta(x) = x * fakulteta(x-1) za n > 0 private int fakulteta(int x) { if (x==0) return 1; else { return x * fakulteta(x-1); } } ustavitveni pogoj (mora biti pred rekurzivnim klicem! zakaj?) splošno rekurzivno pravilo rekurziji na koncu (repu) metode pravimo repna rekurzija (angl. tail recursion) repno rekurzijo lahko preprosto nadomestimo z iterativno zanko

56 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun faktoriele (fakultete!) 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

57 PRIMER 3: POTENCIRANJE ŠTEVILA Naloga: Izračunati želimo število X p Zamislimo si, da bi na morali računati ročno: X p = X * X * X * * X (p krat) splošno rekurzivno pravilo Leni pristop: Imejmo asistenta, ki bo izračunal X p-1, takrat je rezultat X p = X * X p-1 Drugi asistent bo izračunal X p-2 in veljalo bo X p-1 =X *X p-2 Tretji asistent bo izračunal X p ustavitveni pogoj X 0 = 1!!!

58 PRIMER 3: POTENCIRANJE ŠTEVILA // int potenca(int x, int p) potenca(x, 0) = 1 potenca(x, p) = x * potenca(x, p-1) za n > 2 private int potenca(int x, int p) { if (p==0) return 1; else { return x * potenca(x, p-1); } } // za p >= 0 vrne x^p ustavitveni pogoj splošno rekurzivno pravilo

59 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun faktoriele (fakultete!) 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

60 PRIMER 4: IZPIS NIZA void print(string str, int index){ if (index < str.length()){ System.out.print(str.charAt(index)); print(str, index + 1); } } print("hello", 0); print("hello", 1); print("hello", 2); print("hello", 3); print("hello", 4); print("hello", 5); return return return return return return H e l l o

61 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun faktoriele (fakultete!) 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

62 PRIMER 5: INVERZIJA NIZA Funkcija vrne niz, v katerem so znaki v obratnem vrstnem redu. Če smo pregledali že vse znake vrni prazen niz SICER obrni preostanek niza od trenutnega znaka naprej združi ta obrnjen preostanek s trenutnim znakom String reverse(string str, int index){ if (index == str.length()) return ""; else{ String rest = reverse(str, index + 1); return rest + str.charat(index); } }

63 PRIMER 5: INVERZIJA NIZA String reverse(string str, int index){ if (index == str.length()) return ""; else{ String rest = reverse(str, index + 1); return rest + str.charat(index); } } reverse("hello", 0); reverse("hello", 1); reverse("hello", 2); reverse("hello", 3); reverse("hello", 4); reverse("hello", 5); return "" return "o" return "ol" return "oll" return "olle" return "olleh" H e l l o

64 PRIMERI REKURZIVNIH PROGRAMOV 1. Fibonacci 2. Izračun faktoriele (fakultete!) 3. Potenciranje števila 4. Izpis niza 5. Inverzija niza 6. Hanojski stolpi

65 PRIMER 6: HANOJSKI STOLPI Problem s Hanojskimi stolpiči je klasičen rekurzivni problem, ki temelji na preprosti igri. Imamo tri palice. Na eni je sklad ploščic z različnimi premeri. Cilj igre: Prestaviti vse ploščice na desno palico ob upoštevanju naslednjih pravil: Nobena ploščica ne sme biti nikoli na vrhu manjše ploščice. Naenkrat smemo premikati le po eno ploščico. Vsako ploščico moramo vedno odložiti na eno od palic, nikoli ob strani. Premaknemo lahko vedno le ploščico, ki je na vrhu nekega stolpiča. Zgodba pravi, da bi za fizičen premik 64 ploščic iz ene palice na drugo potrebovali toliko časa, da bi prej bil konec sveta.

66 PRIMER 6: HANOJSKI STOLPI Korak 1: Premik n-1 ploščic Stolp 1 Stolp 2 Stolp 3 Premik 1 ploščice Korak 2: Stolp 1 Stolp 2 Stolp 3 Korak 3: Premik n-1 ploščic

67 PRIMER 6: HANOJSKI STOLPI // premik n ploščic s stolpa 1 (gre s) na stolp 3(to) z uporabo // vmesnega stolpa (temp) public static void hanoi(int n, String from, String temp, String to) { if (n == 0) return; hanoi(n-1, from, to, temp); System.out.println("Ploscica" + n + " gre s " + from + " na " + to); hanoi(n-1, temp, from, to); } public static void main(string[] args) { int N = Integer.parseInt(args[0]); //argument število stolpcev hanoi(n, "Stolp1", "Stolp2", "Stolp3"); } Ploscica 1 gre s Stolp 1 na Stolp 3 Ploscica 2 gre s Stolp 1 na Stolp 2 Ploscica 1 gre s Stolp 3 na Stolp 2 Ploscica 3 gre s Stolp 1 na Stolp 3 Ploscica 1 gre s Stolp 2 na Stolp 1 Ploscica 2 gre s Stolp 2 na Stolp 3 Ploscica 1 gre s Stolp 1 na Stolp 3

68 O REKURZIJI Načrtovanje: Korak 1. Bodimo leni. Uporabimo rešitev manjše ali lažje verzije problema in z njeno pomočjo rešimo naš problem. Ta korak vodi v rekurzivni klic. Korak 2. Vedeti, kdaj moramo nehati. Vedeti moramo, kdaj je problem tako enostaven, da ga lahko rešimo direktno. Ta korak vodi v kodo prekinitve. Rekurzija... zahteva več režije kot iteracija in je pomnilniško bolj zahtevna od iteracije (sklici se shranjujejo na skladu), ponavadi je rekurzivna koda krajša in preprostejša, rekurzivne probleme lahko rešujemo tudi z iteracijami vsako repno rekurzijo lahko zamenjamo z iterativno zanko, vsak rekurzivni program lahko spremenimo v iterativnega s simulacijo sklada

69 ŠE DRUGAČNE REKURZIJE...

70 PRAKTIČNO DELO

71 RAZHROŠČEVALNIK IN REKURZIJA Vsebina sklada, ki ponazarja zaporedje in globino rekurzivnih klicev

72 PRAKTIČNO DELO 1. Demo: pregled sklada pri razhroščevanju 2. Napiši naslednje rekurzivne programe: 1. iskanje minimuma v polju Najmanjsa vrednost med stevili je 3 2. vsota 2D polja Vsota polja je preverjanje, ali je beseda palindrom (npr. rotator, radar, racecar) Beseda pericarezeracirep je palindrom. Beseda sonce ni palindrom. Beseda rekurzija ni palindrom. Beseda racecar je palindrom.

73 PROGRAMIRANJE IN ALGORITMI Časovna kompleksnost 4. laboratorijske vaje (del gradiva je povzet po prosojnicah doc. dr. Marka Robnika Šikonje)

74 KOMPLEKSNOST ALGORITMOV časovna kompleksnost prostorska kompleksnost velikostni red kompleksnosti asimptotična zgornja meja Ο spodnja meja Ω stroga meja θ

75 ZGORNJA MEJA ČASOVNE KOMPLEKSNOSTI definicija T( n) O( g( n)) c, n0 0: n n0 c g( n) T( n) 0 pri dovolj velikem n je kompleksnost našega programa navzgor omejena s funkcijo g(n) poljubna konstanta c

76 POGOSTE KOMPLEKSNOSTI log n n, n, nlog n, n, n, n,2, n!, n n

77 RAČUNANJE Z Ο( ) eliminacija konstante c vsota 0 Ο( c f ( n)) Ο( f ( n)) O( f ( n)) O( g( n)) O(max( f ( n), g( n))) prevladujoča funkcija n n0 : f ( n) g( n) O( f ( n)) O( g( n)) O( f ( n)) produkt O( f ( n)) O( g( n)) O( f ( n) g( n)) tranzitivnost f ( n) O( g( n)), g( n) O( h( n)) f ( n) O( h( n)) refleksivnost f ( n) O( f ( n))

78 PRIMERI Določi asimptotično zgornjo mejo naslednjih funkcij: 17n 3 93n 2 n O( n 3 ) 2n 2 nlog n O( n 2 ) 3n nlog n O( nlog n) 2 n 739n 9 O( 2 n ) ( n n) ( nlog n n 3) O( n 2 log n)

79 POMEMBNE NEENAKOSTI b a cn n c b a 0 0, n c n c b a b a log 0 1,, 0 b n cn a c b a 0 0, 1, n ca n c a! 0 1,! log log 0 n c n n c

80 DOLOČANJE KOMPLEKSNOSTI V PROGRAMU - PRAVILA določimo parametre kompleksnosti in časovno enoto 1. pri zaporedju ukazov seštevamo zahtevnosti 2. pri pogojih štejemo kompleksnost izračuna pogoja in maksimum vseh možnih izbir 3. pri zankah seštejemo kompleksnost izračuna pogoja in enkratne izvedbe zanke ter pomnožimo s številom izvajanja zanke 4. pri rekurziji izrazimo zahtevnost kot rekurzivno funkcijo

81 PRIMERI Določi časovno zahtevnost: n je velikost problema s = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) s = s + t[i][j]; O( n 2 )

82 PRIMERI Določi časovno zahtevnost: void p(int n, int m, int k) { } s = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j += k) s = s + t[i][j]; O( n n, m in k določajo velikost problema m k )

83 PRIMERI Določi časovno zahtevnost: int i = n; int r = 0; while (i > 1) { r = r + 1; i = i / 2; } O(log n)

84 PRIMERI Določi časovno zahtevnost: kot če bi bilo vgnezdenih m zank void p(int n, int m){ } if (m > 0) for (int i = 1; i <= n; i++) p(n, m-1); O( n m )

85 PRIMERI Določi časovno zahtevnost: void p(int n) { if (n > 0) for (int i = 1; i <= n; i++) p(n-1); else for (int i = 1; i <= 10; i++) System.out.println(i); } O(n!)

86 OCENA DEJANSKEGA ČASA IZVAJANJA pri oceni velikostnega reda časovne zahtevnosti zanemarimo vse člene nižjega reda kot tudi vse konstante v realnosti ravno konstante lahko spremenijo sliko uporabnosti algoritma T ( n) 1000n 1 2 < T 2 ( n) n 3 10 O ( n 2 ) O( n 3 ) ampak... za n < je drugi algoritem primernejši!

87 OCENA DEJANSKEGA ČASA IZVAJANJA za n < je drugi algoritem primernejši!

88 OCENA DEJANSKEGA ČASA IZVAJANJA predpostavimo linearni odvisnost med časovno zahtevnostjo in dejanskim časom izvajanja: T(n) = a * O(g(n)) + c oceno konstant izvajamo z meritvami za določitev konstant v enačbi je potrebno opraviti toliko meritev, kolikor je konstant meritve opravljamo pri velikih vrednostih vhodnih parametrov rešimo dobljeni sistem enačb dobljeno funkcijo lahko uporabimo za napovedovanje časa izvajanja programa

89 PRIMER Za dani program so bili izmerjeni naslednji časi izvajanja za različne velikosti vhodnih podatkov: velikost podatkov čas Katera funkcija najbolj ustreza časovni zahtevnosti tega programa v odvisnosti od vhodnih podatkov? a) log(n) b) n c) n log(n) d) n 2

90 PRIMER T(n) = a * O(g(n)) + c Preverimo funkcijo log(n): T(n) = a * log(n) + c velikost podatkov čas a * log(30) + c = 509 a = 7 a * log(15) + c = 502 c = Preverimo ustreznost rešitve: 7 * log(10) = != 501

91 PRIMER T(n) = a * O(g(n)) + c Preverimo funkcijo n: T(n) = a * n + c velikost podatkov čas a * 30 + c = 509 a = 0.47 a * 15 + c = 502 c = Preverimo ustreznost rešitve: 0.47 * = 499.6!= 501

92 PRIMER T(n) = a * O(g(n)) + c Preverimo funkcijo n 2 : T(n) = a * n 2 + c velikost podatkov čas a * c = 509 a = 0.01 a * c = 502 c = 500 Preverimo ustreznost rešitve: 0.01 * = 501 preverimo še za vse ostale velikosti podatkov!

93 OCENA DEJANSKEGA ČASA IZVAJANJA Če ne najdemo funkcije, ki natančno aproksimira model: vedno izračunamo koeficiente za vse modele, po katerih sprašuje naloga izberemo model, ki daje najbližje rezultate

94 PRAKTIČNO DELO

95 PRAKTIČNO DELO 1. Določi časovno zahtevnost: int i = m; while (i > 0) { i = i / 2; for (int j = 1; j <= m; j++) System.out.println(i); }

96 PRAKTIČNO DELO 2. Sestavi preprost algoritem, ki ima časovno kompleksnost O(n*m 2 ). Trivialna rešitev z eno zanko do n*m 2 ne pride v poštev!

97 PRAKTIČNO DELO 3. Za dani program so bili izmerjeni naslednji časi izvajanja za različne velikosti vhodnih podatkov: velikost podatkov čas Katera funkcija najbolj ustreza časovni zahtevnosti tega programa v odvisnosti od vhodnih podatkov? a) n b) n log(n) c) n 2 d) n 3

98 PRAKTIČNO DELO 4. Ocenite časovno kompleksnost naslednjega algoritma in določite vrednosti konstant! (program je podan v projektu PAvaje na učilnici) public static void bubblesort(int[] x) { int n = x.length; for (int pass=1; pass < n; pass++) { for (int i=0; i < n-pass; i++) { if (x[i] > x[i+1]) { int temp = x[i]; x[i] = x[i+1]; x[i+1] = temp; } } } }

99 PROGRAMIRANJE IN ALGORITMI Seznam, vrsta, sklad 5. laboratorijske vaje

100 ABSTRAKTNI PODATKOVNI TIPI Osnovni abstraktni podatkovni tipi, ki jih potrebujemo za razvoj algoritmov so: seznam (list) zbirka elementov, ki se lahko ponavljajo; vrstni red elementov je pomemben množica (set) zbirka elementov, kjer vrstni red ni pomemben; elementi se ne ponavljajo vrsta (queue) zbirka, kjer elemente vedno dodajamo na konec seznama in jih vedno brišemo na začetku seznama sklad (stack) zbirka, kjer se elementi dodajajo in brišejo vedno na začetku (koncu) seznama preslikava (map) vsakemu elementu d iz domene priredi ustrezen element r iz zaloge vrednosti

101 SEZNAM (List)

102 ABSTRAKTNI PODATKOVNI TIP SEZNAM Seznam je zaporedje 0 ali več elementov, pri čemer velja: vrstni red elementov je pomemben elementi v seznamu se lahko ponavljajo a 1, a 2, a 3,..,a i,,a n prvi element zadnji element indeksu i pravimo položaj elementa v seznamu

103 ABSTRAKTNI PODATKOVNI TIP SEZNAM Pomembnejše operacije, definirane za ADT LIST: FIRST(L) vrne položaj prvega elementa v seznamu LAST(L) vrne položaj zadnjega elementa v seznamu NEXT(p, L) vrne naslednji položaj položaja p PREVIOUS(p, L) vrne predhodni položaj položaja p END(L) vrne položaj, ki sledi zadnjemu elementu seznama RETRIEVE(p, L) vrne element a p na položaju p INSERT(x, p, L) vstavi element x na položaj p DELETE(p, L) zbriše element a p na položaju p LOCATE(x, L) poišče položaj elementa x v seznamu Popoln nabor operacij se nahaja v učbeniku, na straneh 84 in 85.

104 ABSTRAKTNI PODATKOVNI TIP SEZNAM Implementacije ADT LIST: s poljem enosmerni seznam s kazalci dvosmerni seznam s kazalci z indeksnimi kazalci (kurzorji) Implementacije se razlikujejo po časovni in prostorski zahtevnosti posameznih operacij. Imajo poudarek na različnih lastnostih seznama in različnih podmnožicah operacij.

105 IMPLEMENTACIJA SEZNAMA S POLJEM uporablja podatkovno strukturo polje za shranjevanje elementov seznama položaj elementa v seznamu je podan z indeksom v polju potrebujemo še indeks zadnjega elementa v seznamu public class ListArray { private Object elements[]; private int lastelement; public ListArray(int noelem) { elements = new Object[noElem]; } }

106 IMPLEMENTACIJA SEZNAMA S POLJEM Prednosti: preprosta implementacija časovna zahtevnost mnogih operacij je O(1), vključno z dostopom do poljubnega elementa seznama Slabosti: neučinkovito vstavljanje elementa na določen položaj - O(n) neučinkovito brisanje elementa O(n) omejena dolžina seznama ves čas polje zaseda maksimalno količino pomnilnika Primerna implementacija za aplikacije, kjer se seznam zelo malo spreminja.

107 IMPLEMENTACIJA SEZNAMA S POLJEM Vstavljanje Brisanje

108 ENOSMERNI SEZNAM S KAZALCI Podatkovna struktura je podana z enim elementom seznama: class ListLinkedNode { Object element; ListLinkedNode next; } ter s samim seznamom elementov: public class ListLinked { protected ListLinkedNode first, last; } Seznam je definiran s položajem prvega in zadnjega elementa.

109 ENOSMERNI SEZNAM S KAZALCI Opomba: zaradi učinkovite implementacije vstavljanja in brisanja je položaj elementa seznama podan s kazalcem na celico, ki vsebuje kazalec (next) na celico z elementom. Iz tega razloga je položaj zadnjega elementa seznama (last) dejansko kazalec na predzadnji element seznama.

110 ENOSMERNI SEZNAM S KAZALCI Lastnosti enosmernega seznama: učinkovito vstavljanje elementa na znan položaj O(1), učinkovito brisanje elementa na znanem položaju O(1), (razen v primeru brisanja zadnjega elementa, ko je O(n)) seznam zaseda samo toliko pomnilnika, kolikor ga zares potrebuje, počasna operacija iskanja predhodnika v seznamu O(n), zaporedno premikanje po seznamu.

111 ENOSMERNI SEZNAM S KAZALCI Vstavljanje Brisanje Opomba: Kazalec p, ki določa položaj elementa a p, dejansko kaže na predhodni element.

112 DVOSMERNI SEZNAM S KAZALCI Vsaka celica seznama ima poleg elementa še dva kazalca: kazalec na naslednji element kazalec na predhodni element Omogoča učinkovito iskanje predhodnika v seznamu O(1) class ListTwoWayLinkedNode { Object element; ListTwoWayLinkedNode next, previous; } public class ListTwoWayLinked { protected ListTwoWayLinkedNode first, last; }

113 DVOSMERNI SEZNAM S KAZALCI Opomba: v dvosmernem seznamu je položaj elementa podan s kazalcem na celico, ki ta element vsebuje.

114 SEZNAM Z INDEKSNIMI KAZALCI Uporaba v jezikih, ki ne omogočajo dinamičnih podatkovnih struktur. Vsaka celica polja je sestavljena iz elementa in iz indeksa naslednjega elementa. class ListCursorNode { Object element; int next; } public class ListCursor { private ListCursorNode cells[]; private int last; }

115 SEZNAM Z INDEKSNIMI KAZALCI Definicije operacij so podobne operacijam s kazalci, le da programer sam skrbi za dodeljevanje in čiščenje pomnilnika. Dva seznama: prvi seznam vsebuje elemente dejanskega seznama drugi seznam povezuje vse prazne celice v polju

116 Vrsta (Queue)

117 ABSTRAKTNI PODATKOVNI TIP VRSTA Vrsta (queue) je zbirka elementov, kjer elemente vedno: dodajamo na konec seznama brišemo na začetku seznama a n, a n-1,,a 2, a 1 dodajanje brisanje Vrsti pravimo tudi FIFO (first-in-first-out).

118 ABSTRAKTNI PODATKOVNI TIP VRSTA Operacije definirane za ADT QUEUE: MAKENULL(Q) naredi prazno vrsto EMPTY(Q) ali je vrsta prazna FRONT(Q) vrne prvi element v vrsti ENQUEUE(x, Q)- vstavi element x na konec vrste DEQUEUE(Q) zbriše prvi element iz vrste Vrsto lahko učinkovito implementiramo z enosmernim seznamom s kazalci. Pri implementaciji s poljem se zaradi učinkovitosti uporablja t.i. krožno polje.

119 ABSTRAKTNI PODATKOVNI TIP VRSTA Interaktivni prikaz delovanja vrste ( ) enqueue(a4) a3 a2 a1 a4 a3 a2 a1 dequeue() a4 a3 a2 a1 a4 a3 a2

120 Sklad (Stack)

121 ABSTRAKTNI PODATKOVNI TIP SKLAD Sklad (stack) je zbirka elementov, kjer elemente vedno: dodajamo na vrh seznama brišemo s vrha seznama Pojem vrh (top) seznama označuje bodisi začetek bodisi konec seznama (odvisno od implementacije). a 1, a 2, a 3,,a n dodajanje brisanje Skladu pravimo tudi LIFO (last-in-first-out).

122 ABSTRAKTNI PODATKOVNI TIP SKLAD Operacije definirane za ADT STACK: MAKENULL(S) naredi prazen sklad EMPTY(S) ali je sklad prazen TOP(S) vrne vrhnji element sklada PUSH(x, S)- vstavi element x na vrh sklada POP(S) zbriše vrhnji element sklada Vrsto lahko učinkovito implementiramo z enosmernim seznamom s kazalci takrat vrh seznama označuje njegov začetek. Pri implementaciji s poljem vrh seznama označuje njegov konec.

123 ABSTRAKTNI PODATKOVNI TIP SKLAD Interaktivni prikaz delovanja sklada ( X Y Z push(w) W X Y Z W X Y Z pop() X Y Z

124 PROGRAMIRANJE IN ALGORITMI popravki k 1. seminarju, javanske zbirke zgoščena tabela 7. laboratorijske vaje

125 SEMINAR 1 popravki

126 POPRAVKI K 1. SEMINARJU 1. Zlato pravilo: programe KOMENTIRAMO! // Funkcija za generiranje izraza z vgnezdenimi oklepaji // okl, zak koliko oklepajev in zaklepajev je preostalo // izraz zgeneriran začetek izraza public static void oklepaji(int okl, int zak, String izraz) { if (zak == 0){ } System.out.println(izraz); return; // robni pogoj, ko zmanjka zaklepajev if (okl > 0){ // lahko izraz nadaljujemo z '(, če jih še imamo oklepaji(okl-1, zak, izraz + '('); } } if (zak > okl){ //lahko izraz nadaljujemo z ')' oklepaji(okl, zak-1, izraz + ')'); }

127 POPRAVKI K 1. SEMINARJU 2. "Lovljenje" napak: uporaba try-catch-finally public static void problematicna() { int[] polje = new int[8]; try { for (int j = 0; j < 10; j++) { polje[j] = j; } } catch (Exception e) { System.out.println("Napaka!"); } finally { System.out.println("Finally blok se vedno izvede"); } }

128 POPRAVKI K 1. SEMINARJU 3. Meritve časa izvajanja for (i = 0; i < stponovitev; i++) { for (j = 0; j < stargumentov; j++) { //izberi argumente //klic z izbranimi argumenti } } casizvajanja /= (stponovitev * stargumentov);

129 POPRAVKI K 1. SEMINARJU 4. Graf: primerjamo IZMERJENE in TEORETIČNE (izračunane) čase izvajanj

130 ADT = Abstraktni Podatkovni Tipi

131 ABSTRAKTNI PODATKOVNI TIPI Osnovni abstraktni podatkovni tipi, ki jih potrebujemo za razvoj algoritmov so: seznam (list) vrsta (queue) sklad (stack) na prejšnjih vajah PRESLIKAVA (angl. map) vsakemu elementu d iz domene priredi ustrezen element r iz zaloge vrednosti MNOŢICA (angl. set) zbirka elementov, kjer vrstni red ni pomemben; elementi se ne ponavljajo SLOVAR (angl. dictionary) poseben primer ADT mnoţica, ki omogoča samo vstavljanje, brisanje in iskanje elementa

132 ADT PRESLIKAVA (angl. map)

133 ADT PRESLIKAVA Preslikava vsakemu elementu d iz domene priredi ustrezen element r iz zaloge vrednosti: M(d) = r Primer: Preslikava M(d)=r vsaki telefonski številki d priredi lastnika računa r Telefonska številka Lastnik računa Janez N Miha K Tine B Ana H Tina Z.

134 ADT PRESLIKAVA Operacije definirane za ADT MAP: MAKENULL(M) inicializira prazno preslikavo ASSIGN(M, d, r) definira, da je M(d) = r COMPUTE(M, d) vrne vrednost M(d), če je definirana Pri implementaciji preslikave lahko uporabimo: seznam parov (d, r) časovna zahtevnost iskanja parov je reda O(n), kar je pogosto nesprejemljivo. iskalna drevesa časovna zahtevnost iskanja parov je reda O(log n), kar je v nekaterih aplikacijah sprejemljivo. polje (indeksi polja predstavljajo elemente domene d): hitro dodajanje, iskanje, brisanje O(1); zahteva veliko pomnilnika

135 IMPLEMENTACIJA PRESLIKAVE S POLJEM domena D uporabljeni elementi d r1 5-6 r2 7-8 r3 9 - časovna zahtevnost iskanja in dodajanja elementa je reda O(1) taka implementacija je moţna samo, če je moč domene zadosti majhna (velikost polja je enaka moči domene)

136 ZGOŠČENA TABELA (angl. hash table)

137 ZGOŠČENA TABELA v praksi je moč domene velika ali celo neskončna uporabimo zgoščevalno funkcijo (hash function), ki preslika originalno domeno v manjšo domeno h : domaintype smalldomaintype zgoščevalna funkcija razprši elemente po manjši domeni. Podatkovni strukturi, ki uporablja zgoščevalno funkcijo, pravimo zgoščena tabela (hash table) ţelimo funkcijo, ki enakomerno razprši elemente s čim manj sovpadanja. Sovpadanje: d 1 d2 d h( d1) h( 2)

138 PRIMER ZGOŠČENE TABELE Lahko uporabimo zgoščevalno funkcijo: h(tel_st) = tel_st mod 17 Telefonska številka Lastnik računa Janez N Miha K Tine B Ana H Tina Z Marko S Teja B. h( ) = 8 h( ) = 10 h( ) = 15 h( ) = 3 h( ) = 11 h( ) = 7 h( ) = Ana H. - 7 Marko S. 8 Janez N. 9 Teja B. 10 Miha K. 11 Tina Z Tine B z uporabo zgoščevalne funkcije preslikamo indekse iz originalne domene v indekse manjše domene

139 ZGOŠČENA TABELA: PROBLEMI 1. SOVPADANJE: v praksi je neizogibno z zaprto zgoščeno tabelo in z zaporednim naslavljanjem: uporabljamo zaporedje zgoščevalnih funkcij v primeru sovpadanja izračunane vrednosti uporabimo drugo funkcijo za naslednji moţni poloţaj elementa ' h i ( x) ( h( x) i) mod m z odprto zgoščeno tabelo: v polju hranimo kazalce na sezname parov, ki sovpadajo 2. OMEJENA VELIKOST tabele: ko se tabela napolni, zgradimo večjo tabelo ter vse elemente iz manjše tabele uvrstimo v novo tabelo z novo zgoščevalno funkcijo. Ponovno zgoščanje (rehashing) zahteva O(n) časa

140 ZAPRTA ZGOŠČENA TABELA Primer preprostega zaporedja zgoščevalnih funkcij: ' h i ( x) ( h( x) i) mod m - Ana H Telefonska številka Lastnik računa Tomaţ I. h 0 ( ) h 1 ( ) h 2 ( ) h 3 ( ) h 4 ( ) h 5 ( ) - Marko S Janez N Teja B Miha K Tina Z vstavimo element Tine B

141 ODPRTA ZGOŠČENA TABELA domena D d2 d3 d5 d1 d7 d4 d6 uporabljeni elementi d / / / / / (d2, r2) (d3, r3) (d1, r1) (d5, r5) (d4, r4) / (d6, r6) (d7, r7) / / / Pričakovana zahtevnost iskanja elementa je O(n/m). n - število vstavljenih elementov m - velikost zgoščene tabele.

142 POVZETEK... zaradi fiksne zgoščevalne funkcije zgoščena tabela ne more biti dinamična struktura velikost tabele moramo vnaprej definirati če je tabela prevelika, zapravljamo pomnilnik če je tabela premajhna, prihaja do prevelikega sovpadanja elementov zgoščevalna funkcija je fiksna ne moremo učinkovito implementirati operacij, ki temeljijo na urejenosti elementov po ključih (iskanje najmanjšega elementa, iskanje naslednjega elementa po velikosti, izpis elementov v danem intervalu vrednosti ključa )

143 ZBIRKE (angl. collections)

144 JAVANSKE ZBIRKE Zbirka (collection) je naziv za skupino podatkov organiziranih v enotni objekt. Ogrodje zbirk (collection framework) ponuja poenoten pogled na zbirke in osnovne metode za njihovo obdelavo: določa VMESNIKE, ki opisujejo vse metode za delo z zbirko (brez dejanske izvedbe) vsebuje učinkovite IMPLEMENTACIJE določenih podatkovnih struktur vsebuje statične POMOŢNE METODE za pogosto rabljene postopke dela z zbirkami (na primer sortiranje, mešanje, iskanje in podobno)

145 vmesnik OGRODJE ZBIRKE zgoščena tabela implementacija prilagodljivo polje ArrayList povezan seznam LinkedList uravnoteţeno drevo Seznam Mnoţica Preslikava HashSet (primerno, ko potrebujemo hitre operacije vstavljanja, brisanja in iskanja elementov) HashMap (primerno, ko potrebujemo hitre operacije vstavljanja, brisanja in iskanja elementov) (primerno, ko se seznami malo spreminjajo in potrebujemo pogoste neposredne dostope do elementov) (primerno, ko se seznami pogosto spreminjajo in večinoma ne potrebujemo direktnega dostopa do elementov TreeSet (primerno, ko potrebujemo operacije vezane na urejenost elementov) TreeMap (primerno, ko potrebujemo operacije vezane na urejenost elementov)

146 METODE VSEH ZBIRK public interface Collection { // osnovne operacije int size(); boolean isempty(); boolean contains(object element); boolean add(object element); boolean remove(object element); Iterator iterator(); // množične operacije boolean containsall(collection c); boolean addall(collection c); boolean removeall(collection c); boolean retainall(collection c); void clear(); // opcijsko // opcijsko // opcijsko // opcijsko // opcijsko // opcijsko } // pretvorba v polje Object[] toarray(); Object[] toarray(object a[]);

147 SEZNAMI Implementacija s poljem (ArrayList) in s kazalci (LinkedList). Pomembnejše podedovane funkcije od vmesnika Collection: add(object) doda nov element na konec seznama remove(object) odstrani prvo pojavitev elementa v seznamu Metode za dostop do elementov preko indeksov (pričnejo se z 0): add(int, Object) get(int) set(int, Object) remove(int) Funkcije za iskanje elementov: indexof(object) lastindexof(object) Seznam najpomembnejših operacij za razreda ArrayList in LinkedList se nahaja v učbeniku, str. 125 in 126

148 PRIMER UPORABE SEZNAMOV import java.util.*; public class Program { public static void main(string[] args) { List<Integer> seznam = new LinkedList<Integer>(); seznam.add(new Integer(20)); seznam.add(0, new Integer(10)); seznam.add(2, new Integer(30)); } } System.out.println(seznam); Izpis: [10, 20, 30]

149 ITERATORJI Iteratorji omogočajo sprehod prek vseh elementov zbirke. Vmesnik: Interface Iterator { boolean hasnext(); // preveri, ali je na voljo še kak element Object next(); // vrne element ter se prestavi za mesto naprej void remove(); // odstrani element } Primer: public static void main(string[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("primer"); list.add("elementov"); list.add("seznama"); } Iterator<String> itr = list.iterator(); while (itr.hasnext()) { System.out.println(itr.next()); }

150 PRESLIKAVE Preslikava brez urejenosti po ključih je implementirana z zgoščeno tabelo (HashMap), preslikava z urejenimi pari po ključih pa je implementirana z drevesom (TreeMap). Metode za dodajanje in brisanje parov: put(object key, Object value) remove(object key) Metoda za branje z uporabo ključa: get(object key) Metode za poglede na preslikavo skozi zbirke keyset() // vrne mnoţico vseh ključev preslikave values() // vrne zbirko vrednosti entryset() // vrne mnoţico parov preslikav ključa v vrednost Tabeli najpomembnejših operacij za razreda HashMap in TreeMap se nahajata v učbeniku, strani 130 in 131

151 PRIMER UPORABE PRESLIKAV import java.util.*; public class Program { public static void main(string[] args) { Map<Long, String> m = new HashMap<Long, String>(); m.put(new Long( ), "Tine K."); m.put(new Long( ), "Marko I."); m.put(new Long( ), "Eva J."); Set preslikava = m.entryset(); Iterator itr = preslikava.iterator(); } } while (itr.hasnext()) { Map.Entry e = (Map.Entry)itr.next(); System.out.println("tel.: + e.getkey() + "; lastnik: " + e.getvalue()); } Izpis: tel: ; lastnik: Marko I. tel: ; lastnik: Tine K. tel: ; lastnik: Eva J.

152 PRAKTIČNO DELO

153 NALOGE Nekaj idej: Rešite naloge s seznami iz 1. seminarja s pomočjo razreda LinkedList. S pomočjo razreda ArrayList implementirajte sklad in vrsto. Preberite tekstovno datoteko in jo razčlenite na besede. Z uporabo razreda HashMap preštejte kolikokrat se posamezna beseda ponovi v besedilu.

154 REŠITEV ZA SKLAD import java.util.*; public class MyStack { private List list = new LinkedList(); public void push(object obj){ list.add(0, obj); } public Object top(){ return list.get(0); } public Object pop() { return list.remove(0); } } public static void main(string args[]){ Integer value; MyStack s = new MyStack(); s.push (new Integer(10)); System.out.println(s.top()); value = (Integer)s.pop(); }

155 REŠITEV ZA ŠTEVEC BESED import java.util.*;... // String tokens[] je polje prebranih besed Map m = new HashMap(); for (int i = 0; i < tokens.length; i++) { if (m.containskey(tokens[i])) { m.put(tokens[i], (Integer)m.get(tokens[i]) + 1); } else { m.put(tokens[i], 1); } } System.out.println(m);

156 PROGRAMIRANJE IN ALGORITMI ADT množica 8. laboratorijske vaje

157 ABSTRAKTNI PODATKOVNI TIPI Osnovni abstraktni podatkovni tipi, ki jih potrebujemo za razvoj algoritmov so: seznam (list) vrsta (queue) sklad (stack) preslikava (map) na prejšnjih vajah MNOŽICA (angl. set) zbirka elementov, kjer vrstni red ni pomemben; elementi se ne ponavljajo SLOVAR (angl. dictionary) poseben primer ADT množica, ki omogoča samo vstavljanje, brisanje in iskanje elementa

158 ADT MNOŽICA (angl. set)

159 ADT MNOŽICA Množica je zbirka elementov, za katero velja: elementi se ne ponavljajo vrstni red elementov ni pomemben Pomembnejše operacije definirane za ADT SET: FIRST(S) vrne položaj prvega elementa v množici NEXT(p, S) vrne naslednji položaj položaja p INSERT(x, S) doda element x v množico (brez podvajanja) DELETE(p, S) zbriše element na položaju p RETRIEVE(p, S) vrne element na položaju p LOCATE(x, S) poišče položaj elementa x UNION(S1, S) unija množic S1 in S INTERSECTION(S1, S) presek množic S1 in S popoln nabor operacij se nahaja v učbeniku, strani 102 in 103

160 IMPLEMENTACIJA MNOŽIC Množico lahko implementiramo s povezanim seznamom. INSERT(x, S) ima časovno zahtevnost reda O(n) zaradi preverjanja podvajanja. LOCATE(x, S) ima časovno zahtevnost reda O(n) zaradi zaporednega premikanja po elementih seznama. UNION(S1, S) in INTERSECTION(S1, S) imata časovno zahtevnost O(m*n). Ne omogoča učinkovite implementacij operacij, ki so vezane na urejenost elementov. n moč množice S m moč množice S1

161 IMPLEMENTACIJA MNOŽIC Za implementacijo množice lahko uporabimo zgoščeno tabelo. učinkovite operacije INSERT(x, S) in LOCATE(x, S), ki imata časovno zahtevnost reda O(1). UNION(S1, S) ima časovno zahtevnost O(m). INTERSECTION(S1, S) ima časovno zahtevnost O(n). ne omogoča učinkovite implementacije operacij, ki so vezane na urejenost elementov. n moč množice S m moč množice S1 Časovne zahtevnosti veljajo pod pogojem, da zgoščevalna funkcija enakomerno razprši elemente.

162 IMPLEMENTACIJA MNOŽIC Za relativno hitre operacije, ki so vezane na urejenost elementov, uporabljamo implementacijo množice z iskalnim drevesom. INSERT(x, S) in LOCATE(x, S) imata časovno zahtevnost reda O(log n). UNION(S1, S) ima časovno zahtevnost O(m * log n) INTERSECTION(S1, S) ima časovno zahtevnost O(n * (log m + log n)).

163 MNOŽICA KOT JAVANSKA ZBIRKA

164 OGRODJE ZBIRKE zgoščena tabela implementacija prilagodljivo polje ArrayList povezan seznam LinkedList uravnoteženo drevo Seznam (primerno, ko se seznami malo spreminjajo in potrebujemo pogoste neposredne dostope do elementov) (primerno, ko se seznami pogosto spreminjajo in večinoma ne potrebujemo direktnega dostopa do elementov vmesnik Množica HashSet (primerno, ko potrebujemo hitre operacije vstavljanja, brisanja in iskanja elementov) TreeSet (primerno, ko potrebujemo operacije vezane na urejenost elementov) HashMap TreeMap Preslikava (primerno, ko potrebujemo hitre operacije vstavljanja, brisanja in iskanja elementov) (primerno, ko potrebujemo operacije vezane na urejenost elementov)

165 MNOŽICA KOT JAVANSKA ZBIRKA Množico opisuje vmesnik Set Implementacija neurejene množice z zgoščeno tabelo ( razred HashSet) Implementacija urejene množice z drevesom (razred TreeSet) Pomembnejše funkcije: add(object) doda element v množico (brez podvajanja) remove(object) odstrani element iz množice contains(object) preveri, če je element v množici Metode za množične operacije omogočajo izvedbo algebre množic: unija: s1.addall(s2); presek: s1.retainall(s2); razlika: s1.removeall(s2); ugotavljanje podmnožice: s1.containsall(s2); Seznam najpomembnejših operacij za razreda HashSet in TreeSet se nahaja v učbeniku, str. 127 in 128

166 PRIMER UPORABE MNOŽIC import java.util.*;... Set set = new HashSet();... set.add(obj); // dodamo element v množico... int n = set.size(); // koliko je elementov v množici... if (set.contains(obj)) // ali množica vsebuje element {... } // sprehod čez elemente množice Iterator i = set.iterator(); while (i.hasnext()) { Object e = i.next();... }

167 PROGRAMIRANJE IN ALGORITMI drevo, slovar, binarno iskalno drevo 9. laboratorijske vaje

168 ABSTRAKTNI PODATKOVNI TIPI Osnovni abstraktni podatkovni tipi, ki jih potrebujemo za razvoj algoritmov so: seznam (list) vrsta (queue) sklad (stack) preslikava (map) množica (set) na prejšnjih vajah DREVO (angl. tree) zbirka vozlišč, hierarhično urejenih z relacijo oče-sin SLOVAR (angl. dictionary) poseben primer ADT množica, ki omogoča samo vstavljanje, brisanje in iskanje elementa

169 ADT DREVO (angl. tree)

170 ADT DREVO Drevo je zbirka hierarhično urejenih vozlišč. Vozlišča so urejena z relacijo oče-sin. Vsako vozlišče ima: oznako (vsebino) enega očeta (razen korena drevesa) nič ali več sinov Primer drevesne strukture: datotečni sistem

171 ADT DREVO Terminologija: koren (root): vozlišče brez očeta relacija oče-sin notranje vozlišče (internal node): vozlišče z vsaj enim sinom A B C D E F G H list (leaf): vozlišče brez sinov I J K bratje (siblings): sinovi istega očeta poddrevo (subtree) vozlišča A

172 ADT DREVO Terminologija: A Nivo 1 B C D Nivo 2 E F G H Nivo 3 I J K Nivo 4 stopnja (degree) vozlišča: število sinov vozlišča (npr. stopnja vozlišča C je 2) stopnja drevesa: največje št. sinov nekega vozlišča (npr. stopnja drevesa na sliki je 3) pot (path): zaporedje n 1,n 2,,n k, pri čemer velja za vsak 1 i < k, da je n i oče n i+1 (npr. A, B, F, J) (k > i): n i je prednik (ancestor) vozlišč n k, oz. n k so nasledniki (descendants) vozlišča n i nivo (level) vozlišča: dolžina poti od korena do vozlišča (npr. nivo vozlišča E je 3) višina (height) drevesa: dolžina najdaljše poti od korena do lista (npr. za zgornje drevo je 4)

173 ADT DREVO Terminologija: poravnano ali uravnovešeno (balanced) drevo: A B C D E F G levo poravnano drevo: A B C D E F izrojeno drevo: A B C D

174 ADT DREVO Operacije definirane za ADT TREE: PARENT(n, T) vrne očeta vozlišča n v drevesu T LEFTMOST_CHILD(n, T) vrne najbolj levega sina vozlišča n RIGHT_SIBLING(n, T) vrne desnega brata vozlišča n LABEL(n, T) vrne oznako vozlišča n ROOT(T) vrne koren drevesa T MAKENULL(T) naredi prazno drevo T CREATE(r, v, T1,, Ti) generira drevo s korenom r z oznako v ter s stopnjo i s poddrevesi T1,, Ti

175 IMPLEMENTACIJA DREVESA S POLJEM Drevo je shranjeno v polje na naslednji način: koren drevesa je prvi element polja sledijo vsa vozlišča prvega (najbolj levega) poddrevesa korena, nato vsa vozlišča drugega poddrevesa in tako naprej vsako poddrevo je shranjeno po istem pravilu A A 3 B 2 koren B C D E 0 F 3 I 0 prvo poddrevo E F G H J 0 K 0 I J K C 2 G 0 drugo poddrevo H 0 D 0 tretje poddrevo oznaka št. sinov

176 IMPLEMENTACIJA DREVESA S POLJEM Za levo poravnana drevesa s konstantno stopnjo je bolj primerno shranjevanje vozlišč po nivojih: A B C E F G H 0 A 1 B 2 C 3 E 4 F 5 G 6 H nivo 1 nivo 2 nivo 3 Če je i indeks vozlišča, potem velja: indeks najbolj levega otroka je i * degree + 1 sosednji bratje imajo zaporedne indekse indeks očeta je (i 1) / degree

177 IMPLEMENTACIJA DREVESA S KAZALCI Osnovni obliki predstavitve drevesa: vsako vozlišče vsebuje kazalca na levega otroka in desnega brata A B C D E F G vsako vozlišče vsebuje kazalce na vse otroke A B C D E F G V obeh primerih lahko vozlišče vsebuje tudi kazalec na očeta.

178 OBHOD DREVESA Obhod (traversal) drevesa lahko opravimo na več načinov: A B C D E F G premi (preorder): izpišemo oznako korena pred oznakami poddreves (za drevo na sliki dobimo izpis a, b, d, e, c, f, g) obratni (postorder): izpišemo najprej oznake vozlišč vseh poddreves in zatem oznako korena (za drevo na sliki dobimo izpis d, e, b, f, g, c, a) vmesni (inorder): izpišemo najprej oznake vozlišč najbolj levega poddrevesa, zatem oznako korena in zatem oznake vozlišč vseh ostalih poddreves korena (za drevo na sliki dobimo izpis d, b, e, a, f, c, g) nivojski: izpišemo najprej vsa vozlišča na 1. nivoju, zatem na 2. nivoju in tako naprej (za drevo na sliki dobimo izpis a, b, c, d, e, f, g)

179 BINARNA DREVESA BINARNA drevesa: vsa vozlišča s stopnjo manjšo ali enako 2 vozlišče lahko ima samo desnega sina Lastnosti binarnih dreves: 2 1 binarno drevo višine v ima največ v vozlišč višina binarnega drevesa z n vozlišči je najmanj v log ( 1) 2 n v binarnem drevesu z n vozlišči je n + 1 praznih poddreves

180 ADT SLOVAR (angl. dictionary)

181 ADT SLOVAR Slovar je poseben primer podatkovnega tipa množice, ki omogoča samo tri osnovne operacije: VSTAVLJANJE elementa BRISANJE elementa ISKANJE elementa Za učinkovito iskanje elementov (ki se zahteva pri ADT slovar za razliko od ADT seznam) potrebujemo relacijo urejenosti med elementi. Urejenost je definirana bodisi na elementih samih bodisi na delih elementov ključih (keys)

182 ADT SLOVAR Osnovne operacije definirane za ADT DICTIONARY: MAKENULL(D) naredi prazen slovar D MEMBER(x, D) preveri, če je element x v slovarju D INSERT(x, D) vstavi element x v slovar D DELETE(x, D) zbriše element x iz slovarja D Zaradi urejenosti elementov v slovarju je možno učinkovito implementirati tudi operacije: iskanje minimalnega elementa iskanje maksimalnega elementa iskanje predhodnika (predecessor) iskanje naslednika (successor)

183 IMPLEMENTACIJE SLOVARJA Zgoščena tabela Drevesne strukture Prednost: časovna kompleksnost vseh operacij je pod določenimi pogoji reda O(1) Slabosti: fiksna podatkovna struktura, fiksna zgoščevalna funkcija, neučinkovite operacije, ki temeljijo na urejenosti elementov po ključih Lastnosti: - časovna kompleksnost osnovnih operacij je reda O(log n) - časovna kompleksnost operacij na podlagi urejenosti elementov slovarja je reda O(log n) pri čemer je n število elementov slovarja.

184 BINARNO ISKALNO DREVO Binarno iskalno drevo (binary search tree, BST) je najbolj preprosta drevesna implementacija slovarja. Rekurzivna definicija: prazno drevo je BST drevo z oznako (ključem) korena x z levim in desnim poddrevesom L in R je BST, če velja: in sta tudi L in R BST y L: y x y R : y x BST x BST z manjšimi ključi BST z večjimi ključi

185 PRIMER BST BST vsebuje besede iz stavka dobrodošli na vajah iz predmeta programiranje in algoritmi dobrodošli algoritmi na iz vajah in predmeta programiranje

186 IMPLEMENTACIJA BST Drevo je podano kot referenca na vozlišče v korenu: public class BSTree implements Dictionary { BSTreeNode rootnode; // referenca na koren } Vozlišče je definirano kot: public class BSTreeNode { Comparable key; // ključ BSTreeNode left; // referenca na levo poddrevo BSTreeNode right; // referenca na desno poddrevo }

187 ISKANJE ELEMENTA V BST Iskanje ključa iz Iskanje ključa osnove dobrodošli iz > dobrodošli dobrodošli algoritmi na iz < na algoritmi na iskani element iz vajah iz vajah in predmeta in predmeta programiranje programiranje osnove > programiranje desnega poddrevesa ni iskanega elementa ni v drevesu Maksimalno število korakov pri iskanju elementa je enako višini drevesa. Časovna kompleksnost pri poravnanem drevesu je reda O(log n) pri izrojenem drevesu pa O(n).

188 DODAJANJE ELEMENTA V BST Dodajanje elementa kot list v drevo Dodajanje ključa letošnjih dobrodošli letošnjih > dobrodošli algoritmi na letošnjih < na letošnjih > iz iz vajah in letošnjih predmeta dodamo element kot list v drevo programiranje Maksimalno število korakov pri dodajanju elementa kot list je enako višini drevesa

189 DODAJANJE ELEMENTA V BST Dodajanje elementa v koren Dodajanje ključa letošnjih dodamo novi element v koren drevesa dobrodošli letošnjih algoritmi na dobrodošli na L iz vajah vajah in predmeta algoritmi iz predmeta R1 manjši ključi od letošnjih R programiranje R2 večji ključi od letošnjih L in programiranje R2 R1 Maksimalno število korakov je sorazmerno višini drevesa

190 BRISANJE ELEMENTA IZ BST Brisanje elementa, ki ima samo enega sina Brisanje ključa vajah letošnjih letošnjih dobrodošli na dobrodošli na algoritmi iz vajah algoritmi iz predmeta in predmeta in programiranje programiranje

191 BRISANJE ELEMENTA IZ BST Brisanje elementa, ki ima oba sina Brisanje ključa dobrodošli letošnjih letošnjih dobrodošli na in na algoritmi iz predmeta algoritmi iz predmeta in programiranje programiranje najmanjši element desnega poddrevesa

192 ZAKLJUČEK V praksi je časovna zahtevnost operacij na BST sprejemljiva - O(log n). V najslabšem primeru se BST lahko izrodi v seznam kar pomeni časovno zahtevnost operacij reda O(n). V bolj zahtevnih operacijah je potrebno uporabljati (približno) poravnana drevesa.

193 PRAKTIČNO DELO

194 PRAKTIČNO DELO 1. Na začetku je binarno iskalno drevo prazno. Za dano zaporedje operacij vstavi: 14, 15, 16, 11, 28, 30 briši: 15, 11 nariši dve drevesi (ob zaključku vstavljanja oziroma ob zaključku brisanja). 2. Isto kot prejšnja naloga, operacije pa so vstavi: 40, 15, 75, 10, 20, 60, 80, 100 briši: 40, 10, 20

195 PRAKTIČNO DELO Programerske naloge: 3. Implementirajte proceduro, ki izračuna višino podanega binarnega iskalnega drevesa. 4. Implementirajte proceduro, ki izpiše elemente BST med min in max po naraščajočem vrstnem redu. 5. Dopolnite program za izračun vrednosti aritmetičnega izraza, ki je predstavljen z binarnim drevesom (npr. izpis izraza z različnimi obhodi drevesa, vizualizacija funkcije evaluate, iterativne verzije funkcij expression in product ).

196 PROGRAMIRANJE IN ALGORITMI rdeče-črna drevesa 10. laboratorijske vaje

197 ABSTRAKTNI PODATKOVNI TIPI Osnovni abstraktni podatkovni tipi, ki jih potrebujemo za razvoj algoritmov so: seznam (list) vrsta (queue) sklad (stack) preslikava (map) množica (set) drevo (tree) slovar (dictionary) na prejšnjih vajah Implementacije ADT slovarja: binarno iskalno drevo (BST) rdeče-črno drevo (red-black tree)

198 RDEČE-ČRNO DREVO (angl. red-black tree)

Funkcijske vrste. Matematika 2. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 2. april Gregor Dolinar Matematika 2

Funkcijske vrste. Matematika 2. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 2. april Gregor Dolinar Matematika 2 Matematika 2 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 2. april 2014 Funkcijske vrste Spomnimo se, kaj je to številska vrsta. Dano imamo neko zaporedje realnih števil a 1, a 2, a

Διαβάστε περισσότερα

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 22. oktober Gregor Dolinar Matematika 1

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 22. oktober Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 22. oktober 2013 Kdaj je zaporedje {a n } konvergentno, smo definirali s pomočjo limite zaporedja. Večkrat pa je dobro vedeti,

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 14. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 14. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 14. november 2013 Kvadratni koren polinoma Funkcijo oblike f(x) = p(x), kjer je p polinom, imenujemo kvadratni koren polinoma

Διαβάστε περισσότερα

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 5. december Gregor Dolinar Matematika 1

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 5. december Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 5. december 2013 Primer Odvajajmo funkcijo f(x) = x x. Diferencial funkcije Spomnimo se, da je funkcija f odvedljiva v točki

Διαβάστε περισσότερα

KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK

KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK 1 / 24 KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK Štefko Miklavič Univerza na Primorskem MARS, Avgust 2008 Phoenix 2 / 24 Phoenix 3 / 24 Phoenix 4 / 24 Črtna koda 5 / 24 Črtna koda - kontrolni bit 6 / 24

Διαβάστε περισσότερα

MATEMATIČNI IZRAZI V MAFIRA WIKIJU

MATEMATIČNI IZRAZI V MAFIRA WIKIJU I FAKULTETA ZA MATEMATIKO IN FIZIKO Jadranska cesta 19 1000 Ljubljan Ljubljana, 25. marec 2011 MATEMATIČNI IZRAZI V MAFIRA WIKIJU KOMUNICIRANJE V MATEMATIKI Darja Celcer II KAZALO: 1 VSTAVLJANJE MATEMATIČNIH

Διαβάστε περισσότερα

Diferencialna enačba, v kateri nastopata neznana funkcija in njen odvod v prvi potenci

Diferencialna enačba, v kateri nastopata neznana funkcija in njen odvod v prvi potenci Linearna diferencialna enačba reda Diferencialna enačba v kateri nastopata neznana funkcija in njen odvod v prvi potenci d f + p= se imenuje linearna diferencialna enačba V primeru ko je f 0 se zgornja

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 21. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 21. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 21. november 2013 Hiperbolične funkcije Hiperbolični sinus sinhx = ex e x 2 20 10 3 2 1 1 2 3 10 20 hiperbolični kosinus coshx

Διαβάστε περισσότερα

Booleova algebra. Izjave in Booleove spremenljivke

Booleova algebra. Izjave in Booleove spremenljivke Izjave in Booleove spremenljivke vsako izjavo obravnavamo kot spremenljivko če je izjava resnična (pravilna), ima ta spremenljivka vrednost 1, če je neresnična (nepravilna), pa vrednost 0 pravimo, da gre

Διαβάστε περισσότερα

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 15. oktober Gregor Dolinar Matematika 1

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 15. oktober Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 15. oktober 2013 Oglejmo si, kako množimo dve kompleksni števili, dani v polarni obliki. Naj bo z 1 = r 1 (cosϕ 1 +isinϕ 1 )

Διαβάστε περισσότερα

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 10. december Gregor Dolinar Matematika 1

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 10. december Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 10. december 2013 Izrek (Rolleov izrek) Naj bo f : [a,b] R odvedljiva funkcija in naj bo f(a) = f(b). Potem obstaja vsaj ena

Διαβάστε περισσότερα

Tretja vaja iz matematike 1

Tretja vaja iz matematike 1 Tretja vaja iz matematike Andrej Perne Ljubljana, 00/07 kompleksna števila Polarni zapis kompleksnega števila z = x + iy): z = rcos ϕ + i sin ϕ) = re iϕ Opomba: Velja Eulerjeva formula: e iϕ = cos ϕ +

Διαβάστε περισσότερα

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 12. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 12. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 12. november 2013 Graf funkcije f : D R, D R, je množica Γ(f) = {(x,f(x)) : x D} R R, torej podmnožica ravnine R 2. Grafi funkcij,

Διαβάστε περισσότερα

IZPIT IZ ANALIZE II Maribor,

IZPIT IZ ANALIZE II Maribor, Maribor, 05. 02. 200. (a) Naj bo f : [0, 2] R odvedljiva funkcija z lastnostjo f() = f(2). Dokaži, da obstaja tak c (0, ), da je f (c) = 2f (2c). (b) Naj bo f(x) = 3x 3 4x 2 + 2x +. Poišči tak c (0, ),

Διαβάστε περισσότερα

Splošno o interpolaciji

Splošno o interpolaciji Splošno o interpolaciji J.Kozak Numerične metode II (FM) 2011-2012 1 / 18 O funkciji f poznamo ali hočemo uporabiti le posamezne podatke, na primer vrednosti r i = f (x i ) v danih točkah x i Izberemo

Διαβάστε περισσότερα

matrike A = [a ij ] m,n αa 11 αa 12 αa 1n αa 21 αa 22 αa 2n αa m1 αa m2 αa mn se števanje po komponentah (matriki morata biti enakih dimenzij):

matrike A = [a ij ] m,n αa 11 αa 12 αa 1n αa 21 αa 22 αa 2n αa m1 αa m2 αa mn se števanje po komponentah (matriki morata biti enakih dimenzij): 4 vaja iz Matematike 2 (VSŠ) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 matrike Matrika dimenzije m n je pravokotna tabela m n števil, ki ima m vrstic in n stolpcev: a 11 a 12 a 1n a 21 a 22 a 2n

Διαβάστε περισσότερα

Kotne in krožne funkcije

Kotne in krožne funkcije Kotne in krožne funkcije Kotne funkcije v pravokotnem trikotniku Avtor: Rok Kralj, 4.a Gimnazija Vič, 009/10 β a c γ b α sin = a c cos= b c tan = a b cot = b a Sinus kota je razmerje kotu nasprotne katete

Διαβάστε περισσότερα

Week 7: Java Collection Classes

Week 7: Java Collection Classes Week 7: Java Collection Classes Υλοποιήσεις Εβδοµάδα 7: Κλάσεις συλλογών δεδοµένων στην Java Τύποι συλλογών δεδοµένων Τεχνικές υλοποίησης linked Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης,

Διαβάστε περισσότερα

PONOVITEV SNOVI ZA 4. TEST

PONOVITEV SNOVI ZA 4. TEST PONOVITEV SNOVI ZA 4. TEST 1. * 2. *Galvanski člen z napetostjo 1,5 V požene naboj 40 As. Koliko električnega dela opravi? 3. ** Na uporniku je padec napetosti 25 V. Upornik prejme 750 J dela v 5 minutah.

Διαβάστε περισσότερα

Kontrolne karte uporabljamo za sprotno spremljanje kakovosti izdelka, ki ga izdelujemo v proizvodnem procesu.

Kontrolne karte uporabljamo za sprotno spremljanje kakovosti izdelka, ki ga izdelujemo v proizvodnem procesu. Kontrolne karte KONTROLNE KARTE Kontrolne karte uporablamo za sprotno spremlane kakovosti izdelka, ki ga izdeluemo v proizvodnem procesu. Izvaamo stalno vzorčene izdelkov, npr. vsako uro, vsake 4 ure.

Διαβάστε περισσότερα

Αρχεία και Ρεύματα. Αρχεία

Αρχεία και Ρεύματα. Αρχεία Αρχεία Αρχεία και Ρεύματα sequential files(σειριακά αρχεία) direct access(απ'ευθείας πρόσβασης) Ρεύματα (I/O Streams) Ένα ρεύμα είναι μια σειριακή ροή δεδομένων από μία πηγή προς έναν προορισμό. Όταν ένα

Διαβάστε περισσότερα

Algoritmi in podatkovne strukture 2. Številska drevesa

Algoritmi in podatkovne strukture 2. Številska drevesa Algoritmi in podatkovne strukture 2 Številska drevesa osnove, PATRICIA, LC Trie Andrej Brodnik: Algoritmi in podatkovne strukture 2 / Številska drevesa osnove, PATRICIA, LC Trie (03) 1 Osnove rekurzivna

Διαβάστε περισσότερα

Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba.

Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba. 1. Osnovni pojmi Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba. Primer 1.1: Diferencialne enačbe so izrazi: y

Διαβάστε περισσότερα

1 Fibonaccijeva stevila

1 Fibonaccijeva stevila 1 Fibonaccijeva stevila Fibonaccijevo število F n, kjer je n N, lahko definiramo kot število načinov zapisa števila n kot vsoto sumandov, enakih 1 ali Na primer, število 4 lahko zapišemo v obliki naslednjih

Διαβάστε περισσότερα

1. Definicijsko območje, zaloga vrednosti. 2. Naraščanje in padanje, ekstremi. 3. Ukrivljenost. 4. Trend na robu definicijskega območja

1. Definicijsko območje, zaloga vrednosti. 2. Naraščanje in padanje, ekstremi. 3. Ukrivljenost. 4. Trend na robu definicijskega območja ZNAČILNOSTI FUNKCIJ ZNAČILNOSTI FUNKCIJE, KI SO RAZVIDNE IZ GRAFA. Deinicijsko območje, zaloga vrednosti. Naraščanje in padanje, ekstremi 3. Ukrivljenost 4. Trend na robu deinicijskega območja 5. Periodičnost

Διαβάστε περισσότερα

*M * Osnovna in višja raven MATEMATIKA NAVODILA ZA OCENJEVANJE. Sobota, 4. junij 2011 SPOMLADANSKI IZPITNI ROK. Državni izpitni center

*M * Osnovna in višja raven MATEMATIKA NAVODILA ZA OCENJEVANJE. Sobota, 4. junij 2011 SPOMLADANSKI IZPITNI ROK. Državni izpitni center Državni izpitni center *M40* Osnovna in višja raven MATEMATIKA SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Sobota, 4. junij 0 SPLOŠNA MATURA RIC 0 M-40-- IZPITNA POLA OSNOVNA IN VIŠJA RAVEN 0. Skupaj:

Διαβάστε περισσότερα

Delovna točka in napajalna vezja bipolarnih tranzistorjev

Delovna točka in napajalna vezja bipolarnih tranzistorjev KOM L: - Komnikacijska elektronika Delovna točka in napajalna vezja bipolarnih tranzistorjev. Določite izraz za kolektorski tok in napetost napajalnega vezja z enim virom in napetostnim delilnikom na vhod.

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων

Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων Προγραμματισμός ΙΙ (Java) 7. Συλλογές δεδομένων Συλλογές και ενέργειες ArrayList Αναζήτηση συγκεκριμένου στοιχείου Αναζήτηση ελαχίστου/μεγίστου Συνάθροιση Πίνακας Εισαγωγή Εισαγωγή με έλεγχο διπλοτύπων

Διαβάστε περισσότερα

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

Definicija. definiramo skalarni produkt. x i y i. in razdaljo. d(x, y) = x y = < x y, x y > = n (x i y i ) 2. i=1. i=1

Definicija. definiramo skalarni produkt. x i y i. in razdaljo. d(x, y) = x y = < x y, x y > = n (x i y i ) 2. i=1. i=1 Funkcije več realnih spremenljivk Osnovne definicije Limita in zveznost funkcije več spremenljivk Parcialni odvodi funkcije več spremenljivk Gradient in odvod funkcije več spremenljivk v dani smeri Parcialni

Διαβάστε περισσότερα

13. Jacobijeva metoda za računanje singularnega razcepa

13. Jacobijeva metoda za računanje singularnega razcepa 13. Jacobijeva metoda za računanje singularnega razcepa Bor Plestenjak NLA 25. maj 2010 Bor Plestenjak (NLA) 13. Jacobijeva metoda za računanje singularnega razcepa 25. maj 2010 1 / 12 Enostranska Jacobijeva

Διαβάστε περισσότερα

Collections Lists - ArrayLists. Παναγιώτης Σφέτσος, PhD

Collections Lists - ArrayLists. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Collections Lists - ArrayLists PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Δομές Δεδομένων- Container Object Δομή δεδομένων: μια δομημένη συλλογή δεδομένων,

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ Κατηγορίες Διαχείριση αρχείων Η κλάση File για τη διαχείριση αρχείων Δυαδικά ρεύματα Εγγραφή και ανάγνωση δυαδικών αρχείων

Διαβάστε περισσότερα

DISKRETNA FOURIERJEVA TRANSFORMACIJA

DISKRETNA FOURIERJEVA TRANSFORMACIJA 29.03.2004 Definicija DFT Outline DFT je linearna transformacija nekega vektorskega prostora dimenzije n nad obsegom K, ki ga označujemo z V K, pri čemer ima slednji lastnost, da vsebuje nek poseben element,

Διαβάστε περισσότερα

Γαβαλάς Δαμιανός dgavalas@aegean.gr

Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #10 η : Ίνες και πολυνηματικός προγραμματισμός, Δυναμικές δομές δεδομένων στη Java Γαβαλάς Δαμιανός dgavalas@aegean.gr 1 Νήματα Ένα νήμα (thread) από

Διαβάστε περισσότερα

Numerično reševanje. diferencialnih enačb II

Numerično reševanje. diferencialnih enačb II Numerčno reševanje dferencaln enačb I Dferencalne enačbe al ssteme dferencaln enačb rešujemo numerčno z več razlogov:. Ne znamo j rešt analtčno.. Posamezn del dferencalne enačbe podan tabelarčno. 3. Podatke

Διαβάστε περισσότερα

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος H κλάση ArrayList Γιώργος Θάνος Γραφείο Γ ος όροφος Γκλαβάνη 37 Εισαγωγικά Η κλάση ArrayList δίνει την δυνατότητα να αποθηκεύσουμε δεδομένα οποιουδήποτε τύπου σε μία δομή δεδομένων η οποία επιτρέπει τα

Διαβάστε περισσότερα

Iterativno reševanje sistemov linearnih enačb. Numerične metode, sistemi linearnih enačb. Numerične metode FE, 2. december 2013

Iterativno reševanje sistemov linearnih enačb. Numerične metode, sistemi linearnih enačb. Numerične metode FE, 2. december 2013 Numerične metode, sistemi linearnih enačb B. Jurčič Zlobec Numerične metode FE, 2. december 2013 1 Vsebina 1 z n neznankami. a i1 x 1 + a i2 x 2 + + a in = b i i = 1,..., n V matrični obliki zapišemo:

Διαβάστε περισσότερα

Funkcije več spremenljivk

Funkcije več spremenljivk DODATEK C Funkcije več spremenljivk C.1. Osnovni pojmi Funkcija n spremenljivk je predpis: f : D f R, (x 1, x 2,..., x n ) u = f (x 1, x 2,..., x n ) kjer D f R n imenujemo definicijsko območje funkcije

Διαβάστε περισσότερα

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Αντικείμενο: Αρχεία Πακέτο java.io Πακέτο java.io.zip Στην Java δεν υπάρχει η έννοια των εγγραφών μέσα σε ένα αρχείο. Ο προγραμματιστής πρέπει να κατασκευάσει το αρχείο κατάλληλα έτσι ώστε

Διαβάστε περισσότερα

Algebraične strukture

Algebraične strukture Poglavje V Algebraične strukture V tem poglavju bomo spoznali osnovne algebraične strukture na dani množici. Te so podane z eno ali dvema binarnima operacijama. Binarna operacija paru elementov iz množice

Διαβάστε περισσότερα

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis Διαχείριση Δικτύων Nikolas Bompetsis nbompetsis@di.uoa.gr Εισαγωγική Διάλεξη Java Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Τεχνολογία Java Collections & Generics Διαχείριση σφαλμάτων Ροές Δεδομένων

Διαβάστε περισσότερα

Osnove elektrotehnike uvod

Osnove elektrotehnike uvod Osnove elektrotehnike uvod Uvod V nadaljevanju navedena vprašanja so prevod testnih vprašanj, ki sem jih našel na omenjeni spletni strani. Vprašanja zajemajo temeljna znanja opredeljenega strokovnega področja.

Διαβάστε περισσότερα

Osnove matematične analize 2016/17

Osnove matematične analize 2016/17 Osnove matematične analize 216/17 Neža Mramor Kosta Fakulteta za računalništvo in informatiko Univerza v Ljubljani Kaj je funkcija? Funkcija je predpis, ki vsakemu elementu x iz definicijskega območja

Διαβάστε περισσότερα

Σι θα δούμε σε αυτό το μάθημα;

Σι θα δούμε σε αυτό το μάθημα; Σι θα δούμε σε αυτό το μάθημα; Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ πηλάθσλ (arrays) Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ ζπιινγώλ (collections) Σι είναι ένας πίνακας (array) Έλαο πίλαθαο είλαη

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 12: Είσοδος από & Έξοδος σε Ρεύματα & Αρχεία Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης

Διαβάστε περισσότερα

Generics και ArrayLists

Generics και ArrayLists ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Generics και ArrayLists Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 3: JAVA: ΕΞΑΙΡΕΣΕΙΣ, ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ, ΝΗΜΑΤΑ Είσοδος - Έξοδος ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

Διαβάστε περισσότερα

Na pregledni skici napišite/označite ustrezne točke in paraboli. A) 12 B) 8 C) 4 D) 4 E) 8 F) 12

Na pregledni skici napišite/označite ustrezne točke in paraboli. A) 12 B) 8 C) 4 D) 4 E) 8 F) 12 Predizpit, Proseminar A, 15.10.2015 1. Točki A(1, 2) in B(2, b) ležita na paraboli y = ax 2. Točka H leži na y osi in BH je pravokotna na y os. Točka C H leži na nosilki BH tako, da je HB = BC. Parabola

Διαβάστε περισσότερα

Matematika vaja. Matematika FE, Ljubljana, Slovenija Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija

Matematika vaja. Matematika FE, Ljubljana, Slovenija Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija Matematika 1 3. vaja B. Jurčič Zlobec 1 1 Univerza v Ljubljani, Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija Matematika FE, Ljubljana, Slovenija 2011 Določi stekališča zaporedja a

Διαβάστε περισσότερα

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο ) Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Εισαγωγή στον Προγραµµατισµό των Υπολογιστών Καθηγητής Ι. Κάβουρας Εξεταστική περίοδος Φεβρουαρίου 2004 Τετάρτη 10/3/2004, ώρα 8.00 Στοιχεία εξεταζόµενου

Διαβάστε περισσότερα

Είσοδος & Έξοδος. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Είσοδος & Έξοδος. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Είσοδος & Έξοδος Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.09 Ρεύµατα (Streams) 2 Ένας ορισµός του ρεύµατος Αφαιρετική έννοια για κάτι το οποίο παράγει

Διαβάστε περισσότερα

8. Diskretni LTI sistemi

8. Diskretni LTI sistemi 8. Diskreti LI sistemi. Naloga Določite odziv diskretega LI sistema s podaim odzivom a eoti impulz, a podai vhodi sigal. h[] x[] - - 5 6 7 - - 5 6 7 LI sistem se a vsak eoti impulz δ[] a vhodu odzove z

Διαβάστε περισσότερα

FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22. junij Navodila

FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22. junij Navodila FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22 junij 212 Ime in priimek: Vpisna št: Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Veljale bodo samo rešitve na papirju, kjer

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες http://aetos.it.teithe.gr/~demos/teaching_gr.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

Dragi polinom, kje so tvoje ničle?

Dragi polinom, kje so tvoje ničle? 1 Dragi polinom, kje so tvoje ničle? Vito Vitrih FAMNIT - Izlet v matematično vesolje 17. december 2010 Polinomi: 2 Polinom stopnje n je funkcija p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0, a i R.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές ArrayList H κλάση ArrayList είναι μια περίπτωση γενικευμένης κλάσης Ένας δυναμικός πίνακας που ορίζεται με παράμετρο τον τύπο των αντικειμένων που

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Συλλογές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές ΣΥΛΛΟΓΕΣ Η ιεραρχία Interface Collection Interface List Interface Set Interface Map class ArrayList class HashSet class HashMap

Διαβάστε περισσότερα

V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant.

V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant. Poglavje IV Determinanta matrike V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant 1 Definicija Preden definiramo determinanto,

Διαβάστε περισσότερα

diferencialne enačbe - nadaljevanje

diferencialne enačbe - nadaljevanje 12. vaja iz Matematike 2 (VSŠ) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 diferencialne enačbe - nadaljevanje Ortogonalne trajektorije Dana je 1-parametrična družina krivulj F(x, y, C) = 0. Ortogonalne

Διαβάστε περισσότερα

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java JAVA, NETBEANS ΑΝΑΚΕΦΑΛΑΙΩΣΗ Τα βασικά για την γλώσσα Java Java portability Το μεγαλύτερο πλεονέκτημα της Java είναι η μεταφερσιμότητα: ο κώδικας μπορεί να τρέξει πάνω σε οποιαδήποτε πλατφόρμα. Write-Once-Run-Anywhere

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου Μεγάλο παράδειγμα Θέλουμε να δημιουργήσουμε ένα λογισμικό για ένα τμήμα πανεπιστημίου. Το τμήμα έχει 4

Διαβάστε περισσότερα

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 12 Ροές και είσοδος/έξοδος αρχείων Τα δεδομένα εισόδου

Διαβάστε περισσότερα

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Δοµές Δεδοµένων 3ο Εξάµηνο Υλοποίηση Στοίβας και Ουράς µε Συνδεδεµένες Λίστες Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ public class LinkedStack //implements Stack // Υλοποίηση στοίβας

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

Διαβάστε περισσότερα

vezani ekstremi funkcij

vezani ekstremi funkcij 11. vaja iz Matematike 2 (UNI) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 ekstremi funkcij več spremenljivk nadaljevanje vezani ekstremi funkcij Dana je funkcija f(x, y). Zanimajo nas ekstremi nad

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ Java 2

Προγραµµατισµός ΙΙ Java 2 Προγραµµατισµός ΙΙ Java 2 ιαχείριση Αρχείων Αρχεία Γιατί χρειαζόµαστε να γνωρίζουµε πως διαχειριζόµαστε αρχεία? Για να αποθηκεύουµε και να διαβάζουµε δεδοµένα από το δίσκο (τους λογικούς δίσκους πιο σωστά)

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

Integralni račun. Nedoločeni integral in integracijske metrode. 1. Izračunaj naslednje nedoločene integrale: (a) dx. (b) x 3 +3+x 2 dx, (c) (d)

Integralni račun. Nedoločeni integral in integracijske metrode. 1. Izračunaj naslednje nedoločene integrale: (a) dx. (b) x 3 +3+x 2 dx, (c) (d) Integralni račun Nedoločeni integral in integracijske metrode. Izračunaj naslednje nedoločene integrale: d 3 +3+ 2 d, (f) (g) (h) (i) (j) (k) (l) + 3 4d, 3 +e +3d, 2 +4+4 d, 3 2 2 + 4 d, d, 6 2 +4 d, 2

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αρχεία Ρεύματα Τι είναι ένα ρεύμα (ροή)? Μια αφαίρεση που αναπαριστά μια ροή δεδομένων Η ροή αυτή μπορεί να είναι εισερχόμενη προς το πρόγραμμα (μια πηγή δεδομένων)

Διαβάστε περισσότερα

Reševanje sistema linearnih

Reševanje sistema linearnih Poglavje III Reševanje sistema linearnih enačb V tem kratkem poglavju bomo obravnavali zelo uporabno in zato pomembno temo linearne algebre eševanje sistemov linearnih enačb. Spoznali bomo Gaussovo (natančneje

Διαβάστε περισσότερα

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων

Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων Προγραμματισμός ΙΙ (Java) 3. Διαχείριση πολλαπλών αντικειμένων Πίνακες Προκαθορισμένο μέγεθος Συνεχείς θέσεις Πίνακες τιμών Αρχικοποιούνται σε 0 ή false int[] a=new int[10]; boolean[] b=new boolean[10];

Διαβάστε περισσότερα

NEPARAMETRIČNI TESTI. pregledovanje tabel hi-kvadrat test. as. dr. Nino RODE

NEPARAMETRIČNI TESTI. pregledovanje tabel hi-kvadrat test. as. dr. Nino RODE NEPARAMETRIČNI TESTI pregledovanje tabel hi-kvadrat test as. dr. Nino RODE Parametrični in neparametrični testi S pomočjo z-testa in t-testa preizkušamo domneve o parametrih na vzorcih izračunamo statistike,

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 7 Ουρά (Queue) Queue Μάθημα: Δομές Δεδομένων & Αλγόριθμοι

Διαβάστε περισσότερα

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω: 3 ΣTOIBEΣ KAI OYPEΣ 3.1 ΣΤΟΙΒΕΣ Στοίβα (stack) είναι µία λίστα στην οποία νέα στοιχεία µπορούν να προστεθούν και να αφαιρεθούν µόνο από τη µία άκρη της (κορυφή της στοίβας). Συχνά µία στοίβα αναφέρεται

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Γενικευμένες κλάσεις Συλλογές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Γενικευμένες κλάσεις Συλλογές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές Stack Θυμηθείτε πως ορίσαμε μια στοίβα ακεραίων public class IntStack { private IntStackElement head; private int size = 0; public

Διαβάστε περισσότερα

SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK

SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK SKUPNE PORAZDELITVE SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK Kovaec vržemo trikrat. Z ozačimo število grbov ri rvem metu ( ali ), z Y a skuo število grbov (,, ali 3). Kako sta sremelivki i Y odvisi

Διαβάστε περισσότερα

II. LIMITA IN ZVEZNOST FUNKCIJ

II. LIMITA IN ZVEZNOST FUNKCIJ II. LIMITA IN ZVEZNOST FUNKCIJ. Preslikave med množicami Funkcija ali preslikava med dvema množicama A in B je predpis f, ki vsakemu elementu x množice A priredi natanko določen element y množice B. Važno

Διαβάστε περισσότερα

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας

ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ 252 Αντικειμενοστρεφ ής Προγραμματισμός Διδάσκων: Γιάννης Τζίτζικας Τελική Εξέταση (3 ώρες) Ημερομηνία: 25 Ιανουαρίου 2008 ύνολο μονάδων: 120 (δηλαδή

Διαβάστε περισσότερα

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

Διαβάστε περισσότερα

Matematika. Funkcije in enačbe

Matematika. Funkcije in enačbe Matematika Funkcije in enačbe (1) Nariši grafe naslednjih funkcij: (a) f() = 1, (b) f() = 3, (c) f() = 3. Rešitev: (a) Linearna funkcija f() = 1 ima začetno vrednost f(0) = 1 in ničlo = 1/. Definirana

Διαβάστε περισσότερα

Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika

Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Algoritmi in problemi Jurij Mihelič, UniLj, FRI Algoritmi Izvor izraza al-khwārizmī al-gwaritmi algoritmi

Διαβάστε περισσότερα

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta Matematika Gabrijel Tomšič Bojan Orel Neža Mramor Kosta 6. november 200 Poglavje 2 Zaporedja in številske vrste 2. Zaporedja 2.. Uvod Definicija 2... Zaporedje (a n ) = a, a 2,..., a n,... je predpis,

Διαβάστε περισσότερα

Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA. Polona Oblak

Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA. Polona Oblak Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA Polona Oblak Ljubljana, 04 CIP - Kataložni zapis o publikaciji Narodna in univerzitetna knjižnica, Ljubljana 5(075.8)(0.034.) OBLAK,

Διαβάστε περισσότερα

Poglavje 7. Poglavje 7. Poglavje 7. Regulacijski sistemi. Regulacijski sistemi. Slika 7. 1: Normirana blokovna shema regulacije EM

Poglavje 7. Poglavje 7. Poglavje 7. Regulacijski sistemi. Regulacijski sistemi. Slika 7. 1: Normirana blokovna shema regulacije EM Slika 7. 1: Normirana blokovna shema regulacije EM Fakulteta za elektrotehniko 1 Slika 7. 2: Principielna shema regulacije AM v KSP Fakulteta za elektrotehniko 2 Slika 7. 3: Merjenje komponent fluksa s

Διαβάστε περισσότερα

Osnove sklepne statistike

Osnove sklepne statistike Univerza v Ljubljani Fakulteta za farmacijo Osnove sklepne statistike doc. dr. Mitja Kos, mag. farm. Katedra za socialno farmacijo e-pošta: mitja.kos@ffa.uni-lj.si Intervalna ocena oz. interval zaupanja

Διαβάστε περισσότερα

1. izpit iz Diskretnih struktur UNI Ljubljana, 17. januar 2006

1. izpit iz Diskretnih struktur UNI Ljubljana, 17. januar 2006 1. izpit iz Diskretnih struktur UNI Ljubljana, 17. januar 2006 1. Dana je množica predpostavk p q r s, r t, s q, s p r, s t in zaključek t r. Odloči, ali je sklep pravilen ali napačen. pravilen, zapiši

Διαβάστε περισσότερα

Συντακτικά λάθη, λάθη εκτέλεσης, Λογικά λάθη

Συντακτικά λάθη, λάθη εκτέλεσης, Λογικά λάθη Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #7 η : Εξαιρέσεις (λάθη εκτέλεσης, χειρισμός εξαιρέσεων λαθών,) Είσοδος / Έξοδος (ρεύματα, κλάσεις εισόδου και εξόδου, διαχείριση αρχείων) Γαβαλάς

Διαβάστε περισσότερα

Matematika. BF Lesarstvo. Zapiski ob predavanjih v šolskem letu 2010/2011

Matematika. BF Lesarstvo. Zapiski ob predavanjih v šolskem letu 2010/2011 Matematika BF Lesarstvo Matjaž Željko Zapiski ob predavanjih v šolskem letu 00/0 Izpis: 9 avgust 0 Kazalo Števila 5 Naravna števila 5 Cela števila 6 3 Racionalna števila 6 4 Realna števila 7 5 Urejenost

Διαβάστε περισσότερα

Kotni funkciji sinus in kosinus

Kotni funkciji sinus in kosinus Kotni funkciji sinus in kosinus Oznake: sinus kota x označujemo z oznako sin x, kosinus kota x označujemo z oznako cos x, DEFINICIJA V PRAVOKOTNEM TRIKOTNIKU: Kotna funkcija sinus je definirana kot razmerje

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Είσοδος Έξοδος (Input Output) Εξαιρέσεις (Exceptions)

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Είσοδος Έξοδος (Input Output) Εξαιρέσεις (Exceptions) ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Είσοδος Έξοδος (Input Output) Εξαιρέσεις (Exceptions) Οι εφαρμογές της Java είναι

Διαβάστε περισσότερα

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος

Διαβάστε περισσότερα

Poliedri Ines Pogačar 27. oktober 2009

Poliedri Ines Pogačar 27. oktober 2009 Poliedri Ines Pogačar 27. oktober 2009 Pri linearnem programiranju imamo opravka s končnim sistemom neenakosti in končno spremenljivkami, torej je množica dopustnih rešitev presek končno mnogo polprostorov.

Διαβάστε περισσότερα

Fazni diagram binarne tekočine

Fazni diagram binarne tekočine Fazni diagram binarne tekočine Žiga Kos 5. junij 203 Binarno tekočino predstavljajo delci A in B. Ti se med seboj lahko mešajo v različnih razmerjih. V nalogi želimo izračunati fazni diagram take tekočine,

Διαβάστε περισσότερα

Podobnost matrik. Matematika II (FKKT Kemijsko inženirstvo) Diagonalizacija matrik

Podobnost matrik. Matematika II (FKKT Kemijsko inženirstvo) Diagonalizacija matrik Podobnost matrik Matematika II (FKKT Kemijsko inženirstvo) Matjaž Željko FKKT Kemijsko inženirstvo 14 teden (Zadnja sprememba: 23 maj 213) Matrika A R n n je podobna matriki B R n n, če obstaja obrnljiva

Διαβάστε περισσότερα

Domače naloge za 2. kolokvij iz ANALIZE 2b VEKTORSKA ANALIZA

Domače naloge za 2. kolokvij iz ANALIZE 2b VEKTORSKA ANALIZA Domače naloge za 2. kolokvij iz ANALIZE 2b VEKTORSKA ANALIZA. Naj bo vektorsko polje R : R 3 R 3 dano s predpisom R(x, y, z) = (2x 2 + z 2, xy + 2yz, z). Izračunaj pretok polja R skozi površino torusa

Διαβάστε περισσότερα

3.1 Reševanje nelinearnih sistemov

3.1 Reševanje nelinearnih sistemov 3.1 Reševanje nelinearnih sistemov Rešujemo sistem nelinearnih enačb f 1 (x 1, x 2,..., x n ) = 0 f 2 (x 1, x 2,..., x n ) = 0. f n (x 1, x 2,..., x n ) = 0. Pišemo F (x) = 0, kjer je x R n in F : R n

Διαβάστε περισσότερα