Řízení pro smyčky. Algoritmizace V prezentaci o algoritmizaci jsme se seznámili s cykly s různými podmínkami (na začátku, na konci). Našim cílem bude.

Slides:



Advertisements
Podobné prezentace
Makra v Excelu.
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
ALGO – Algoritmizace 1. cvičení
Algoritmy I Cvičení č. 5.
PHP Cyklické příkazy v PHP - 08
If-else, do-while, switch, operátory
Algoritmy I Cvičení č. 4.
Algoritmy I Cvičení č. 3.
MATLAB® ( část 3 - scripty).
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Vývojové diagramy a základy algoritmizace
Soustava lineárních nerovnic
Algoritmizace a programování
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Informatika I 3. přednáška
Seminář – Základy programování
Informatika I 2. přednáška
C – strukturované příkazy
Algoritmizace a základy programování
JavaScript Podmínky, cykly a pole.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Pavlína Mihačová. Obchodní akademie a Střední odborná.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Vývojové diagramy - 03
C – cyklus while Mgr. Lenka Švancarová.
Spouštíme aplikace Spuštění aplikace Malování
Cykly Cykly umožňují provádět určitou část kódu opakovaně až do nastaveného počtu cyklování nebo splnění podmínky. Cykly umožňují provádět určitou část.
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES CYKLY V PHP.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B5 Autor Ing. Jiří Kalousek Období vytvoření listopad.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Příkazy cyklů. Co je to cyklus Jako cyklus označujeme opakované vykonávání určitého bloku příkazů Jako cyklus označujeme opakované vykonávání určitého.
Pascal – if Mgr. Lenka Švancarová.
Pascal – strukturované příkazy
C – if Mgr. Lenka Švancarová. if vývojový diagram Podmínka Příkaz(y) Podmínka Příkaz(y) Úplné větveníNeúplné větvení ++--
C – cyklus do-while Mgr. Lenka Švancarová.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Programování v MATLABu © Leonard Walletzký, ESF MU, 2000.
Algoritmizace a programování Algoritmy 4 – Vývojové diagramy (cykly)
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Algoritmizace a programování Algoritmy 2 – Vývojové diagramy (sekvence)
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Programovací jazyk C# 4. část - cykly.
Inf Cykly ve vývojových diagramech
Dělitelnost přirozených čísel
Výukový materiál zpracován v rámci projektu
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Definiční obor a obor hodnot
C# konzole – Podíl dvou čísel, podmínka IF
Spouštíme aplikace Spuštění aplikace Malování
ZAL – 3. cvičení 2016.
Algoritmizace a programování
Dělitelnost přirozených čísel
Vytváření dokumentace algoritmů
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.
© Copyright Radim Štefan
Soustava lineárních nerovnic
Programujeme lépe a radostněji
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Nerovnice Ekvivalentní úpravy - 1..
Podprogramy.
Algoritmizace a datové struktury (14ASD)
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Grafy kvadratických funkcí
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Definiční obory. Množiny řešení. Intervaly.
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Grafy kvadratických funkcí
Transkript prezentace:

Řízení pro smyčky

Algoritmizace V prezentaci o algoritmizaci jsme se seznámili s cykly s různými podmínkami (na začátku, na konci). Našim cílem bude nyní algoritmické konstrukce převést do jazyka Python. Seznámíme se postupně s podmínkou if, cyklem for a while.

Podmínka if If (z anglického jestliže) nám umožňuje měnit chování programu v závislosti na jistých podmínkách. Budeme chtít například chtít zjistit, jestli je číslo x sudé či liché. Nejprve si zapíšeme celou úlohu pomocí vývojového diagramu (viz prezentace algoritmizace): START Čti x x%2=0 x je sudé x je liché ANO NE KONEC

Podmínka if Nyní převedeme úlohu do našeho programovacího jazyka:

Podmínka if Po spuštění tohoto programu si výsledek přečteme přes konzoli Win Pythonu:

