Funkce a cykly  29. září 2021

Materiály

Nejste účastníkem kurzu
Pro zápis do kurzu se nejprve přihlašte a následně použijte tlačítko v přehledu kurzu.

Domácí projekty

Tolik nových slovíček! Abyste se v nich neztratili, zkuste pomocí pár vlastních slov popsat, co to je …

0.

funkce

1.

argument

2.

procedura

3.

návratová hodnota

4.

výraz

5.

cyklus

Želví kreslení! Tahle sekce vás naučí myslet jako programátoři počítačové grafiky. Je dobré jednotlivé projekty dělat postupně a nepřeskakovat. Kdybste si potřebovali od želvy oddechnout, skočte až na další sekci.

Když něco začne fungovat, doporučuji znovu si řešení projít a zamyslet se nad ním.

6.

Nakreslete trojúhelník.

trojúhelník

Poznámka: Rovnostranný trojúhelník má vnitřní úhly 60°. Želva se ale otáčí o vedlejší úhel 180 - 60 = 120°.

diagram

7.

Nakreslete domeček!

domeček

Jak pravil Pythagoras, délka šikmé čáry v domečku je √2-krát délka stěny. Funkci na odmocninu najdete na taháku.

8.

Nakreslete vesnici!

vesnice

Jestli kreslení trvá dlouho a nebaví vás čekat, můžete naimportovat a použít funkci speed, která nastavuje rychlost dalšího kreslení:

from turtle import speed

speed(1)  # želva jak má být – extrémně pomalá
speed(3)  # pomalá želva
speed(6)  # normálně rychlá želva
speed(10) # hodně rychlá želva
speed(0)  # turboželva
9.

Nakreslete vedle sebe pětiúhelník, šestiúhelník, sedmiúhelník, osmiúhelník.

mnohoúhelníky

Vnitřní úhel pravidelného n-úhelníka má 180 × (1-2/n) stupňů.

Aby byly tvary zhruba stejně veliké, použijte pro n-úhelník délku strany např. 200/n

10.

Nakreslete pravidelný n-úhelník, kde n zadá uživatel.

11.

Želva umí jen rovné čáry. Jde pomocí rovných čar nakreslit kolečko?

Nevíte-li, přeskoč na další projekt a pak se sem vrať.

12.

Nakreslete pravidelný stoúhelník.

13.

Nakreslete takovýto ornament:

ornament

Nevíte-li si rady, vezměte pravítko a změřte délky jednotlivých čar. Doporučuju začít od středu.

14.

Nakreslete takovýto ornament:

ornament

15.

Nakreslete spirálu.

spirála

Od ornamentů ke spirále se dostanete stejným způsobem jako od n-úhelníků ke kolečku.

16.

Napište obrázek! Třeba les ze stromů, město z domů, nebe z hvězd, dav ze smajlíků, hradbu z věží, zikkurat ze schodů, ...

Můžete použít i nějakou z funkcí modulu random.

Když budete mít obrázků víc, odevzdejte je všechny!

Obrázky si pro inspiraci ukážeme na srazu.

17.

Na videu jsme kreslili tři čtverce, každý otočený o 15°.

Nakreslete 18 čtverců pootočených o 20°.

18.

Vezměte program z minulé úlohy a dokreslete stonek a listy. Je jenom na vás, jaký budou mít tvar – nemusí odpovídat vzorovému obrázku. Pište komentáře a snažte se opakovat pomocí for, ne pomocí Ctrl+C Ctrl+V.

květina

V těchto úkolech je něco nového k naučení. Úkoly nezadávají postup, jak na odpověď přijít, ale to určitě zvládnete!

19.

Jakou sekvenci dostanete, když funkci range zavoláte se dvěma argumenty?

20.

Se třemi?

Hra pro tento týden!

21.

Naprogramujte hru Oko bere:

  • Začínáš se skóre 0 bodů.
  • V každém kole:
    • Počítač vypíše, kolik máš bodů.
    • Počítač se zeptá, jestli chceš pokračovat.
    • Pokud byla odpověď „ne“:
      • Hra končí.
    • Jinak:
      • Počítač „vybere kartu“ – náhodně vybere číslo od 2 do 10;
      • vybranou hodnotu vypíše;
      • přičte tuto hodnotu ke skóre.
    • Pokud máš víc než 21 bodů:
      • Počítač vypíše, že prohráváš;
      • hra končí.
  • Po skončení hry počítač vypíše dosažené skóre.

Cílem hry je neprohrát a získat přitom co nejvíc bodů, ideálně 21.

A na konec pár textových úkolů. Nestíháte-li, zaměřte se na jiné úkoly.

22.

Napište program, který postupně načte od uživatele dvě čísla a jednoznakový řetězec – buď '+', '-', '*' nebo '/'. Program provede na číslech příslušnou operaci.

Příklad použití programu (hodnoty za dvojtečkou doplnil uživatel):

První číslo: 123
Druhé číslo: 456
Operace: +
123 + 456 = 579
23.

Napište program, který se pětkrát zeptá na číslo a nejmenší zadané číslo vypíše.

Program by mělo jít snadno upravit tak, aby se ptal na deset nebo sto čísel.

Nevíte-li si rady, podívejte se na video Přepisování proměnných. Místo přičítání do proměnné celkem zkuste dávat správnou hodnotu do proměnné zatim_nejmensi.