end up next title end end

1. Jak se tvoří program

  1. Formální a přirozené jazyky
  2. Co je program?
  3. Programovací systém Python
  4. Ladění programu
    1. Formální chyby
    2. Chyby při běhu programu
    3. Významové chyby
    4. Experimentální ladění
  5. Práce v prostředí Pythonu
    1. Instalace Pythonu
    2. Interpret Pythonu
    3. Aplikace IDLE
    4. Aplikace Thonny
  6. Skladba programovacího jazyka
    1. Výrazy a příkazy
    2. Skladba zápisu
    3. Vstup z klávesnice
    4. Ahoj světe!
    5. Komentáře
  7. Kódování znaků
  8. Cvičení

Cílem této knihy je naučit čtenáře myslet jako erudovaný programátor. Tento způsob myšlení spojuje některé z výtečných rysů matematiky, jakož i technických a přírodních věd. Programátoři stejně jako matematici používají formálního jazyka k vyjádření svých myšlenek. Stejně jako inženýři i oni navrhují objekty sestavováním částí do celků a porovnávají výsledky jednotlivých alternativ. Stejně jako vědci i programátoři pozorují chování komplexních systémů, tvoří hypotézy a předpoklady výsledků.

Nejdůležitější dovedností programátora je schopnost řešit problém. Řešit problém vyžaduje schopnost jej formulovat, tvořivě přemýšlet o možnostech řešení a zvolené řešení potom jasně a stručně vyjádřit. Učit se programovat je vynikající příležitost pro osvojení těchto dovedností.

Budeme se tedy jednak učit programovat, což je užitečná dovednost sama o sobě, jednak budeme programování používat jako prostředek k dosažení jistého cíle. Jak budeme v učení postupovat , bude se nám tento cíl stávat zřejmější.


1.1 Formální a přirozené jazyky

Přirozené jazyky jsou jazyky, kterými lidé hovoří - čeština, angličtina, španělština, atd. Každý tento jazyk lze popsat jeho slovní zásobou a gramatikou .

Formální jazyky jsou jazyky, sestavené záměrně pro nějaký účel. Matematika například používá svůj formální jazyk k vyjádření vztahů mezi čísly a symboly. Chemici používají svůj formální jazyk k zobrazení chemických struktur a procesů.

Programovací jazyk je rovněž formálním jazykem, používaným pro řízení činnosti počítače. Podobně jako přirozené jazyky se programovací jazyk řídí pravidly pro skladbu (syntax) a pro význam používaných slov - sémantiku (semantics).

Pravidla skladby programovacího jazyka jsou dvojího druhu:

a) Týkající se použitých znaků a slov neboli tokenů. Jedním z problémů zápisu 3=+6$ je to, že $ není legálním znakem v matematice. Podobně zápis Zz není legální proto, že neexistuje chemický prvek se zkratkou Zz.

b) Týkající se uspořádání tokenů. Výraz 3=+6$ je skladebně nesprávný, protože nelze umístit znak plus bezprostředně za rovnítko. Rovněž tak označení molekul musí mít index za jménem, nikoliv před ním.

Čteme-li větu v angličtině či češtině nebo výraz formálního jazyka, musíme rozpoznat, jaká je jejich skladba. Tomuto procesu, který u přirozeného jazyka provádíme podvědomě, říkáme v souvislosti s programovacím jazykem parsing, neboli podrobný rozbor skladby.

I když formální a přirozené jazyky mají mnho společných rysů - tokeny (slovní zásobu), strukturu, syntaxi a sémantiku - mají také mnoho rozdílů:

mnohoznačnost
Přirozené jazyky jsou plny mnohoznačností, s nimiž se lidé vyrovnávají pomocí větných souvislostí a jiných doplňkových informací. Formální jazyky jsou navrhovány tak , aby byly téměř úplně jednoznačné, to znamená, že každý výraz má pouze jeden význam bez ohledu na souvislosti.
nadbytečnost
Mnohoznačnost a z toho plynoucí možnost nedorozumění se u přirozených jazyků vyvažuje nadbytečností výrazů. Formální jazyky jsou méně nadbytečné (redundantní) a více stručné (concise).
doslovnost
Přirozené jazyky jsou plné idiomů a metafor. Řeknu-li "Svíce mu dohořela", mluvím jako poeta a nechci tím zajisté říci, že má teď o jednu hořící svíčku méně, nýbrž že skonal. Formální jazyky míní přesně to, co říkají.

Protože přirozený jazyk používáme od nejútlejšího dětství, můžeme mít problémy s používáním formálního jazyka. Někdy lze rozdíl mezi formálním a přirozeným jazykem přirovnat v menší míře k rozdílu mezi prózou a poezií.

poezie
Slova jsou užita pro jejich znění stejně jako pro jejich význam a celá báseň vyvolává emociální odezvu. Mnohoznačnost je nejenom častá, ale i často záměrná.
próza
Doslovný význam slov je zde více důležitý a větná skladba přispívá k významu vět. Próza je použitelnější pro analýzu než poezie, přesto je stále ještě příliš mnohoznačná .
programy
Význam počítačového programu je jednoznačný a doslovný a může být určen pouhou analýzou jeho znaků a struktury.

Zde je několik rad pro čtení programů (a jiných formálních jazyků). Za prvé, mějme na paměti, že text formálního jazyka je významově zhuštěnější než text přirozeného jazyka a proto jeho čtení zabere více času. Také jeho struktura je velice důležitá, takže nebývá dobrým nápadem číst pouze zhora dolů, zleva doprava. Místo toho si zvykejme provádět v mysli rozbor skladby (parsing), rozeznávaje znaky a hodnotíce strukturu. Nakonec nezapomínejme, že záleží na maličkostech. Nepřesnost, která nám projde v přirozeném jazyce, má ve formálním jazyce dalekosáhlý význam.


1.2 Co je program?

Program je posloupnost instrukcí, které určují, jak má být výpočet proveden. Výpočtem může být řešení matematické úlohy, jako je např. řešení systému rovnic či určení kořenů polynomu nebo jím může být symbolický výpočet, jako je vyhledání a výměna textu v dokumentu.

Podrobnosti se v různých jazycích liší, ale některé základní instrukce se vyskytují téměř v každém jazyce:

vstup (input)
Vložení údaje (data) z klávesnice, souboru či jiného zařízení.
výstup (output)
Zobrazení údaje (data) na obrazovce nebo jeho poslání do souboru či jiného zařízení.
přiřazení (assignment)
Určení hodnoty paměťové adresy, označené jménem proměnné - neboli přiřazení hodnoty ke jménu proměnné.
matematika (math)
Provedení základní matematické operace jako je například sčítání a odčítání .
podmíněné provedení (conditional execution)
Ověření jisté podmínky a provedení příslušné posloupnosti příkazů.
opakování (repetition)
Opakované provedení úkonu, obvykle s jistou obměnou.

Věřte či nevěřte, to je téměř všechno z programování. Každý program, který kdy použijete, jakkoliv komplikovaný, se bude skládat z instrukcí více či méně podobných výše uvedeným. Programování můžeme také prezentovat jako proces rozdělování komplexní úlohy do menších a menších podúloh, až tyto podúlohy jsou tak jednoduché, že se dají provést pomocí těchto zákládních instrukcí.


1.3 Programovací systém Python

Programovací systém je spojení programovacího jazyka, příslušných knihoven a programového vybavení (kompilátor, interpret, virtuální stroj) pro práci s tímto jazykem. Programovací jazyk Python je jazyk vyšší úrovně , stejně jako například C++, PHP a Java.
Interpret jazyka je psán v jazyce C pro CPython, v jazyce Java pro Jython, v jazyce Python pro PyPy. IronPython je úzce spojen se systémem .NET Framework .

Jazykem nejnižší úrovně je strojový (machine) jazyk, což je sekvence bitů či bajtů, jímž lze komunikovat přímo s CPU počítače. Jazykem o stupeň vyšším než strojový jazyk je tak zvaný assembler, jenž se však používá jen ve velice specifických případech.

Program v jazyce vyšší úrovně se nazývá zdrojový kód (source code), což je prostý text, sepsaný podle syntaktických pravidel příslušného jazyka. V Pythonu jsou soubory se zdrojovým kódem označovány příponou ~ .py.
Pokud jsou tyto soubory přímo určeny ke zpracování interpretem Pythonu, říkáme jim skripty, pokud jsou určeny k importu při zpracování jiných souborů, říkáme jim moduly.