Podmínka if Nyní nás mohou napadnout mnohá zdokonalení navrhnuté podmínky – zadávání čísla x uživatelem nebo napsání úlohy pouze pomocí jedné podmínky Díky funkci input může uživatel zadávat libovolné hodnoty: x = input("Zadej číslo: ") Jelikož input má defaultně nastaveno, že vstupem jsou stringy, tak je vhodné nadefinovat, že vstupem budou čísla: x = int(input("Zadej číslo: ")) Abychom mohli podmínku více zdokonalit, existuje ještě podmínka else:, což je realizace alternativního provedení.

Podmínka if - else Po spuštění programu se stane následující: (konzole win Pythonu):

Podmínka if – elif - else Když v úloze potřebujeme řešit více než 2 podmínky, tak nám poslouží elif (jinak řečeno, mohu zadat v jednom podmínce další podmínky). Podmínek elif může být ‘‘nekonečně mnoho‘‘. Úloha se vždy ukončuje else:

Podmínka if – elif - else x<5 ANO NE ANO x menší než 5 x je větší nebo rovno než 100

Podmínka if – elif - else Převod do programovacího jazyka: Po spuštění programu se stane následující: (konzole win Pythonu): Zadej cislo: 5 Cislo 5 je z intervalu <5,100)

Podmínka if – vnořené podmínky Alternativou k elif jsou vnořené podmínky, což jsou podmínky v podmínkách. Doporučuje se vnořovat maximálně 3 podmínku z důvodu větší přehlednosti zápisu. Mějme stejný příklad na určení intervalu, ale zapišme ho pomocí vnořené podmínky:

Podmínka if V podmínkách můžeme samozřejmě měnit a přepisovat hodnoty, nejen je vypisovat. Zkusme nyní zapsat úlohu na výpočet obsahu čtverce z prezentace Algoritmizace:

Podmínka if

Úlohy k zamyšlení Vytvořte algoritmus pro řešení kvadratické rovnice. Vytvořte algoritmus pro určení, které ze dvou zadaných čísel je vyšší, případně jestli se rovnají. Vytvořte algoritmus pro výpočet objemu koule z poloměru. Vypište existenci řešení.

Cyklus for Cyklus for prochází po prvcích celý seznam, n-tici, slovník a cokoli iterovatelného, ale musíme ho uvodit slovíčkem in. Položky iterovatelného objektu se postupně ukládají do proměnné uvedené za klíčovým slovem for a provede se s nimi tělo bloku, který začíná za dvojtečkou.

Cyklus for Pomocí cyklu například odstraníme všechna celá čísla ze seznamu: Dalším příkladem je práce se slovníkem: teplo zima, chlad den noc svetlo tma, sero Je samozřejmě možné využít pro zápis háčků a čárek (šero, světlo a podobně). j =velikost seznamu i:=1,…,j type(i)=type(0) ne Smaž položku ano

Cyklus for V cyklu se s výhodou využívá: range(x) vrací seznam čísel od 0 do x range(x, y) vrací seznam čísel od x do y. range(x, y, z) vrací seznam čísel od x do y v posloupnosti dané argumentem z.

Cyklus for Posloupnost čísel od 0 do 4: Posloupnost čísel od 0 do -48 s krokem -12: i:=0,1,…,4 Vypiš i i:=0,-12,…,-48 Vypiš i

Cyklus for Cyklus for je také vhodným nástrojem pro vytváření abecedních řad: pismena:=prvni Vypiš pismena + druhe Načti prvni a druhe

Cyklus for Pokud potřebujeme indexaci (číslování) seznamu, pak použijeme enumerate. 0 nula 1 jedna 2 dva 3 tři

Cyklus while Cyklus while provádí blok za dvojtečkou tak dlouho, dokud je podmínka pravdivá. Zkusme nyní úlohu s obsahem čtverce obohatit o podmínku while. Uživatel bude nucen neustále zadávat hodnotu a, dokud nebude kladná: Načti a a<0 S = a^2 Napiš: Obsah je S ano ne a musí být kladné, načti znovu a

Cyklus - příkazy Příkaz break ukončí aktuální cyklus for nebo while. Ukážeme se si příklad na algoritmu hledající prvočísla v intervalu <4,15) n:=4,5,…,15 x:=2,3,…,n n%x=0 n je dělitelné x ano break n je prvočíslo ne

Cyklus - příkazy Pokud bychom do algoritmu nepřidali break, tak by nám program vypsal všechny dělitele daného čísla a navíc že všechna složená čísla jsou zároveň prvočísly:

Cyklus - příkazy Příkaz continue ukončí aktuální operaci a cyklus pokračuje dále další iterací. Zbytek těla za tímto příkazem je ignorován a program se vrací zpět k řídící části a znovu testuje řídící podmínku while nebo pokračuje dosazením dalšího prvku za řídící proměnnou (cyklus for). Na příkladu si ukážeme, jak fungují příkazy break a contiune. Budeme chtít najít první číslo, které je dělitelné 7 a jakmile ho najdeme, tak cyklus bude ukončen.

Cyklus - příkazy

Dalším příkazem, který můžeme využít, je pass. Pass nedělá nic, ale používá se často při přípravě kódu, protože daná část kódu nic nedělá. Používá se obzvláště na místech, kde jazyk syntakticky vyžaduje nějaký příkaz, ale programátor žádnou akci nepožaduje: >>> while 1:... pass # činné čekaní na přerušení...

Cyklus – kombinace cyklů V praxi e velice často cykly různě kombinují. Jednoduchým příkladem je počet písmen ‘a‘ v zadaném slově amazonka (místo konstrukce pocet = pocet + 1, lze využít zkrácenou podobu pocet+=1):

Úlohy k zamyšlení Zjistěte počet kladných čísel z deseti zadaných čísel. Na jaké další typy úloh byste použili kombinaci uvedených cyklů?

Nejčastější chyby Při psaní programů si musíme dávat především na syntaktické chyby, na které nás upozorňuje samotný Pyhon symboly, na které stačí najet myší a už víme, kde máme chybu. Například není definovaná proměnná:

Nejčastější chyby Další častou chybí je nedodržení mezer, případně syntaxe s dvojtečkou (else:) a podobně. Důležité je mít v těle podmínky na každém řádku stejný počet mezer (nejlépe zajistíme tabulátorem). V případě chyby se opět objeví výstraha:

Nejčastější chyby Pokud se objeví chyba až po spuštění programu, tak nám Python zahlásí číslo řádku, kde máme problém a jakmile chybu odstraníme, můžeme opět pokračovat ve výpočtu. Python umožňuje spustit jen vybranou část programu, abychom mohli ověřit její správnost.

Nalezení chyb – blok try - except Pokud nechceme, aby běh programu skončil ve chvíli chyby, můžeme použít try - except blok. Ten funguje tak, že rizikovou část kód umístíme do try bloku, do except bloku pak umístíme instrukce pro případ chyby (výjimky).

Nalezení chyb – blok try - except Except ale odchytí úplně všechny chyby (výjimky), kterých má Python celou řadu (viz help). Proto je dobré předem určit, které chyby dané části kódu teoreticky mohou nastat a tyto chyby poté ošetříme:

Nalezení chyb – blok try – except - else Do bloku try lze přidat i else (podobně jako u podmínky if), čili pokud nenastane chyba, program provede daný úkon. Ukažme si syntaxi na příkladu s otevíráním souboru: Povšimněme si, že je vhodné po načtení souboru daný soubor také zavřít.

Nalezení chyb – blok try - finally Finally definuje vyčištění pro kód obsažený v nějakém bloku try. Příkaz Finally se nepoužívá pro zpracování chyb, ale pro poskytnutí kódu, který musí být proveden bez ohledu na to, zda nastala či nenastala chyba. Příkazy finally a except se nemohou objevit společně v jednom bloku.

Funkce - def Funkce jsou univerzální nástroj pro strukturování kódu. Funkce se používají především na tu část kódu, kterou chceme opakovaně používat, čili ji stačí napsat pouze jednou a poté ji můžeme kdykoli ‘‘zavolat‘‘. Abychom vytvořili novou funkci, tak potřebujeme příkaz def:

Funkce - return Po provedení dané funkce většinou potřebujeme využít její výsledky v dalším běhu programu. K tomu nám poslouží funkce return. Opět si ukážeme vícero zápisů se stejným výsledkem: Příklad po spuštění: >>> nasobeni(1,2,3) 6

Funkce - operátor lambda Kromě funkce def, můžeme také využít operátor lamda. Ukažme si opět využití na příkladu: