ADT Seznam. dynamická množina. prvky vkládáme a vyjímáme na libovolné pozici (místě) v jejich posloupnosti (sekvenci) zásobník a fronta vs.
|
|
- František Libor Netrval
- před 9 lety
- Počet zobrazení:
Transkript
1 ADT Seznam dynamická množina prvky vkládáme a vyjímáme na libovolné pozici (místě) v jejich posloupnosti (sekvenci) zásobník a fronta vs. seznam
2 Příklad řádek znaků na obrazovce (model) abcd - okamžitá, nynější pozice v seznamu vlož x (za okamžitou pozici): abxcd vlož y (za okamžitou pozici): abxycd posun na další prvek: abxycd vyber prvek (na okamžité pozici): abxyd
3 Rozhraní ADT seznam // rozhrani ADT seznam Seznam() // vytvoření prázdného seznamu boolean jeprazdny( ) // test je-li seznam prázdný void tiskseznamu( ) // tisk prvků seznamu void nazacatek( ) // nastavení okamžité pozice na // první prvek boolean jeposledni( ) // test je-li okamžitá pozice // nastavena na poslední prvek void nadalsiprvek( ) // nastavení okamžité pozice na // pozici následujícího prvku int ctiklic( ) // přečti klíč prvku na okamžité // pozici void vloz(int i) // vlož prvek int vyber( ) // vyber prvek
4 odstranění všech výskytů prvku int x v Seznamu s if(!s.jeprazdny()) { s.nazacatek(); boolean konec=false; while (!konec) { konec = s.jeposledni(); if(s.ctiklic() == x) s.vyber(); else s.nadalsiprvek(); neznáme implementaci!
5 Implementace ADT seznam polem - operace vložení a výběru uvnitř seznamu jsou O(n) spojovou strukturou - všechny operace vložení a výběru jsou O(1)
6 List (interface) Order is the most important feature of a List; it promises to maintain elements in a particular sequence. List adds a number of methods to Collection that allow insertion and removal of elements in the middle of a List. (This is recommended only for a LinkedList.) A List will produce a ListIterator, and using this you can traverse the List in both directions, as well as insert and remove elements in the middle of the List. ArrayList* A List implemented with an array. Allows rapid random access to elements, but is slow when inserting and removing elements from the middle of a list. ListIterator should be used only for back-andforth traversal of an ArrayList, but not for inserting and removing elements, which is expensive compared to LinkedList. LinkedList Provides optimal sequential access, with inexpensive insertions and deletions from the middle of the List. Relatively slow for random access. (Use ArrayList instead.) Also has addfirst( ), addlast( ), getfirst( ), getlast( ), removefirst( ), and removelast( ) (which are not defined in any interfaces or base classes) to allow it to be used as a stack, a queue, and a deque. Bruce Eckel: Thinking in Java. Second Edition. President, MindView, Inc.
7 Implementace spojovou strukturou prvek seznamu class Prvek {... klic; Prvek dalsi; seznam reprezentován referenční proměnnou prvni typu Prvek inicializace: prvni = null; test je-li prázdný: if(prvni == null); okamžitá pozici reprezentována referenční proměnnou nynejsi (pozice), typu Prvek nastaveni na začátek: nynejsi = prvni; test poslední pozice: if (nynejsi.dalsi == null); posun na další prvek: nynejsi = nynejsi.dalsi; procházení seznamem: for (nynejsi = prvni; nynejsi!= null; nynejsi = nynejsi.dalsi) nalezení prvku s určitou hodnotou: if(nynejsi.klic = hodnota);
8 vlož prvek za nynejsi: if (prvni == null) { prvni = novy; prvni.dalsi = null; else { novy.dalsi = nynejsi.dalsi; nynejsi.dalsi = novy; nynejsi = novy;
9 pro výběr (nynějšího) prvku musíme znát odkaz na předcházející prvek! predch udržuje odkaz na prvek předcházející okamžité pozici je-li okamžitou pozicí první prvek má proměnná predch hodnotu null vyber nynejsi: if(predch == null) { prvni = nynejsi.dalsi; nynejsi = prvni; else { predch.dalsi = nynejsi.dalsi; if (nynejsi.dalsi == null) { //byl poslední nynejsi = prvni; predch = null; else nynejsi = nynejsi.dalsi;
10 Poznámka: v případě, že jsme odstranili poslední prvek, nastavíme okamžitou pozici v seznamu na první prvek Poznámka: uvedená implementace operace pro vložení prvku neumožňuje vložit do neprázdného seznamu prvek na první místo - můžeme doplnit operace o operaci vlož na začátek - s pomocí proměnné predch můžeme napsat implementaci obecnější operace vlož před, která vloží prvek před okamžitou pozici Poznámka: pozorujte nutnost odlišnosti vybíráme-li první prvek a poslední prvek
11 Referenční proměnná s třídy Seznam a její instance
12 Úkol (motivační) Seznam hochů a dívek vytiskněte tak, aby v levém sloupci byli pod sebou jména všech hochů a v pravém sloupci jména všech dívek. V seznamu je stejný počet dívek a hochů a byli do něj vloženi náhodně. Petr Jan Eva Eda Jana Iva Petr Jan Eda Eva Jana Iva Algoritmus (myšlenka) - najdi prvního hocha a vytiskni jmeno - najdi první dívku a vytiskni jmeno - přejdi na nový řádek - najdi dalšího hocha a vytiskni jmeno - najdi další dívku a vytiskni jmeno - přejdi na nový řádek - skonči, není-li v seznamu dalsi hoch ani dalsi divka
13 Implementace? oddělíme - data objektu implementujícího seznam - proměnná prvni - práci s ním, proměnné nynejsi a predch, implementuje iterátor objekty třídy Seznam metodou getiterator(), získají referenci na své objekty třídy IteratorSeznamu class Seznam { private Prvek prvni; Seznam();... IteratorSeznamu getiterator() { return new IteratorSeznamu(this);... class IteratorSeznamu { private Prvek nynejsi; private Prvek predch; private Seznam s; IteratorSeznamu(Seznam s) { this.s = s; nazacatek();... každý iterátor spravuje vlastní okamžitou pozici daného seznamu
14 public static void main (...) {... Seznam nasseznam = new Seznam(); IteratorSeznamu it1 = nasseznam.getiterator(); IteratorSeznamu it2 = nasseznam.getiterator();
15 class Seznam { // rozhraní Seznam() { Prvek getprvni() void setprvni(prvek) boolean jeprazdny() IteratorSeznamu getiterator() void tiskseznamu () class IteratorSeznamu { IteratorSeznamu(Seznam) void nazacatek() boolean jeposledni() void nadalsiprvek() int ctiklic() void vloz(int) int vyber // rozhraní
16 Implementace metod tříd Seznam a IteratorSeznamu class Prvek { int klic; Prvek dalsi; Prvek (int klic) { this.klic = klic; void tiskprvku() { System.out.print(klic + " "); class Seznam { private Prvek prvni; Seznam() { prvni = null; Prvek getprvni() { return prvni; void setprvni(prvek ref) { prvni = ref; boolean jeprazdny() { return (prvni == null); IteratorSeznamu getiterator() { return new IteratorSeznamu(this); void tiskseznamu() { for (Prvek x = prvni; x!= null; x = x.dalsi) x.tiskprvku(); System.out.println("");
17 class IteratorSeznamu { private Prvek nynejsi; private Prvek predch; private Seznam s; IteratorSeznamu(Seznam s) { this.s = s; nazacatek(); void nazacatek() { nynejsi = s.getprvni(); predch = null; boolean jeposledni() { return (nynejsi.dalsi == null); void nadalsiprvek() { predch = nynejsi; nynejsi = nynejsi.dalsi; int ctiklic() { return nynejsi.klic; void vloz(int i) { Prvek novy = new Prvek(i); if (s.jeprazdny()) { s.setprvni(novy); nynejsi = novy; else { novy.dalsi = nynejsi.dalsi; nynejsi.dalsi = novy; nadalsiprvek();
18 int vyber() { int i = nynejsi.klic; if(predch == null) { s.setprvni(nynejsi.dalsi); nazacatek(); else { predch.dalsi = nynejsi.dalsi; if (jeposledni()) nazacatek(); else nynejsi = nynejsi.dalsi; return i; opět v implementaci některých operací musíme rozlišovat, je-li okamžitá pozice první resp. poslední prvek řešení hlavička seznamu
19 Hlavička seznamu odkaz na první prvek seznamu je v položce dalsi v zdánlivém (dummy) prvku seznamu - v hlavičce hlavicka hlavicka nahradí proměnnou prvni třída Seznam inicializace: hlavicka = new Prvek(); test je-li prázdný: if (hlavicka.dalsi == null) gethlavicka() bude vracet referenci na hlavičku seznamu
20 třída IteratorSeznamu nastavení na začátek: if(s.jeprazdny()) { nynejsi = s.gethlavicka(); predch = null; else { nynejsi = s.gethlavicka().dalsi; predch = s.gethlavicka(); vlož prvek za nynejsi: novy.dalsi = nynejsi.dalsi; nynejsi.dalsi = novy; nadalsiprvek(); //opravit v eknize vyber nynejsi: predch.dalsi = nynejsi.dalsi; if (jeposledni()) nazacatek(); else nynejsi = nynejsi.dalsi;
21 Kruhový spojový seznam v položce dalsi posledního prvku namísto hodnoty null uchovávame odkaz na první prvek Obousměrný spojový seznam class Prvek {... Prvek dalsi; Prvek predch; Koncový prvek konec seznamu - objekt z třídy Prvek, kterého položka dalsi odkazuje na sebe inicializace: hlavicka = new Prvek(); z = new Prvek(); hlavicka.dalsi = z; z.dalsi = z;
22 Implementace spojového seznamu pomocí paralelních polí char[] klic = new char[max]; int[] dalsi = new int[max]; prvek seznamu dvojice prvků se stejným indexem dalsi[i] - ukazatel na následující prvek seznamu dalsi[i] == -1 - poslední prvek Příklad int jmeno = 3; klic[3] = P ; dalsi[3] = [4]; klic[4] = A ; dalsi[4] = [7]; klic[7] = V ; dalsi[7] = [2]; klic[2] = E ; dalsi[2] = [6]; klic[6] = L ; dalsi[6] = [-1]; int jinejmeno = 9; klic[9] = D ; dalsi[9] =...;
23 správa volných prvků zásobník všech volných prvků -spojené prvky pole dalsi -vrchol v proměnné volne int volne; přidělení indexu pro další prvek seznamu int pridelindex() { if (volne == -1) neni volny index else { int i = volny; volny = dalsi[i]; return i; vrácení indexu mezi volné void uvolniindex(i) { dalsi[i] = volne; volne = i; Poznámka: pole je dobrým modelem hlavní paměti počítače
24 Rekurze Pes jitrničku sežral... Pes jitrničku sežral docela maličkou, spatřil ho při tom kuchař, klepl ho paličkou. Plakali všichni psové kopali jemu hrob, na desce mramorové stál nápis těchto slov: něco částečně složeno nebo definováno pomocí sebe samého písnička Pes jitrničku těchto slov: + písnička String Pisnicka( ) { return ( Pes jitrničku těchto slov + Pisnicka( ));
25 zpívání s x opakováními class Pisnicka { public static void main(string[] args) { int x = Integer.parseInt(args[0]); System.out.println(Pisnicka(x)); static String Pisnicka(int x) { if (x == 0) return ""; else return ("Pes jitrnicku... techto slov:" + Pisnicka(--x));
26 Co je něco? - funkce: faktoriál a) 0! = 1, b) n! = n.(n-1)!, pro n >0 - množiny: seznam a) ( ) je seznam b) je-li e hodnota prvku seznamu její přidání k seznamu vytvoří seznam - geometrické útvary: Hilbertovy křivky H 1 H 2 H 3
27 - algoritmy nalezení nejmenšího prvku pole a) nejmenší prvek pole s jedním prvkem je tento prvek b) nejmenší prvek pole s více než jedním prvkem je menší z nejmenších prvků levé a pravé poloviny pole. V případě lichého prvku se jejich velikost liší o 1. hanojské věže a) má-li věž velikost jednoho kotouče, přenes kotouč ze zdrojové na cílovou tyč b) má-li věž velikost n>1 kotoučů, přenes věž o velikosti n-1 kotoučů na pomocnou tyč; přenes kotouč ze zdrojové na cílovou tyč; přenes věž o velikosti n-1 kotoučů z pomocné tyče na cílovou zdroj pom cíl
28 Rekurzivní schéma: aspoň jeden případ, který není definován samým sebou a) ostatní případy vyjádřeny případy menší velikosti - b) Schémata jsou nezávislá na počítačích a programování. Můžeme je vyjádřit pomocí rekurzivních programů.
29 Faktoriál class Faktorial { public static void main (String[] args) { int n = Integer.parseInt(args[0]); System.out.println(n+"! = "+f(n)); static int f(int n) { if (n > 1) return n * f(n - 1); else return 1; Čas výpočtu: T(n) = c por, pro n 1 T(n) = c por + c nas + T(n-1), pro n > 1 T(n) = c por + c nas + T(n-1) = c por + c nas + (c por + c nas + T(n-2)) = c por + c nas + (c por + c nas (c por + c nas + T(1)) = (n-1) (c nas + c por ) + c por = n c por + (n-1) c nas Čas výpočtu je O(n).
30 - přímočaré použití rekurze může být velice nevhodné Fibonacciho čísla F 0 = 0, F 1 = 1, F i = F i-1 + F i-2 pro i 2 0, 1, 1, 2, 3, 5, 8, Rekurzivní výpočet static int F(int i) { if (i < 1) return 0; if (i == 1) return 1; return F(i-1) + F(i-2);
31 Rekurzivní volání pro F 6 F 0 F 1 F 2 F 3 F 4 F 5 F 6 0, 1, 1, 2, 3, 5, 8, Počet rekurzivních volání pro výpočet F i F 2 : 2 F 3 : = 3 F 4 : (2 + 1) + (2) = 5 F 5 : ( ) + (2 + 1) = 8 Počet rekurzivních volání pro výpočet F n je F n+1 (indukcí) F n je nejbližší celé číslo k φ n / 5, kde φ je zlatý poměr Čas výpočtu roste exponenciálně! Poznámka: 1 : x = x : (1 x), 1/x je zlatý poměr
32 Seznam přímý průchod seznamem s tiskem hodnot procházených prvků void pruchod(prvek x) { if (x == null) return; x.tiskprvku( ); pruchod(x.dalsi); obrácený průchod seznamem s tiskem hodnot procházených prvků void pruchodr(prvek x) { if (x == null) return; pruchodr(x.dalsi); x.tiskprvku ( );
33 koncová rekurze - rekurzivní výpočet faktoriálu - přímý průchod seznamem - je-li posledním krokem rekurzivní metody M(x), volání M(y), můžeme volání M(y) nahradit přiřazením x = y a skokem na začátek metody M void pruchod(prvek x) { if (x == null) return; x.tiskprvku( ); pruchod(x.dalsi); for (Prvek x = prvni; x!= null; x = x.dalsi) x.tiskprvku(); Poznámka: metoda pruchodr není takto přímočaře transformovatelná na iterační program
34 Hilbertovy křivky Hilbertova křivka prvního řádu vznikla spojením čtyř Hilbertových křivek nultého řádu (bodů) orientovanými úsečkami,,. Hilbertova křivka řádu i+1 vznikne spojením čtyř vhodně rotovaných Hilbertových křivek řádu i poloviční velikosti A, B, C, D. A D A A B B C B B A C B C C D D A D D C Hilbertovu křivku H i nakreslíme voláním metody A(i). A(i) if (i > 0) { D(i-1) A(i-1) A(i-1) B(i-1) metoda A nevolá jenom sama sebe nýbrž i metody D a B, které opět volají metodu A - nepřímá rekurze
35 H 3 : A(2) D(2) A(2) B(2) D(2): A(2): B(2): C(1) A(1) A(1) D(1) B(1) B(1) D(1) D(1) A(1) B(1) C(1) A(1) A(1) B(1) C(1) D(1) A D A A B B C B B A C B C C D D A D D C
36 public class Hilbert { static int x0,y0; static int x,y; static int h0=512; static int n=5; static int h; static DrawingTool dt; //(0,0)- vlevo nahoře static void doleva( ) { int xl = x-h; dt.line(x, y, xl, y); x = xl; static void dolu( ) { int yd = y+h; dt.line(x, y, x, yd); y = yd; static void doprava( ) { int xp = x+h; dt.line(x, y, xp, y); x = xp; static void nahoru( ) { int yh = y-h; dt.line(x, y, x, yh); y = yh;
37 static void a(int i) { if (i>0) { d(i-1); doleva( ); a(i-1); dolu( ); a(i-1); doprava( ); b(i-1); static void b(int i) { if (i>0) { c(i-1); nahoru( ); b(i-1); doprava( ); b(i-1); dolu( ); a(i-1); static void c(int i) { if (i>0) { b(i-1); doprava( ); c(i-1); nahoru( ); c(i-1); doleva( ); d(i-1); static void d(int i) { if (i>0) { a(i-1); dolu( ); d(i-1); doleva( ); d(i-1); nahoru( ); c(i-1);
38 public static void main(string [] args) { int width=600; int height=600; dt=new DrawingTool(width,height); h=h0; x0=width/2; y0=height/2; for (int i=1; i<=n; i++) { h = h/2; x0 = x0 + h/2; y0 = y0 - h/2; x = x0; y = y0; a(i); Poznámky: Krok kreslení h křivky H 1 je h0/2, křivky H 2 je h0/4,..., křivky H n je h0/2 n Pro vykreslení křivky H n musí být h0 = 2 k, k n (mezi pixely nemůžeme) Šířky (výšky) křivek jsou H 1 h0/2 H 2 (2*1 + 1)h0/4 = h0/2 + h0/4... H n h0/2 + h0/ h0/(2 n ) lim (h0/2 + h0/ h0/(2 n ) )= h0/2 / (1-1/2) = h0 n Všechny křivky se vejdou do čtverce o straně h0 // opravit eknihu
39 Nalezení nejmenšího prvku pole class RekMinimum { public static void main (String [] args) { int[] a = {5,7,3,9,8,2; System.out.println(min(a,0,a.length-1)); static int min(int[] a, int l, int p) { if (l==p) return a[l]; int s = (l+p)/2; int minl = min(a,l,s); int minp = min(a,s+1,p); if (minl < minp) return minl; else return minp; rekurzivní metoda rozdělí pole (problém) o velikosti n na dvě části o velikostech m a n-m. počet operací porovnání prvků: T(n) = T(m) + T(n-m) + 1, pro n > 1 a T(1) = 0 T(n) = n -1. Důkaz (indukcí): T(1) = 1 1 = 0 je-li pro k < n T(k) = k 1 T(n) = (m 1) + (n m 1) + 1 = n - 1
40 Hanojské věže class Veze { public static void main(string[] args) { int pocetkotoucu=3; prenesvez(pocetkotoucu, "zdroj", "pom ", "cil "); static void prenesvez(int velikost, String z, String p, String c) { if(velikost == 1) System.out.println("kotouc 1 z "+z+" na "+c); else { prenesvez(velikost-1, z, c, p); //zdroj -> pom System.out.println("kotouc "+velikost+ " z "+z+" na "+c); prenesvez(velikost-1, p, z, c); //pom -> cil Počet přenosů kotoučů pro velikost věže n je: T(n) = 2T(n-1) + 1, pro n 2 a T(1) = 1 T(n) = 2 n 1. Důkaz (indukcí): T(1) = = 1 je-li pro k < n T(k) = 2 k 1 T(n) = 2(2 n-1 1) + 1 = 2 n 1
5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
Rozklad problému na podproblémy
Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních
ABSTRAKTNÍ DATOVÉ TYPY (ADT)
ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1
Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Prioritní fronta, halda (heap), řazení
Prioritní fronta, halda (heap), řazení Co je prioritní fronta? Definována operacemi - vlož prvek - vyber největší (nejmenší) prvek Proč pf? Rozhraní: class PF { // ADT rozhrani PF(); boolean jeprazdna();
Dynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
Konstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)
Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech
Abstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
Šablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů
ÚVODNÍ ZNALOSTI datové struktury správnost programů analýza algoritmů Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i;
Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
5. přednáška - Rozklad problému na podproblémy
5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
4. Rekurze. BI-EP1 Efektivní programování Martin Kačer
4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
ADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti
Generické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
Šablony, kontejnery a iterátory
11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array
typová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:
20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní
1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
9. přednáška - třídy, objekty
třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních
1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
boolean hasnext() Object next() void remove() Kolekce
11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída
Rekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Principy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T
3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti
Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace
prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT
prohledávání grafů Karel Horák, Petr Ryšavý 16. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Nad frontou (queue) byly provedeny následující operace: push(1) push(2) print(poll()) print(peek()) print(peek())
Více o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Abstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
KTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
Dynamické datové struktury III.
Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Programování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky
Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016
Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Dynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
PREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 8 1 Základy algoritmizace 8. Rekurze doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří Vokřínek,
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first
Programování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;
Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Soubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
7. Dynamické datové struktury
7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.
Základní datové struktury III: Stromy, haldy
Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
Binární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
Čipové karty Lekařská informatika
Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány
Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
Implementace abstraktních datových typů. Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List)
Implementace abstraktních datových typů Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List) ADT Zásobník (Stack) Zásobník je datová struktura, do které se objekty
Spojové struktury. Spojová struktura (linked structure):
Spojová struktura (linked structure): Spojové struktury množina objektů propojených pomocí spojů (odkazů, referencí, ukazatelů) Spoj často vyjadřuje vztah předchůdce následník Lineární spojové struktury
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p
Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah
Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
Prohledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
Spojové struktury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 10 A0B36PR1 Programování 1
Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 10: Spojové struktury
Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
10 Generické implementace
10 Generické implementace Main Entry: 1 ge ner ic Pronunciation: j&-'ner-ik Function: adjective Etymology: French générique, from Latin gener-, genus birth, kind, class 1 a : relating to or characteristic
Struktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
Programování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost
Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
IRAE 07/08 Přednáška č. 7. Začátek (head)
Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků
Projekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
7. Datové typy v Javě
7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů
Část I Spojové struktury
Část 1 Spojové struktury (seznamy) Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Spojové struktury Spojový
Stromy, haldy, prioritní fronty
Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík