8. hodina - Podprogramy


  1. Vytvor program, ktorý nakreslí kockatú dúhu. Do premenných x, y priraď súradnice pravého dolného vrcholu kockatej dúhy a použi ich pri kreslení farebných štvorcov. Najmenší štvorec má rozmery 20x20 a každý ďalší je o 20 väčší:

    _images/08_01.png

  1. Doteraz si mohol písať iba také príkazy, ktoré poznal počítač. Teraz ho naučíš nové, tvoje vlastné príkazy, takzvané podprogramy. Postupuj nasledovne:

    1. Vytvor nový program, v ktorom bude napísané iba toto:

      • prázdne zátvorky aj dvojbodka sú veľmi dôležité

      def vypis_text():
          print('************')
          print('** Python **')
          print('************')
      
      • príkazy nechaj takto odsunuté (Python tam automaticky vloží 4 medzery)

    2. Program spusti – ak, je všetko v poriadku, uvidíš:

      _images/08_02.png
    3. Do príkazového riadku napíš:

      >>> vypis_text()
      
    4. Ak si postupoval správne, počítač zobrazí text:

      ************
      ** Python **
      ************
      

Definovanie a volanie podprogramu

Čo sa stalo?

  • slovom def začína definícia tvojho nového príkazu – podprogramu

  • vypis_text je názov podprogramu

def vypis_text():
    print('************')
    print('** Python **')
    print('************')
  • ďalšie tri riadky tvoria telo podprogramu

Po spustení programu sa počítač naučil nový príkaz vypis_text. Počítač ho zatiaľ nevykonal, iba sa ho naučil. Skupinu príkazov print – teda telo podprogramu vypis_text, počítač vykoná až vtedy, keď do príkazového riadku napíšeš:

>>> vypis_text()
  • prázdne zátvorky sú veľmi dôležité

Takýto zápis sa nazýva volanie podprogramu.


  1. Pridaj do svojho programu ďalšie príkazy – nesmú mať odsadenie:

    def vypis_text():
        print('************')
        print('** Python **')
        print('************')
    
    print('Vitaj!')
    vypis_text()
    print()
    vypis_text()
    print('to je koniec')
    

    Keď program spustíš, uvidíš takýto výsledok:

    Vitaj!
    ************
    ** Python **
    ************
    
    ************
    ** Python **
    ************
    to je koniec
    

    V tomto programe sa najskôr zadefinoval podprogram vypis_text. Za ním nasledujú príkazy print a príkazy pre volanie podprogramu. Python zobrazil svoju vizitku 2-krát, lebo v programe sú 2 volania podprogramu vypis_text.


  1. Zmeň predchádzajúci program tak, aby počítač vypísal:

    Hello!
    *****************
    ** I am Python **
    *****************
    How are you?
    *****************
    ** I am Python **
    *****************
    I am fine.
    *****************
    ** I am Python **
    *****************
    The end
    

  1. Vytváral si program, ktorý zobrazil, napríklad takúto tvoju vizitku:

    +--------------------+
    |             ~~~    |
    |  Juraj    / o o \  |
    |  RUMCAJS  \  ~  /  |
    |             """    |
    |    IT lúpežník     |
    +--------------------+
    

    Vyrob nový program. V ňom zadefinuj podprogram vizitka, ktorý takúto vizitku zobrazí. Nakoniec tento podprogram zavolaj, aby si overil, že funguje správne.


  1. Doplň do predchádzajúceho programu volania podprogramu vizitka tak, aby sa pod seba zobrazilo 10 tvojich vizitiek.


  1. Vo svojom programe môžeš definovať aj viac podprogramov. Vytvor nový program a zadefinuj v ňom tri podprogramy. Každý z nich zobrazí jeden z nasledujúcich obrázkov:

    • podprogram noha nakreslí takúto nohu (dole sú dva podčiarkovníky vľavo aj vpravo):

        |
      __|__
      
    • podprogram obdlznik nakreslí:

      #####
      #   #
      #####
      
    • podprogram trojuholník:

        *
       ***
      *****
      

    Na konci programu vlož volanie podprogramov, aby si otestoval každý z nich a skús pomocou nich zobraziť nasledujúce obrázky

    1.   *
       ***
      *****
        *
       ***
      *****
        |
      __|__
      
    2.   *
       ***
      *****
      #####
      #   #
      #####
        |
      __|__
      
    3. #####
      #   #
      #####
        |
      __|__
      #####
      #   #
      #####
      
    4. toto je noha:
        |
      __|__
      
      toto je obdlznik:
      #####
      #   #
      #####
      
      toto je trojuholnik:
        *
       ***
      *****
      

  1. Teraz budeš vytvárať podprogramy, ktoré kreslia do grafického okna. Vyskúšaj:

    import tkinter
    
    canvas = tkinter.Canvas()
    canvas.pack()
    
    def kresli():
        canvas.create_rectangle(10, 20, 30, 40, fill='red')
    
    kresli()
    

  1. Zadefinuj podprogram kriz, ktorý po zavolaní nakreslí červený kríž:

    _images/08_03.png

  1. (*) Vytvor štyri podprogramy – keď ich zavoláš v takomto poradí:

    hlava()
    ruky()
    nohy()
    telo()
    

    každý z nich nakreslí jednu časť takéhoto robota:

    _images/08_04.png