ZAL – 3. cvičení 2016.

Slides:



Advertisements
Podobné prezentace
Rovnice s absolutními hodnotami
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Soustava lineárních rovnic
Pascal - příklady.
Pascal - větvení.
Algoritmizace od algoritmu k Pascalu.
PA081 Programování numerických výpočtů Přednáška 2.
ALGO – Algoritmizace 1. cvičení
Algoritmizace a programování Podprogramy v Delphi - 10
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
If-else, do-while, switch, operátory
Algoritmy I Cvičení č. 3.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Vývojové diagramy a základy algoritmizace
Soustava lineárních nerovnic
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Informatika I 3. přednáška
Podmíněné vykonávání a rozvětvení. Co je to? Podmíněné vykonávání = nechceme provést všechny příkazy, chceme určité části kódu něčím podmínit Rozvětvení.
Informatika I 2. přednáška
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
C – strukturované příkazy
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Řešení lineárních rovnic s neznámou ve jmenovateli
C# - Exceptions (výjimky)
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Cvičení.
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.
KIV/PPA1 cvičení 10 Cvičící: Pavel Bžoch. Osnova cvičení Výjimky a práce s nimi Nácvik na online test.
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Dokumentace informačního systému
Řešení rovnic Lineární rovnice
doc. RNDr. Zdeněk Botek, CSc.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Šesté cvičení Výjimky Balíky.
A1PRG - Programování – Seminář Ing. Michal Řízení běhu programu 5 Verze
PROGRAMOVÁNÍ V PHP PERSONAL HOME PAGES CYKLY V PHP.
Mgr. Martin Krajíc matematika 1.ročník rovnice a nerovnice
KVADRATICKÉ NEROVNICE
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í ++--
Soustavy dvou lineárních rovnic se dvěma neznámými
(řešení pomocí diskriminantu)
Ryze kvadratická rovnice
Ří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.
Soustavy lineárních rovnic Matematika 9. ročník Creation IP&RK.
Programovací jazyk C# 4. část - cykly.
Lineární rovnice Druhy řešení.
Soustava lineárních rovnic
C# konzole – Podíl dvou čísel, podmínka IF
ZAL – 6. cvičení 2016.
Název projektu: Moderní výuka s využitím ICT
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.
Řešení rovnic Lineární rovnice 1
Soustava dvou lineárních rovnic se dvěma neznámými
Lineární rovnice Druhy řešení.
Soustava tří lineárních rovnic Řešení Gaussovou eliminační metodou
Vytváření dokumentace algoritmů
Lineární rovnice Druhy řešení.
Kurz algoritmizace a programování v jazyce C
Soustava tří lineárních rovnic Řešení Gaussovou eliminační metodou
Soustava lineárních nerovnic
Algoritmizace a programování
Lineární funkce a její vlastnosti
ZAL – 7. cvičení 2016.
Soustavy lineárních rovnic
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Definiční obory. Množiny řešení. Intervaly.
ZAL – 4. cvičení 2016.
Transkript prezentace:

ZAL – 3. cvičení 2016

Funkce - opakování Funkce může přijímat parametry na vstupu a může vracet parametry na výstupu. Délka funkce by měla být „rozumná“. Tipněte si co je rozumná délka funkce. V Pythonu se proměnné do funkce přenášejí odkazem (referencí) nikoliv hodnotou. Víte jaký je mezi tím rozdíl? V Pythonu je možné, že funkce vrací více jak jednu proměnnou – nezvykejte si na to ostatní jazyky jsou mnohem striktnější

Návrh dobré funkce Pojďme si nyní navrhnout funkci, která vyřeší lineární rovnici o jedné neznáme. Napište funkci, která vyřeší jednoduchou lineární rovnici typu: ax + b = c, předpokládejte, že proměnné a, b, c budou zadány. Funkce tedy vypočte hodnotu jedné neznáme x. Tip: Zamyslete se jak se výpočet provádí a jaké vlastnosti by měla funkce mít.

Lineární rovnice Jak může probíhat obecný výpočet? 12x + 10 = 23 def linearVeryNaiveEquationSolver(a,b,c): b = b-c a = a-a-a x = b/a return x

Lineární rovnice def linearVeryNaiveEquationSolver(a,b,c): b = b-c a = a-a-a #Ehm - nebylo by lepší řešení? x = b/a return x Bylo: 12x + 10 = 23 12x = 13 x= 1,08….

Lineární rovnice Bylo: 12x + 10 = 23 12x = 13 x= 1,08…. def linearNaiveEquationSolver(a,b,c): rightSide = (c-b) x = rightSide /a return x Opravdu to funguje? Vidíte nějaké možné problémy?

Lineární rovnice Neměly bychom něco kontrolovat? Mějme rovnici: 0x -10 = 10 Jaký je výsledek? Co se stane s funkcí, kterou jsme napsali? Výpočet spadne na dělení nulou. Toto zjištění implikuje potřebu řídit program nebo algoritmus, ale jak?

Řízení programu Řízení programu nám nabízí možnosti jakými určovat větve algoritmu či programu, které budou zpracovány. Program můžeme řídit na základě jeho aktuálního stavu. Program tedy přehází mezi stavy. K tomuto účelu existuje mnoho mechanismů. Nejzákladnějším a nejběžnějším jsou podmínky. Podmínka je logická funkce. Pokud je podmínka splněná vykoná se program v jejím těle.

Podmínky Základní podmínka je if (v překladu když) Podmínka if má obecně následující syntax: if<výraz>: blok kódu, který se splní je-li výraz vyhodnocen jako pravdivý pokračování programu

Podmínky - pokračování Podmínka může mít několik dalších vlastností. Výraz může být složenina z dvou výrazů: if number >2 and number<4: Podmínka může mít další vyhodnocovací podmínky nebo-li else větve. Tyto else větve se vykonávají pokud není splněna první podmínka. Viz příklad:

Lineární rovnice Zpátky k naší rovnici. Měli jsme problém s dělením nulou? Co s tím? Ošetříme vstupy? def linearNaiveEquationSolver(a,b,c): rightSide = (c-b) x = rightSide /a return x Doplňte kontrolu tak abychom již neměli chybu, kterou způsobuje dělení 0.

Lineární rovnice def linearSmarterEquationSolver(a,b,c): rightSide = (c-b) if(a == 0): return 0 x = rightSide /a return x Chyba na dělení nulou již není, ale je výsledek těchto rovnic opravdu 0? 1) 0x + 10 = 10 2) 0x – 10 = 10 – tato instance nemá řešení co s tím?

Řízení běhu programu - výjimky S výjimkou (exception) jste již mohli setkat – například pokud dělíte nulou. Co to výjimka je? Výjimka je mechanismus s jakým se vyšší programovací jazyky vypořádají s chybou, která by mohla vést k pádu systému. Výjimka je obvykle vyhozena při operaci a pokud je tato výjimka vyhozena tak se blok v kterém byla vyhozena již dále neprovádí.

Výjímka (Exception) Naštěstí pro nás, lze výjimku očekávat  a zpracovat ji a tím zabránit úplnému pádu programu, který by mohl způsobit, že by zdroje s kterými pracujeme zůstali v nekonzistentním stavu. Obvykle se používá klíčové slovo try try: #urcuje blok v kterem ocekavame funkci except EXCEPTIONTYPE as e: # zde odchytime finally: #operace se provedou vzdy

Lineární rovnice def linearSmarterEquationSolver(a,b,c): rightSide = (c-b) if(a == 0): return 0 x = rightSide /a return x Doplňte tuto funkci tak, aby v případě, že nemá instance řešení vyhodila VallueError

Lineární rovnice def linearMuchMoreSmarterEquationSolver(a,b,c): rightSide = (c-b) if(a == 0): raise ValueError('The instance has no solution in real numbers!') x = rightSide /a return x Funkce již produkuje výjimky v případě, že instance nemá řešení. Co ale následující příklady? 0x - 10 = 23 0x -10 = 10 – výsledkem by neměla být exception

Lineární rovnice def linearEquationSoler(a,b,c): rightSide = (c-b) if(a == 0 and rightSide != 0): raise ValueError('The instance has no solution in real numbers!') else: return 0 x = rightSide /a return x Je to již OK?

Návrh dobré funkce Název linearSolver, linearFunction linearEquationSolver nebo jiný? Vstupní parametry – očekáváme tři Výstup z funkce – číslo (nalezené řešení rovnice) – nebo výjimka. Ošetření vstupních parametrů. Řízení na základě mezi výpočtů Přeci jen jsme na něco zapomněli – komentáře. Komentujte svůj kód prosím!

Lineární rovnice Vyzkoušejte si: Chceme, aby řešení bylo pouze celočíselné. Jak to změní algoritmus? Lze to?

Zadání třetího domácího úkolu Celé detailní zadání je zde: https://cw.fel.cvut.cz/wiki/courses/b6b36zal/zadani/3_calculator Body: 2 Termín do dalšího cvičení – po termínu -2b