1. Úvod C2184 Úvod do programování v Pythonu podzim 2022 Adam Midlik Co je to programování? Programming is when you’re describing to the machine how to do something. Bill Gates 2 Historie ● 1837 – Charles Babbage navrhl Analytický stroj (Analytical Engine) ○ Všestranný mechanický počítač ○ Nikdy nebyl celý sestrojen :( ● Ada Lovelace ○ Popsala metodu, jak pomocí Analytického stroje spočítat Bernoulliho čísla ○ Považuje se za autorku prvního počítačového programu 3 Část Analytického stroje Historie 40. léta 20. století ● Vznikají první počítače ● Používají se nízkoúrovňové programovací jazyky ○ Např. strojový kód, Assembly… ○ Složité pro psaní, specifické pro konkrétní typ procesoru 4 Replika počítače Z3 (1941) 5 Strojový kód b8 21 0a 00 00 a3 0c 10 00 06 b8 6f 72 6c 64 a3 08 10 00 06 b8 6f 2c 20 57 a3 04 10 00 06 b8 48 65 6c 6c a3 00 10 00 06 b9 00 10 00 06 ba 10 00 00 00 bb 01 00 00 00 b8 04 00 00 00 cd 80 b8 01 00 00 00 cd 80 Jazyk Assembly pro procesor IBM-PC (i386) dosseg .model small .stack 100h .data hello_message db 'Hello, World!',0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end main Takhle vypadají soubory .exe Tomuto rozumí procesor Historie 40.–50. léta ● První vysokoúrovňové jazyky ○ Umožňují vyšší míru abstrakce ○ Přeloží se do strojového kódu pomocí překladače (nemusí to dělat člověk) ● 1954 – jazyk Fortran (IBM) ○ První rozšířený vysokoúrovňový jazyk ○ Stále používán pro high-performance computing ● Další jazyky: LISP, COBOL… 6 Fortran PROGRAM HELLOWORLD 10 FORMAT (1X,11HHELLO WORLD) WRITE(6,10) END Historie 60.–80. léta: ● Pascal, C, C++, MATLAB… 90. léta: ● Python, R, Java… ● Internet: PHP, JavaScript… Současnost – stále nové jazyky: ● C# (2001), Go (2009), TypeScript (2012)… 7 Python print('Hello World!') Vývoj Pythonu ● 1989 – Guido van Rossum začal pracovat na jazyce Python ○ Výzkumné centrum CWI v Holandsku ○ Jazyk pojmenován podle komické skupiny Monty Python 8 ● 1994 – Python 1.0 ● 2000 – Python 2.0 ● 2008 – Python 3.0 ○ Cíl: napravit chyby v návrhu Pythonu ○ Není zpětně kompatibilní v Pythonem 2! ○ Python 2 stále přežívá (kvůli množství existujícího kódu) … ○ … Konec podpory – 1.1.2020 ● 4.10.2021 – Python 3.10 9 Proč Python? 10 Proč Python? ● Jednoduchý jazyk, snadno se učí a je pedagogický ● Přehledná syntaxe ● Velká oblíbenost ○ Dokumentace, Stack Overflow ○ Množství tutoriálů a kurzů ○ Velké množství balíčků, všestranné nasazení ● Mocný jazyk ○ Výkonné vysokoúrovňové datové struktury ○ Jednoduchý přístup k objektovému programování ● Využití ve vědě ○ Bioinformatika: Biopython, scikit-bio ○ Matematika: scipy, matplotlib ○ Strojové učení: scikit-learn, TensorFlow ○ Zpracování obrazu: scikit-image … 11 Přehledná syntaxe Funkce pro seřazení čísel: Poznámka: tuto funkci by bylo zbytečné psát, protože to už někdo udělal za nás: 12 Síla 13 Oblíbenost PYPL index – 1. místo TIOBE index – 1. místo 14 Filozofie – jednoduchost a konvence The Pythonic way: There should be one – and preferably only one – obvious way to do it. 15 Bude fungovat Jednodušší a přehlednější způsob (the Pythonic way) for item in my_list: do_something(item) for i in range(len(my_list)): do_something(my_list[i]) i = 0 while i < len(my_list): do_something(my_list[i]) i = i + 1 Bude fungovat Slabiny Pythonu Rychlost ● Pomalejší než třeba C nebo Java :( ● Existují způsoby, jak napsat rychlý kód :) ● Pravděpodobně na tento problém nenarazíte Spotřeba paměti ● Pravděpodobně na tento problém nenarazíte Runtime errors ● Je to dynamicky typovaný jazyk, proto z kódu nelze poznat, jaké chyby se mohou vyskytnout při běhu programu (lze řešit např. pomocí mypy) Méně vhodný pro mobilní aplikace a databáze 16 Co je vlastně Python? Python je ● Programovací jazyk ○ Jazyk, který umožňuje zápis zdrojového kódu programu ○ Jeho syntax a sémantika je popsána dokumentací ○ Konkrétně verze Python 3.10 ● Interpreter ○ Program, který umožňuje spouštění (interpretaci) zdrojového kódu napsaného v jazyce Python ○ Konkrétně CPython 3.10 (existují i další interpretery, např. PyPy, Jython) 17 Jak funguje interpreter? 18 Vstup Výstup Chybový výstup Zdrojový kód (skript) Interpreter Interpreter v interaktivním módu 19 Zdrojový kód (příkazy) Vstup Výstup Chybový výstup Rozdíly od neinteraktivního módu: ● Zdrojový kód se zadává z terminálu ● Pro zadání příkazů se vypisuje prompt (>>>) ● Výsledky příkazů se vypisují na výstup Terminál Interpreter Co je IDE? ● IDE = Integrated Development Environment = vývojové prostředí ● “Chytrý editor” ● Ulehčuje nám práci při programování ● My budeme používat Visual Studio Code ○ Zadarmo ○ Není vázané na konkrétní jazyk ○ Lze do něj přidávat funkcionalitu pomocí extensions (využijeme extension Python) ● Jiná IDE: PyCharm, Spyder... 20 21 Instalace Pythonu a VSCode – Windows Python ● Stáhněte Python 3.10 z https://www.python.org/downloads/ ● Důležité: na začátku instalace zaškrtněte Add Python 3.10 to PATH ● V jednom z dalších kroků zaškrtněte Disable path length limit ● Kontrola: v nabídce Start najděte Python 3.10 – měl by se otevřít terminál VSCode ● Stáhněte z https://code.visualstudio.com/ ● Při instalaci také zaškrtněte Add to PATH ● Spusťte VSCode a na levé liště klikněte na ikonu Extensions ● Vyhledejte a nainstalujte extension Python od autora Microsoft ○ Automaticky se nainstalují i další extensions: Pylance, Jupyter, Jupyter Keymap ● Restartujte VSCode 22 Instalace Pythonu a VSCode – Linux, Mac OS X Obdobná instalace Ve většině distribucí Linuxu je už Python nainstalován, ale jmenuje se python3 ● Starší verze, do 2019 (Ubuntu 19.10), starší Macy: ○ python3 = Python 3 (python = Python 2 → nepoužívat) ● Novější verze, od 2020 (Ubuntu 20.04): ○ python3 = Python 3 (po instalaci balíku python-is-python3: python = python3 = Python 3) ● Doinstalujte si balík python3-pip (přes sudo apt install python3-pip) Instalace VSCode může být složitější (https://code.visualstudio.com/docs/setup/setup-overview) 23 Instalace Pythonu a VSCode – učebna C04/118 Je zde Linux Ubuntu 22.04, Python 3.9 Anaconda, VSCode 1.71 ● V Activities vyhledejte Terminal ● V terminálu zadejte tyto příkazy (za každým Enter): module add anaconda3 (přidání modulu s Pythonem) module add vscode (přidání modulu s VSCode) code (spuštění VSCode) ● Doinstalujte extension Python ve VSCode 24 První kroky ● Vytvořte si složku, ve které si budete ukládat svoje programy během semestru ● Stáhněte si cviko_01.zip z interaktivní osnovy a rozbalte do své složky ● Ve VSCode na levé liště klikněte na ikonu Explorer a otevřete složku cviko_01 ○ Otevření složky: zkratka Ctrl+K Ctrl+O ● Na horní liště klikněte Terminal > New Terminal, otevře se vám terminál s shellem (bash nebo powershell) ○ Terminál lze skrýt / znovu otevřít zkratkou Ctrl+J 25 Základní příkazy shellu ● ls – vypiš obsah aktuální složky (nebo ve Windows dir) ● cd .. – jdi o složku výš ● cd blabla – jdi do podsložky blabla ● blabla – spusť program blabla ● man blabla – vypiš nápovědu k příkazu/programu blabla (Linux, MacOS) ● help blabla – – | | – (Windows) ● exit – ukonči shell a zavři terminál Klávesy ↑↓ – návrat k předchozím příkazům Tab – automatické doplnění příkazu / programu / názvu souboru / složky 26 Spuštění Pythonu v interaktivním módu ● Do terminálu ve VSCode napište python, stiskněte Enter ● Vypíše se verze Pythonu a objeví se prompt (>>>) ● Zkuste zadávat příkazy, např. 2+2 nebo print('Hello') ● K předchozím příkazům se umíte vrátit pomocí šipek ↑↓ na klávesnici ● Python ukončíte signálem end-of-file (Windows: Ctrl+Z a Enter; Linux, Mac: Ctrl+D), nebo zadáním příkazu exit() 27 Úkol ● Spusťte Python v interaktivním módu a vypočítejte (123 + 4/5) * 6 A) 127.8 B) 738 C) 742.8 D) 9 28 Spuštění skriptu ● V nabídce Explorer ve VSCode vytvořte nový soubor hello.py a otevřete ho (pythonovské skripty mají příponu .py) ● Do souboru napište print('Hello World!') a uložte (* nebo • nahoře u názvu souboru znamená, že není uložen) ● Do terminálu zadejte python hello.py (shell umí dokončit název souboru stisknutím Tab) ● Spustí se Python a vypíše Hello World! ● Python se hned i ukončí, neuvidíte >>> ● Trik: aktuální řádek nebo označenou část skriptu lze spustit přes Shift+Enter 29 Úkol ● Spusťte skript ukazkovy_skript.py. Co se vypíše? A) 2 5 8 0 1 B) 0 1 2 5 8 C) 8 5 2 1 0 D) 0 2 5 8 4 30 Jupyter Notebook ● Nástroj, který umožňuje kombinovat text, zdrojový kód, rovnice, grafy … v jednom dokumentu (notebooku, přípona .ipynb). ● Notebook se skládá z buněk dvou typů ○ Markdown – obsahují formátovaný text ○ Code – obsahují zdrojový kód ● Na pozadí běží interaktivně interpreter, který vykonává kód v buňkách (kernel) ● Výstup interpretru se zobrazuje přímo v notebooku ● Buňky lze upravovat, přesouvat, mazat a opakovaně spouštět 31 Spuštění Pythonu přes Jupyter notebooks ● V nabídce Explorer ve VSCode otevřete soubor ukazkovy_notebook.ipynb, potvrďte všechny výzvy k instalaci doplňků a pod. – může to chvilku trvat ● Zkuste spouštět a upravovat buňky v notebooku ● Možné problémy: ○ Notebook je otevřený v Restricted módu → při otevření složky potvrdit “Yes, I trust the authors” ○ Není zvolený kernel (pokud máme nainstalovaných více verzí Pythonu) → vpravo nahoře zvolit kernel Python 3 (v učebně: base (Python 3.9.12), ne 3.10) ○ Není nainstalovaný balík ipykernel → potvrdit výzvu k instalaci 32 Úkol ● Spusťte poslední buňku v notebooku ukazkovy_notebook.ipynb. Co vypíše? A) Python Rules B) Secret Message C) Spanish Inquisition D) 9 33 Ukázkový domácí úkol ● Do své složky si stáhněte a rozbalte cviko_01.zip ● Ve VSCode otevřete du_1.ipynb ● Řešte zadaný úkol ● Řešení si můžete zkontrolovat spuštěním testovací buňky na konci notebooku, před tím ale nezapomeňte notebook uložit (nebo si nastavte File > Auto Save) ● Když vám projdou testy (vypíše se Tests passed), můžete odevzdat notebook do odevzdávárny v ISu ○ Vždy odevzdávejte soubor s původním názvem, jinak se vám nezapočtou body ● Body za DÚ budeme cca 1x za 2 dny zapisovat do poznámkových bloků v ISu 34 Alternativní odevzdávání domácích úkolů Kdo nechce používat Jupyter notebooks: ● Stejné zadání jako v du_X.ipynb naleznete v du_X.pdf ● Jednotlivé úkoly řešte v souborech du_X_Y.py ○ např. DÚ 2.5 řešte do souboru du_2_5.py ● Testy si spustíte z příkazového řádku: python testing.py du_X_Y.py ● Odevzdejte jednotlivé soubory nebo je zabalte jako ZIP (ne RAR, TAR, 7Z...). 35 Užitečné triky VSCode ● Ctrl+J – zobrazí/skryje terminál ● Ctrl+/ – zakomentuje/odkomentuje řádek (text za # interpreter ignoruje) ● Ctrl+X – smaže řádek (Ctrl+C, Ctrl+V kopíruje aktuální řádek) ● Ctrl+K, Ctrl+O – otevření složky ● Ctrl+↑↓ – scrollování ● Alt+↑↓ – přesouvání aktuálního řádku ● 2x klik – označí celé slovo ● 3x klik – označí celý řádek 36 Doporučení: používejte anglickou klávesnici 37 Obsahuje všechny speciální znaky používané při programování @ # % ^ & ( ) [ ] { } < > + - = * / | \ : ; ’ ” ` _ … Česká Slovenská 38