Algoritmizace a datové struktury (14ASD)

Slides:



Advertisements
Podobné prezentace
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Advertisements

Kuchařka na práci s mnohočleny Matematika pro ZŠ Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je David Salač. Dostupné z Metodického portálu.
:-) Asymptotická složitost algoritmů Autor: Antonín DANĚK Semestrální projekt 1 – Y14TED.
HARDWARE VSTUPNÍ ZAŘÍZENÍ. ROZDĚLĚNÍ HARDWARU VSTUPNÍ ZAŘÍZENÍ KLÁVESNICE MYŠ SCANNER WEBKAMERA VÝSTUPNÍ ZAŘÍZENÍ MONITOR TISKÁRNA REPRODUKTORY PLOTTER.
ALGORITMIZACE Mgr. Milan Pastyřík IUVENTAS, s. r. o.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
 Anotace: Materiál je určen pro žáky 9. ročníku. Slouží k závěrečnému celkovému opakování učiva. Slouží k prověření znalostí. Práce a výkon Název školy:
P RÁCE A VÝKON Ing. Jan Havel. Gymnázium a Jazyková škola s právem státní jazykové zkoušky Svitavy Materiál je určen pro bezplatné používání pro potřeby.
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Funkce Lineární funkce a její vlastnosti 2. Funkce − definice Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny.
Obdélník Pro kreslení obdélníku používáme nástroj obdélník. Lze také použít příkazový řádek a příkaz obdélník:
Definice: Funkce f na množině D(f)  R je předpis, který každému číslu z množiny D(f) přiřazuje právě jedno reálné číslo. Jinak: Nechť A, B jsou neprázdné.
Algoritmizace a Vývojové diagramy. Zvětšovací Dryák do kotlíku postupně vhodíme najemno nakrájené sedmikráskové kořeny, oloupaný Scvrklofík, jednu krysí.
Nadpis prezentace Zdeněk Tišl
NÁZEV ŠKOLY: Základní škola Strančice, okres Praha - východ
Grafické znázornění síly
PYTHAGOROVA VĚTA SLOVNÍ ÚLOHY
Poměr.
2.2. Dynamika hmotného bodu … Newtonovy zákony
Matematika 3 – Statistika Kapitola 4: Diskrétní náhodná veličina
Lineární funkce - příklady
Řešení nerovnic Lineární nerovnice
ZLOMKY II. – opakování pojmů a postupů při početních operacích
Způsoby zápisu algoritmů
Výukový materiál zpracován v rámci projektu
ORGANIZACE DAT V POČÍTAČI
Algoritmizace - opakování
Základy elektrotechniky Výkony ve střídavém obvodu
Algoritmizace - opakování
Financováno z ESF a státního rozpočtu ČR.
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Kvadratické nerovnice
8.1 Aritmetické vektory.
PERMUTACE S OPAKOVÁNÍM
Operační výzkum Lineární programování – cvičení
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Poměr v základním tvaru.
Inf Vývojový diagram.
4.1 – 4.3 Lineární nerovnice i jednoduchý podílový tvar
MATEMATIKA – GEOMETRIE 7
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor: Mgr. Vladimíra Houšková Název materiálu:
USMĚRŇOVAČE V NAPÁJECÍCH OBVODECH
Kvadratické nerovnice
Katastr nemovitostí (KNEM)
Řešení nerovnic Lineární nerovnice
Stavební fakulta ČVUT, B407
CYKLUS S PODMÍNKOU NA KONCI (s výstupní podmínkou)
MNOŽINY.
Rovnice základní pojmy.
Jak postupovat při měření?
Základy účetnictví změny rozvahových položek
Základy algoritmizace 3/13 příkaz cyklus, proměnná typu pole
Zlomky Sčítání zlomků..
DOMOVNÍ ROZVODY * přípojky nn *
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Lomené výrazy (2) Podmínky řešitelnost
Poměr v základním tvaru.
KOMBINACE BEZ OPAKOVÁNÍ
Slovní úlohy na dělitelnost
Analýza informačního systému
Lineární funkce a její vlastnosti
Teorie chyb a vyrovnávací počet 1
Grafy kvadratických funkcí
Teorie chyb a vyrovnávací počet 2
Procesy – základní pojmy
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Diagnostika dítěte předškolního věku
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Algoritmizace a datové struktury (14ASD) 2. cvičení

