Úvod do programování 4. hodina

Slides:



Advertisements
Podobné prezentace
Pro začátek něco lehčího
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Počítače a programování 1 Přednáška 13 Jiří Šebesta.
Pascal - příklady.
Programování funkcí v Excelu
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.
Dajbych Václav Pole Další stránku vyvoláte levým kliknutím na Vaší myš, nebo popřípadě rolovacím kolečkem.
If-else, do-while, switch, operátory
Programování v C++ Cvičení.
UŽITEČNÉ PROGRAMY – MŮJ PRVNÍ SKRIPT Spustíme více prográmků najednou. SPŠ Teplice - 3.V.
Programování v Pascalu Přednáška 7
Generování mezikódu Jakub Yaghob
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
Vzpěrné délky, a optimalizace průřezů v oceli
C# - struktury, výčtové typy, pole
Informatika I 3. přednáška
Jazyk vývojových diagramů
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Objektové programování
Základní škola a Mateřská škola, Šumná, okres Znojmo OP VK Tematický celek: Informatika Název a číslo učebního materiálu VY _32_INOVACE_04_17.
Datové typy a práce s nimi
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Počítače a programování 1
JavaScript Podmínky, cykly a pole.
C# - Testování a ladění aplikací Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
PictureBox u vkládání obrázků u vlastnost Picture pomocí příkazu LoadPicture u přiřazení obrázku mezi dvěma prvky PictureBox Auto.Picture = AutoCerv.Picture.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
JavaScript Funkce.
Dokumentace informačního systému
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Aplikační počítačové prostředky X15APP MATLAB Katedra elektroenergetiky, Fakulta elektrotechniky ČVUT, Technická 2, Praha 6 Ing. Zbyněk Brettschneider.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Spouštíme aplikace Spuštění aplikace Malování
Grafický zápis algoritmů (vývojové diagramy) Eratosthenovo síto
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Úvod do programování 10. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Vytváření tabulek MS Access (4). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
Programovací jazyk C# 2. část. Datové typy C# rozeznává dva druhy datových typů, hodnotové a referenční. Hodnotové datové typy Proměnné hodnotového datového.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Úvod do programování 3. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
Programovací jazyk C# 4. část - cykly.
Úvod do programování 11. hodina
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Výukový materiál zpracován v rámci projektu
C# konzole – Podíl dvou čísel, podmínka IF
Spouštíme aplikace Spuštění aplikace Malování
ZAL – 3. cvičení 2016.
Výukový materiál zpracován v rámci projektu
Úvod do programování 3. hodina
Úvod do programování 6. hodina
Vzorové řešení zápočtového testu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Programování 2. hodina RNDr. Jan Lánský, Ph.D.
Kurz algoritmizace a programování v jazyce C
Úvod do programování 11. hodina
Výukový materiál zpracován v rámci projektu
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Oblast platnosti identifikátoru (1)
Algoritmizace a datové struktury (14ASD)
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Úvod do programování 4. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Úvod do programování 4. hodina Umíme z minulé hodiny Syntax Funkce Datové typy (celočíselné, reálné, bool, …) Priorita a asociativita operátorů Náhodná čísla Random Výčtové typy enum Vícenásobně větvení switch Struktura struct – příklad datum Matematické funkce Math Testování správnosti programu Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Cíle hodiny Syntax Předávání parametrů funkce referencí ref Pole Algoritmy Kopie pole Nesetříděné pole: nalezení hodnoty a počtu výskytů, nejdelší posloupnost stejných hodnot Eratostenovo síto Ladění programu Jan Lánský Úvod do programování 4. hodina

Předávání parametrů referencí - motivace Standardně se parametry funkce předávají hodnotou Hodnoty parametrů, se kterými je funkce zavolána se okopírují. V těle funkce se pracuje s kopiemi, které se nakonec zahodí Reference umožňuje modifikovat předávaný parametr v těle funkce Pracuje se přímo s proměnnou, kterou jsme funkci předali při jejím volání. Změna hodnoty ve volané funkci se projeví ve volající funkci. Řešení problému: chceme z funkce vrátit více hodnot. Chceme modifikovat některé položky struktury Jan Lánský Úvod do programování 4. hodina