Důležitou součástí programového vybavení Pythonu je interní sada programů, označovaná jako interpret (tlumočník), obsahující program zvaný kompilátor (překladač) a program zvaný virtuální stroj (python virtual mashine)
Na obrázku vidíme zjednodušené schematické propojení jednotlivých částí realizačního procesu při zpracování zdrojového kódu.

pic

Instrukce zdrojového kódu jsou najednou kompilovány (přeloženy a kontrolovány z hlediska skladby) a přetvořeny na mezilehlý objektový kód (byte code). Ten je ukládán do interního adresáře pro další zpracování interpretem nebo vkládán do souboru s příponou ~.pyc, případně do automaticky vytvářeného externího adresáře __pycache__.

Interpret postupně čte objektový kód a v součinnosti virtuálního stroje s příslušnými knihovnami (Library modules) jej v časové fázi zvané runtime překládá řádek po řádku do strojového kódu (zde Running code), který je realizován strojovým vybavením (CPU) počítače.

Popsaný proces převodu zdrojového kódu na strojový platí i pro kód, zapisovaný přímo do příkazového řádku konzoly (shell).
Příkaz je interně kompilován, vytvořený bytecode (~.pyc) je načten do PVM (Python Virtual Mashine), kde je převeden na strojový kód, jenž je následně okamžitě realizován - ve formě tiskového výstupu na dalším řádku konzoly.


1.4 Ladění programu

Programování je složitý proces a protože jej provádí lidská bytost, je často provázeno chybami. Chyba v programu je z potměšilých důvodů označována jako bug (štěnice, veš) a proces vyhledávání chyb a jejich oprava se v originále logicky nazývá debugging (odvšivení), my korektně řekneme ladění.

V programu se mohou vyskytnout tři druhy chyb: chyby související se skladbou programu (syntax errors), s během programu (runtime errors) a s významem programu (semantic errors). Je užitečné mezi nimi rozlišovat kvůli jejich rychlejšímu vyhledání.

1.4.1   Formální chyby

Python může provést výpočet jenom pro takový program, který má správnou skladbu (syntaxi). Slovo syntaxe se vztahuje ke skladbě programu a k pravidlům skladby. V češtině i angličtině musí například věta začínat velkým písmenem a končit tečkou.

tato věta je chybná z hlediska syntaxe. Rovněž i tato

Pro většinu čtenářů nepředstavuje několik málo chyb ve skladbě textu výraznou překážku pro jeho správné pochopení. Python tak snášenlivý není.
Před každým prováděním skriptu (runtime) se provádí jeho formální kontrola kompilátorem. Jakmile se ve zdrojovém kódu objeví syntaktická chyba, interpret vytiskne chybové hlášení a ukončí běh programu.

1.4.2   Chyby při běhu programu

Druhým typem chyb je chyba, která se vyskytne až při běhu programu (runtime). I v tomto případě ukončí interpret běh výpočtu a pokud zná příčinu, vytiskne chybové hlášení.
Takto ošetřené chyby se také nazývají výjimky (exceptions) a jejich definice jsou součástí programového vybavení Pythonu (viz Built-in Exceptions).

Pro úplnost je nutné zde uvést také chyby, které zastaví běh programu bez naznačení příčiny, případně chyby, které způsobí nekončící běh programu na pozadí.

  1.4.3 Významové chyby

Třetím typem chyb jsou chyby významové (sémantické). Objeví-li se v programu sémantická chyba, proběhne program úspěšně v tom smyslu, že se neobjeví žádné chybové hlášení, ale program neprovede to, co jsme zamýšleli. Provede něco jiného. Přísně vzato, provede přesně to, co jsme mu řekli, aby provedl.

Problém spočívá v tom, že program, který jsme napsali, není ten program, který jsme chtěli napsat. Vyznění programu (jeho sémantika) je špatné. Nalezení sémantických chyb může být někdy náročné, protože to vyžaduje zpětné porovnávání výstupu s tím, co jej v programu způsobuje.

1.4.4   Experimentální ladění

Vyhledávání chyb je nejdůležitější dovednost, kterou potřebujeme získat. I když to může být frustrující, vyhledávání chyb je intelektuálně nejbohatší, nejnáročnější a nejzajímavější část programování.

Svým způsobem připomíná hledání chyb práci detektiva. Jsme konfrontováni s indiciemi, z nichž máme určit procesy a události, které vedly k výsledkům, jež máme před sebou.

Vyhledávání chyb je něco jako experimentální věda. Jakmile nás napadne, v čem může chyba spočívat, upravíme program a vyzkoušíme jej. Byla-li naše hypotéza správná, můžeme získanou zkušenost zobecnit a použít příště. Nebyla-li naše hypotéza správná, musíme si vymyslet jinou.

Pro někoho splývá vyhledávání chyb s programováním. To jest programování jako postupné odstraňování chyb z programu, až posléze program dělá to, co si přejeme. Jinými slovy, začneme s programem, který "něco " dělá a postupně jej malými úpravami a laděním přeměníme na fungující program, který dělá to, co si přejeme.


1.5 Práce v prostředí Python

Při práci s programovacím jazykem Python můžeme používat některou z řady systémových konzol - CMD, ConEmu, Windows Command Processor, Terminál - plus dedikované konzoly IDLE a Thonny.

Pro nastavení konzoly do požadované složky (např. F:/Howtopy) používáme postup, který lze použít u všech výše uvedených konzol, kromě IDLE a Thonny:

C:/> cd /d F:/Howtopy                  # změna složky 
F:\Howtopy>
 

U konzoly Terminál lze variantně vyhledat v Průzkumníku souborů zájmovou složku, nad ní přes pravý klik vybrat kontextovou nabídku Otevřít v Terminálu a jsme tam, kde chceme být.

1.5.1 Instalace Pythonu

Instalace pythonu je jednoduchá a ještě jednodušší. Ta jednoduchá spočívá v tom, že si na domovské stránce Pythonu vyberete vhodný instalátor poslední verze (např. python-3.13.3), stáhnete do počítače, kde jej spustíte s tím, že si pohlídáte, zda bude instalace umístěna do systémového místa, např. C:\Users\User\AppData\Local\Programs\Python\Python313 nebo si zvolíte vlastní umístění, např. D:\Python, přičemž je v obou případech doporučováno zatrhnout volby 'Install launcher for all users' a 'Add Python to PATH'.
Stručnou ilustraci právě popsaného lze nalézt na stránce Instalace Pythonu pro Windows

Instalace není drobek, zabere na disku 560 MB ale obsahuje mnoho dober:

  1. Obsahuje 'výrobní linku' pro zpracování zdrojového kódu, kterou lze souhrně označit jako Interpret Pythonu (viz schema v odst. 1.3).
  2. Interaktivní vývojové prostředí (IDE), zvané IDLE
  3. Další pomocné provozy, jako jsou pip, sphinx-quickstart, mypy aj.

1.5.2 Interpret Pythonu

Interpret Pythonu se uplatňuje v interaktivním režimu (otevřené konzoly) a v programovém režimu (při realizaci kódu, zapsaného do souboru).

V interaktivním režimu píšeme text kódu přímo na příkazový řádek interaktivní konzoly (REPL = Read, Evaluate, Print, Load) Pythonu.
Interaktivní konzolu otevřeme v systémové konzole přikazem python či py - to ovšem pouze v tom případě, že máme v uživatelské proměnné PATH uloženou cestu k souboru python.exe.
Činnost interaktivní konzoly ukončíme příkazy exit() či quit().

C:\> python              # invokace REPL v systémové konzole
Python 3.13.5 (tags/v3.13.5:6cb20a2, Jun 11 2025, ...)
>>> 2+3                  # příkazový řádek v REPL
5                        # výstup
>>> quit()               # vracíme se zpět do konzoly                         

Skupina znaků >>> se nazývá prompt a interpret jím naznačuje, že je připraven přijímat instrukce. Zapsali jsme 2+3 a stiskli Enter, načež interpret náš výraz vyhodnotil a na dalším řádku vrátil výsledek 5.

Práce v interaktivní konzole je vhodná pro testování krátkých kódů. Interpret tento text přečte, vyhodnotí, postupně přeloží, předá počítači a vrátí (vytiskne) výsledek. Interaktivní prostředí interpreta lze použít jako jednoduchý kalkulátor s operátory +  -  *  **  /  //  %.

Přístup k prostředí Pythonu pro jeden úkon lze zajistit z příkazového řádku systémové konzoly (Terminál, Windows Command Processor):

# Přepínač  -c  způsobí výstup v konzole:
C:\> python -c "print('Ať žije Slávie!')"
Ať žije Slávie!
# Případně:
C:\> py -c "print(2+5)"
7
# Zábavné je toto zadání:
C:\> python -c "import this"

V programovém režimu zapíšeme kód (program) nejprve do souboru. S použitím textového editoru v Thonny či IDLE nebo samostatného textového editoru (Notepad+) vytvoříme například soubor s názvem trampolina.py, v němž případně napíšeme:

# trampolina.py             # ignorované záhlaví

print(2+3)                  # text (kód) skriptu

Dle zavedené konvence dáváme souborům s programem v Pythonu příponu  .py . Podle této přípony pozná interpret, že se jedná o zdrojový soubor ( neboli skript), obsahující kód Pythonu.

Program potom můžeme aktivovat tak, že na příkazový řádek systémové konzoly (například Terminál) zapíšeme název souboru za slovem python:

F:\howto-py\ch-01> python trampolina.py      
5            # proveditelný příkaz zadaného souboru se ihned realizuje

Tento skript lze realizovat interpretem Pythonu při splnění dvou předpokladů:

  1. Systémová konzola Windows (např. Terminal) je otevřená ve složce, kde je soubor trampolina.py uložen (jak výše naznačeno). V tomto prostředí zadáme výše uvedený příkaz.
    Lze také v Průzkumníku najet do složky, kde je soubor trampolina.py uložen. Na tomoto souboru provedeme "Right Single Click" a v kontextové nabídce vybereme volbu Otevřít v programu...   Python, Thonny.
  2. Soubor python.exe máme uveden v uživatelské proměnné PATH aplikace Windows Environment Variables Editor.

V interaktivní konzole Pythonu můžeme zůstat, použijeme-li při invokaci přepínač -i :

F:\howto-py\ch-01> python -i  trampolina.py
5                            # provedný příkaz
>>>                          # zůstáváme v konzole Pythonu
Pro zvídavé

Při zpracování skriptu trampolina.py došlo interně k jeho kompilaci a následné interpretaci mezilehlého bajtkódu. Kompilovaný formát (bytecode) zdrojového kódu se v tomto případě nikam trvale neukládá.

Pokud tento soubor importujeme do konzoly Pythonu, dojde k jeho exekuci jako v předchozím případě ale jeho kompilace se uloží do souboru s názvem trampolina.cpython-313.pyc v automaticky vytvořené složce __pycache__.

F:\howto-py\ch-01> python
Python 3.13.5 (tags/v3.13.5:6cb20a2, Jun 11 2025, ...)
>>> import trampolina
5                              # provedený příkaz z importu            

K vytvoření složky __pycache__ dojde i tehdy, když skript aktivujeme jako modul (s přepínačem -m a bez přípony .py):

F:\howto-py\ch-01> python -m trampolina    
5                                 

Python vytváří kompilaci zdrojového kódu vždy ale kompilovaný soubor ukládá do externí složky __pycache__ pouze tehdy, je-li o to požádán nebo pokud to sám uzná za vhodné.

1.5.3 Aplikace IDLE

Při spuštění aplikace IDLE se implicitně objeví interaktivní okno interpreta (shell window). Přednostní zobrazení okna textového editoru (editor window) nastavíme v kartě Options > Configure IDLE > Windows, kde si vybereme buď Open edit window nebo Open shell window. Obě okna otevřená současně lze zařídit z okna textového editoru volbou Run > Python shell.

Na obrázku vidíme ukázku použitých oken Editor a Shell:

pic

V okně editoru je zapsána deklarace funkce (viz kap.4) factorial.py včetně její invokace, v okně interpreta je výstup z realizované funkce.