Algoritmus Definice Jedná se o posloupnost elementárních kroků Návod jak provést určitou činnost Přesný návod či postup, kterým lze vyřešit daný typ úlohy … Transformace vstupních dat na výstupní data Vstupy mají definované množiny hodnot, jichž mohou nabývat Algoritmus je procedura proveditelná Turingovým strojem teoretický model počítače popsaný matematikem Alanem Turingem Jedná se o posloupnost elementárních kroků

Algoritmus Jak si jej jednoduše představit: postup pro výpočet obvodu kruhu kuchařka: recepty postup jak převést číslo ze z-adické soustavy do jiné návod pro sestavení nábytku

Zápis algoritmu Slovním popisem Struktogramem Vychází se slovního popisu algoritmu v přirozeném jazyce. Zachycuje postupný rozklad algoritmu na jemnější kroky při návrhu metodou shora dolů. Struktogramem Základem vždy obdélník, v jehož záhlaví je označení algoritmu nebo dílčí operace

Zápis algoritmu Rozhodovacími tabulkami Používané při velmi složitých větveních Vývojovými diagramy (grafický zápis) Jednotlivé kroky jsou vyjádřeny grafickými symboly dle typu operace Posloupnost vykonávání kroků je vyjádřena orientovanou hranou

Příklad slovního popisu Algoritmus výpočtu obvodu kruhu zapsaný strukturovaným přirozeným jazykem Krok 1. - Tiskni: Zadej poloměr Krok 2. - Čti: r Krok 3. - Jestliže je r < 0, pak Krok 7. Krok 4. - o = 2*3.14*r Krok 5. - Tiskni: Obvod je o Krok 6. - Konec Krok 7. - Tisk: Chyba: Poloměr je záporný Krok 8. - Konec

Základní komponenty algoritmů Začátek/konec Posloupnost (sekvence) příkazů kroky v daném pořadí AKCE Větvení (podmínky) výběr dalších prováděných kroků závisí na splnění/nesplnění nějaké podmínky Cyklus opakované provádění kroků s pevným počtem opakování s podmínkou (na konci/na počátku) - provádění kroků se opakuje, dokud je/není splněna podmínka

Základní symboly vývojového diagramu

Základní použití symbolů

Základní použití symbolů + ANO NE -

Základní použití symbolů

Cyklus s podmínkou s podmínkou na začátku s podmínkou na konci tělo cyklu se provede minimálně jednou

Základní použití symbolů

Cyklus s pevným počtem opakování nelze použít vždy, příklad: Zatlučení hřebíku – operace „úder kladiva na hřebík“ stav po např. 5ti úderech: hřebík málo zatlučený hřebík zatlučený hřebík moc zatlučený (rozštípané dřevo) lépe řešit pomocí cyklu s podmínkou „je hřebík zatlučený?“

Algoritmus pro výpočet obvodu kruhu zápis strukturovaným přirozeným jazykem Krok 1. - Tiskni: Zadej poloměr Krok 2. - Čti: r Krok 3. - Jestliže je r < 0, pak Krok 7. Krok 4. - o = 2*3.14*r Krok 5. - Tiskni: Obvod je o Krok 6. - Konec Krok 7. - Tisk: Chyba: Poloměr je záporný Krok 8. - Konec

Algoritmus pro výpočet obvodu kruhu zápis vývojovým diagramem r < 0 ne ano o = 2 * 3.14 * r ZAČÁTEK KONEC Tisk: Zadej poloměr Čti: r Tisk: Obvod je o Tisk: Chyba, poloměr je záporný

Programátor na nákupu Manželka posílá na nákup svého muže, který je programátor. Říká mu: „Kup 15 rohlíků a kdyby měli vejce, tak vezmi 30“. Manžel vejde do prodejny a ptá se prodavačky: „Máte vejce?“ „Ano“, odpoví prodavačka. „Tak mi dejte 30 rohlíků.“ http://www.vtipalek.com/vtipy/pocitacove-it-ajtaci/

Algoritmus podle manželky mají vajíčka ? ano ne kup 30 vajíček ZAČÁTEK KONEC kup 15 rohlíků

Algoritmus podle programátora mají vajíčka ? ano ne kup 30 rohlíků ZAČÁTEK KONEC kup 15 rohlíků

Poučení zadání musí být jednoznačné

Programovací jazyk KAREL Richard E. Pattis ze Standfordské university – Karel (Karel Čapek – R.U.R., poprvé použito slovo ROBOT) http://xkarel.sourceforge.net/ (program) http://karel.oldium.net/ (internetová verze) S omezeným počtem příkazů ovládáme robota Karla pohybuje se po obdélníku rozděleném na políčka (v základu se jedná o čtverec 10x10) umí zvedat/pokládat cihly

