diff --git a/docs/01.md b/docs/01.md
new file mode 100644
index 0000000..70587b6
--- /dev/null
+++ b/docs/01.md
@@ -0,0 +1,623 @@
+# Úvod do Pythonu
+
+[Python](https://www.python.org/) je jeden z mnohých *programovacích jazykov*.
+Tak ako ľudia medzi sebou sa rozprávame spoločným jazykom, potrebujeme sa
+naučiť nový jazyk, ktorému rozumie počítač či robot. Tak mu budeme vedieť
+povedať, kedy sa pohnúť, ako rýchlo, čo zobraziť na displeji, a podobne.
+
+Poďme na to!
+
+## Python ako kalkulačka
+
+Spustíme program [IDLE](https://docs.python.org/3/library/idle.html). Otvorí sa
+okno podobné tomu na obrázku nižšie.
+
+
+
+Tento program nám bude slúžiť na písanie *zdrojového kódu* a jeho spustenie.
+Zdrojový kód -- to sú príkazy, ktoré napíšeme počítaču. On si potom tento kód
+prečíta riadok za riadkom a vykoná ich. Hovoríme tiež, že ich *interpretuje*. V
+okne, ktoré sa nám otvorilo, môžeme zadávať jednotlivé príkazy. Na poslednom
+riadku vidíme tzv. *prompt*: `>>>`. Označuje, že program je pripravený počúvať
+na naše príkazy. Dokáže napr. fungovať ako kalkulačka, stačí hneď za prompt
+napísať jednoduchý príklad a stlačiť ++enter++.
+
+```python
+>>> 40 + 2
+42
+>>> 30 - 5 * 8
+-10
+```
+
+Znak `*` znamená násobenie. Vidíme, že Python pozná základné matematické
+pravidlá, najprv vypočítal násobenie, až potom odčítanie. Ak by sme ho predsa
+len chceli presvedčiť, aby najprv odčítal, použijeme zátvorky. Rovnako ako v
+matematike. S tým rozdielom, že musíme použiť okrúhle zátvorky `()`, tie
+ostatné (`[]{}`) majú pre Python iný význam a len by sme ho poplietli.
+
+```python
+>>> (30 - 5) * 8
+200
+```
+
+Pozrime sa na delenie:
+
+```python
+>>> 40 / 5
+8.0
+>>> 40 // 5
+8
+>>> 40 / 7
+5.714285714285714
+>>> 40 // 7
+5
+```
+
+V Pythone sa rozlišujú dva typy delenia:
+
+1. `/` je klasické delenie ako ho poznáme,
+2. `//` je *celočíselné delenie*. To znamená, že výsledkom je číslo, koľkokrát
+ najviac sa zmestí deliteľ do delenca celý. `7 * 5 = 35`, všetko je ešte v
+ poriadku, ale `7 * 6 = 42`, a to je už viac než 40, preto `40 // 7 = 5`.
+
+???+ note "Poznámka"
+ Presnejšie, `//` je delenie `/` nasledované zaokrúhlením nadol.
+
+Ukážeme si ešte dve matematické špeciality.
+
+### Modulo
+
+Alebo inak: zvyšok po celočíselnom delení. Je to tá časť, ktorá nám ešte chýba,
+keď použijeme celočíselné delenie `//` namiesto `/`. Pre túto operáciu sa používa znak
+`%`.
+
+```python
+>>> 40 % 7
+5
+>>> 40 % 5
+0
+>>> 40 // 7 * 7 + 40 % 7
+40
+```
+
+???+ question "Úloha"
+ Prečo posledný príklad vyšiel práve 40? Fungovalo by to aj s inými číslami?
+ Napr. s trojkou:
+
+ ```python
+ >>> 3 // 7 * 7 + 3 % 7
+ ```
+
+ Bude výsledok 3? Platí to pre všetky čísla?
+
+Na poslednom príklade sa vám možno nepozdáva, že sme nepoužli žiadne zátvorky.
+Nemuseli sme, lebo násobenie, delenie aj modulo majú rovnakú *prioritu*.
+Sčítanie a odčítanie majú od nich menšiu prioritu, takže sa vyhodnotia neskôr.
+To už vieme, keď sme toto správanie zmenili použitím zátvoriek. No a pri
+viacerých operáciach rovnakej priority za sebou, Python ich vyhodnocuje zľava
+doprava. Znovu ako v matematike.
+
+Takže tento príklad sa interpretuje akoby bol uzátvorkovaný takto:
+
+```python
+>>> ((40 // 7) * 7) + (40 % 7)
+40
+```
+
+### Mocnina
+
+Pripomeňme si, že mocnina je opakované násobenie.
+23 = 2 * 2 * 2 = 8
+
+V Pythone používame na umocňovanie operátor `**`:
+
+```python
+>>> 2 ** 3
+8
+>>> 4 ** 1
+4
+>>> 1 ** 1000000000
+1
+>>> 5 ** 0
+1
+```
+
+Umocňovanie má ešte väčšiu prioritu než násobenie.
+
+```python
+>>> 4 * 2 ** 3
+32
+>>> (4 * 2) ** 3
+512
+```
+
+???+ question "Úloha"
+ Aký je výsledok nasledujúcich matematických výrazov? Overte si správnu odpoveď
+ využitím Python IDLE.
+
+ * `- 5 + 8`
+ * `- (5 + 8)`
+ * `2 % 4 - 1`
+ * `10 // 3 ** 2`
+ * `5 / -3`
+ * `5 // -3 * 3 + 5 % -3`
+
+### Premenné
+
+Pri zložitejších výpočtoch si často chceme uložiť medzivýsledok. Moderné
+kalkulačky to zvládnu a Python IDLE tiež!
+
+```python
+>>> x = 4 + 8
+>>> x
+12
+>>> 2 * x
+24
+```
+
+Príkaz `x = 4 + 8` znamená priradenie hodnoty na pravej strane (`4 + 8`) do
+*premennej* na ľavej strane (`x`). Najprv Python vypočíta `4 + 8`. Potom si na
+miesto v pamäti, kde má uložený výsledok, nalepí poznámku "x". Je to názov
+novej premennej, aby si pamätal kam sa má pozrieť, keď ju uvidí v našich
+príkazoch nabudúce. Napr. `2 * x` -> `2 * 12` -> `24`.
+
+{ style="width:50%;height:auto" }
+
+Názvy môžu byť aj viacpísmenkové, môžu obsahovať veľké aj malé znaky, tiež
+cifry (ale cifra nemôže stáť na začiatku mena) a podtržítko ("\_").
+
+Čo sa stane ak budeme chcieť ukázať hodnotu premennej, ktorú Python ešte
+nepozná?
+
+```python
+>>> y
+Traceback (most recent call last):
+ File "", line 1, in
+NameError: name 'y' is not defined
+```
+
+Všimnime si posledný riadok. Hovorí nám, že názov "y" nie je definovaný, inými
+slovami, nepozná ho, nevie kam sa pozrieť.
+
+???+ question "Úloha"
+ Čo je výsledkom nasledujúcej postupnosti príkazov?
+
+ ```python
+ >>> a = 3
+ >>> b = 2
+ >>> a = a + b
+ >>> b = a - b
+ >>> a = a - b
+ >>> a
+ ?
+ >>> b
+ ?
+ ```
+
+Aby sme si skratili zápis, namiesto
+
+```python
+>>> a = a + b
+```
+
+môžme používať
+
+```python
+>>> a += b
+```
+
+Význam je ten istý. Rovnako existuje `-=`, `*=`, `/=`, `//=`, `%=`, `**=`.
+Vyskúšajte si použiť niektoré z nich.
+
+## Tlačiť!
+
+V tejto časti si ukážeme nový príkaz. Volá sa "print". Z angličtiny vieme
+odhadnúť, na čo bude slúžiť. Vypíše text na obrazovku. Zatiaľ sme pracovali len
+s číslami, ešte nie z textom. V Pythone sa text píše medzi úvodzovky (").
+
+!!! warning "Pozor!"
+ Ak napíšeme text bez úvodzoviek, interpretuje sa to ako názov, ktorý
+ bude Python hľadať a pravdepodobne dostaneme podobnú sťažnosť ako naposledy
+ (hovorí sa im *chybové hlášky*).
+
+ ```python
+ >>> print( "Ahoj" )
+ Ahoj
+ >>> print( Ahoj )
+ Traceback (most recent call last):
+ File "", line 1, in
+ NameError: name 'Ahoj' is not defined
+ ```
+
+Namiesto dvojitých úvodzoviek sa dajú použiť aj jednoduché (').
+
+```python
+>>> print( 'Cau' )
+Cau
+```
+
+Text síce nie je číslo, ale v Pythone dokážeme text sčítavať a dokonca aj
+násobiť!
+
+```python
+>>> print( 'Ahoj ' + 'Robo' + 'Lab' )
+Ahoj RoboLab
+>>> print( 'tra' + 'la' * 3 )
+tralalala
+>>> print( 3 + ' jablka' )
+Traceback (most recent call last):
+ File "", line 1, in
+TypeError: unsupported operand type(s) for +: 'int' and 'str'
+```
+
+Sčítať text a číslo sa už nedá. To presne nám povie chybová hláška na poslednom
+riadku: operátor `+` nefunguje s číslom (ang. **int**eger) a textom (ang.
+character **str**ing). Ak potrebujeme vypísať v jednom príkaze text a zároveň
+aj číslo, môžme ich oddeliť čiarkou. Python medzi ne automaticky vloží medzeru.
+
+```python
+>>> pocet = 3
+>>> print( pocet )
+3
+>>> print( 'Mam', pocet, 'jablka' )
+Mam 3 jablka
+```
+
+Takže `print` funguje aj s číslami, nielen textom! Pozor, môže sa zdať, že
+nasledujúce riadky spravia to isté, ale nie je to celkom tak. Za chvíľu si o
+tom povieme viac.
+
+```python
+>>> 3
+3
+>>> print( 3 )
+3
+```
+
+## Náš prvý program
+
+Python IDLE obsahuje dve časti. Jednu z nich, *príkazový riadok* (tiež
+*shell*), sme používali doteraz. Slúži na vykonávanie jednotlivých príkazov,
+ale naše programy v budúcnosti budú omnoho dlhšie, pozostávajúc z niekoľko
+desiatok, aj stoviek riadkov. Tu nám pomôže druhá časť: *editor*. Otvoríme ho
+cez "File" -> "New". Napíšme doň náš prvý program:
+
+```python
+print( 'Ahoj', 'RoboLab' )
+print( 'RoboLab zdravi' )
+```
+
+Používame to, čo sme sa už naučili, ale tentokrát nepíšeme naše príkazy do
+príkazového riadku a nevykonajú sa hneď. Keď chceme spustiť program, stlačíme
+kláves ++f5++. IDLE nás vyzve aby sme si program uložili a potom ho spustí v okne
+príkazového riadku. Mali by sme zbadať vypísané:
+
+```text
+Ahoj RoboLab
+RoboLab zdravi
+```
+
+Vráťme sa teraz k problému vypisovania čísel. Keď spustíme jednoduchý program,
+
+```python
+print( 3 * 5 )
+```
+
+na výstupe sa nám zobrazí `15`. Skúste si to! Správne, Python najprv vypočíta
+"3 * 5 = 15" a následne výsledok príkazom `print` vypíše na obrazovku. Skúsme
+teraz spustiť program bez príkazu `print`.
+
+```python
+3 * 5
+```
+
+Na výstupe sa nám nič nezobrazí! Prečo? Python znovu vyhodnotí "3 * 5 = 15",
+ale tento **výsledok** sa stratí, nemá žiadny príkaz, aby ho vypísal.
+Príkazový riadok nám vždy aj ukáže **výsledok** toho, čo mu zadáme.
+
+```python
+>>> 3 * 5
+15
+```
+
+Ale ak chceme niečo vypísať z **programu**, vždy musíme použiť príkaz `print`!
+
+!!! tip "Tip"
+ V ukážkach na týchto stránkach odlíšime príkazový riadok jednoducho:
+ začína tromi väčšítkami `>>>`. Ak tam nie sú, znamená to, že daná ukážka je
+ **program**, a teda ho treba napísať do editoru.
+
+## Prečo si to nezopakovať?
+
+Doteraz bol Python celkom nudný. Keď sme chceli, aby nám niečo napísal, museli
+sme mu to sami napísať a ešte k tomu naviac dopísať "print". Na čo nám je taký
+Python? Ukážme si teda, že je silnejší, než sa zdá. Spustite si tento program.
+Predposledné dva riadky začínajú štyrmi medzerami a namiesto štyroch stlačení
+medzerníka môžeme použiť kláves ++tab++.
+
+```python
+i = 0
+while i < 3:
+ print( 'tra' + 'la' * i )
+ i += 1
+print( 'koniec' )
+```
+
+Zdá sa, že sme použili nový príkaz: `while`. Aby sme mu porozumeli, musíme si
+najprv povedať niečo o ne/pravdách v Pythone.
+
+### Logické áno a nie
+
+Presuňme sa nachvíľu znovu do príkazového riadku. Pracovali sme už s textovými
+a číselnými hodnotami, teraz si ukážeme logické hodnoty (ang. *boolean* podľa
+matematika [Georgea Boolea](https://sk.wikipedia.org/wiki/George_Boole)).
+Existujú len dve: `True` (pravda) a `False` (nepravda). V počítačoch je všetko
+jasné, buď to je jednoducho pravdivé alebo nie je.
+
+```python
+>>> 1 < 2
+True
+>>> 3 < -5
+False
+>>> 2 == 2
+True
+>>> 2 >= 1
+True
+>>> 2 >= 2
+True
+```
+
+Máme celkovo 6 *porovnávacích operátorov*:
+
+Operátor | Význam
+:-------:|:------
+`==` | rovná sa
+`!=` | nerovná sa
+`<` | menšie než
+`<=` | menšie, nanajvýš rovné
+`>` | väčšie než
+`>=` | väčšie, nanajvýš rovné
+
+!!! warning "Pozor!"
+ Ak chceme porovnávať, používame `==` (dva znaky "="), ale ak
+ priraďujeme hodnotu do premennej, používame len `=` (jeden znak "=").
+
+```python
+>>> a = 1
+>>> a == 1
+True
+```
+
+Porovnávať nemusíme len čísla:
+
+```python
+>>> 'text' != 'text'
+False
+>>> 2 == 'text'
+False
+>>> 2 == '2'
+False
+>>> 2 < 'text'
+Traceback (most recent call last):
+ File "", line 1, in
+TypeError: '<' not supported between instances of 'int' and 'str'
+>>> 'text' < 'text'
+False
+>>> 'a' < 'b'
+True
+>>> 'a' < 'aa'
+True
+>>> 'ab' <= 'aa'
+False
+```
+
+Textové reťazce sa porovnávajú *lexikograficky*. To znamená, ak nejaké slovo
+nájdeme v abecednom zozname skôr než nejaké druhé slovo, tak to prvé bude
+menšie. Číslo sa nikdy nebude rovnať žiadnemu textu a dokonca na menšie/vačšie
+sa ani nemôžeme spýtať.
+
+```python
+>>> False == False
+True
+>>> False == 0
+True
+>>> True == 1
+True
+>>> False < True
+True
+```
+
+Logické hodnoty sa správajú ako čísla, pričom `False` je nula a `True`
+jednotka.
+
+```python
+>>> True + True
+2
+>>> True * False
+0
+```
+
+- - -
+V Pythone má každá premenná (a každá hodnota) nejaký typ (*dátový typ*).
+Dokážeme ho zistiť pomocou príkazu `type`:
+
+```python
+>>> type( 3 )
+
+>>> type( 'text' )
+
+>>> type( True )
+
+>>> a = False
+>>> type( a )
+
+```
+
+S presným významom slovíčka `class` si zatiaľ nebudeme lámať hlavu, stačí si
+zapamätať, že každá hodnota má nejaký jednoznačný typ.
+- - -
+
+### Príkaz `while`
+
+Teraz už budeme vedieť použiť príkaz `while` (nazýva sa tiež *cyklus*):
+
+```python
+while "podmienka":
+ "príkaz 1"
+ "príkaz 2"
+ ...
+"príkaz 3"
+...
+```
+
+"while" znamená po anglicky "pokým". A tak mu Python aj rozumie. Pokým je
+"podmienka" pravdivá, teda `True`, tak bude postupne vykonávať "príkaz 1",
+"príkaz 2", ..., všetko, čo je odsadené o štyri medzery vpravo (týmto príkazom
+hovoríme *telo cyklu*). Keď príde na koniec, znovu sa spýta, či je "podmienka"
+pravdivá, ak áno, vykoná znovu telo cyklu. A tak stále dokola. Keď už
+"podmienka" pravdivá nebude, Python skočí na "príkaz 3" a pokračuje ďalej.
+
+Vyskúšajme si spraviť nekonečný cyklus. Napíšeme takýto jednoduchý program:
+
+```python
+while 1 == 1:
+ print( 'ahoj' )
+```
+
+Spustíme, a keďže `1 == 1` sa vždy vyhodnotí na `True`, tak máme celú obrazovku
+"ahoj"ov. Program môžme zastaviť klávesovou kombináciou Ctrl+C. Rovnako by sme
+mohli napísať:
+
+```python
+while True:
+ print( 'ahoj' )
+```
+
+???+ question "Úloha"
+ Čo vypíše nasledujúci program?
+
+ ```python
+ while False:
+ print( 'ahoj' )
+ print( 'koniec' )
+ ```
+
+ Najprv skúste na to prísť sami, odpoveď si potom overte spustením.
+
+Vieme už dosť na to, aby sme si napísali trochu zaujímavejší program. Budeme
+"kresliť" trojuholníky z hviezdičiek (\*). Od teraz budeme písať zdrojový kód
+po anglicky. Nebudú sa nám miešať slovenské a anglické slová (napr.
+`#!py print( 'jablko' )`), a keď vytvoríme nejaký úžasný program, budeme sa môcť oň
+podeliť s celým svetom!
+
+Ako chceme aby vyzerali trojuholníky z hviezdičiek? Najmenší trojuholník
+veľkosti 1 je jednoduchý:
+
+```text
+*
+```
+
+Veľkosť dva:
+
+```text
+**
+*
+```
+
+Veľkosť 4:
+
+```text
+****
+***
+**
+*
+```
+
+Už máme predstavu, čo chceme naprogramovať, takže pustime sa do toho.
+Potrebujeme vedieť, aký veľký trojuholník chceme.
+
+```python
+size = 3
+```
+
+Vidíme, že trojuholník je nakreslený na toľko isto riadkov aká je jeho veľkosť.
+
+```python
+size = 3
+
+while size > 0:
+ # print one row
+ size -= 1
+```
+
+Na miesto `# print one row` napíšeme kód, ktorý to vykoná, zatiaľ sme si to len
+poznačili. Takáto časť v zdrojovom kóde sa nazýva *komentár*. Začína sa znakom
+"#" a pokračuje až do konca riadku. Komentáre Python ignoruje, sú to poznámky
+nás, programátorov. Ak by sme úvodný "#" nepoužili, Python by sa snažil
+interpretovať daný riadok ako príkaz a skončil by s chybovou hláškou.
+
+Pozrime sa na to, ako sme použili premennú "size" v podmienke cyklu. Na
+začiatku programu sa nastaví na hodnotu 3. Podmienka `size > 0` sa vyhodnotí na
+`True` a telo cyklu sa vykoná. V ňom máme príkaz `size -= 1`. Takže teraz už
+platí "size = 2". Znovu príde na podmienku cyklu, "2 > 0", a teda telo cyklu sa
+vykoná, "size" sa zníži o jedna, na hodnotu 1. Podmienka je znovu vyhodnotená
+ako `True`, "size" sa zníži na hodnotu 0. Teraz už podmienka splnená nie je a
+telo cyklu sa nezopakuje.
+
+Celkovo sa teda cyklus zopakoval 3 krát. Presne to sme chceli! Zostáva nám v
+každom opakovaní vykresliť jeden riadok. Na prvom riadku chceme mať 3
+hviezdičky. Na druhom 2 a na poslednom jednu.
+
+```python
+size = 3
+
+while size > 0:
+ print( '*' * size )
+ size -= 1
+```
+
+Hurá a je to! Teraz stačí zmeniť v prvom riadku "size" na veľkosť akú chceme a
+Python nám vykreslí žiadaný trojuholník. Vyskúšajte si rôzne veľkosti.
+
+???+ question "Úloha 1"
+ Napíšte program podobný tomu poslednému, ktorý bude kresliť štvorce.
+
+???+ question "Úloha 2"
+ Napíšte program kresliaci trojuholníky, ale naopak ako doteraz. Teda, pre
+ veľkosť 4 bude vyzerať:
+
+ ```text
+ *
+ **
+ ***
+ ****
+ ```
+
+ Toto je už trochu ťažšia úloha, vyžaduje použiť až dve premenné. "size" sa
+ tentokrát meniť nebude, ale druhá premenná bude mať postupne hodnoty od 1 až po
+ "size", takže budete vedieť jednoducho vykresliť hviezdičky na každom riadku
+ podľa nej. Premyslite si to dobre.
+
+???+ question "Úloha 3"
+ Napíšte program, ktorý vykreslí obdĺžnik. Na začiatku budú teda dve premenné:
+ jedna pre veľkosť každej strany.
+
+???+ question "Úloha 4"
+ Pozor, toto je veľmi tvrdý oriešok! Napíšte program, tentokrát kresliaci
+ pyramídu. Tu sú vzory pre veľkosti 1, 2 a 4:
+
+ ```text
+ *
+ ```
+
+ ```text
+ *
+ ***
+ ```
+
+ ```text
+ *
+ ***
+ *****
+ *******
+ ```
diff --git a/docs/img/L1_python_shell_win.png b/docs/img/L1_python_shell_win.png
new file mode 100644
index 0000000..7f4b03d
Binary files /dev/null and b/docs/img/L1_python_shell_win.png differ
diff --git a/docs/img/L1_x.png b/docs/img/L1_x.png
new file mode 100644
index 0000000..eadbd78
Binary files /dev/null and b/docs/img/L1_x.png differ
diff --git a/mkdocs.yml b/mkdocs.yml
index 21a5cdd..bf79b61 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -6,6 +6,7 @@ theme:
nav:
- Home: index.md
+ - 01.md
markdown_extensions:
- pymdownx.highlight: