IB111 – cv. 3 Jednoduché výpočty, debugger Miroslav Kadlec Obsah ● Příkaz return v definici funkce ● Chyby při programování ● Debugger v IDLE ● Příklad hledání chyb ● Jednoduché výpočty ● (opakování) Faktoriál pomocí while ● Dělitelnost – Výpis prvočísel ● Aproximace – Ludolfovo číslo Příkaz return ● Příkaz return ● Vrátí z funkce hodnotu, která za ním následuje – Tuto hodnotu lze v místě volání funkce použít ● Okamžitě ukončí vykonávání funkce – Lze použít "return" bez následující hodnoty pouze k ukončení ● Lze vrátit libovolný datový typ Chyby při programování ● Syntaktické chyby ● Odhaleny předem – daná konkstrukce nepatří do jazyka Python ● Např. Zapomenutá dvojtečka, překlep ve jméně proměnné ● Runtime chyby ● Během provádění programu dojde k nelegálnímu stavu ● Např: string a integer jako operandy operátoru + – Interpret neví, že bude v proměnné integer, dokud kód neprovede (implicitní typování) ● Sémantické chyby ● Kód je korektní, ale výsledek neodpovícá tomu, co jsme očekávali Debugger ● Program, který slouží k hledání chyb ● IDLE obsahuje debugger, který umožňuje ● Krokovat kód – Step – provede následující řádek, jde li o funkci, vstoupí – Over – provede následující řádek, funkci najednou – Go – provede celý kód dokud nenarazí na definovaný Breakpoint, kde se zastaví ● Po kroku/breakpointu vypisuje – Hondoty globálních a lokálních proměnných – Zásobník – Aktuální řádek v kódu ● Zapnutí – 1) Python shell: Debug/debugger – 1) Spustit skript ● Příklad: Použijeme debugger k hledání 3 sématnických chyb ve skriptu "debugExampleIncorrect.py" Jednoduché výpočty ● Faktoriál pomocí while - myšlenky ● While má pouze porovnání ukončovací podmínky cyklu ● Potřebujeme navíc – Inicializovat (= prvotně nastavit) proměnnou cyklu – Pravidelně ji upravovat Jednoduché výpočty ● Budeme používat operátor "%", který vrátí zbytek po dělení ● Např: 17 % 5 vrátí 2 ● Výpis prvních K prvočísel ● Dekompozice na dílčí problémy (korespondují se sbírkou) – Kolik prvočísel máme vypsat celkem a kolik jich už máme vypsáno? – Brát čísla postupně a vždy ověřovat, jestli je prvočíslo? ● Kolik dělitelů má prvočíslo? ● Zjištění počtu dělitelů daného čísla – Pro která čísla má cenu ověřovat, jestli jsou děliteli nějakého čísla? – Jak podle zbytku poznám, že je číslo dělitelem jiného čísla? Jednoduché výpočty ● Aproximace Ludolfova čísla (π) ● Hodnotu π lze vyjádřit jako součet nekonečné řady – Jednotlivé sčítance se postupně zmenšují (resp. jejich absolutní hodnota) – Znaménko sčítanců se střídavě mění – Jednotlivé sčítance lze poměrně snadno vypočítat ● Celou nekonečnou řadu nedokážeme sečíst (tedy nedostaneme π přesně), ale součtem prvních XYZ sčítanců získáme poměrně dobrý odhad (aproximaci)