SEVER ZÁPAD VÝCHOD JIH

Karel – elementární operace Krok – posun o jedno políčko dopředu VlevoBok – natočení o 90° vlevo Polož – položení jedné cihly na aktuální políčko Zvedni – zvednutí jedné cihly z aktuálního políčka

Karel a cihly – neplatí fyzikální zákony Karel může provádět příkaz POLOŽ libovolněkrát (má od začátku k dispozici nekonečný počet cihel) Karel může provádět příkaz ZVEDNI libovolněkrát (má od začátku k dispozici „nekonečně velký batoh na cihly“)

Karel – základní podmínky JeCihla – podmínka je pravdivá, pokud Karel stojí na políčku s minimálně jednou cihlou JeSever – podmínka je pravdivá, pokud je Karel otočen k severu (nahoru) JeZeď – podmínka je pravdivá, pokud před Karlem je zeď (při provedení příkazu Krok by do ní narazil)

Karel – příklad na JeCihla I. Pokud je na políčku alespoň jedna cihla, Karel má jednu cihlu zvednout.

Karel – příklad na JeCihla II. Pokud je na políčku alespoň jedna cihla, Karel má jednu cihlu zvednout, jinak tam má jednu cihlu položit a otočit se vlevo.

Karel - cykly Dokud podmínka Dokud NE podmínka

Karel – příklad na cyklus Karel má rovně dojít až ke zdi (aniž by do ní narazil).

Karel – příklad na nekonečný cyklus, který by nastal na políčku s cihlou.

oprava, aby nenastal nekonečný cyklus

Některé chyby Karel narazí do zdi Karel má zvednout cihlu, která tam není Karel má položit cihlu na políčko, kde už je maximum cihel (maximum lze nastavit v programu <1;99>) vždy v algoritmu ošetřit, aby nenastalo!!

Pomůcka (shrnutí) Karel – elementární operace Krok – posun o jedno políčko dopředu VlevoBok – natočení o 90° vlevo Polož – položení jedné cihly na aktuální políčko Zvedni – zvednutí jedné cihly z aktuálního políčka Karel – základní podmínky JeCihla – podmínka je pravdivá, pokud Karel stojí na políčku s minimálně jednou cihlou JeSever – podmínka je pravdivá, pokud je Karel otočen k severu (nahoru) JeZeď – podmínka je pravdivá, pokud před Karlem je zeď (při provedení příkazu Krok by do ní narazil)

Vytvoření algoritmu ČelemVzad – Karel zůstane na políčku, ale otočí se o 180°

Vytvoření algoritmu OtočitNaSever – Karel zůstane na políčku, ale otočí se na sever (na počátku nevíme směr natočení robota Karla, po provedení algoritmu musí být otočený na sever).

OtočitNaSever

OtočitNaSever řešení pomocí cyklu V nejhorším případě kolikrát se provede příkaz VlevoBok?

Je funkční i tento algoritmus? Funkční je, ale je méně efektivní. K jednomu cílí vede více cest, které se liší obtížnosti => stejné zadání se může řešit více způsoby => různé algoritmy, které se od sebe liší efektivností.

Vytvoření algoritmu OtočitNaJih – otočit Karla z libovolného směru na jih

Vytvořte algoritmus pro VpravoBok - Karel se otočí o 90° vpravo

Vytvořte algoritmus pro DojdiKeZdi - Karel rovně dojde ke zdi, pokud již před zdí nestojí

Je funkční i tento algoritmus?

Vytvořte algoritmus pro DojdiKeZdiSeberCihlu – Karel rovně dojde ke zdi a přitom sesbírá 1 cihlu na každém políčku na cestě (bude-li tam), včetně počátečního a posledního políčka

Vytvořte algoritmus pro DojdiKeZdiSeberCihly – Karel rovně dojde ke zdi a přitom sesbírá všechny cihly na cestě (včetně prvního a posledního políčka)

Vytvořte algoritmus pro DojdiDoSZrohu – Karel z libovolné pozice a libovolně natočený dojde do severozápadního rohu místnosti Z V

DojdiDoSZrohu – „severní cesta“ po provedení algoritmu je otočený robot Karel směrem na ZÁPAD

DojdiDoSZrohu – „západní cesta“ po provedení algoritmu je otočený robot Karel směrem na SEVER