previous up next how to end end

1. Jak se tvoří program

  1. Formální a přirozené jazyky
  2. Co je program?
  3. Ladění programu
  4. Programovací jazyk Python
  5. Práce v prostředí Python
  6. Komentáře
  7. Ahoj světe!
  8. Vstup z klávesnice
  9. Glosář
  10. 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ů.
Formální jazyky mívají přísná pravidla pro skladbu (syntaxi).

Pravidla skladby 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 2Zz 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 parsing, neboli podrobný rozbor skladby.

Slyšíme-li například větu "Svíce mu dohořela", rozumíme, že "svíce" je podmět a "dohořela" je přísudek. Jakmile takto rozebereme větu, můžeme usoudit co vyjadřuje, neboli určit její sémantiku. Za předpokladu ovšem, že víme, co znamená slovo svíce a co slovo dohořela.

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 vlastně 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 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.3.1 Formální chyby

Python může provést výpočet jenom pro takový program, který má správnou skladbu (syntaxi). Nemá-li, je běh programu ukončen a interpret vrací chybové hlášení. 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 v syntaxi výrazný problém, pročež můžeme číst některou moderní poezii aniž by naše vědomí produkovalo "chybová hlášení". Python takto snášenlivý není. Jakmile se kdekoliv v programu objeví syntaktická chyba, interpret vytiskne chybové hlášení, ukončí běh programu a nelze s ním hnout. V prvních týdnech naší programátorské kariéry strávíme pravděpodobně hodně času vyhledáváním takovýchto chyb. Po nabytí jisté zkušenosti jich však už budeme dělat méně a rychleji je nalezneme.

1.3.2 Chyby při běhu programu

Druhým typem chyb je chyba při běhu programu. Takováto chyba se neobjeví dříve, než program spustíme. Tyto chyby se také nazývají výjimky (exceptions), protože obvykle ukazují na to, že se stalo něco mimořádného (a špatného).

V jednoduchých programech počátečních kapitol se exekuční chyby vyskytnou vzácně, takže se s nimi setkáme patrně až v pozdějších kapitolách.

1.3.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.3.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. Jak jednou poznamenal Sherlock Holmes: "Poté, co jsme vyloučili nemožné, vše co zůstává, ať jakkoliv nepravděpodobné, musí být pravdivé". (A. Conan Doyle, Podpis čtyř)

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" správně dělá a postupně jej malými úpravami a debugováním přeměníme na fungující program, který dělá to, co si přejeme.

Je nutné si říci, že na hledání chyb nejsme sami, protože program je před spuštěním (při kompilaci) i při běhu programu kontrolován samotným interpretem Pythonu, který nás o případné chybě uvědomí tak zvaným chybovým hlášením.


1.4 Programovací jazyk Python

Python je jazyk vyšší úrovně, stejně jako například C++, PHP a Java.

Jazykem nejnižší úrovně je strojový jazyk (machine code), 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. Převod zdrojového kódu na jazyk nižší úrvně lze provést pomocí kompilátorů případně interpretů.

Kompilátor přečte zdrojový kód najednou, zkontroluje jej z hlediska formální správnosti a přeloží do jazyka nižší úrovně, jímž může být přímo strojový kód - jak je tomu např. v jazyce C - nebo v případě Pythonu mezilehlý kód, zvaný bytecode.

pic

Instrukce bytekódu jsou následně postupně překládány a realizovány ve virtuálním prostředí PVM (Python Virtual Machine).

Při práci v interaktivní konzole Pythonu probíhá rovněž pro každý řádek kompilace zdrojového kódu do interního bytekódu, jenž je následně interpretován.

Mezilehlý kód je vkládán do souboru s příponou ~.pyc a ukládán do interního adresáře, případně do automaticky vytvářeného externího adresáře __pycache__.


1.5 Práce v prostředí Python

Instalace Pythonu

Instalace pythonu je jednoduchá a ještě jednodušší. Popis té jednoduché naleznete na stránce Instalace Pythonu pro Windows, která vás přesměruje na "stahovací stránku Pythonu", kde se budete pídit po poslední stabilní verzi pro svůj počítač. Aktuálně to je Python 3.8.0 ze 14. 10. 2019.

Popis té ještě jednodušší spočívá v tom, že si vyhledáte stránku Microsoft Store Python 3.7 (stav v říjnu 2019), kliknete "Získat" a sledujete cvrkot - ve Windows 10.
Po chvilce máte Python 3.7 nainstalován v počítači i s nastavenou cestou v proměnné User PATH (C:/users/user/AppData/Local/Programs/Python/Python3.7). Přesto, že MS Store je také krám, poskytnutou službu máte zadarmo.

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

  1. Vlastní 'výrobní linku' pro zpracování zdrojového kódu, kterou lze souhrně označit jako Interpret Pythonu.
  2. Pomocné provozy, jako jsou interaktivní konzola IDE (Python Shell) a interaktivní vývojové prostředí, zvané IDLE.
  3. Další pomocné provozy, jako jsou easy_install, pip, sphinx-quickstart aj.
  4. Nadstavbu programovacího jazyka Python, zvanou Coconut pro 'funkcionální' programování.

