IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu...
Transcript of IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu...
![Page 1: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/1.jpg)
IB111 Úvod do programováníÚvod kurzu
2016
![Page 2: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/2.jpg)
Úvodní dotazník
1 programátorské zkušenostiA (téměř) žádnéB dílčí zkušenosti, ale nepříliš kvalitníC dobré zkušenosti
2 programovací jazykPythonC, C++, C#JavaPascalPHPjiné
![Page 3: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/3.jpg)
Úvodní dotazník
očekávání o využití programování
A intenzivní, profesníB nějak určitě, otázka jak mocC spíš ne
![Page 4: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/4.jpg)
Dnešní přednáška
o předmětuorganizace, ukončenípojmy – algoritmus, programovánímotivace, širší kontextpředstavení Pythonu, rychlé demo
více o samotném programování až příště
![Page 5: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/5.jpg)
Cíle předmětu
zvládnutí základních programátorských konstrukcí(proměnné, funkce, if, for, while, . . . )obecné principy použitelné v řadě programovacích jazykůúvod do programátorského a algoritmického stylu myšlení
![Page 6: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/6.jpg)
Programovací jazyk Python
Úvod do programování skrze PythonnikolivÚvod do programování v Python
Python je používán pro ilustraci pojmů a příkladů, nacvičeníchdůraz na obecné koncepty, cílem není detailní zvládnutíPythonuzáměrně neprobíráme specifika Pythonuzvládnutí konkrétního jazyka – trénink a praxe
![Page 7: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/7.jpg)
Programátorská kultura
Programy by měly být nejen korektní, ale i „pěknéÿ.
![Page 8: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/8.jpg)
Co čekat: příklady
výpočty: faktoriál, prvočísla, odmocnina, náhodná číslaobrázky: želví grafika, „textová grafikaÿ, bitmapyjednoduché hry: hádání čísla, jednorozměrné piškvorkyzpracování dat: statistiky dat ze souboru
![Page 9: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/9.jpg)
![Page 10: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/10.jpg)
Forma předmětu
2h přednáška, nepovinná, ale velmi doporučenáRadek Pelánek / Nikola Benešhodně „příkladový stylÿslidy nemusí být pochopitelné bez komentáře, obsahují izáměrné chyby (pro ilustraci)záznamy dostupné, ale plátno nepříliš čitelnéna cvičení často algoritmy z přednášky
2h cvičení, povinnéprogramování v jazyce Pythonvíce skupin, cvičícíchspeciální cvičení 01
![Page 11: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/11.jpg)
Komunikace
řešení problémů, nestandardní situace, . . .
cvičící spíše než přednášejícíosobně (po cvičení, přednášce) spíše než elektronickydiskuzní fórum spíše než mail
![Page 12: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/12.jpg)
Hodnocení předmětu
závěrečná písemná zkouška: 200 bodů (50 %)zkouší se principy, algoritmy, pojmytest s výběrem možností, podobné průběžnýmOdpovědníkům
průběžná zkouška u počítače: 80 bodů (20 %)programování v rámci jednoho cvičeníúkoly – variace na příklady ze cvičení
domácí úkoly: 120 bodů (30 %)6 za semestrbodování: 15, 15, 15, 25, 25, 25
výjimečné bonusové body
![Page 13: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/13.jpg)
Hodnocení předmětu – minimum pro ukončení
účast na cvičení (max. 2 neomluvené hodiny)odevzdání všech 6 domácích úloh (alespoň 1 bod zakaždou)alespoň 80 bodů za domácí úlohyalespoň 100 bodů ze závěrečné písemkyalespoň 220 bodů celkově
![Page 14: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/14.jpg)
Domácí úkoly – organizace
skupiny: rámcově stejné zadání, odlišné detailypřesné zadání, termín odevzdání – kompetence cvičících
![Page 15: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/15.jpg)
Domácí úkoly – neúplná řešení
pokud nezvládnete úlohu kompletně, zkuste alespoň něco(za méně bodů) – jasně označte:
částečné řešenípozměněná (zjednodušená) úlohapřevzatá část řešení (z webu) a doplněna vlastní úprava
pokud řešení není úplné, uveďte v komentáři „známénedostatkyÿ
![Page 16: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/16.jpg)
Opisování
pracujte samostatněopisování se trestá zápornými body a disciplinární komisíneřešíme, kdo opisoval – nesdílejte svoje řešení
![Page 17: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/17.jpg)
Speciální cvičení
skupina 01pro ty, kdo již mají programátorské zkušenostibez pravidelných cvičení a domácích úloh3 projekty, osobní prezentace
![Page 18: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/18.jpg)
Stránka předmětu
http://www.fi.muni.cz/IB111/
harmonogram přednášek, cvičení, úkolůvýukové materiálydoplňující informace
![Page 19: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/19.jpg)
Studijní materiály v ISu
Relevantní agendy z ISu pro tento předmět:Učební materiály – slidy z přednášekOrganizační pokyny – archiv zaslaných mailůOdpovědníky – tréninkové testy, dobrovolné, doporučenéOdevzdávárny – odevzdávání domácích úlohPoznámkové bloky – počet bodů z úlohDiskuse – nejasnosti, tipy na zajímavé zdroje, . . .
![Page 20: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/20.jpg)
Sbírka příkladů
http://www.fi.muni.cz/IB111/sbirka/
interaktivní webová stránkapříklady ze cvičeníprocvičení nad rámec cvičení
![Page 21: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/21.jpg)
Doplňkové zdroje – knihy
Python Programming: An Introduction to ComputerScience, J. M. Zelle.Introduction to Computing and Programming in Python,A Multimedia Approach. M. Guzdial, B. Ericson.Programátorská cvičebnice, R. Pelánek.Jak to vyřešit, R. Pelánek.
![Page 22: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/22.jpg)
Doplňkové zdroje – web
Učíme se programovat v jazyce Python,http://howto.py.cz/index.htm
http://interactivepython.org – interaktivníučebnicedokumentace k Pythonuhttps://www.hackerrank.com/ – příklady, řešení (aopravování) v prohlížečiCoursera, Udacity kurzynapř. Learn to Program: The Fundamentals, An Introduction to Interactive Programming in Python
sdílejte užitečné zdroje v diskusním fóru předmětu
![Page 23: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/23.jpg)
Předpoklady
základní počítačová gramotnoststředoškolská matematika (např. faktoriál, prvočíslo,logaritmus)logické spojky (and, or, . . .)angličtina (alespoň pasivně, základní porozumění)
rychlotest: Kahoot
![Page 25: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/25.jpg)
Náročnost předmětu
. . . závisí na vstupních dovednostech
A žádné programátorské zkušenosti⇒ náročné, nezbytné věnovat průběžně čas nad rámecpřednášek a cvičení
B dílčí programátorské zkušenosti⇒ není těžké, pokud se předmětu průběžně poctivě věnujete
C dobré programátorské zkušenosti⇒ celkem snadné, ale nepodcenit (především 2. polovinukurzu a závěrečnou zkoušku)
![Page 26: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/26.jpg)
Motivační úloha
převozník, loďka uveze jen 1další kus nákladunáklad: vlk, koza, zelíbez dozoru:
vlk žere kozukoza žere zelí
jak dostat vše bezpečně nadruhou stranu
Jak řešit úlohu algoritmicky? Co to znamená?
http://www.fi.muni.cz/~xpelanek/IB111/vkz/
![Page 27: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/27.jpg)
Motivační úloha
převozník, loďka uveze jen 1další kus nákladunáklad: vlk, koza, zelíbez dozoru:
vlk žere kozukoza žere zelí
jak dostat vše bezpečně nadruhou stranu
Jak řešit úlohu algoritmicky? Co to znamená?
http://www.fi.muni.cz/~xpelanek/IB111/vkz/
![Page 28: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/28.jpg)
Algoritmus
návod/postup, jak „mechanickyÿ vyřešit určitý typúlohy/problémupříklady:
rozklad na součin prvočíselnalezení nejkratší cesty mezi dvěma městyvygenerovat zadání Sudoku
![Page 29: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/29.jpg)
Žádoucí vlastnosti algoritmu
má jasný vstup a výstupobecný (nejen pro omezenou třídu instancí)deterministický (vždy jednoznačné, jak postupovat)konečný, efektivní
![Page 30: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/30.jpg)
Programování
za algoritmus můžeme považovat i recept, návodprogramování – zápis algoritmů pro počítačepočítače jsou „hloupéÿ – zápis algoritmu musí býtopravdu přesný (srovnej „osolíme přiměřeněÿ)nutnost vyjadřovat se přesně:
otrava – náročný zápisbonus – nutnost myslet přesně
![Page 31: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/31.jpg)
Programování: motivace
Proč pořádně zvládnout základy programování?
základ pro další studiumužitečnost
profesníobčasná
elegance, kreativita, „sílaÿ
![Page 32: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/32.jpg)
Programování: způsoby využití
(příklady, rozhodně ne kompletní klasifikace)aplikaceprogramování pro webvestavěné systémyvědecké výpočtyskriptování
každé důraz na něco jiného, sdílí ale základní principy„informatického myšleníÿ, námi probírané základní konstrukcejsou potřeba všude
![Page 33: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/33.jpg)
Aplikace
„samostatnéÿ aplikace pro stolní počítače, mobilnízařízenípříklady:
kancelářský softwareeditace grafiky, zvuku, videahry
důraz na interakci s uživatelemvyužití knihoven, práce s operačním systémem
![Page 34: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/34.jpg)
Programování pro web
příklady:informační systémye-obchodyprezentace firmy
široká škála:drobné úpravy existujících systémů (CMS)vytváření vlastních rozsáhlých systémů
práce s databázemi, integrace různých prostředků(Python/PHP, JavaScript, CSS, HTML, . . .)důraz na soukromí – přístupová práva v IS, elektronicképlatby
![Page 35: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/35.jpg)
Vestavěné systémy
příklady:kuchyňské spotřebiče, GPS, mobil, foťákdopravní prostředkyzdravotnické přístroje
nízko-úrovňové programování, ovladačeúzké propojení s konkrétním hardwarembezpečnost, práce s limitovanými zdroji (paměť, energie)
![Page 36: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/36.jpg)
Vědecké výpočty
příklady:simulace počasí, klimatubioinformatika (protein folding, analýza genomu, . . .)
vymýšlení algoritmů (urychlení výpočtu, distribuovanévýpočty)propojení informatiky a matematiky (příp. jiných disciplín)zpracování rozsáhlých datuživatelské rozhraní a interaktivita jsou jen malá část
![Page 37: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/37.jpg)
Skriptování
příklady:převod dat mezi různými formátyrychlá analýza datprototypy, experimentydrobné úpravy systému (např. správce sítě)
malý rozsah, specifický účelčasto jednorázové aplikace„programování pro běžný životÿ
![Page 38: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/38.jpg)
Programování v malém / ve velkém
programování v malémdesítky až stovky řádků kódunezávislé na „ostatníchÿtento předmět
programování ve velkémtisíce až milióny řádkůzávislosti, souvislosti, návrh, testování, . . .další předměty (OOP, softwarové inženýrství, . . .)
![Page 39: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/39.jpg)
Programování v malém: motivace
nutná prerekvizita pro kvalitní programování ve velkémtrénink myšleníprakticky užitečné, i když nejste programátor na plnýúvazek
![Page 40: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/40.jpg)
Praktické programování v malém: příklady
tvorba studijního kataloguvytvoření interaktivní webové úlohy pro systém Tutorzpracování botanických datvytváření šifer pro Tmouobrázky do knihy Hlavolamikon
pokud neovládáte X, pak vás často ani nenapadne, že by sevám X mohlo hodit
![Page 41: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/41.jpg)
![Page 42: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/42.jpg)
![Page 43: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/43.jpg)
Obrázky do knihy
”0102010902050302030703080401040304090507060606100701. . .;3131313113:3131231213-;10”
3131313113
3 1 3 1 2 3 1 2 1 3
![Page 44: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/44.jpg)
Doporučené cvičení
rutinní činnost na počítači⇓
programátorské cvičení
![Page 45: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/45.jpg)
Nejen užitečnost . . .
programování je zajímavé i samo o soběelegantní myšlenkyradost z objevování, experimentovánítvoření, kreativita„sílaÿ – pár stisků klávesnice a vytvoříte něco nového azajímavého
![Page 46: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/46.jpg)
Elegance
Mandelbrotova množina, 25 řádků kódu
![Page 47: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/47.jpg)
Programovací jazyky
zdrojový kód(program) překladač
strojovýkód
vstupy výstupyběžící
program
zdrojový kód(program)
vstupy
výstupyinterpret
kompilovaný program
interpretovaný program
![Page 48: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/48.jpg)
Programovací jazyky: klasifikace I
nízko-úrovňové
kompilovanénutnost řešit specifika konkrétního systémuexplicitní práce s pamětínáročnější vývoj (nízká efektivita práce)vysoká efektivita programu
vysoko-úrovňové
interpretovanénezávislé na konkrétním systémuvyužití abstraktních datových typůsnadnější vývoj (vysoká efektivita práce)nižší efektivita programu
nikoliv dvě kategorie, ale plynulý přechod; zjednodušeno
![Page 49: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/49.jpg)
Programovací jazyky: klasifikace II
zjednodušená klasifikace a použití
nízko-úrovňové C, FORTRAN, . . .vestavěné systémy, rychlé výpočty
objektové C++, Java, C#, . . .klasické aplikace, rozsáhlé systémy
skriptovací Python, PHP, JavaScript, Perl, . . .programování pro web, skriptování, prototypy
deklarativní Prolog, LISP, Haskell, . . .umělá inteligence
více na samostatné přednášce na konci semestru
![Page 50: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/50.jpg)
Python
vysoko-úrovňový – velká míra abstrakce, „spustitelnýpseudokódÿinterpretovaný – pomalejší než kompilovaný, ale většívolnostpedagogický – byl tak navržen, dnes již dominantnívýukový jazykmoderní a široce používaný – patří mezi přibližně 5nejpoužívanějších jazykůvolně a snadno dostupný na všech platformáchširoká nabídka knihoven
![Page 51: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/51.jpg)
Původ jazyka a názvu
autor:Guido van Rossumkonec 80. let
název podle:Monty Python’sFlying Circus
![Page 52: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/52.jpg)
https://xkcd.com/353/https://www.explainxkcd.com/wiki/index.php/353
![Page 53: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/53.jpg)
Příklad aplikace: Slepé mapy
Python, Django, JavaScript, řada dílčích knihoven
![Page 54: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/54.jpg)
Data
id;user;place_asked;place_answered;type;inserted;response_time;place_map;language;options;ip_country;ip_id10101829;124252;124;124;2;2015-05-21 07:39:18;3107;231;0;[124, 214];CZ;4528010101830;124242;1304;1304;1;2015-05-21 07:39:19;4225;225;0;[];CZ;1087710101831;124252;127;127;1;2015-05-21 07:39:22;3878;231;0;[73, 127];CZ;4528010101832;123553;604;;1;2015-05-21 07:39:25;10790;126;0;[];CZ;4511010101833;124242;1016;1017;1;2015-05-21 07:39:30;9887;225;0;[];CZ;1087710101834;124242;1300;;1;2015-05-21 07:39:33;735;225;0;[];CZ;1087710101835;124252;112;111;2;2015-05-21 07:39:36;13422;231;0;[54, 169, 111, 112, 214, 186];CZ;4528010101836;124239;151;151;1;2015-05-21 07:39:39;4346;227;1;[];US;3599910101837;123553;450;445;1;2015-05-21 07:39:40;12790;126;0;[];CZ;4511010101838;124239;224;224;1;2015-05-21 07:39:43;2896;227;1;[];US;3599910101839;124252;134;134;1;2015-05-21 07:39:43;4297;231;0;[134, 214, 127];CZ;4528010101840;124239;183;183;1;2015-05-21 07:39:47;2719;227;1;[];US;3599910101841;124239;180;180;1;2015-05-21 07:39:50;3007;227;1;[];US;3599910101842;124252;218;207;1;2015-05-21 07:39:54;5732;231;0;[];CZ;4528010101843;124239;87;87;1;2015-05-21 07:39:54;3145;227;1;[];US;35999...
http://www.fi.muni.cz/adaptivelearning/?a=data
![Page 55: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/55.jpg)
Analýza dat
Python, NumPy, SciPy, Pandas, matplotlib, Kartograph,networkx, . . .
![Page 56: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/56.jpg)
Programování v tomto kurzu
důraz na obecné principy, nikoliv specifika Pythonuvětšina konceptů snadno a velmi podobně realizovatelná vjiných jazycíchpoužíváme Python 3 (zpětně nekompatibilní s Python 2)minimální použití rozšiřujících knihoven
![Page 57: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/57.jpg)
Osnova I: Základy
Základní konstrukce (proměnné, výrazy, řídicí struktury,funkce)Programy pracující s čísly (číselné typy, jednoduchéukázky, dělitelnost, náhoda)Řetězce a seznamy (a kryptografické odbočky)Vyhledávání a řazení (práce se seznamem, binárnívyhledávání, řadicí algoritmy, základy složitosti)
![Page 58: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/58.jpg)
Osnova II: Důležité věci detailněji
Datové typy a jejich užití (seznam, zásobník, fronta,slovník, množina)Rekurze (rekurzivní funkce, příklady)Práce se soubory, správa paměti (proměnné podrobněji)Složené datové typy, objekty v PythonuPráce s textem
![Page 59: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/59.jpg)
Osnova III: Aplikace, praxe
Příklady aplikace datových strukturObrázky (reprezentace, generování, úpravy)Vývoj programů (návrh, dekompozice problému,dokumentace, testování; případová studie)Programovací jazyky (přehled jazyků a jejich užití),praktické postřehy
![Page 60: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/60.jpg)
Hlavní návaznosti
IB002 Algoritmy a datové struktury IPB161 Programování v jazyce C++PB162 Programování v jazyce JavaIB015 Neimperativní programováníPB007 Softwarové inženýrství I
![Page 61: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/61.jpg)
Odpadá 2. přednáška
samostudium, podklady e-mailem
proměnnétypy (číslo, řetězec, bool)print (funkce pro výpis)výrazy, operátory (aritmetické, logické)podmínky (if/else)cykly (for, while)bloky kódufunkce
![Page 62: IB111 Úvod do programování Úvod kurzu · 2016. 9. 22. · Dne„ní płednÆ„ka o płedmìtu organizace, ukonŁení pojmy { algoritmus, programovÆní motivace, „ir„í kontext](https://reader034.fdocuments.net/reader034/viewer/2022051810/6017a745f9d678356974228f/html5/thumbnails/62.jpg)
Závěrečný příklad na zamyšlení: Vězni a karty
Albert dostane 5 karet ze standardního balíčku 52 karetvybere jednu z nichzbylé čtyři poskládá do zvoleného pořadí a dá jeBedřichoviBedřich musí určit, jaká je ta pátá odstraněná kartaJaký systém si mají Albert s Bedřichem domluvit?