Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Ří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.

Podobné prezentace


Prezentace na téma: "Ří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."— Transkript prezentace:

1 Řízení pro smyčky

2 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.

3 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

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

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

6 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í.

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

8 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:

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

10 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)

11 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:

12 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:

13 Podmínka if

14 Ú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í.

15 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.

16 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

17 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.

18 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

19 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

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

21 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

22 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

23 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:

24 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.

25 Cyklus - příkazy

26 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í...

27 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):

28 Ú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ů?

29 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á:

30 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:

31 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.

32 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).

33 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:

34 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.

35 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.

36 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:

37 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

38 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:

39


Stáhnout ppt "Ří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."

Podobné prezentace


Reklamy Google