17. hodina - Vetvenie a konštrukcie


  1. Kamarátku pozdravíš „Ahoj“, ale vieš, že starších ľudí treba pozdraviť slušne, napríklad „Dobrý deň“. Napíš program, v ktorom do premennej vek priradíš vek človeka. Potom použi príkaz vetvenia na to, aby sa program podľa veku rozhodol, ktorý z uvedených dvoch pozdravov vypíše. Otestuj, aké pozdravy sa vypisujú pre rôzne hodnoty premennej vek.


  1. Na brigáde v bufete ťa zaplatia podľa takéhoto pravidla:

    • ak budeš pracovať menej ako 10 hodín, tak zarobíš 3 eurá za hodinu,

    • inak dostaneš plat 4 eurá za hodinu.

    Do premennej hodin priraď počet tvojich odpracovaných hodín. Potom pomocou príkazu vetvenia vypíš, koľko zarobíš. Program by mal vypísať:

    • pre hodin = 7:

      Zarobíš 21 eur.
      
    • pre hodin = 12:

      Zarobíš 48 eur.
      

  1. Predchádzajúca úloha sa dá riešiť aj takto:

    hodin = 20
    if ..............................:
        plat = ..............................
    else:
        plat = ..............................
    print('Zarobíš', plat, 'eur.')
    

    Doplň namiesto vybodkovaných častí správne výrazy. Over, že program korektne počíta plat pre rôzne hodnoty premennej hodin.


  1. Telefónny operátor Vegafón počíta platby za prenesené megabajty podľa takýchto pravidiel:

    • ak za deň prenesieš menej ako 10 megabajtov, zaplatíš za každý megabajt 0.2 eur,

    • inak zaplatíš za celý deň 2 eurá.

    Napíš program, v ktorom do premennej megabajt priradíš počet prenesených megabajtov za jeden deň. Použi príkaz vetvenia na to, aby si do premennej cena priradil vyúčtovaný počet korún. Nakoniec vypíš vypočítanú cenu. Napríklad:

    • pre megabajty = 3:

      Zaplatíš 0.6 eur.
      
    • pre megabajty = 20:

      Zaplatíš 2 eur.
      

  1. Telefónny operátor Zodrafón počíta platby za prenesené megabajty podľa „výhodnejších“ pravidiel:

    • ak za deň neprenesieš viac ako 10 megabajtov, zaplatíš za každý megabajt 0.1 eur,

    • inak zaplatíš za každý megabajt navyše (nad 10 megabajtov) 0.2 eur.

    Napíš program, ktorý počíta cenu podľa takýchto pravidiel a over, že správne funguje. Napríklad:

    • pre megabajty = 3:

      Zaplatíš 0.3 eur.
      
    • pre megabajty = 20:

      Zaplatíš 3.0 eur.
      

  1. Vytvor program, ktorý podľa zadaného času nakreslí do grafickej plochy slnko alebo mesiac. Do premennej cas priraď počet hodín. Použi príkaz vetvenia na to, aby sa pre cas < 8 kreslil mesiac biely kruh, inak sa nakreslí slnko ako žltý kruh. Polomer kruhu nech je v oboch prípadoch 50, stred kruhu 200, 100. Napríklad:

    _images/17_01.png _images/17_02.png

    pre cas = 4

    pre cas = 14


  1. Doplň do predchádzajúceho riešenia kreslenie pozadia – mesiac sa nakreslí na tmavomodré pozadie, slnko na svetlomodré pozadie:

    _images/17_03.png _images/17_04.png

    pre cas = 4

    pre cas = 14

    Stačí, ak do každej vetvy pridáš príkaz na kreslenie veľkého obdĺžnika, ktorý prekryje celú grafickú plochu:

    if ..............................:
        canvas.create_rectangle(.............................., fill='navy')
        canvas.create_oval(.............................., fill='white')
    else:
        canvas.create_rectangle(.............................., fill='cyan')
        canvas.create_oval(.............................., fill='yellow')
    
    • Odsať oba príkazy, ktoré tvoria telo vetvy if aj else – použi tabulátor


  1. Uprav predchádzajúci program tak, aby najskôr do premenných x, y priradili súradnice stredu kruhu a tie sa potom použili v príkazoch create_oval. Okrem toho pridaj na úplný koniec programu aj kreslenie zeleného obdĺžnika ako zeme. Potom program pre x = 200 a y = 150 bude kresliť takéto scény:

    _images/17_05.png _images/17_06.png

    pre cas = 4

    pre cas = 14

    Zelený obdĺžnik začína na y-ovej súradnici 180.


  1. Vylepši predchádzajúci program tak, aby fungoval ako náhodný generátor krajiniek – priraď na začiatku do premenných x, y, cas náhodné čísla:

    • x z rozsahu 100, 300

    • y z rozsahu 100, 200

    • cas z rozsahu 0, 16

    Spusti program aj niekoľko krát:

    _images/17_07.png _images/17_08.png

    pre cas = 4

    pre cas = 14


  1. Nasledujúci program vypíše denný harmonogram:

    for i in range(8):
        print(i, 'ešte spím')
    for i in range(6):
        print(8 + i, 'som v škole')
    

    Čo program vypíše?

    Program sa dá zapísať aj takto, iba pomocou jedného cyklu:

    for i in range(14):
        if i < 8:                       #
            print(i, 'ešte spím')       # telo cyklu – treba ho odsadiť
        else:                           #
            print(i, 'som v škole')     #
    
    • príkazy vo vetvách if a else treba odsadiť ešte viac

    Telo cyklu for obsahuje jeden vnorený príkaz vetvenia if else. Vyskúšaj, ako funguje táto verzia.


  1. Podobne, ako v predchádzajúcom príklade, použi cyklus s vnoreným vetvením a vypíš:

    0 som chudobný
    10 som chudobný
    20 som chudobný
    30 som chudobný
    40 som chudobný
    50 som bohatý
    60 som bohatý
    70 som bohatý
    80 som bohatý
    90 som bohatý
    

    Premenná cyklu sa mení od 0 po 9. Vypisuje sa desaťnásobok hodnoty tejto premennej.


  1. Vieš, pre ktoré čísla n platí, že n2 je menšie ako 5 * n? Napíš program, ktorý pre všetky čísla od 0 po 10 otestuje tento vzťah a vypíše o tom informáciu. Napríklad:

    ...
    16 je menšie ako 20
    25 je väčšie alebo rovné ako 25
    36 je väčšie alebo rovné ako 30
    ...
    

    Čo tvoj program zistil? Pre ktoré n to platí?


  1. Pomocou jediného cyklu s vnoreným vetvením nakresli koráliky:

    _images/17_09.png

  1. (*) Uprav predchádzajúci program tak, aby sa prvých 8 korálikov farbilo náhodne pomocou:

    random.choice(['red', 'yellow'])
    

    a zvyšných 7 pomocou:

    random.choice(['blue', 'green']).
    

    Môžeš dostať takýto výsledok:

    _images/17_10.png

  1. (*) Zadefinuj podprogram koralik. V ňom vygeneruj náhodné pozície x, y pre stred koráliku. Potom, podľa x-ovej súradnice sa rozhodni:

    • či sa nakreslí červený alebo žltý korálik, ak je x < 200

    • alebo sa nakreslí modrý prípadne zelený korálik pre väčšie čísla.

    Využi kreslenie korálikov z predchádzajúcej úlohy.

    Keď zavoláš podprogram koralik v cykle 100 krát, dostaneš napríklad takýto obrázok:

    _images/17_11.png