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

IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

2013

Page 2: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 3: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Dnešní přednáška

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

Page 4: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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í

Page 5: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Ú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

Page 6: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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)

Page 7: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 8: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 9: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 10: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 11: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 12: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 13: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 14: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 15: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 16: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Předpoklady

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

Page 17: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Osvěžení základů

tutor.fi.muni.cz

Binární křížovkaRobotanikMatematické pexeso

Page 18: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 19: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 20: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 21: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 22: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 23: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Žá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 24: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 25: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 26: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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íÿ

Page 27: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 28: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 29: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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)

Page 30: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 31: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 32: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 33: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 34: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 35: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 36: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu
Page 37: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 38: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

Elegance

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

Page 39: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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 40: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 41: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 42: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 43: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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

Page 44: IB111 Úvod do programování skrze Python Úvod kurzuIB111 Úvod do programovÆní skrze Python (4+2 kr.) ( IB999 Vstupní test z programovÆní (0 kr.) ) výhody a nevýhody Pythonu

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?