IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python...

Preview:

Citation preview

IB111 Úvod do programování skrze PythonÚvod kurzu

2013

Dnešní přednáška

o předmětuadministrativazáklady – algoritmus, programovánímotivace

Cíle předmětu

zvládnutí základních programátorských konstrukcí (if, for,while, . . . )obecné principy použitelné v řadě programovacích jazykůúvod do programátorského a algoritmického stylu myšlení

Úvod do programování skrze 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 některá specifika Pythonuzvládnutí konkrétního jazyka – trénink a praxe

Kontext

máte (většina z vás) volbu mezi:IB001 Úvod do programování skrze C (4+2 kr.)IB111 Úvod do programování skrze Python (4+2 kr.)( IB999 Vstupní test z programování (0 kr.) )

výhody a nevýhody Pythonu oproti C:+ příjemnější na použití+ snadnější začátky+ využití v mat. softwaru (Sage)- odlišná syntaxe od ostatních jazyků, které dále potkáte

(C++, Java)

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 ze souboru, regulární výrazy

Forma předmětu

2h přednáška, nepovinné, ale velmi doporučenéRadek Pelánek / Zdeněk Říhaslidy nemusí být pochopitelné bez komentářezá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ích

Hodnocení předmětu

závěrečná písemná zkouška: 50 bodů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: 20 bodůprogramování v rámci jednoho cvičeníúkoly variace na příklady ze cvičení

domácí úkoly: 30 bodů6 za semestr po 5 bodech

výjimečné bonusové bodyúčast na cvičení (max. 2 neomluvené hodiny)minimum pro ukončení: 25 bodů DÚ + průběžná zk,25 bodů závěrečná zk

Domácí úkoly

pracujte samostatně, opisování se trestá zápornými body;neřešíme, kdo opisovalpokud nezvládnete úlohu kompletně, zkuste alespoň něco(za méně bodů) – jasně označte:

částečné řešenípřevzít část cizího řešení a doplnit vlastní kuspozměněná (zjednodušená) úloha

pokud řešení není úplné, uveďte v komentáři „známénedostatkyÿdomácí úkoly (přesné zadání, termín odevzdání) vkompetenci cvičících

Stránka předmětu

http://www.fi.muni.cz/~xpelanek/IB111/

harmonogram přednášek, cvičení, úkolůvýukové materiálydoplňující informace

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 úloh

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.

Doplňkové zdroje – web

Učíme se programovat v jazyce Python,http://howto.py.cz/index.htm

http://interactivepython.org – interaktivníučebnicedokumentace k PythonuKhan Academy – Computer ScienceCoursera, Udacity kurzynapř. Learn to Program: The Fundamentals, An Introduction to Interactive Programming in Python

sdílejte užitečné zdroje v diskuzním fóru předmětu

Předpoklady

základní počítačová gramotnoststředoškolská matematika (např. faktoriál, prvočíslo,logaritmus)logické spojky (and, or, . . .)

Osvěžení základů

tutor.fi.muni.cz

Binární křížovkaRobotanikMatematické pexeso

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/

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/

Algoritmus

návod/postup, jak „mechanickyÿ vyřešit určitý typúlohy/problémutypické příklady:

rozklad na součin prvočíselnalezení nejkratší cesty mezi dvěma městyvygenerovat zadání Sudoku

Žá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í

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ě

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ÿ

Programování: způsoby využití

(příklady, rozhodně ne kompletní klasifikace)rozsáhlé 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íÿ

Samostatné rozsáhlé aplikace

příklady:kancelářský, účetní softwareeditace grafiky, zvuku, videahry

rozsáhlé projektydůraz na interakci s uživatelemvyužití knihoven, práce s operačním systémem

Programování pro web

příklady:informační systémye-obchodyprezentace firmy

široká škála:drobné úpravy existují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

Vestavěné systémy

příklady:kuchyňské spotřebiče, GPS, mobil, foťákdopravní prostředky

nízko-úrovňové programování, ovladačeúzké propojení s konkrétním hardwarembezpečnost, práce s limitovanými zdroji (paměť, energie)

Vědecké výpočty

příklady:simulace počasí, klimatubioinformatika (protein folding, analýza genomu, . . .)

vymýšlení algoritmů (urychlení výpočtu, distribované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

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í 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í, . . .)

Programování v malém: motivace

nutná prerekvizita pro kvalitní programování ve velkémprakticky užitečné, i když nejste programátor na plnýúvazek

Praktické programování v malém: příklady

tvorba studijního kataloguvytvoření interaktivní webové úlohy pro systém Tutorzpracování botanických datgenerování šifer pro Tmou

pokud neovládáte X, pak vás často ani nenapadne, že by sevám X mohlo hodit

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

Elegance

Mandelbrotova množina, 25 řádků kódu

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

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 (nizká 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

Programovací jazyky: klasifikace II

zjednodušená klasifikace a použití

nízko-úrovňové C, FORTRAN, . . .vědecké výpočty, vestavěné systémy

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

Python

vysoko-úrovňový – velká míra abstrakce, „spustitelnýpseudokódÿinterpretovaný – pomalejší než kompilovaný, ale většívolnostpedagogický – byl tak navrženmoderní a široce používaný – přibližně 7. nejpoužívanějšíjazykvolně a snadno dostupný na všech platformách

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 2.7

Závěrečný motivační příklad: 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?