Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
courses:pri-bootcamp:04 [2019/07/18 20:48]
seredlad [Úkoly]
courses:pri-bootcamp:04 [2019/07/22 13:06] (current)
seredlad [Volitelné úkoly]
Line 355: Line 355:
 ===== Volitelné úkoly ===== ===== Volitelné úkoly =====
  
-===Rekurze===+==== Rekurze ​====
  
 <​note>//​“To iterate is human, to recurse divine.”//​ <​note>//​“To iterate is human, to recurse divine.”//​
  
-(L. Peter Deutsch) ​ </​note>​+(L. Peter Deutsch)´ 
 +</​note>​
  
 Nejjednodušší případ rekurzivní funkce, je taková funkce, která musí k vypočítání výsledku **zavolat sebe sama**. Například:​ Nejjednodušší případ rekurzivní funkce, je taková funkce, která musí k vypočítání výsledku **zavolat sebe sama**. Například:​
 +
 <code python> <code python>
 def odecitej(x):​ def odecitej(x):​
     return odecitej(x-1)     return odecitej(x-1)
 </​code>​ </​code>​
 +
 <note tip> <note tip>
-Pokud vám stále ještě není jasné co je to rekurze, přečtěte si tuto větu ještě jednou... ;​-)</​note>​+Pokud vám stále ještě není jasné co je to rekurze, přečtěte si tuto větu ještě jednou... ;-) 
 +</​note>​
     ​     ​
 Funkce **odecitej** má ale jednu malou vadu. Nikdy nevrátí výsledek. Proto je potřeba mít v každé rekurzivní funkci takzvaný "​**base case**",​ který ukončí rekurzivní volání. Funkce **odecitej** má ale jednu malou vadu. Nikdy nevrátí výsledek. Proto je potřeba mít v každé rekurzivní funkci takzvaný "​**base case**",​ který ukončí rekurzivní volání.
Line 380: Line 384:
 Funkce **odecitej_do_nuly** má stále ještě jeden problém. Odhalíte jaký? Funkce **odecitej_do_nuly** má stále ještě jeden problém. Odhalíte jaký?
  
-===Úkoly===+---- 
 + 
 +==== Úkoly ​====
  
 <note warning>​Při řešení následujících úkolů nesmíte použít klíčová slova __for__ ani __while__!</​note>​ <note warning>​Při řešení následujících úkolů nesmíte použít klíčová slova __for__ ani __while__!</​note>​
  
-==Úkol 1==+---- 
 + 
 +=== Úkol 1 ===
  
 Vytvořte pole obsahujicí deset náhodných čísel pomocí rekurze. Vytvořte pole obsahujicí deset náhodných čísel pomocí rekurze.
  
-== Řešení ​==+[[courses:​pri-bootcamp:​solutions#​Den 4 - Volitelný úkol 1|Řešení]]
  
- //​Bude zveřejněno na konci čtvrtého dne.//+----
  
-/* +=== Úkol 2 ===
-<code python>​ +
-</​code>​ +
-*/ +
-  +
- +
-==Úkol 2==+
  
 Naimplementujte funkci **faktorial(x)**,​ která vypočítá **x!** pomocí rekurze. Naimplementujte funkci **faktorial(x)**,​ která vypočítá **x!** pomocí rekurze.
  
 +[[courses:​pri-bootcamp:​solutions#​Den 4 - Volitelný úkol 2|Řešení]]
  
-== Řešení == +----
- +
- //​Bude zveřejněno na konci čtvrtého dne.// +
- +
-/* +
-<code python>​ +
-</​code>​ +
-*/ +
  
-==Úkol 3==+=== Úkol 3 ===
  
 Napiště funkci **fibonacci(x)**,​ která vrátí x-tý prvek fibonacciho posloupnosti. Napiště funkci **fibonacci(x)**,​ která vrátí x-tý prvek fibonacciho posloupnosti.
  
 +[[courses:​pri-bootcamp:​solutions#​Den 4 - Volitelný úkol 3|Řešení]]
  
-== Řešení ==+----
  
- //​Bude zveřejněno na konci čtvrtého dne.//+=== Úkol 4 ===
  
-/* +Vytvořte matici (2D pole) 5x5.
-<code python>​ +
-</​code>​ +
-*/+
  
- 
-==Úkol 4== 
- 
-Vytvořte matici (2D pole) 5x5. 
 <code python> <code python>
 matice = [          # matice 2x2 matice = [          # matice 2x2
Line 439: Line 428:
 matice[0][1] ​       # vrati 2 matice[0][1] ​       # vrati 2
 </​code>​ </​code>​
 +
 Vyplňte tuto matici čísly od 24 do 0 funkcí **jméno_funkce(matice)**,​ a poté vypište matici na standartní výstup. Vyplňte tuto matici čísly od 24 do 0 funkcí **jméno_funkce(matice)**,​ a poté vypište matici na standartní výstup.
 +
 <​code>​ <​code>​
 [[24, 23, 22, 21, 20], [19, 18, 17, 16, 15], [14, 13, 12, 11, 10], [9, 8, 7, 6, 5], [4, 3, 2, 1, 0]] [[24, 23, 22, 21, 20], [19, 18, 17, 16, 15], [14, 13, 12, 11, 10], [9, 8, 7, 6, 5], [4, 3, 2, 1, 0]]
 </​code>​ </​code>​
  
 +[[courses:​pri-bootcamp:​solutions#​Den 4 - Volitelný úkol 4|Řešení]]
  
 +----
  
-== Řešení == +=== Úkol 5 (Náročnější!) ​===
- +
- //​Bude zveřejněno na konci čtvrtého dne.// +
- +
-/* +
-<code python>​ +
-</​code>​ +
-*/ +
- +
-==Úkol 5 (Náročnější!)==+
  
 Máte šachové pole 9x9 a figurku jezdce na pozici (4,4). Máte šachové pole 9x9 a figurku jezdce na pozici (4,4).
Line 462: Line 446:
 <​note>​Jezdec nemusí využít všechny své tahy.</​note>​ <​note>​Jezdec nemusí využít všechny své tahy.</​note>​
 <​note>​K vypsání můžete použít for cyklus.</​note>​ <​note>​K vypsání můžete použít for cyklus.</​note>​
-<​code>​ 
-# takto ma vypadat vystup 
  
 +Výstup programu:
 +
 +<​code>​
 001010100 001010100
 010101010 010101010
Line 474: Line 459:
 010101010 010101010
 001010100 001010100
 +</​code>​
  
 +Stav sachovnice po jednotlivých tazích (namísto 0 a 1 jsou zde kvůli názornosti použité mezery a znak '​X'​):​
 +
 +<​code>​
 # prvni tah    # druhy tah    # treti tah # prvni tah    # druhy tah    # treti tah
 |         ​| ​   |         ​| ​   |  X X X  |    ​ |         ​| ​   |         ​| ​   |  X X X  |    ​
Line 487: Line 476:
 </​code>​ </​code>​
  
 +[[courses:​pri-bootcamp:​solutions#​Den 4 - Volitelný úkol 5|Řešení]]
  
-== Řešení ==+----
  
- //​Bude zveřejněno na konci čtvrtého dne.//+== Úkol 6 (oddechový) ==
  
-/+Choose you favourite [[http://www.devtopics.com/101-great-computer-programming-quotes/​|Computer Quote]] 8-)
-<code python>​ +
-</code> +
-*/+
  
 +----
  
-==Úkol 6 (oddechove)== 
- 
-Choose you favourite [[http://​www.devtopics.com/​101-great-computer-programming-quotes/​|Computer Quote]] 8-) 
courses/pri-bootcamp/04.txt · Last modified: 2019/07/22 13:06 by seredlad