1.5.4 Aplikace Thonny

Aplikace Thonny je příjemné IDE Pythonu pro nerozsáhlé práce. Toto prostředí poskytuje řadu užitečných pomocných oken (Asistent, Shell , Výjimky, Soubory, Nápověda, Poznámky, Inspektor objektů, Osnova, ... ). Má také, jak vidno, české prostředí. Na rozdíl od IDLE poskytuje Thonny obě pracovní okna najednou.

Soubor s příponou .py lze jednoduše otevřít v Thonny levým dvojklikem nad názvem souboru v Průzkumníku souborů. (Podobně lze otevřít Terminál výběrem z kontextové nabídky po pravém kliku nad názvem složky v Průzkumníku).

thonny

Instalační soubor, například thonny-4.1.7.exe (118 MB) stáhneme na stránce Thonny a jeho spuštěním instalujeme aplikaci do systémové složky, nebo do vlastní složky (například: D:\IDE), což možná nemusí být to pravé ořechové.

Instalací přes pip můžeme nainstalovat Thonny jako součást instalace Python :

C:\> pip3.exe install thonny    

Takto si ovšem do systémového uložiště (například C:\Users\User\AppData\Roaming\Python \Python313\Scripts) kromě Thonny nainstalujeme hafo dalších aplikací, které patrně nikdy nepoužijeme.


1.6 Skladba programovacího jazyka

1.6.1 Výrazy, příkazy a bloky

Výraz (expression) je kombinace hodnot, proměnných, operátorů a případně i volání funkcí. Zapíšeme-li výraz na příkazový řádek, interpret jej vyhodnotí a zobrazí výsledek.

>>> 1 + 1                            # výraz
2
>>> len("hello")                     # výraz
5

V ukázce vidíme vestavěnou funkci len(), která vrací délku zadané hodnoty, v tomto případě délku řetězce. Po print() a type() je to třetí ukázka vestavěné funkce.

Příkaz (statement) je instrukce, kterou může interpret provést. Samotný příkaz však neprodukuje žádný výstup. Dosud jsme poznali pouze příkaz přířazení = a příkaz import. V krátké době se seznámíme s dalšími příkazy, jako je while, for, if ale i def v záhlaví funkce. Zadaný příkaz interpret Pythonu mlčky provede.

Blok je část programového textu, provedená jako ucelená jednotka. Blokem je soubor, tělo funkce, definice třídy; blokem je i každý příkaz a výraz , zadaný v interaktivní konzole interpreta Pythonu.

>>> x = 27; x      # příkaz k přiřazení hodnoty ke jménu proměnné
27
>>> y = 3+5; y     # příkaz k přiřazení výrazu (3+5) ke jménu proměnné
8

Vyhodnocení výrazu generuje hodnotu a proto se výrazy mohou vyskytovat jen na pravé straně příkazu přiřazení.

1.6.2 Skladba zápisu

Text programového kódu čte interpret z řádku interaktivní konzoly nebo z řádku souboru. Kód se zapisuje a ukládá do paměti po blocích, přednostně co řádek, to blok. Bloky mohou být i do sebe vnořené.

>>> def SayHello(name):             # záhlaví funkce 
        print("Nazdar ", name)      # tělo funkce
>>> x = 2 + 5                       # nový blok      

Pokud se blok nevejde na jeden fyzický řádek, lze jej rozdělit na menší části, které se na jeden fyzické řádky vejdou a které dohromady tvoří jeden logický řádek.

Rozdělení textu se provádí vloženým zpětným lomítkem (\) nebo se k rozdělení použijí existující závorky (), [], {}, jejichž koncové závorky se umístí na následující řádek.
Takto lze rozdělit i závorky kolem argumentu funkce:

>>> print("Rozdělení logického \
    řádku")                        # --> Rozdělení logického řádku
>>> print(2 + 
    5)                             # --> 7

Blok kódu začíná počátkem řádku nebo odsazeným řádkem textu. Všechny řádky stejného bloku mají stejné odsazení. Deklarace bloku končí změnou odsazení. Doporučovaná velikost odsazení jsou 4 mezery.

Deklarace více bloků na jednom řádku lze v interaktivním prostředí oddělit středníkem:

>>> a,b = 10,30; a,b    # hromadné přiřazení a invokace proměnných a,b
(10, 30)

1.6.3 Vstup z klávesnice

Pro vkládání údajů do programu z klávesnice se používá funkce input():

>>> n = input("Zadej součet: "); n       # následuje klik uživatele
Zadej součet: 4+3**2         # reakce uživatele        
 '4 + 3**2'                  # zadaný vstup je následně vytištěn                        
>>>                          # s poměnnou n lze dále pracovat

Chceme-li jako vstup zadat výraz, který se i vyhodnotí, použijeme funkci eval(string):

>>> eval("6+7")               # argumentem má být řetězec
13
>>> eval(input("Zadej součet: "))
  Zadej součet: 4+3**2                        # vložený výraz 
13                       # zadaný vstup je vyhodnocen a vytištěn
>>> eval(input('Zadej výraz Pythonu:'))  
  Zadej výraz Pythonu: 2.5 + 3**4             # vložený výraz
83.5                     # zadaný vstup je vyhodnocen a vytištěn

1.6.4 Ahoj světe!

Protože je zavedenou konvencí začínat programování pozdravem "Hello World!", uvedeme si jeho ukázku také. V tomto případě se jak zápis kódu, tak jeho vyhodnocení a výstup uskuteční v konzole Pythonu. Použijeme k tomu funkci print(), kterou jsme již použili v souboru trampolina .py - odst. 1.5.2.

V Pythonu 2.x bychom použili příkaz:

>>> print "Hello, World!"
Hello, World! 

Uvozovky označují začátek a konec hodnoty typu řetězec (string); ve výsledku se neobjeví.

V Pythonu 3.x je print() funkcí, a proto musíme použít závorky:

>>> print("Hello, World!")
Hello, World! 

Na funkci print() si ještě prozradíme, že je-li výraz v závorce vyhodnotitelný, provede se nejprve vyhodnocení a poté tisk jeho výsledku:

>>> print(2 + 5)
7                  

1.6.5 Komentáře

Programy se častěji čtou než píší a jak se program stává větším a složitějším, stává se také méně přehledným. Formální jazyky jsou hutné a často je obtížné při pohledu na část kódu určit, co má být prováděno a proč.
Proto je dobré doplnit program poznámkami, které vysvětlují, co příslušná část programu má provádět. Poznámky či komentáře uvádíme symbolem # (hash).

>>> minute = 40                   # minuty vyjádřené procentem hodiny
>>> percentage = (minute * 100) // 60; percentage
66                    

Všechno od znaku # (hash) až do konce řádku je komentář, nikoliv zdrojový kód. Komentář lze umístit i za skriptem.

Potřebujeme-li komentovat více řádků, umístíme znak # na začátek každého řádku, nebo vložíme znaky ''' na začátek i konec komentářového odstavce:

"""
Tento text je komentářem, 
nikoliv zdrojovým kódem.
""" 

1.7 Kódování znaků

Jediné dva stavy, které umí počítač ve svém elektronickém obvodu rozlišit, je přítomnost či nepřítomnost elektrického náboje. Těmto stavům se přisuzuje význam hodnoty 0 nebo 1 a tato duální hodnota se nazývá jeden bit. Seskupením osmi bitů vytvoříme bajt (byte), jímž lze vytvořit 256 (= 28) kombinací nul a jedniček neboli binárních čísel 00000000 (= 0) až 11111111 (= 256).
Při komunikaci s počítačem jsou všechný tisknutelné i netisknutelné (řídící) znaky vyjádřeny kódovými čísly, neboli kódovými body (code points).

Souvztažnost čísel se znaky je vyjádřena různými kódovanými sadami znaků. Kódování ASCII obsahuje 128 kódových bodů, které pokrývají znaky, symboly, číslice a velká i malá písmena anglické abecedy (například číslice 1 má kódový bod 49).
Zbývající paměťový prostor (128 čísel) jednoho bajtu je využíván různými dalšími sadami znaků pro potřebu dalších jazyků, případně pro "rozšířenou" verzí ASCII - Latin-1. Pro češtinu je použitelný systém ISO-8859-2 (Latin2) a Windows-1250 (cp1250).
Společným rysem těchto seznamů je to, že to jsou zároveň sady znaků (character sets) i kódovací schemata (character encodings), neboť všechny jejich znaky lze vyjádřit jedním bajtem.

