Notes and Talks/UJEP/PRG1/01

Úvod, programovací prostředí, čísla

Python

Programovací jazyk Python vytvořil v devadesátých letech Guido van Rossum🌐. Jméno Python vybral podle britské surrealistické komediální skupiny Monty Python's Flying Circus🌐. Python patří mezi nejpopulárnější programovací jazyky. Pro studenty API je nezbytné se jej naučit.

Syntaxe Pythonu je navržena tak, aby nutila programátory psát čitelný, elegantní, přehledný, přímočarý a jednoznačný kód. Python je vhodný jak pro začátečníky, tak pro experty. Je také častou volbou pro vědecké výpočty, protože má mnoho rozsáhlých knihoven pro numerické výpočty, práci s daty, a také pro strojové učení a umělou inteligenci.

Pro vyjádření blokové struktury programu používá Python odsazení, na rozdíl od obvyklých jazyků, které používají složené závorky {} nebo klíčová slova jako begin a end.

Současná verze Pythonu je 3.x. My budeme pracovat s verzí 3.13.

Cíl kursu

Hlavním cílem kursu je učit se algoritmizaci, což je schopnost řešit úlohy pomocí algoritmů, tedy přesně popsaných postupů, krok za krokem, které lze napsat pomocí strojových příkazů. Strojem se rozumí počítací stroj, krátce počítač, který strojové příkazy mechanicky provádí (vykonává).

Strojové příkazy se zapisují v programovacím jazyce, v našem případě v Pythonu. Kolekce (nebo sekvence) strojových příkazů se nazývá program.

Programovací prostředí

Programy se nejčastěji vytvářejí v programovacím (vývojovém) prostředí.

Na přednáškách se bude používat jedna z variant zápisníku (notebooku) Jupyter, což je interaktivní prostředí, ve kterém lze kombinovat textové poznámky a kód.

Na cvičeních budeme používat online notebook Google Colab.

Jak vytvořit Google Colab zápisník

Jupyter zápisníky mají příponu .ipynb (vychází z IPython Notebook🌐).

V zápisníku lze vytvářet textové buňky pro poznámky, a kódové buňky pro kód. Kód lze přímo v zápisníku provést.

Ponořme se do Pythonu

Vytvořte si nový zápisník v Google Colab. Do kódových buněk můžete psát nebo kopírovat kód a spouštět ho:

Verze Pythonu

Ověříme, že používáme Python 3.13:

pythonimport sys          # import načte modul sys (system)
print(sys.version)  # vypíše verzi Pythonu

Text od znaku # do konce řádky je tzv. komentář: je určen pro lidi, počítač jej ignoruje.

Nastavení prostředí

Otevřete si dialog Nástroje / Nastavení (zubaté kolečko vpravo nahoře) a nastavte:

Vstup a výstup

Trocha historie

Na počátku probíhal vstup a výstup dat do a z počítače přepínači a světélky, pomocí děrných štítků a řádkové tiskárny, dálnopisem, nebo na prvních obrazovkách a klávesnicích. Tento tzv. řádkový vstup a výstup probíhá v Pythonu pomocí příkazů (funkcí) input a print.

V Jupyter zápisníku probíhá výstup nejjednoduššeji přímo po vyhodnocení posledního výrazu v buňce:

python1 # číslo jedna
python'haló' # text v uvozovkách (řetězec, string)
python"haló" # text v dvojitých uvozovkách
pythonhaló # chyba (výjimka)

Chyba v posledním výrazu vyvolala výjimku (raised an exception), která ukončila běh programu (ano, už nejjednodušší výraz je programem) a vypsala obsah zásobníku (stack dump, traceback).

Proměnné

Problém byl v tom, že slovo haló je v Pythonu nedefinované (neznámé). Můžeme jej ale použít jako proměnnou. Proměnná je pojmenovaná buňka v paměti, která obsahuje odkaz (referenci) na hodnotu, tzv objekt. Všechna data v Pythonu jsou nějaký objekt a každý objekt je instance třídy (také zvané typ). Třída je kategorie objektů se stejnou strukturou a chováním, a také šablona pro jeich vytváření.

Jména proměnných v Pythonu mohou obsahovat českou diakritiku, a mnohem více, protože Python jako moderní jazyk podporuje utf8🌐.

Odkaz se do proměnné přiřadí operátorem =.

pythontři = 1 + 2 # první řádek (příkaz, výraz) programu
tři         # poslední řádek, vypíše hodnotu

Čísla

Takto zjistíme třídu (typ) objektu:

pythontype(tři)

tři je typu int, což je zkratka pro integer, tedy celé číslo.

pythontype(3)

Literál (v textu zapsaná konstanta) 3 je také celé číslo.

pythontype(3.0)

Literál 3.0 je také číslo s plovoucí desetinnou čárkou (floating point).

Python rozeznává dva typy (třídy) čísel: int a float. float čísla mají v zápisu desetinnou tečku.

S čísly lze provádět aritmetické operace:

OperátorOperace
x + ysčítání
x - yodčítání
- xnegace
x * ynásobení
x / ydělení
x % yzbytek po dělení (modulus)
x // yceločíselné dělení (floor)
x ** yumocňování

Moduly (knihovny)

Python má řadu rozšiřujících modulů. Jeden ze základních je modul math, který obsahuje řadu aritmetických funkcí.

pythonmath.sin(1) # sin je metoda objektu math

(chyba)

pythonimport math # modul je nutno importovat
math.sin(1)

Otázky:

Vstup a výstup (input, output)

Jednoduché zadání a tisk:

pythonprompt = 'Zadejte hodnotu: '
value = input(prompt)
print('Zadali jste', value, '.')

Jakého typu je hodnota, kterou input() vrací?

pythontype(input())

Převod řetězce (str) na celé nebo desetinné číslo:

pythoncelé = int('1')
print(type(celé), celé)

desetinné = float('1')
print(type(desetinné), desetinné)

Ale:

pythoncelé = int('abc')
desetinné = float('abc')