PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
|
|
- Martina Burešová
- před 6 lety
- Počet zobrazení:
Transkript
1
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 S NĚKTERÝMI OMEZENÍMI NSWI162: Sémantika programů 2
3 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 3
4 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { for L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 0 <= i && i < a if (a[i] = e) return true; return false; (FORMÁLNÍ) PARAMETRY LinearSearch(b, 0, b - 1, v) ARGUMENTY NSWI162: Sémantika programů 4
5 PI NEMÁ TYP UKAZATELE ANI REFERENCE, PARAMETRY SE TEDY PŘEDÁVAJÍ HODNOTOU VČETNĚ STRUKTUR A POLÍ NAVÍC PI NEDOVOLUJE MĚNIT HODNOTU PARAMETRŮ MUSÍME TEDY HODNOTU PŘÍPADNĚ PŘIŘADIT DO JINÉ PROMĚNNÉ TAK MŮŽEME VŽDYCKY (I V POSTCONDITION) ODKÁZAT NA VSTUPNÍ HODNOTY PARAMETRŮ return JE JEDINÝ ZPŮSOB, JAKÝM MŮŽE MÍT VOLANÁ FUNKCE EFEKT NA KONTEXT VOLAJÍCÍHO A JAK SMYSLUPLNĚ NAPSAT POSTCONDITION NSWI162: Sémantika programů 5
6 KROMĚ POLÍ OBSAHUJE JAZYK PI I PODPORU PRO STRUKTURY: typedef struct qs { int pivot; int[] array; qs; POMOCÍ TEČKOVÉ NOTACE SE ODKAZUJEME K JEDNOTLIVÝM POLOŽKÁM, NAPŘ.: qs var; int p := var.pivot; var.array[0] := 5; NSWI162: Sémantika programů 6
7 ANOTACE JSOU DŮLEŽITOU VLASTNOSTÍ JAZYKA PI ANOTACE JE FORMULE, JEJÍŽ VOLNÉ PROMĚNNÉ JSOU POUZE PROMĚNNÉ FUNKCE, KE KTERÉ SE ANOTACE VÁŽE ANOTACE F NA MÍSTĚ L VYJADŘUJE, ŽE F JE SPLNĚNÁ VŽDYCKY, KDYŽ EXEKUCE PROGRAMU DOSÁHNE L EXISTUJÍ TŘI HLAVNÍ TYPY ANOTACÍ ANOTACE FUNKCÍ, INVARIANTY CYKLŮ A ASERCE NSWI162: Sémantika programů 7
8 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 8
9 JEDNÁ SE O DVOJICI ANOTACÍ PRECONDITION A POSTCONDITION PRECONDITION JE FORMULE, JEJÍŽ VOLNÉ PROMĚNNÉ ZAHRNUJÍ POUZE FORMÁLNÍ PARAMETRY DANÉ FUNKCE VYJADŘUJE, CO BY MĚLO BÝT SPLNĚNO PŘI VSTUPU DO FUNKCE NEBO JINÝMI SLOVY, JAKÉ VSTUPY FUNKCE OČEKÁVÁ POSTCONDITION JE FORMULE, JEJÍŽ VOLNÉ PROMĚNNÉ ZAHRNUJÍ FORMÁLNÍ PARAMETRY A SPECIÁLNÍ PROMĚNNOU rv REPREZENTUJÍCÍ NÁVRATOVOU HODNOTU FUNKCE DÁVÁ DO VZTAHU NÁVRATOVOU HODNOTU rv A VSTUPNÍ PARAMETRY NSWI162: Sémantika programů 9
10 SPECIFIKACE FUNKCE PRO (LINEÁRNÍ) VYHLEDÁVÁNÍ MŮŽE NEFORMÁLNĚ ZNÍT: FUNKCE LINEARSEARCH VRACÍ true PRÁVĚ TEHDY KDYŽ POLE a OBSAHUJE HODNOTU e V ROZMEZÍ INDEXŮ [l, u]. FUNKCE SE CHOVÁ KOREKTNĚ, POKUD l 0 u < a. NSWI162: Sémantika programů 10
11 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: true (int i := l; i <= u; i := i + 1) { if (a[i] = e) return true; return false; NSWI162: Sémantika programů 11
12 NĚKDY SE MŮŽE STÁT, ŽE NETRIVIÁLNÍ (RŮZNÁ OD true) PRECONDITION NENÍ PŘIJATELNÁ NAPŘ. POKUD SE JEDNÁ O PUBLIC FUNKCI NĚJAKÉ KNIHOVNY PAK JE TŘEBA OMEZENÍ Z PRECONDITION NĚJAK PŘENÉST DO POSTCONDITION NSWI162: Sémantika programů 12
13 @pre rv <-> exists j. (0 <= l && l <= j && j <= u && u <= a && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: true (int i := l; i <= u; i := i + 1) { if (a[i] = e) return true; return false; NSWI162: Sémantika programů 13
14 sorted(a, i, j) PLATÍ, POKUD POLE a JE OD INDEXU i DO INDEXU j VČETNĚ USPOŘÁDANÉ VZESTUPNĚ, TJ.: k, l. i k l j a k a l partitioned(a, i, j, k, l) PLATÍ, KAŽDÝ PRVEK V ROZSAHU [i,j] JE MENŠÍ NEBO ROVEN JAKÉMUKOLIV PRVKU Z ROZSAHU [k,l] POLE a, TJ.: x, y. i x j k y l a x a y NSWI162: Sémantika programů 14
15 POKUD FUNKCE NEOBSAHUJE (ANI TRANSITIVNĚ) ŽÁDNÉ CYKLY, JE POČET PRŮCHODŮ A TEDY POČET FORMULÍ, KTERÉ JE TŘEBA OVĚŘIT, POMĚRNĚ MALÝ BĚŽNÉ PROGRAMY ALE CYKLY OBSAHUJÍ, PROTO JE NUTNÉ SE S NIMI VYPOŘÁDAT POMOCÍ INVARIANTŮ CYKLŮ: <invariant> (<podmínka>) { <tělo cyklu> <invariant> (<init>; <podmínka>; <inkrementace>) { <tělo cyklu> NSWI162: Sémantika programů 15
16 for CYKLUS MŮŽEME PŘEPSAT JAKO while CYKLUS NÁSLEDUJÍCÍM ZPŮSOBEM: <inicializace> <invariant> (<podmínka>) { <tělo cyklu> <inkrement> <invariant> MUSÍ PLATIT PŘED KAŽDOU ITERACÍ CYKLU A ZÁROVEŇ PO POSLEDNÍ ITERACI, TEDY PO SKONČENÍ CYKLU PŘED VYHODNOCENÍM PODMÍNKY NSWI162: Sémantika programů 16
17 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 17
18 V JAZYKU PI JE MOŽNÉ PŘIDAT ANOTACE KAMKOLIV POKUD SE NEJEDNÁ O PRE- A POSTCONDITION ANI O INVARIANT CYKLU, NAZÝVÁ SE ASSERTION JEDNÁ SE VLASTNĚ O FORMÁLNÍ KOMENTÁŘ, KTERÝ VYJADŘUJE, CO MÁ BÝT SPLNĚNO, k > 0 i := i + k ASSERTIONS JSOU PAK OVĚŘENY PŘI PŘEKLADU NEBO PŘI VERIFIKACI SPECIÁLNÍ TYP ASSERTIONS JSOU RUNTIME ASSERTIONS DĚLENÍ NULOU, MODULO NULOU, PŘÍSTUP MIMO ROZSAH POLE, DEREFERENCE NULL, V PI SE GENERUJÍ RUNTIME ASSERTIONS PRO PRVNÍ TŘI TYPY CHYB NSWI162: Sémantika programů 18
19 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 19
20 POKUD MÁME FUNKCE OPATŘENÉ ANOTACEMI, MŮŽEME OVĚŘIT JEJICH SPRÁVNOST ŘÍ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 NEMUSÍ SKONČIT MŮŽE UVÍZNOUT V NEKONEČNÉM VÝPOČTU PRINCIPIÁLNĚ PROBÍHÁ VERIFIKACE V PI TAK, ŽE SE ANOTACE PŘEVEDOU NA KONEČNÝ POČET VERIFIKAČNÍCH PODMÍNEK, KTERÉ SE POSTUPNĚ OVĚŘÍ VYTVOŘENÍ VERIFIKAČNÍCH PODMÍNEK PROBÍHÁ VE DVOU KROCÍCH: 1. TĚLO (KAŽDÉ) FUNKCE JE ROZLOŽENO NA KONEČNÝ POČET ZÁKLADNÍCH CEST (BASIC PATHS) 2. PRO KAŽDOU ZÁKLADNÍ CESTU SE VYGENERUJE VERIFIKAČNÍ PODMÍNKA NSWI162: Sémantika programů 20
21 CESTA JE POSLOUPNOST PŘÍKAZŮ ANOTACE (INVARIANTY CYKLŮ, ASSERCE) A VĚTVENÍ PROGRAMU ROZŘEZÁVAJÍ MOŽNÉ PRŮCHODY PROGRAMEM NA KONEČNÝ POČET KONEČNÝCH ZÁKLADNÍCH CEST OD PRECONDITION K PRVNÍMU ŘEZU (ZAČÁTEK CYKLU, PŘÍSTUP DO POLE, ) OD ŘEZU K NÁSLEDUJÍCÍMU ŘEZU OD POSLEDNÍHO ŘEZU K POSTCONDITION VOLÁNÍ FUNKCÍ, VČETNĚ REKURZIVNÍCH, ROZŘEZÁVÁ CESTY PODLE PRE- A POSTCONDITIONS NAKONEC MÁME KONEČNOU MNOŽINU ZÁKLADNÍCH CEST, Z KAŽDÉ Z NICH SE VYGENERUJE VERIFIKAČNÍ PODMÍNKA NSWI162: Sémantika programů 21
22 @pre 0 <= l && u < a rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 22
23 @pre 0 <= l && u < a rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 23
24 @pre 0 <= l && u < a rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 24
25 @pre 0 <= l && u < a rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 25
26 @pre 0 <= l && u < a rv <-> exists j. (l <= j && j <= u && a[j] = e) bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; NSWI162: Sémantika programů 26
27 Z KAŽDÉ ZÁKLADNÍ CESTY SE VYGENERUJE JEDNA VERIFIKAČNÍ PODMÍNKA V PODOBĚ IMPLIKACE VERIFIKÁTOR (SMT SOLVER) SE POKUSÍ DOKÁZAT PLATNOST TÉTO FORMULE, TJ. ŽE PŘI JAKÉMKOLIV OHODNOCENÍ VOLNÝCH PROMĚNNÝCH BUDE HODNOTA FORMULE (VERIFIKAČNÍ PODMÍNKY) true NSWI162: Sémantika programů 27
28 @pre 0 <= l && u < rv <-> exists j. (l <= j && j <= u && a[j] = e) 5 bool LinearSearch(int[] a, int l, int u, int e) { L: l <= i && 0 <= l && u < a && forall j. (l <= j && j < i -> a[j]!= e) (int i := l; i <= u; i := i + 1) 0 <= i && i < a if (a[i] = e) return true; return false; l i 0 l u < a j. l j j < i a j! = e i u false j. l j j u a j = e NSWI162: Sémantika programů 28
29 VERIFIKACE PAK SPOČÍVÁ V DOKÁZÁNÍ PLATNOSTI VŠECH VERIFIKAČNÍCH PODMÍNEK V PŘÍPADĚ NEPLATNOSTI VERIFIKAČNÍ PODMÍNKY MŮŽEME PROZKOUMAT PROTIPŘÍKLAD, PODLE KTERÉHO V NĚKTERÝCH PŘÍPADECH MŮŽEME UPRAVIT ANOTACE TAK, ABY BYLY DOSTATEČNĚ SILNÉ, A VERIFIKAČNÍ PODMÍNKA TAK MOHLA BÝT DOKÁZÁNA NSWI162: Sémantika programů 29
30 VERIFIKAČNÍ NÁSTROJ PRO PROGRAMY V PI UŽIVATELSKÉ ROZHRANÍ V JAVĚ, PŘIPOJUJE SE PŘES TCP K SERVERU PRO ÚČELY TOHOTO KURZU BĚŽÍ SERVER NA ADRESE LAB.D3S.MFF.CUNI.CZ NA PORTU 4242 UPRAVENÝ KLIENT DOSTUPNÝ NA STRÁNKÁCH PŘEDMĚTU NSWI162: Sémantika programů 30
31 true bool BinarySearch(int[] a, int l, int u, int e) { if (l > u) return false; else { int m := (l + u) div 2; if (a[m] = e) return true; else if (a[m] < e) return BinarySearch(a, m + 1, u, e); else return BinarySearch(a, l, m - 1, e); NSWI162: Sémantika programů 31
32 0 <= l && u < a && sorted(a, 0, a - rv <-> exists j. (l <= j && j <= u && a[j] = e) bool BinarySearch(int[] a, int l, int u, int e) { if (l > u) return false; else { int m := (l + u) div 2; if (a[m] = e) return true; else if (a[m] < e) return BinarySearch(a, m + 1, u, e); else return BinarySearch(a, l, m - 1, e); NSWI162: Sémantika programů 32
33 sorted(rv, 0, rv - 1) int[] BubbleSort(int[] a_0) { int[] a := a_0; true (int i := a - 1; i > 0; i := i - 1) { true (int j := 0; j < i; j := j + 1) { if (a[j] > a[j + 1]) { int t := a[j]; a[j] := a[j + 1]; a[j + 1] := t; return a; NSWI162: Sémantika programů 33
34 sorted(rv, 0, rv - 1) int[] BubbleSort(int[] a_0) { int[] a := a_0; sorted(arr, i, arr - 1) && -1 <= i && i < arr && partitioned(arr, 0, i, i+1, arr -1) (int i := a - 1; i > 0; i := i - 1) { partitioned(arr, 0, i, i + 1, arr - 1) && 1 <= i && i < arr && 0 <= j && j <= i && sorted(arr, i, arr - 1) && partitioned(arr, 0, j - 1, j, j) (int j := 0; j < i; j := j + 1) { if (a[j] > a[j + 1]) { int t := a[j]; a[j] := a[j + 1]; a[j + 1] := t; return a; NSWI162: Sémantika programů 34
35 PI JE JEDNODUCHÝ IMPERATIVNÍ JAZYK, JEHOŽ HLAVNÍ SLOŽKOU JSOU ANOTACE ANOTACE JSOU PRE- A POSTCONDITIONS FUNKCÍ, INVARIANTY CYKLŮ A ASSERTIONS UVNITŘ FUNKCÍ ZÁKLADNÍ CESTY DEFINUJÍ VERIFIKAČNÍ PODMÍNKY, JEJICHŽ PLATNOST JE PŘEDMĚTEM VERIFIKACE POMOCÍ PIVC LZE DOKÁZAT PLATNOST ANOTACÍ FUNKCÍ, ZEJMÉNA POSTCONDITIONS A OVĚŘIT TAK ČÁSTEČNOU SPRÁVNOST PROGRAMU NSWI162: Sémantika programů 35
36 PRVNÍ DOMÁCÍ ÚLOHA DOPLŇTE ANOTACE U FUNKCE containszero TAK, ABYSTE ZACHYTILI JEJÍ SÉMANTIKU, A OVĚŘTE POSTCONDITION POMOCÍ PIVC. TERMÍN PRO ODEVZDÁNÍ JE , true bool containszero(int[] a) { true (int i := 0; i < a ; i := i + 1) { if (a[i] = 0) return true; return false; NSWI162: Sémantika programů 36
ŘÍ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
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
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
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
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
Ří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í
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
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!
Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
Ú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;
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Ú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
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
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ů
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
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programová realizace DKA typedef enum {q0, q1,... qn,
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
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
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
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ů
Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
Ú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í
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
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
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í
Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39
Algoritmy Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna 2018 1/ 39 Algoritmy Příklad: Popis algoritmu pomocí pseudokódu: Algoritmus 1: Algoritmus pro nalezení největšího prvku v poli 1 Find-Max(A,n):
Knihovna EpsnetLib TXV 003 73.01 první vydání září 2012 změny vyhrazeny
Knihovna EpsnetLib TXV 003 73.01 první vydání září 2012 změny vyhrazeny 1 TXV 003 73.01 Historie změn Datum Vydání Popis změn Září 2012 1 První vydání, popis odpovídá EpsnetLib_v11 OBSAH 1 Úvod...3 2 Datové
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í
Knihovna DataBoxLib TXV 003 56.01 první vydání prosinec 2010 změny vyhrazeny
Knihovna DataBoxLib TXV 003 56.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 56.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá DataBoxLib_v14 OBSAH 1 Úvod...3
Pole a kolekce. v C#, Javě a C++
Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java
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
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
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ů
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
Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
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áklady algoritmizace. Hašování
Základy algoritmizace Hašování Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně
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());
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
Rozklad na prvočinitele. 3. prosince 2010
Rozklad na prvočinitele Ondřej Slavíček 3. prosince 2010 1 Obsah 1 Příručka k programu 3 1.1 funkce main()............................. 3 1.2 funkce hlavnifunkce()........................ 3 1.3 funkce
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í
Knihovna WebGraphLib
Knihovna WebGraphLib TXV 003 58.01 první vydání květen 2010 změny vyhrazeny 1 TXV 003 58.01 Historie změn Datum Vydání Popis změn Březen 2010 1 První vydání, popis odpovídá WebGraphLib_v10 OBSAH 1 Úvod...3
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
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 -
ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094
10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)
Objektové modelování, AD7B36OMO. Návrhy rozhraní. Tomáš Mayer. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze
Objektové modelování, AD7B36OMO Návrhy rozhraní Tomáš Mayer Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze https://edux.feld.cvut.cz/courses/ad7b36omo Přednáška je vytvořena
IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
10. Techniky formální verifikace a validace
Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 10. Techniky formální verifikace a validace 1 Simulace není
type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;
Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá
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
Paralelní programování
Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =
Zadání k 2. programovacímu testu
Zadání k 2. programovacímu testu Úvod do programovacích jazyků (Java) 4.12.2008 00:08 Michal Krátký Katedra informatiky Technická univerzita Ostrava Historie změn, příklady: 21 Poznámka: Pokud není řečeno
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Standardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 11 METODY VERIFIKACE SYSTÉMŮ NA ČIPU Hana Kubátov vá doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta 1 informačních
Funkce, intuitivní chápání složitosti
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní
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
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,
Programování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů 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 1 2 Shrnutí procvičených
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
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í
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
PSK3-9. Základy skriptování. Hlavička
PSK3-9 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Základy skriptování v unixovém shellu Vzdělávací oblast: Informační a komunikační technologie
ANOTACE vytvořených/inovovaných materiálů
ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a
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
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#)
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ý
Algoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
ZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.
Příkazy cyklu v C# Kapitola vysvětluje použití tří typů cyklů for, while a -while a plňuje jejich použití řau příkladů programů v jazyku C#. V jazyku C by šlo pouze k záměně funkcí pro vstup a výstup.
Maturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
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í
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 -
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2014 1 / 48 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý
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á??
Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace
Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:
Ú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
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
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,
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í
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
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
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
2. lekce Algoritmus, cyklus Miroslav Jílek
2. lekce Algoritmus, cyklus Miroslav Jílek 1/36 Algoritmus 2/36 Algoritmus je konečná posloupnost operací, která dává řešení skupiny problémů 3/36 Algoritmus je konečná posloupnost operací, která dává
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č
9. Ladění a testování programů. booleovský výraz
9. Ladění a testování programů Ladění programů s debuggerem jdb Nástroje ověřování podmínek za běhu - klíčové slovo assert Nástroje testování jednotek (tříd, balíků) - junit Pokročilé systémy dynamického
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í
Rekurze. Jan Hnilica Počítačové modelování 12
Rekurze Jan Hnilica Počítačové modelování 12 1 Rekurzivní charakter úlohy Výpočet faktoriálu faktoriál : n! = n (n - 1) (n - 2)... 2 1 (0! je definován jako 1) můžeme si všimnout, že výpočet n! obsahuje
Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
Unbounded Model Checking
Unbounded Model Checking Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze 25. října 2011 Evropský sociální fond Praha & EU: Investujeme do
Základy programování (IZP)
Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
Jazyk C++ I. Šablony
Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&
Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu
Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro
Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)
Cykly Základy programování 1 Martin Kauer (Tomáš Kühr) Z minula Chary můžete používat jako znaky ale i jako čísla 0-255. Jakou formu vybrat záleží na konkrétní aplikaci. Když pracujete se znaky, používejte
Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní
Základy jazyka C# 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 Obsah přednášky Architektura.NET Historie Vlastnosti
Opakování programování
Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování