ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů
|
|
- Alžběta Bártová
- před 9 lety
- Počet zobrazení:
Transkript
1 ÚVODNÍ ZNALOSTI datové struktury správnost programů analýza algoritmů
2 Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i; char c; obsahují hodnoty třídy: class Auto {, class Bod{,... hodnoty: objekty, instance třídy new Auto(), referenční proměnné: Auto a; Bod b; obsahují ukazatele na objekty a ukazatel null
3 Poznámka: pole: T[ ] hodnoty: objekty, n-tice proměnných typu T, new T[n] proměnné: T[ ]v; obsahují ukazatele na objekty a ukazatel null datová struktura schéma uložení souvisejících hodnot, objektů - sekvenční datová struktura - spojová datová struktura
4 ZOO druhy zvířat třída DruhZvirat class DruhZvirat { String druh; int pocet; // jmeno druhu zvirat // pocet zvirat DruhZvirat (String druh, int pocet) { this.druh = druh; this.pocet = pocet; void tisk() { System.out.println(druh+" " +pocet);
5 Sekvenční implementace pole z - pole druhů zvířat v ZOO = pole objektů třídy DruhZvirat DruhZvirat[] z = new DruhZvirat[4]; // uděláme si malou, ale naši ZOO // nejvíce 4 čtyři druhy zvířat // pocet počet druhů zvířat // budeme mít // 4 opice, 2 slony, 4 žirafy
6 class PoleZvirat { public static void main(string[] args){ DruhZvirat[] z = new DruhZvirat[4]; int pocet = 0; //pocet druhu zvirat tisk(z,pocet); z[pocet] = new DruhZvirat("opice",4); pocet++; tisk(z,pocet); z[pocet] = new DruhZvirat("sloni",2); pocet++; tisk(z,pocet); z[pocet] = new DruhZvirat("zirafy",4); pocet++; tisk(z,pocet); static void tisk(druhzvirat[] z, int pocet) { int i = 1; while(i <= pocet) { z[i-1].tisk(); i++;
7
8 datová struktura je dobře co není dobře? data ZOO DruhZvirat[] z; int pocet; jakož i operace nad nimi jsou oddělené! třída ZOO :-)
9 class ZOO { DruhZvirat[] z; int pocet; ZOO() { z = new DruhZvirat[4]; pocet = 0; void pridej (String druh, int kolik) { z[pocet] = new DruhZvirat(druh, kolik); pocet++; void tisk() { int i = 1; while(i <= pocet) { z[i-1].tisk(); i++;
10 vytvoříme objekt(y) třídy ZOO class ZOOHlavni { public static void main(string[] args){ ZOO plzen = new ZOO(); plzen.pridej("opice",4); plzen.tisk(); plzen.pridej("sloni",2); plzen.tisk(); plzen.pridej("zirafy",4); plzen.tisk();
11 Spojové datové struktury zacatek dalsi obecně data obsahují ukazatel, pointer, referenci, odkaz, směrník,... na další data Java třída obsahuje referenční proměnnou dalsi
12 class DruhZvirat { String druh; int pocet; DruhZvirat dalsi; DruhZvirat (String druh, int pocet) { this.druh = druh; this.pocet = pocet; // dalsi bude inicalizovano na null void tisk() { System.out.println(druh+" "+pocet);
13 // nasledující program je ilustrací spojování objektů // z zvířata jejich začátek z dalsi posledni
14 class SeznamZvirat { public static void main(string[] args){ DruhZvirat z = null; //zacatek DruhZvirat posledni; tisk(z); DruhZvirat novydruh; novydruh = new DruhZvirat("opice",4); z = novydruh; posledni = novydruh; tisk(z); novydruh = new DruhZvirat("sloni",2); posledni.dalsi = novydruh; posledni = novydruh; tisk(z); novydruh = new DruhZvirat("zirafy",4); posledni.dalsi = novydruh; posledni = novydruh; tisk(z); static void tisk(druhzvirat z) { DruhZvirat x = z; while (x!= null) { x.tisk(); x = x.dalsi;
15
16 datová struktura dobře, ale... - třída ZOO class ZOO { DruhZvirat z; //zacatek seznamu zvirat DruhZvirat posledni; ZOO() { z = null; void pridej (String druh, int kolik) { DruhZvirat novydruh; novydruh = new DruhZvirat(druh,kolik); if (z == null) z = novydruh; else posledni.dalsi = novydruh; posledni = novydruh; void tisk() { DruhZvirat x = z; while (x!= null) { x.tisk(); x = x.dalsi;
17 klient ZOOHlavni třídy ZOO je stejný obě implementace třídy ZOO poskytují stejné metody a klient používá pouze tyto metody
18 Obecnější spojová datová struktura... Řád plemenné knihy arabského koně 7.2. Plemenná kniha se člení: - plemenná kniha hřebců - plemenná kniha klisen Pojmenovávání koní. Plemenní hřebci - dnem platnosti PK obdrží každý hřebec nově zapsaný do PK jméno, které má stejné začáteční písmeno jako linie k níž po otci přísluší.... Plemenné klisny - pojmenování klisen je libovolné a přísluší chovateli s požadavkem zabránění duplicity.
19 class Hrebec { String jmeno; Hrebec nejmladsisyn; Hrebec starsibratr; Hrebec (String jmeno) { this.jmeno = jmeno; String getjmeno( ) { return jmeno;
20 nejmladsisyn starsibratr
21 class Linie { Hrebec zakladatel; Linie(String jmeno) { zakladatel = new Hrebec(jmeno); void pridejsyna(hrebec otec, String jmeno) { Hrebec novy = new Hrebec(jmeno); novy.starsibratr = otec.nejmladsisyn; otec.nejmladsisyn = novy;
22 class HrebciHlavni { /* toto je pouze ilustrace obecnejsi spojove struktury */ public static void main(string[] args) { Linie linieb = new Linie ("Bosbar"); System.out.println("\n"+"zakladatelem linie je "+ linieb.zakladatel.getjmeno()+"\n"); linieb.pridejsyna(linieb.zakladatel, "Borax"); linieb.pridejsyna(linieb.zakladatel, "Bertik"); System.out.println("nejmladsi syn je "+ linieb.zakladatel.nejmladsisyn.getjmeno()+"\n"); System.out.println("druhy nejmladsi syn je "+ linieb.zakladatel.nejmladsisyn.starsibratr.getjmeno() +"\n"); linieb.pridejsyna (linieb.zakladatel.nejmladsisyn.starsibratr, "Brist"+"\n"); System.out.println("(nejmladsi) syn Boraxe je "+ linieb.zakladatel.nejmladsisyn.starsibratr.nejmladsisyn. getjmeno()+"\n");
23 Správnost programů Testováním programu, tj. ověřením, že pro daný vstup získáme správný výstup nemůžeme obecně prokázat správnost programu. Testování může prokázat chybu v programu.
24 Programová logika ne hodnoty vstupu a výstupu vztah mezi hodnotami (relevantmích) proměnných před a po vykonání příkazu tvrzení, logický výraz ( x 0 před dělením x) tvrzení před příkazem předpoklad (precondition) tvrzení před příkazem důsledek (postcondition) {předpoklad příkaz; {důsledek {P příkaz; {Q
25 posloupnost příkazů příkaz1; příkaz2; {předpoklad1 příkaz1; {důsledek1 důsledek1 předpoklad2 (implikuje) předpoklad2 příkaz2; důsledek2 předpoklad1 příkaz1; příkaz2; důsledek2
26 přiřazení {Q(e) v = e; // proměnné v přiřadí hodnotu výrazu e {Q(v) // vstup x x = x 1; y = sqrt(x+2); // může být x 0, důsledek příkazu vstupu? {x -1 x = x 1; // x 1-2 {x -2 {x -2 y = sqrt(x+2); // (x+2) 0 {y 0 x 0 x -1
27 alternativa {P if B S1; else S2; {Q musí být: {P && B {P &&!B S1; S2; {Q {Q { true if ( x >= y ) // B m = x; // S1 else m = y; // S2 {(x >= y && m ==x) (x<y) && m==y) //maximum
28 pro S1 musí být { x>=y m = x; {(x >= y && m ==x) (x<y) && m==y) je {(x >= y && x ==x) (x<y) && x==y) m = x; {(x >= y && m ==x) (x<y) && m==y) protože (x>=y) (x >= y && x ==x) (x<y) && x==y) skutečně je { x>=y m = x; {(x >= y && m ==x) (x<y) && m==y) podobně pro S2
29 cyklus řazení vkládáním int a[ ] = new int [n]; for (int j=1; j < a.length; j++) { int vkladanahodnota = a[j]; // (n-1)-krát int i = j; while (i > 0 && a[i-1] > vkladanahodnota) { // pro každé j=1,,n-1obecně k j -krát a[i] = a[i-1]; --i; a[i] = vkladanahodnota; na začátku každého vykonávání cyklu for, začátek pole s prvky s indexy 0... j-1 obsahuje hodnoty původních prvků, jenomže seřazené tuto vlastnost nazýváme invariantem cyklu
30 tři vlastnosti invariantu cyklu Inicializace: Je splněn před vykonáním prvního cyklu. Udržování: Je-li splněn pře vykonáním cyklu, zůstává splněn i po něm. Skončení: Když cyklus skončí, invariant nám ukáže správnost algoritmu. (Obdoba matematické indukce, kromě skončení.) řazení vkládáním Inicializace: Po začátečním přiřazení j = 1 je pole s prvky s indexy 0... j-1 triviálně seřazeno. Udržování: Cyklus for posouvá prvky a[j-1],a[j-2],... o jednu pozici doprava dokud se nenajde správné místo pro a[j]. Skončení: Cyklus for skončí když j=n, kde n je počet prvků pole. Dosazením do textu invariantu cyklu dostáváme, že prvky s indexy 0... n-1 obsahují seřazené původní prvky pole.
31 jenom teorie? ne příkaz assert assert výraz1 : výraz2 ; výraz1 tvrzení, logický výraz výraz2 chybová zpráva // použijte -ea v příkazu java import java.util.scanner; public class Assert { public static void main( String args[] ) { Scanner input = new Scanner( System.in ); System.out.print( "Zadejte cislo mezi 0 a 10: "); int cislo = input.nextint(); // tvrdime, ze cislo musi byt >= 0 a <= 10 assert ( cislo >= 0 && cislo <= 10 ) : "Chybne cislo: " + cislo; System.out.printf( "Zadali jste %d\n", cislo );
32 Analýza algoritmů Analýza algoritmu určuje požadované prostředky na jeho vykonání. Nejčastěji nás zajímá čas výpočtu Označme c operace počet elementárních kroků potřebných pro vykonání určité operace Je-li vykonána n-násobně, přispěje k času vykonání n*c operace
33 Splnitelnost výrokových formulí if (booleovský výraz) příkaz; Nechť booleovský výraz pozůstává z - n proměnných logického typu v1, v2,, vn - m logických operátorů not, and, - závorek c h - čas přiřazení hodnoty proměnné c o - čas každé logické operace vyhodnocení podmínky (výrokové formuly) T(n,m) = n c h + m c o Výroková formule (podmínka) je splnitelná existuje-li přirazení hodnot true a false proměnným v1, v2,, vn takové, že hodnota formule (logického výrazu) je true.
34 Úkol zjistit zda-li je zadaná formule splnitelná Algoritmus pro každé možné přiřazení hodnot proměnným v1, v2,, vn formuli vyhodnoť Počet různých přiřazení je 2 n a čas výpočtu algoritmu je T(n,m) = 2 n (n c h + m c o)
35 Násobení matic int[ ][ ] a = new int[n][n]; int[ ][ ] b = new int[n][n]; int[ ][ ] c = new int[n][n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { c[i][j] = 0; for (int k = 0; k < n; k++) c[i][j] = c[i][j] + a[i][k]*b[k][j]; Čas výpočtu: n-krát vnější cyklus ( n-krát cyklus pro j ( c nulování + n-krát vnitřní cyklus ( c sčítání + c násobení ))) T(n)=n 2 (c nulování + n( c sčítání + c násobení )) = n 3 ( c sčítání + c násobení ) + n 2 c nulování = an 3 + bn 2
36 Co z an 3 + bn 2 dostatečně charakterizuje chování algoritmu, tedy míru růstu času výpočtu v závislosti na velikosti problému n? Důležité je chování pro velká n. Pro a=b=1 a n=1000 je celková hodnota uvedeného výrazu a člen n 2 ( ) přispívá podílem 0,1%. n 3 tedy intuitivně charakterizuje růst času výpočtu algoritmu v závislosti na velikosti vstupu.
37 Řazení vkládáním int a[ ] = new int [n]; for (int j=1; j < a.length; j++) { int vkladanahodnota = a[j]; // (n-1)-krát int i = j; while (i > 0 && a[i-1] > vkladanahodnota) { // pro každé j=1,,n-1 obecně k j -krát a[i] = a[i-1]; --i; a[i] = vkladanahodnota; čas výpočtu n-1 n-1 T(n)=3(n-1)*c přiř + c por k j + 2c přiř (k j -1) j=1 j=1 Pozn.: k j závisí na zadané řazené posloupnosti může být různé pro totéž j
38 v nejlepším případě k j = 1 a T(n)=(n-1)*(3c přiř + c por ) - růst času výpočtu je lineární - n v nejhorším případě k j = j+1 a T(n)=3(n-1)*c přiř + (n(n+1)/2-1)c por + n(n-1)c přiř - růst času výpočtu je kvadratický n 2 v průměrném případě k j = (j+1)/2 a - růst času výpočtu je opět kvadratický n 2 Časová složitost - růst času výpočtu v nejhorším nebo průměrném případě
39 Asymptotická složitost Asymptotická složitost vyjadřuje limitní růst času výpočtu, když velikost problému neomezeně roste. Funkce g(n) je Θ(f(n)) existují-li kladné konstanty c 1, c 2 a n 0 takové, že pro všechna n n 0 0 c 1 f(n) g(n) c 2 f(n) Růst času výpočtu uvedeného algoritmu násobení matic jsme intuitivně navrhli charakterizovat členem n 3 Čas výpočtu uvedeného algoritmu je Θ(n 3 ) c 1 n 3 an 3 + bn 2 c 2 n 3 a,b > 0 c 1 a + b/n c 2 c 1 = a, c 2 = a + b/ n 0, n 0 libovolné kladné Polynom a d n d + + a 0, a d >0 je Θ(n d ) Θ notace omezuje funkci shora i zdola
40 Asymptotické omezení shora Funkce g(n) je O(f(n)), existují-li kladné konstanty c a n 0 takové, že pro všechna n n 0 0 g(n) cf(n) an 3 + bn 2 je tedy O(n 3 ), ale i O(n 4 ), Pro algoritmus řazení vkládáním: - nejhorší případ O(n 2 ) - každý vstup O(n 2 ) - nejlepší případ je O(n)
41 Asymptotické omezení zdola Funkce g(n) je Ω(f(n)), existují-li kladné konstanty c a n 0 takové, že pro všechna n n 0 0 cf(n) g(n) Pro algoritmus řazení vkládáním: -nejlepší případ Ω(n) -pro každý vstup Ω(n) -nejhorší případ Ω(n 2 )
42 Rychlost procesoru Předpokládejme, že rychlost procesoru se zvětšila k-krát. Byl-li za čas T algoritmem s časem výpočtu f(n) vyřešen problém o velikosti a na pomalejším procesoru, jak velký problém x vyřešíme stejným algoritmem na k-krát rychlejším počítači za stejný čas? Pro pomalejší počítač T=f(a) Pro rychlejší počítač T=f(x) Pro pomalejší počítač kt=f(x) x = f -1 (kt) = f -1 (k.f(a))
Ú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í
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
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í
Ú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
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
Ří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í
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,
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
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
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í
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ší
Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů
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í
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
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
Časová složitost / Time complexity
Časová složitost / Time complexity Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 24 Složitost algoritmů Algorithm complexity Časová a paměťová složitost Trvání výpočtu v závislosti
Algoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
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
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST
11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST Na první přednášce jsme si neformálně zavedli pojmy problém a algoritmus pro jeho řešení, které jsme na počítači vykonávali pomocí programů. Jako příklad uveďme
Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
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 =
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
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í
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),
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
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
DTP Základy programování Úvod do předmětu
DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní
Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Složitost algoritmů Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2017 Datové struktury a algoritmy, B6B36DSA 02/2017, Lekce 3
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem
Časová složitost algoritmů
Časová složitost algoritmů Důležitou vlastností algoritmu je časová náročnost výpočtů provedené podle daného algoritmu Ta se nezískává měřením doby výpočtu pro různá data, ale analýzou algoritmu, jejímž
Tato tematika je zpracována v Záznamy přednášek: str
Obsah 10. přednášky: Souvislosti Složitost - úvod Výpočet časové složitosti Odhad složitosti - příklady Posuzování složitosti Asymptotická složitost - odhad Přehled technik návrhů algoritmů Tato tematika
Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Úvod stránky předmětu: https://cw.felk.cvut.cz/doku.php/courses/a4b33alg/start cíle předmětu Cílem je schopnost samostatné implementace různých variant základních
V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2
Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných
Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost
1 Složitost 1.1 Operační a paměťová složitost Nezávislé určení na konkrétní implementaci Několik typů operací = sčítání T+, logické T L, přiřazení T A(assign), porovnání T C(compare), výpočet adresy pole
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());
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,
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
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
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ů
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ů
Seminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
KTE / ZPE Informační technologie
7 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ň - ternární
KTE / ZPE Informační technologie
5 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ň Základy
ŘÍKÁME, ŽE FUNKCE JE ČÁSTEČNĚ SPRÁVNÁ (PARTIALLY CORRECT), POKUD KDYŽ JE SPLNĚNA PRECONDITION
ŘÍKÁME, ŽE FUNKCE JE ČÁSTEČNĚ SPRÁVNÁ (PARTIALLY CORRECT), POKUD KDYŽ JE SPLNĚNA PRECONDITION FUNKCE PŘI JEJÍM ZAVOLÁNÍ, JEJÍ POSTCONDITION JE SPLNĚNA PŘI NÁVRATU Z FUNKCE (POKUD NASTANE) OBECNĚ FUNKCE
Různé algoritmy mají různou složitost
/ 1 Různé algoritmy mají různou složitost 1/ 1 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená?? 2/ 1 Asymptotická složitost y y x x Každému algoritmu
Algoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
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ů
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ů
Zápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
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
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
Ú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
Š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
IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada
IB015 Neimperativní programování Časová složitost, Typové třídy, Moduly Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 07 str. 2/37 Časová složitost Časová složitost algoritmu IB015
C# konzole Podíl dvou čísel, podmínka IF
C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci
Algoritmizace a programování
Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický
Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.
Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné
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
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
6 Příkazy řízení toku
6 Příkazy řízení toku 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 příkazům pro řízení toku programu. Pro všechny tyto základní
Matematická indukce a správnost programů. Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 13
Matematická indukce a správnost programů doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS
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é
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
Algoritmizace a programování. Terminálový vstup a výstup
Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {
Vyhledání extrému v poli použito v algoritmech řazení hledání maxima int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) // nikoli 0 if (Pole[i] > max) max = pole[i];
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
8. přednáška: Soubory a proudy
8. přednáška: Soubory a proudy Soubor jako posloupnost bytů Ukládání/čtení primitivních typů Ukládání/čtení primitivních typů a objektů (řetězců) Ukládání/čtení objektů do souboru - serializace Obsah Algoritmizace
Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno
12 Délka výpočtu algoritmu Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno neméně důležité hledisko k posouzení vhodnosti algoritmu k řešení zadané úlohy. Jedná se o čas,
Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar
Základy programování Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Pokročilý 21. května 2009 Dnešní přednáška 1 Počátky
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ů
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
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
VZOR. Vzor přijímacího testu do magisterského studia oboru Otevřená informatika
Vzor přijímacího testu do magisterského studia oboru Otevřená informatika VZOR Jméno Příjmení Podpis Vzorový test obsahuje stejně jako skutečný test 35 otázek. Na jeho vyřešení máte 90 minut času. Každá
4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady
Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -
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 Algoritmus Daniela Szturcová Tento
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í
Stručný návod k programu Octave
Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,
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á
10. Složitost a výkon
Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 10 1 Základy algoritmizace 10. Složitost a výkon doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří
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ř.
Příkazy a řídicí struktury v Javě. Tomáš Pitner, upravil Marek Šabo
Příkazy a řídicí struktury v Javě Tomáš Pitner, upravil Marek Šabo Příkazy a řídicí struktury v Javě V Javě máme následující příkazy: Přiřazovací příkaz = a jeho modifikace (kombinované operátory jako
Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL
Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Vojtěch Pchálek Střední škola technická Kouřílkova 8, Přerov ANOTACE Bratr, který
Základy programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová
Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor
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
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,
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
Objekty, třídy, instance
Objekty, třídy, instance Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, xx36omo 09/2016, Lekce 1 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
Generování vnitřní reprezentace programu
Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad
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
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky