Základy algoritmizace 2. Proměnné, datové typy

Podobné dokumenty
Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Architektury počítačů

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

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ů

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Algoritmizace a programování

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Paměť počítače. alg2 1

Datové typy a jejich reprezentace v počítači.

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

Čísla a číselné soustavy.

Algoritmy a datové struktury

C2115 Praktický úvod do superpočítání

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Algoritmizace a programování

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

IB111 Úvod do programování skrze Python Přednáška 7

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

Floating Point. Jak je reprezentovaný a proč někdy nefunguje. 2. června 2013

Úvod do programování. Lekce 1

Informatika Datové formáty

v aritmetické jednotce počíta

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

Struktura a architektura počítačů (BI-SAP) 6

Aplikovaná numerická matematika

Sada 1 - Základy programování

Programovací jazyk Pascal

Elementární datové typy

Číselné soustavy. Binární číselná soustava

UMÍ POČÍTAČE POČÍTAT?

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

Racionální čísla, operátory, výrazy, knihovní funkce

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

VISUAL BASIC. Práce se soubory

Exponent. Integer 4 bajty až Double Integer 8 bajtů až

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

IB111 Základy programování Radek Pelánek

IB111 Základy programování Radek Pelánek

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

Racionální čísla, operátory, výrazy, knihovní funkce

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Kurz LSL skriptování. Shiny Iceberg 2009

5. Vyhledávání a řazení 1

Principy počítačů I Reprezentace dat

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Úvod do programování 7. hodina

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Sada 1 - PHP. 03. Proměnné, konstanty

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

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

Algoritmizace prostorových úloh

LEKCE 6. Operátory. V této lekci najdete:

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

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

Úvod do programovacích jazyků (Java)

8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Struktura a architektura počítačů (BI-SAP) 5

Datové struktury 2: Rozptylovací tabulky

Zápis programu v jazyce C#

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

Úvod do problematiky numerických metod. Numerické metody. Ústav matematiky. 6. února 2006

11. Přehled prog. jazyků

Da D to t v o é v ty t py IB111: Datové typy

NPRG030 Programování I, 2018/19 1 / :25:37

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

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

Mikroprocesorová technika (BMPT)

Programování v jazyce JavaScript

Rozšíření ksh vůči sh při práci s proměnnými

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Algoritmizace prostorových úloh

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python

Jazyk C# a platforma.net

Algoritmizace prostorových úloh

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

PB002 Základy informačních technologií

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

MAXScript výukový kurz

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

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

Transkript:

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 1 Základy algoritmizace 2. Proměnné, datové typy doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 2 Základy algoritmizace Dnes: Základní práce s proměnnými Datové typy Přesnost a stabilita výpočtu Definice funkcí

Proměnné a základní datové typy Source: http://core0.staticworld.net/images/idge/imported/article/itw/2013/02/25/numbers_0-100521393-orig.jpg Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 3

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 4 Proměnné a datové typy Při návrhu algoritmu abstrahujeme od binární podoby počítače S daty pracujeme jako s hodnotami různých datových typů, které jsou uloženy v paměti předepsaným způsobem Datový typ specifikuje Množinu hodnot, které je možné v počítači uložit Záleží na způsobu reprezentace Množinu operací, které lze s hodnotami provádět

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 5 Proměnné a datové typy Python nemá explicitní deklaraci typu proměnné number = 100 #integer volume = 10.5 #floating point name = "Petr" #string Rovnítko je přiřazení (porovnej ==)! Vícenásobné přiřazení b a = b = c = 1 c a 1 a, b, c = 1, 2, "pavel" a b c 1 2 pavel

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 6 Proměnné a datové typy Vymazání proměnné a = b = c = 1 del c a b c 1 Standartní datové typy Čísla Numbers Řetězce String Seznamy List n-tice Tuple Slovníky Dictionary

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 7 Proměnné a datové typy Číselné typy int celá čísla se znaménkem (32/64 bit, Python 3 neomezené) long velká celá čísla (neomezená délka, Python 3 není) float reálná čísla s plovoucí desetinou čárkou (double 64bit) complex komplexní čísla int long float complex 10 51924361L 0.0 3.14j 100-0x19323L 15.20 45.j -786 0122L -21.9 9.322e-36j 080 0xDEFABCECBDAECBFB AEl 32.3+e18.876j -0490 535633629843L -90. -.6545+0J -0x260-052318172735L -32.54e100 3e+26J 0x69-4721885298529L 70.2-E12 4.53e-7j Více na http://www.tutorialspoint.com/python/python_numbers.htm

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 8 Proměnné a datové typy Typ proměnné nedeklarujeme Python sám pozná co vkládáme Vynucená konverze Explicitní zadání hodnot Konverzní funkce int(x) long(x) float(x) complex(x) str(x) 10L 10 10.0 10 Při konverzi textů je užitečná funkce str.isdigit()

Reprezentace dat Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 9

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 10 Reprezentace dat Integer (pro 32 bit = 4 byte) znaménko binární zápis hodnoty Znaménkový typ zakódováno v 1. bitu, zbytek 31 bitů číslo Největší hodnota je 011 111 2 31-1 = 2147483647 000 000 je 0! Nejmenší hodnota je 100 000-2 31 = -2147483648 Pro záporná čísla je použit tzv. doplňkový kód 0 je již v kladných big vs. little endian pořadí uložení bytů (platí pro všechny datové typy) Platí obecně!

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 11 Reprezentace dat Integer v Python 3 neomezená délka a = 15 b = 123456789101112131415 a.bit_length() b.bit_length() 4 67 Zkuste si!

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 12 Reprezentace dat Float (norma IEEE 754 64 bit = 8 byte double) exponent (exp) mantisa (m) Aproximace daná rozsahem paměťového místa Reálné číslo x je reprezentováno jako x = m z exp Mantisa je normalizována 0,1 m < 1 Exponent i mantisa jsou uloženy jako celá čísla

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 13 Reprezentace dat Příklad 7 byte Mantisa 3 byte + znaménko Exponent 2 byte + znaménko Základ z = 10 Nula??? + 000 x = 77,5 = 0,775 z +02 + 02 + 775

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 14 Reprezentace dat Příklad Maximální kladné číslo +0,999 z +99 Minimální kladné číslo +0,100 z 99 Maximální záporné číslo 0,100 z 99 Minimální záporné číslo 0,999 z +99 + 99 + 999-99 + 100-99 - 100 + 99-999

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 15 Reprezentace dat Příklad Rozsah hodnot pro konkrétní exponent je dán velikostí mantisy Absolutní vzdálenost dvou aproximací tak záleží na exponentu Mezi hodnotou 0 a 1,0 je využit celý rozsah mantisy pro každý exponent Aproximace reálných čísel nejsou na číselné ose rovnoměrně!

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 16 Reprezentace dat Double dle IEEE 754 64 bit (8 byte) 1 bit znaménko s ( + nebo ) 11 bitů exponent, tj. 2048 možností 52 bitů mantisa, 4.5 biliardy možností 4 503 599 627 370 496 Neumožňuje přesně uložit čísla se zápisem delším než 52 bitů Čím větší exponent, tím větší mezery mezi sousedními aproximacemi čísel Reálné číslo x se zobrazuje ve tvaru x = ( 1) S mantisa 2exponent bias bias umožňuje reprezentovat exponent vždy jako kladné číslo Např. bias = 2 eb 1 1, kde eb je počet bitů exponentu, tj. bias = 1023

Přesnost výpočtu Jiří Vokřínek, 2016 B6B36ZAL Source: http://s1216.photobucket.com/user/thethingy/media/photo-1.png.html - Přednáška 2 17

Přesnost výpočtu Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 18 Příklad zápis čísla 1 3 v dekadické soustavě = 0,33333 3333 = 0,3ത3 0,333333333333 0,333 V trojkové soustavě lze vyjádřit jako 0,1 (0 3 1 + 0 3 0 + 1 3 1 ) Nepřesnosti zobrazení reálných čísel v konečné posloupnosti bitů způsobují Iracionální čísla, např. e, π, 2 Čísla, která mají v dané soustavě periodický rozvoj, např. 1 3 Čísla, která mají příliš dlouhý zápis dvojková soustava

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 19 Přesnost výpočtu Ztráta přesnosti při aritmetických operacích Sčítání a = 1e+10 b = 1e-10 print(a) print(b) print(a+b) print(a+b-a) 10000000000.0 1e-10 10000000000.0 0.0

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 20 Přesnost výpočtu Ztráta přesnosti při aritmetických operacích Dělení number = 1000000 v = 0 for i in range(0,number): v += 1/10 print(v) number = 10000000 v = 0 for i in range(0,number): v += 1/10 print(v) 100000.00000133288 999999.9998389754 Pozor, Python může podvádět ve výpisech!

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 21 Přesnost výpočtu Ztráta přesnosti při aritmetických operacích Dělení number = 5 v = 0 check = number * 0.1 for i in range(0,number): v += 0.1 print(v) print(check) print(check==v) number = 6 v = 0 check = number * 0.1 for i in range(0,number): v += 0.1 print(v) print(check) print(check==v) 0.5 0.5 True 0.6 0.6000000000000001 False

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 22 Přesnost výpočtu Příklady Přesná reprezentace 0,1.1 +.1 +.1 ==.3 False 0.1000000000000000055511151231257827021181583404541015625 Zaokrouhlení round(2.675, 2) == 2.67 True 2.67499999999999982236431605997495353221893310546875 Více na https://docs.python.org/3.5/tutorial/floatingpoint.html

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 23 Přesnost výpočtu Strojová přesnost m nejmenší desetinné číslo, které přičtením k 1.0 dává výsledek různý od 1, pro v < m platí v + 1.0 == 1.0 Zaokrouhlovací chyba nejméně m Přesnost výpočtu aditivní chyba roste s počtem operací v řádu N m Často se však kumuluje v jednom směru v řádu N m

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 24 Přesnost výpočtu Zdroje chyb Chyby matematického modelu mat. aproximace fyz. situace Chyby vstupních dat Chyby numerické metody Chyby zaokrouhlovací Absolutní chyba aproximace E x = x x, x je přesná hodnota, x aproximace Relativní chyba RE x = x x x

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 25 Přesnost výpočtu Podmíněnost numerických úloh relativní chyba výtupních údajů Podmíněnost úlohy C p = relativní chyba vstupních údajů Dobře podmíněná úloha C p 1 Výpočet je dobře podmíněný, je-li málo citlivý na poruchy ve vstupních datech Numericky stabilní výpočet vliv zaokrouhlovacích chyb na výsledek je malý Výpočet je stabilní, je-li dobře podmíněný a numericky stabilní

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 26 Přesnost výpočtu Příklady numerických chyb Ariane 5 4.6.1996 Datová konverze z 64-bit desetinné reprezentace na 16-bit znaménkový integer 40 sekund po startu explodovala http://www.esa.int/esacp/pr_33_1996_p_en Systém Patriot 25.2.1991 Systémový čas v desetinách vteřiny, počítán přičítáním 1/10 Po 100 hodinách provozu chyba 0,34 vteřiny ( půl kilometru letu rakety Scud) 28 mrtvých, 98 zraněných http://www.ima.umn.edu/~arnold//disasters/patriot.html

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 27 Proměnné a datové typy Standartní datové typy Čísla Numbers Matematické funkce Trigonometrické funkce Náhodná čísla Konstanty (e, pi) http://www.tutorialspoint.com/python/python_numbers.htm Řetězce String Seznamy List n-tice Tuple Slovníky Dictionary http://www.tutorialspoint.com/python/python_variable_types.htm

Proměnné a datové typy String Řetězec znaků v uvozovkách Přístup k podřetězcům pomocí [] a [:] (od nuly!) Spojování a opakování pomocí + a * Test obsahu in a not in str = 'Hello World!' print(str) print(str[0]) print(str[2:5]) print(str[2:]) print(str * 2) print(str + "TEST ) print("h" in str) print("ell" not in str) Formátování a další funkce Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST True False http://www.tutorialspoint.com/python/python_strings.htm Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 28

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 29 Proměnné a datové typy List Seznam uzavřený v [] oddělený čárkami Může obsahovat různé typy dat Přístup k členům pomocí [] a [:] (od nuly!) Spojování a opakování pomocí + a * Test obsahu in a not in list = [ 'abcd', 786, 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print(list) ['abcd', 786, 2.23, 'john', 70.2] print(list[0]) abcd print(list[1:3]) [786, 2.23] print(list[2:]) [2.23, 'john', 70.2] print(tinylist * 2) [123, 'john', 123, 'john'] print(list + tinylist) ['abcd', 786, 2.23, 'john', 70.2, 123, 'john'] print("john" not in list) False

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 30 Proměnné a datové typy List Můžeme mazat Může měnit obsah Počet členů funkce len Další funkce a operace http://www.tutorialspoint.com/python/python_lists.htm list = ['physics', 'chemistry', 1997, 2000]; print(list) print(len(list)) print(list[2]) list[2] = 2001 print(list[2]) del list[2] print(list) print(len(list)) ['physics', 'chemistry', 1997, 2000] 4 1997 2001 ['physics', 'chemistry', 2000] 3

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 31 Proměnné a datové typy Tuple Seznam uzavřený v () oddělený čárkami Podobně jako seznamy ale jen pro čtení Immutable Funkce a operace http://www.tutorialspoint.com/python/python_lists.htm

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 32 Proměnné a datové typy Dictionary Asociativní pole adresář, slovník hash table Obsahuje páry klíč-hodnota v {} Přístup k hodnotám přes klíče v [] dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print(dict['one']) print(dict[2]) print(tinydict) print(tinydict.keys()) print(tinydict.values()) This is one This is two {'dept': 'sales', 'code': 6734, 'name': 'john'} ['dept', 'code', 'name'] ['sales', 6734, 'john']

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 33 Proměnné a datové typy Dictionary Přidávání a aktualizace elementů Mazání elementů pomocí del nebo funkce clear del dict['name'] dict.clear() Vlastnosti klíčů Bez duplikací (přepisují se) Klíče musí být immutable čísla, řetězce, n-tice Užitečné funkce dict.get(key, default=none) dict.has_key(key) http://www.tutorialspoint.com/python/python_dictionary.htm

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 34 Proměnné a datové typy Standartní datové typy Čísla Numbers Matematické funkce Trigonometrické funkce Náhodná čísla Konstanty (e, pi) http://www.tutorialspoint.com/python/python_numbers.htm Řetězce String Seznamy List n-tice Tuple Slovníky Dictionary http://www.tutorialspoint.com/python/python_variable_types.htm

Funkce Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 35

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 36 Funkce Znovupoužitelný blok kódu Provádí jednu konkrétní funkci Podporuje modularitu programované aplikace Přijímá množinu argumentů Může vracet výsledek def functionname( printme( parameters parameters ): ): function_body print(parameters) return [expression] printme("hello!")

Funkce Argumenty jsou vždy předávány referencí! Cokoli změníme v těle funkce, má vliv i mimo def changeme( mylist ): mylist.append([1,2,3,4]) print(mylist) return list = [10,20,30] changeme(list) [10, 20, 30, [1, 2, 3, 4]] Pokud ale změníme referenci, nepřenese se mimo funkci def changeme( mylist ): mylist = [1,2,3,4] print(mylist) return [1, 2, 3, 4] list = [10,20,30] changeme(list) print(list) [10, 20, 30] Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 37

Funkce Funkce mají omezený scope proměnných Proměnné definované v rámci funkce mají pouze lokální scope Proměnné definované mimo funkce mají globální scope (jsou přístupné odevšad) Vzájemně se překrývají, ale neovlivňují def test(): scope = "local" print(scope) return scope = "global" print(scope) test() print(scope) global local global Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 38

Funkce Funkce mají omezený scope proměnných Proměnné definované v rámci funkce mají pouze lokální scope Proměnné definované mimo funkce mají globální scope (jsou přístupné odevšad) Vzájemně se překrývají, ale neovlivňují def test(scope): scope = "local" print(scope) return scope scope = "global" print(scope) scope = test(scope) print(scope) global local local Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 39

Funkce Pojmenované argumenty Nezáleží na pořadí Defaultní argumenty Nemusí být uvedeny Nesmí za ním být žádný non-default! def dosomething( first, second = "none" ): print(first + second) return; dosomething( second=2, first=1 ) dosomething( second="two", first="one" ) dosomething("some") 3 onetwo somenone Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 40

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 41 Funkce Proměnné počty parametrů (*tuple) Formální argumenty jsou následovány proměnnou s hvězdičkou Pokud nejsou předány, seznam je prázdný def dosomething( *args): print(len(args)) return; dosomething( 1,2,3,4,5 ) dosomething() Anonymní funkce Nepoužívá def Jednořádková funkce, vrací jen vyhodnocení výrazu Nepracuje s globálními proměnými http://www.tutorialspoint.com/python/python_functions.htm 5 0

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 42 Funkce Praktická doporučení Funkce by měla být krátká dělat jen jednu věc Malý počet argumentů Jméno volíme jako sloveso, př. computefactorial(n) Název funkce i argumentů by měl být samo-vypovídající Snažíme se vyvarovat přepínání činnosti funkce hodnotou vstupních parametrů

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 2 43 Funkce Dnes: Základní práce s proměnnými Datové typy Přesnost a stabilita výpočtu Definice funkcí Příště řízení běhu programu