Funkce - opakování. Funkce může přijímat parametry na vstupu a může vracet parametry na výstupu.

Podobné dokumenty
Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Chyby a výjimky. Chyba. Odkud se chyby berou? Kdo chyby opravuje? Co můžete dělat jako programátor? Dvě hlavní metody práce s chybami.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Výjimky. Tomáš Pitner, upravil Marek Šabo

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Úvod do programování - Java. Cvičení č.4

Úvod do programovacích jazyků (Java)

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Více o konstruktorech a destruktorech

Základy algoritmizace a programování

Algoritmus. Algoritmus je posloupnost kroků, které jsou potřeba k vyřešení problému.

Java - výjimky. private void vstup() throws IOException {... }

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Algoritmizace a programování

Objektově orientované programování

Řídicí struktury. alg3 1

ALGORITMIZACE A PROGRAMOVÁNÍ

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

C# konzole Podíl dvou čísel, podmínka IF

1 Nejkratší cesta grafem

Z. Kotala, P. Toman: Java ( Obsah )

6. Příkazy a řídící struktury v Javě

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Soubor jako posloupnost bytů

Překladač a jeho struktura

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

PSK3-9. Základy skriptování. Hlavička

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Python profesionálně: dynamické parametry, generátory, lambda funkce... with. Dynamické parametry

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

Algoritmizace prostorových úloh

Zápis programu v jazyce C#

Program a životní cyklus programu

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

5 Přehled operátorů, příkazy, přetypování

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

3. Řízení běhu programu

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Konečný automat. Jan Kybic.

6 Příkazy řízení toku

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++

Základy algoritmizace a programování

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Připravil: David Procházka. Programovací jazyk C++

Metodický list k didaktickému materiálu

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

Martin Hejtmánek hejtmmar

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Sada 1 - PHP. 05. Větvení

Rozklad na prvočinitele. 3. prosince 2010

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Kreslení elipsy Andrej Podzimek 22. prosince 2005

prostřednictvím ICT Téma didaktického materiálu RNDr. Václava Šrůtková

Inovace bakalářského studijního oboru Aplikovaná chemie

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

11. Přehled prog. jazyků

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

2. lekce Algoritmus, cyklus Miroslav Jílek

Funkce jedné reálné proměnné. lineární kvadratická racionální exponenciální logaritmická s absolutní hodnotou

Dědění, polymorfismus

KTE / ZPE Informační technologie

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Sada 1 - Základy programování

7.1.3 Vzdálenost bodů

Kombinatorika, výpočty

ELEKTROTECHNIKA A INFORMATIKA

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

8 Třídy, objekty, metody, předávání argumentů metod

VISUAL BASIC. Přehled témat

ALGORITMIZACE Příklady ze života, větvení, cykly

13. Lineární programování

LINEÁRNÍ ROVNICE S ABSOLUTNÍ HODNOTOU

1. Programování proti rozhraní

1 Mnohočleny a algebraické rovnice

Iterační výpočty Projekt č. 2

PODPROGRAMY PROCEDURY A FUNKCE

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

III. Diferenciál funkce a tečná rovina 8. Diferenciál funkce. Přírůstek funkce. a = (x 0, y 0 ), h = (h 1, h 2 ).

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Transkript:

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 12x - 13 = 0 12x = 13 x= 1,08. 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.

Bylo: 12x + 10 = 23 12x = 13 x= 1,08. Lineární rovnice 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 o Jaký je výsledek? o 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