Předávání parametrů Referencí vs hodnotou Nelze fce (5); Lze fce (x); Modifikace parametru v těle funkce se projeví ve volající funkci Hodnotou Lze fce (5); Lze fce (x); Modifikace parametru v těle funkce se neprojeví ve volající funkci Jan Lánský Úvod do programování 4. hodina

Reference - Prohození dvou hodnot Pokud je formální parametr ref Skutečný parametr musí být také ref Bez ref by bylo x = 5, y = 2 // x = 2; y = 5; Nejde Prohod (ref 5, ref 2) Jan Lánský Úvod do programování 4. hodina

Pole – motivace: Hod kostkou Chceme: Zaznamenat výsledky pěti hodů kostkou Nepraktické: Hodů může být i 1000 Chceme: Jeden identifikátor proměnné pro všechny hody Jan Lánský Úvod do programování 4. hodina

Pole - vlastnosti Pole – složený datový typ Uchovávání hodnot, které mají podobný význam Pole – složený datový typ Posloupnost n prvků daného datového typu. Počet prvků pole = délka pole Délka pole nejde měnit. Na začátku práce s polem musíme vědět, kolik prvků bude maximálně. Pole obsahuje prvky s indexy 0 až n-1 Přístup k libovolnému prvku pole pomocí pole[index]. Nesetříděné vs. setříděné pole Jan Lánský Úvod do programování 4. hodina

Pole - příklad Neinicializované pole nezná svoji velikost, nelze použít jeho prvky ani na levé straně přiřazení Deklarace: datový typ [] proměnná Inicializace: new datový typ[velikost] Pole po inicializaci obsahuje samé nuly Přístup k prvku pole: proměnná[index] Není nutné stanovit hodnoty všech prvků explicitně Př. hody[2] 1 2 3 4 2 5 6 Kopie hodnoty prvku pole Jan Lánský Úvod do programování 4. hodina

Pole - výpis Pole jako parametr funkce. Délka pole: položka Length pole[pole.Length] Už není už v poli, poslední prvek pole má index pole.Length - 1 Pole začíná od nuly pole[0] – prvek pole s indexem 0 Lidově: „nultý prvek pole“ Formálně „první prvek pole“ Jan Lánský Úvod do programování 4. hodina

Náhodné pole Vytvoříme nové pole v těle funkce, naplníme ho náhodnými hodnotami, toto pole bude návratovou hodnotou funkce Vracíme pole V existujícím poli přepíšeme hodnoty na náhodné Měníme hodnoty prvků Pole jako parametr funkce. Jednotlivé položky pole se chovají, jako by byly předávané referencí – lze je modifikovat Jan Lánský Úvod do programování 4. hodina

Pole - inicializace Neinicializované pole nezná svoji velikost, jeho prvky nelze použít ani na levé straně přiřazení NE int p1; p1[0] = 5; Zadáme konkrétní hodnoty – jde pouze při deklaraci Přiřadíme návratovou hodnotu funkce, která vrací pole Vytvoříme vynulované pole Existující pole vyplníme náhodnými hodnotami Nedojde ke kopii pole. Ale pouze vytvoříme druhé pojmenování pro existující pole. Obě pole obsahují stejné prvky, modifikace hodnoty prvku provedená v jednom poli se projeví i u hodnoty prvku v druhém poli. Jan Lánský Úvod do programování 4. hodina

Kopie pole Vytvoříme pole shodné délky Okopírujeme jednotlivé prvky Jan Lánský Úvod do programování 4. hodina

Hledání v nesetříděném poli Nachází se zadaná hodnota v zadaném nesetříděném poli? Varianty Index prvního výskytu hodnoty Počet výskytů hodnoty Řešení: Projdeme postupně celé pole a hodnoty jednotlivých prvků pole porovnáváme s hledanou hodnotou. Index prvního výskytu: Lze předčasně ukončit hledání, při jeho nalezení. Jan Lánský Úvod do programování 4. hodina

Hledání v nesetříděném poli Hodnota nalezena, zvýšíme čítač Př.: hodnota = 2 i =7 vyskytu = 3 pole[i] == 2 i =1 vyskytu = 1 i =4 vyskytu = 2 i =8 vyskytu = 7 1 2 3 4 5 6 7 8 9 i pole[i] Jan Lánský Úvod do programování 4. hodina

Hledání v nesetříděném poli Hodnota nalezena, vracíme index prvního výskytu hodnota nenalezena Jan Lánský Úvod do programování 4. hodina

Nejdelší souvislá posloupnost prvků se shodnými hodnotami Souvislá posloupnost je část pole, která obsahuje všechny prvky pole s indexy min až max Chceme, aby prvky posloupnosti měli shodnou hodnotu Hledáme nejdelší takovouto posloupnost Jsou-li dvě posloupnosti stejně dlouhé, vezmeme první z nich Výsledek Délka nejdelší posloupnosti Index prvního prvku nejdelší posloupnosti Jan Lánský Úvod do programování 4. hodina

Nejdelší souvislá posloupnost - příklad Př.: Pole: 5, 3, 2, 2, 1, 4, 4, 4, 3, 3 Tři posloupností délky 1 (5; 3; 1;) Dvě posloupnosti délky 2 (2, 2 a 3, 3) Jedna posloupnost délky 3 (4, 4, 4) Mezi 3 a 3, 3 se nachází 2, 2, 1, 4, 4, 4, proto netvoří souvislou posloupnost délky 3 Jan Lánský Úvod do programování 4. hodina

Nejdelší souvislá posloupnost max – délka nejdelší posloupnosti akt – delka aktuální posloupnosti hodAkt, hodMax – hodnota prvků v aktuální / nejdelší posloupnosti Prodloužíme aktuální posloupnost o jeden prvek Začneme novou jednoprvkovou posloupnost Našli jsme novou nejdelší posloupnost Vždy je nutné se zamyslet nad 0-tým a posledním prvkem pole – řešení není vždy elegantní Vracíme hodnotu prvků nejdelší posloupnosti Jan Lánský Úvod do programování 4. hodina

Nejdelší souvislá posloupnost Hodnoty proměnných na konci cyklu 1 2 3 4 5 6 7 8 9 i akt hodAkt hodAkt – Tato proměnná je zde kvůli prvnímu prvku pole max hodMax pole[i] Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Eratostenovo síto Nalezne všechna prvočísla mezi čísly menšími než n Rychlejší postup (O(n log(log n)) než hrubou silou testovat, zda každé číslo je prvočíslo (O(n n)) . Pokud nechceme všechna prvočísla, ale pouze o jednom číslu chceme vědět, zda je prvočíslo, je výhodnější klasický postup. Používá pole délky n Po skončení algoritmu je pro každé číslo x < n v poli uložena informace, zda je či není prvočíslem Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Eratostenovo síto Napíšeme všechna čísla 2 až n Vezme nejmenší číslo x a vyškrtáme jeho násobky x*x a vyšší Z nevyškrtaných čísel vezmeme další nejmenší číslo y a vyškrtáme jeho násobky, atd. … Zbylá čísla jsou prvočísla Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Eratostenovo síto 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 Jan Lánský Úvod do programování 4. hodina

Eratostenovo síto Nastavíme celé pole na true. Každé číslo je kandidát na prvočíslo. Postupně tyto kandidáty budeme vyškrtávat Pole logických hodnot Stačí do odmocniny Vyšší čísla jsou prvočísla Není prvočíslo Vyškrtáme násobky prvočísla. Stačí začít u druhé mocniny, nižší násobky byly vyškrtány již dříve Netradiční inkrement: zajímají nás násobky proměnné i Jan Lánský Úvod do programování 4. hodina

Eratostenovo síto Má-li prvek pole[i] hodnotu true, poté číslo s indexem i je prvočíslo Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Kde se často chybuje Začátky a konce cyklů a polí Pole od 0 do Length-1 Neošetření nevhodných vstupních dat Jednoprvková a prázdná pole Záměna ostré a neostré nerovnosti Př.: x>0 vs. x>=0 Přiřazení = vs. porovnání == Celočíselné vs. reálné dělení Přetečení datových typů Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Ladění programu Minulou hodinu jsme se naučili otestovat správnost programu. Nyní se naučíme odstranit případné chyby. Prostředky vývojového prostředí Hlášení kompilátoru (error, warning) Breakpoints F9, Step Over F10, Step Into F11 Watch, Call stack, Ladící výpisy Minimalizace vstupu Minimalizace zdrojového kódu Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Hlášení kompilátoru Okno s hlášeními se nachází ve spodní částí MVS Error (Chyba) program nejde zkompilovat (a spustit), nutno opravit Ve zdrojovém kódu podtržené červenou vlnovkou Warning (varování) upozornění na možnou chybu, doporučeno opravit, ale program jde zkompilovat (a spustit) Ve zdrojovém kódu podtržené zelenou vlnovkou Po kliknutí na řádek s chybou (varováním) se kurzor ve zdrojovém kódu přemístí na místo výskytu Každé hlášení má své číslo – lze googlit Př. CS1513 chybějící pravá složená závorka Jan Lánský Úvod do programování 4. hodina

Hlášení kompilátoru 3 chyby a 1 varování CS0160 – varování: deklarována proměnná „o“ je nepoužitá CS1502 – chyba: Funkce „Prohod“ volána se špatnými argumenty CS1620 – chyba (2x): argument musí být reference Modrý řádek je aktuální zpracovávané hlášení Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Breakpoints Vytvoření a zrušení Nastavíme se na příkaz a klávesa F9 Klik myší nalevo před řádkem (červený kruh) Program se po spuštění pří průchodu breakpointem zastaví můžeme využít další ladící prostředky Doporučení umístění: Místo, kde se program začíná chovat divně Začátky cyklů, podmínek, funkcí Jan Lánský Úvod do programování 4. hodina

Krokování programu Po zmáčknutí klávesy se provede jeden příkaz programu Step Over F10 Volání funkce se vykoná jako jeden příkaz Pokud si jsme jisti, že funkce neobsahuje chybu Step Into F11 Při volání funkce vstoupíme do těla funkce Pokud si nejsme jisti, že funkce neobsahuje chybu Program lze krokovat od začátku nebo od breakpointu Žlutý řádek je aktuálně vykonávaný Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Watch Objeví se po pozastavení běhu programu (krokování, breakpointy) v dolním levém rohu Umožňují sledovat hodnoty proměnných a výrazů Hodnoty proměnných lze sledovat i najetím myši na danou proměnnou ve zdrojovém kódu Pole lze i rozkliknout a vidět jednotlivé prvky Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Call Stack Zásobník volání funkcí Objeví se po pozastavení běhu programu (krokování, breakpointy) v dolním pravém rohu Umožňuje přepnout do kontextu volající funkce (a pomocí Watch prohlížet její proměnné) Jan Lánský Úvod do programování 4. hodina

Call Stack Jména funkci i s hodnotami parametrů Kliknutím na funkci se přepneme do jejího kontextu, ve zdrojovém kódu zelený řádek Funkce na spodním řádku volá funkci na horním řádku Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Ladící výpisy Vypisujeme hodnoty proměnných na obrazovku (souboru, databáze) Co vypisovat Každou proměnnou při změně hodnoty Vybrané proměnné na začátku (konci) cyklu Oproti Watch vidíme více informací najednou. Složitější chyby, které neodhalíme Watch Pokud Watch nejsou k dispozici (exotické vývojové prostředí) Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Ladící výpisy Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Minimalizace vstupu Hledáme nejmenší vstup, na kterém se chyba ještě projevuje Kratší pole Špatně hledáme minimum v poli o 100 prvcích? Zkusíme pole, které má 5 prvků Menší hodnoty čísel Nefunguje Euklidův algoritmus pro čísla dva trojciferné vstupy? Zkusme jednociferné vstupy Chyba se projeví za kratší čas Jan Lánský Úvod do programování 4. hodina

Minimalizace zdrojového kódu Pokročilá technika, kdy nic jiného nepomáhá V našich případech nebude nutné Zakomentujeme části zdrojového kódu, o kterých si myslíme, že pro konkrétní vstupní data se nevykonají Nahradíme části zdrojového kódu již hotovým výpočtem, pokud si myslíme, že pro naše vstupní data tato část funguje správně Jan Lánský Úvod do programování 4. hodina

Úvod do programování 4. hodina Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin http://goo.gl/forms/WxkZqBsZLs Jan Lánský Úvod do programování 4. hodina