Pokud máme cestu k exekučním souborům (~.exe) uloženou v proměnné PATH, spustíme aplikace Python Shell (konzolu Pythonu), IDLE a sphinx-quickstart pouhým zápisem jejich názvů (python, idle, easy-install) na příkazový řádek systémové konzoly v kterémkoli adresáři. U aplikací pip a easy_install je nutné ještě zadat potřebné argumenty.

Interpret Pythonu

Interpret Pythonu se uplatňuje v interaktivním režimu (shell mode) a v programovém režimu (program mode).

V interaktivním režimu píšeme text kódu přímo na řádek interaktivní konzoly (shell) Pythonu. Interpret s kompilátorem tento text přečte, vyhodnotí a vrátí (vytiskne) výsledek:

Python 3.3.0 (default, Sep 29 2012, 10:55:48)
[MSC v.1600 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license"
 for more information.
>>> 2+3
5

Skupina znaků >>> se nazývá prompt (výzva) a interpret jím naznačuje, že je připraven přijímat instrukce. Zapsali jsme 2+3, 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ů. Činnost interaktivní konzoly Pythonu ukončíme příkazy exit() či quit(), případně Ctrl+d v Linuxu.

Přístup k prostředí Pythonu lze také zajistit z příkazového řádku systémové konzoly:

# Přepínač (shift, tag, option) -c  způsobí výstup v konzole
C:\> python -c "print('Ať žije Slávie!')"
Ať žije Slávie!

# Zábavné je toto zadání:
C:\> python -c "import this" | sort
...

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

# firstprogram.py                      # ignorovaný komentář

print(2+3) 

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 řádek systémové konzoly (například F:\codetest\howto\ch-01) zapíšeme název souboru za slovem python:

F:\codetest\howto\ch-01> python firstprogram.py     
5

Tento skript lze realizovat interpretem Pythonu za předpokladu, že:

(Pro zvídavé)

Při zpracování tohoto pidiprogramu 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 "firstprogram.cpython-37.pyc" v automaticky vytvořené složce __pycache__.

>>> import firstprogram
5

K vytvoření složky __pycache__   se souborem "firstprogram.cpython-37.pyc" dojde i tehdy, když skript aktivujeme jako modul (bez přípony .py):

F:\python\howto> python -m firstprogram    # přepínač -m značí modul
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é.

(Konec odbočení)

Aplikace IDLE

Na obrázku vidíme dvě otevřená okna aplikace IDLE. Ve spodním je interpret Pythonu (Python Shell), kde lze zadávat příkazy, v horním je sensitivní textový editor (Edit Window) pro zápis a spouštění kódu.


pic

Tuto aplikaci můžeme (stejně jako konzolu Pythonu) spustit ze spodní lišty monitoru zápisem idle v okně Start nebo přímo přes ikonu zástupce. Na rozdíl od konzolových aktivací, které si můžeme realizovat v libovolném adresáři, mají ikonové aktivace tu nevýhodu, že jsou otevřeny v kořenovém adresáři instalace Python (IDLE v /python/lib/idlelib/). To má za následek, že se nám v adresáři /python mohou hromadit soubory či adresáře, které nemají s instalací nic společného.

Vivat Console2

Console2 je inteligentní verze systémové konzoly (cmd.exe) s možností přímého přístupu k nastavenému prostředí. Aplikaci lze stáhnout na stránce SourceForge. Rozbalenou instalační složku o velikosti 1,5 MB si umístíme do vhodného místa v systému složek. K souboru Console.exe si vytvoříme zástupce, kterého přesuneme do spodní lišty monitoru.

Poklepem na černý trojúhelníček v nástrojové liště (viz v obrázku druhý zleva) aktivujeme roletku, kde si vybereme prostředí, jež se otevře v okně samostatné karty. Prostředí nastavíme v okně Edit > Settings > Tabs, kde aktivujeme tlačítko Add, upravíte název v poli Title a doplníme ostatní pole karty Main. Do pole Shell zapíšeme cestu ../Python/lib/idlelib/idle.bat
Důležité je pole Startup dir, ve kterém je zadána složka, ve které se IDLE otevře. Pokud zůstane pole nevyplněné, otevře se IDLE v kořenovém adresáři aplikace Console2, o což nestojíme.

Máme-li v Console2 nastavený link na prostředí IDLE, vytvoříme si také link na samotný Python. Můžeme si zadat ikonu (dlls/py.ico), do Shell napíšeme cestu k python.exe (včetně) a do Startup dir zadáme zvolenou pracovní složku. V té se nám bude IDLE otevírat.


pic

Aplikace IDLE, aktivovaná přes Console2 se prezentuje oknem, nastaveným v kartě Options > Configure IDLE > General, kde lze volit mezi Edit Window a Shell Window. Zůstaneme u editovacího okna, v němž si přes volbu File vybereme prostor New File, Open... nebo Recent Files.

Před otevřením prostředí IDLE se v Console2 nacédujeme do aktuálně potřebné pracovní složky, kde zadáme příkaz

F:\Codetest\HowTo> idle             ; viz Reparace

Tento příkaz otevře nastavené okno IDLE - v našem případě prázdné okno editoru - do něhož zapíšeme potřebný kód. Zapsaný kód uložíme do patřičné složky příkazem Ctrl+s a spustíme příkazem F5. Odezva provedeného programu se projeví odpovídající seancí v konzole IDLE.Kořenová složka této seance je totožná s kořenovou složkou spuštěného souboru.

Reparace: Pokud nám počítač odmítá na tento pokyn reagovat s odkazem na jakýsi postrádaný soubor VCRUNTIME140_*.dll, je nejlépe v editoru Windows Environment Variable uložit cestu k souboru idle.bat zápisem cesty, např: G:\Python38\Lib\idlelib;.

Poznámka: Při práci se soubory je důležité vědět odkud se načítají a kam se ukládají. Ve které složce byla naše aplikace otevřena, zjistíme následujícím sledem příkazů:

>>> import os
>>> os.getcwd()                  # cwd - current working directory
'F:\\Codetest\\Coconut'              

1.6 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 #.

# compute the percentage of the hour that has elapsed 
percentage = (minute * 100) // 60 

Poznámka je v tomto případě umístěna na samostatné řádce. Lze ji umístit také za textem kódu:

percentage = (minute * 100) // 60   # celočíselné dělení 

Všechno od znaku # (hash) až do konce řádku je ignorováno - nemá na program žádný vliv. Informace je určena pro programátora nebo budocí programátory, kteří mohou programový kód používat. V tomto případě je čtenář upozorněn na vždy překvapující chování celočíselného dělení.


1.7 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 'firstprogram.py').

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                              celá čísla jsou hodoty typu "integer" 


1.8 Vstup z klávesnice

Pro vkládání údajů do programu z klávesnice se používá funkce input(). V konzole nebo ve skriptu zadáme:

>>> n = input("Zadej součet: ")
Zadej součet: 4 + 3**2
>>> n
'4 + 3**2'
načež se na novém řádku zadá vstup, nebo pokud tuto záležitost řešíme v PyScripteru (či skriptu), otevře se nám následující okno, do kterého svůj vstup zapíšeme:


Funkce input(..) ukládá všechny vložené údaje jako řetězce. Chceme-li použít vstup jako číselnou hodnotu, musíme jej konvertovat na celé nebo desetinné číslo:

>>> m = int(input("Zadejte svůj věk: ")) 

Výzva v závorce je nepovinná, pokud je uvedena, zobrazí se v dialogovém okně či na příkazovém řádku.

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

>>> eval(input('Zadej výraz Pythonu: '))
Zadej výraz Pythonu: 2 + 3**4
83

1.9 Glosář

Řešení problému (problem solving)
Proces formulování problému, nalezení řešení a vyjádření tohoto řešení.
algoritmus
Obecný proces řešení jisté kategorie problémů.
program
Řada instrukcí, které určují postup výpočtu.
syntaxe (syntax)
Struktura, neboli skladba programu.
sémantika (semantics)
Význam či smysl programu.
sémantická chyba (semantic error)
Chyba v programu, která způsobí, že program dělá (bezchybně) něco jiného, než co bylo zamýšleno.
chyba skladby (syntax error)
Chyba v programu, která znemožňuje rozbor skladby (parsing) a tudíž brání jeho překladu.
kompilace (parsování)
Zkoumání skladby programu a její formální správnosti, převod textu na tokeny, vytvoření hierarchické stromové struktury AST a její převod do objektového kódu, případně bajt-kódu (bytocode).
interpretace (tlumočení)
Provádět program postupně část po části (řádek po řádku) s použitím jeho předchozí kompilace.
přenositelnost (portability)
Vlastnost programu běžet na více než jednom druhu počítače.
zdrojový kód (source code)
Text v jazyce vyšší úrovně před kompilací.
skript (script)
Zdrojový kód, uložený v souboru s příponou ~.py.
bytecode (object code)
Kompilovaná forma zdrojového kódu. Mnohé moderní jazyky nejprve kompilují zdrojový kód do bajtového kódu a ten potom tlumočí programem zvaným virtuální stroj
strojový kód (executable)
Sekvence nul a jedniček, zpracovatelná procesorem počítače.
bug
Chyba v programu.
chyba při běhu programu (runtime error)
Chyba, která se objeví až při spuštění programu a která brání v jeho pokračování.
odladění (debugging)
Proces nalezení a odstranění chyby z programu.
výjimka (exception)
Jiné jméno pro chybu při běhu programu.
systémová konzola
Interaktivní okno pro zadávání příkazů operačnímu systému z příkazového řádku.
programová konzola (Python shell)
Interaktivní uživatelské rozhraní interpreta. Uživatel zapisuje příkazy za výzvu   >>>   (prompt) a klávesnicí Enter je posílá ke zpracování.
REPL (Read, Evaluate, Print, Load)
Interaktivní konzola programovacího rozhraní.

1.10 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().

previous up next how to end end