S příchodem Internetu začala mnohost kódovacích sad nevyhovovat. Na počátku 90. let minulého století byl do používání uveden systém Unicode, jenž definuje číselnou řadu 01.114.111 (0 až 0x10FFFF v hexadecimálním vyjádření ). Jednotlivé číslo této řady se nazývá Unicode Code Point (UCP). Obsazená část této řady obsahuje aktuálně přes 137.000 znaků pro téměř všechna písma, symboly a znaky, používané na zemi (zjednodušeně řečeno). Prvních 128 znaků sady Unicode je shodných se znaky kódování ASCII.

Samotná sada znaků Unicode však ještě není kódování. Je to pouhý seznam (codespace) čísel a jim odpovídajících znaků. Pro praktické používání znakové sady Unicode byly vyvinuty 3 způsoby kódování (kódovací schemata): UTF-8, UTF-16 a UTF-32. Každé toto kódování zahrnuje všechny znaky Unicode, liší se však počtem bajtů pro vyjádření jednoho znaku.

Python implicitně používá kódování UTF-8. Všechny akcentované znaky češtiny zabírají 2 bajty. Kódová čísla se zapisují v hexadecimálním formátu.



1.8 Cvičení

  1. Napište českou větu s pochopitelným významem ale nesprávnou skladbou. Potom napište další větu se správnou skladbou ale s nesprávnou sémantikou.
  2. Otevřte konzolu Pythonu, zapište 1+2 a stiskněte Enter. Python vyhodnotí tento výraz, vypíše výsledek a obnoví výzvu >>> (prompt) .
    Znak * je operátor násobení a ** je operátor pro umocňování. Experimentujte s těmito operátory a pozorujte, jaké výsledky jsou Pythonem zobrazovány. Co se stane, když použijete operátor // ? Jsou výsledky dle vašeho očekávání?
  3. Zapište 1 2 a stiskněte Enter. Python se pokouší vyhodnotit výraz ale nemůže, protože není skladebně správný. Namísto toho dává chybové hlášení:
    >>> 1 2
      File "<stdin>", line 1
        1 2
          ^
    SyntaxError: invalid syntax
    
    V mnoha případech Python ukáže místo, kde k chybě došlo, ale toto označení není vždycky správné. Také příčina chyby není vždy podrobně uvedena. Takže nám nezbývá, než se řádně naučit pravidla skladby. V našem příkladě si Python stěžuje, protože mezi čísly není žádný operátor.
  4. Zapište print('hello'). Python provede tento příkaz tak, že vypíše hello. Všimněte si, že uvozovky, které jsme použili k vymezení řetězce, nejsou součástí výstupu. Nyní zapište print ('"hello"') a zkoumejte výsledek.
  5. Zapište print(tvaroh) bez uvozovek. Odezva bude vypadat nějak takto:
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    NameError: name 'tvaroh' is not defined
    
    Toto je chyba při běhu programu, podrobněji NameError (chyba jména) a ještě více podrobněji to je chyba proto, že jméno tvaroh není definováno. Nevíte-li, co to znamená, nevadí, brzy na to přijde řeč.
  6. Zapište 'Toto je test'; za prompt Pythonu a stiskněte Enter. Sledujte co se provede.
    >>> 'Toto je test ...'
    
    Poté vytvořte skript s názvem test1.py s totožným obsahem - bez promptu.
    Co se stane, když ten skript spustíte?
    Nyní změňte obsah takto:
    print('Toto je test ...')
    
    uložte a spusťte jej znova. Co se stalo tentokrát?
    Kdykoliv zapíšeme výraz za výzvu Pythonu, je vyhodnocen a výsledek se zapíše o řádek níže. 'Toto je test ...' je výraz, který se vyhodnotí a vypíše jako 'Toto je test ...' (stejně jako výraz 42 se vyhodnotí a vypíše jako 42). Vyhodnocený výraz ze skriptu však není posílán na výstup a je tedy zapotřebí jej explicitně volat příkazem print().

end up next title end end