II. 
         
        Začíname s funkciami... 
         
             Pri tvorbe skriptov sa často dostávame do situácie, kedy potrebujeme 
        zopakovať určitú súslednosť už raz vykonaných príkazov. Vtedy je výhodné 
        si zadeklarovať funkciu, ktorá by obsahovala tieto príkazy. 
        Takúto funkciu môžeme potom v prípade potreby kedykoľvek vyvolať 
        z ľubovolnej časti programu. Využívanie funkcií šetrí veľkosť zdrojového 
        textu a naviac sa skript takto stáva prehľadnejším.
 
           
        
           
            |      Príklad 
              2.1: Jednoduchá 
              funkcia - čiara 
                 
                   Funkcie sa zvyknú deklarovať 
                na začiatku stránky medzi párovým tagom <HEAD> 
                a </HEAD>. 
             | 
              | 
           
          
             
              <html>
<head>
<title>Jednoducha funkcia</title>
<script language="JavaScript">
<!--
  function ciara()
  {
    document.write("===============================<br>"); 
  }
// -->
</script>
</head>
<body>
<script language="JavaScript">
<!--
  ciara();
  document.write("Programujeme v JavaScripte<br>"); 
  ciara();
// -->	
</script>
</body>
</html>
             | 
              | 
           
         
             Toto bol jednoduchý príklad funkcie, 
          ktorá po vyvolaní, nakreslila čiaru. Funkcie však môžu byť aj podstatne 
          zložitejšie, tzn. že môžu spracovávať aj nejaké vstupné údaje 
          (parametre) a na ich základe vykonávať už mierne odlišný sled príkazov. 
          Tým sa z nich stávajú viacúčelové stavebné prvky. 
               V nasledujúcom príklade si ukážeme akým spôsobom je možné vyvolať 
          funkciu s parametrom a ako funkcia dokáže vrátiť hodnotu 
          na miesto odkiaľ bola vyvolaná. 
         
           
        
           
            |      Príklad 
              2.2: Ukážka zložitejších 
              funkcií 
                      
                   Pri deklarácii funkcie, ktorá 
                má obsahovať vstupné parametre, sa miesto prázdnych 
                zátvoriek zapisuje zoznam parametrov oddelených od seba čiarkou. 
                Pri vyvolaní tejto funkcie musíme tieto parametre uviesť. 
                     Funkcia vypis pozostáva z 3 parametrov: 
                farba, veľkost a text. Parametre farba 
                a veľkosť udávajú formát textu a parameter 
                text obsahuje text, ktorý sa má vypísať. 
                     Funkcia nahodne_cislo pozostáva z parametru 
                rozsah, ktorý udáva v akom rozsahu má 
                byť vygenerované náhodné číslo. 
             | 
              | 
             
              <html>
<head>
<title>Ukazka zlozitejsich funkcii</title>
<script language="JavaScript">
<!--
  function vypis(farba,velkost,text)
  {
    t1="<font ";
    t2="color="+farba+" ";
    t3="size="+velkost+">";
    t4="</font>";
    document.write(t1+t2+t3+text+t4);
  }
  function nahodne_cislo(rozsah)
  {
    return Math.round(Math.random()*rozsah);
  }
// -->
</script>
</head>
<body>
<script language="JavaScript">
<!--
  rozsah=100;
  vypis("green",4,"nahodne cislo ");
  vypis("black",2,"do "+rozsah+" je: ");
  vypis("red",5,nahodne_cislo(rozsah));
// -->
</script>
</body>
</html>
             | 
           
         
             V uvedenom príklade sa okrem už spomenutých 
          2 funkcií vyskytujú aj matematické funkcie: Math.round() 
          a Math.random(). Funkcia Math.round() zaokrúhľuje čísla 
          na 0 desatinných miest a funkcia Math.random() generuje 
          náhodné čísla v udanom rozsahu. Prehľad ostatných matematických funkcií 
          je uvedený v prílohe. 
               Vo funkcii nahodne_cislo sa nachádza pre nás zatiaľ 
          ešte neznámy príkaz return. Ten spôsobuje vrátenie 
          udanej hodnoty na miesto v skripte odkiaľ bola funkcia volaná. V našom 
          prípade dôjde k odovzdaniu vygenerovaného náhodného čísla do funkcie 
          vypis, ktorá ho následne spracuje (vypíše ho na obrazovku 
          červenou farbou). 
         
        Hádam, hádaš, hádame alebo načo robiť for-y... 
             Na záver si naprogramujeme jednoduchú 
          hru Hádanie čísel. V tejto hre má hráč za úlohu uhádnuť 
          číslo, na ktoré myslí počítač (od 1 do 100). Aby to mal ľahšie, počítač 
          mu bude radiť v štýle hádaj menej/hádaj viac. Hra sa úspešne končí ak 
          hráč uhádne hľadané číslo do 10. pokusov. 
         
           
        
           
            |      Príklad 
              2.3: Hádanie čísel 
                    Okrem už známych konštrukcií 
                if..else sa v tomto skripte nachádza aj príkaz 
                cyklu: for. Jeho funkciou je zabezpečovať cyklické 
                vykonávanie príkazov, ktoré sa nachádzajú vo vnútri jeho hranatých 
                zátvoriek. Príkazy sú vykonávané dovtedy, kým je splnená podmienka 
                udaná pri jeho deklarácii. 
                   Syntax príkazu je následovná: 
               
                for (začiatok;koniec;operácia) 
                  { 
                  ... 
                  } 
               
              začiatok 
                - počiatočná hodnota danej premennej 
                koniec - konečná hodnota danej premennej 
                zapísaná vo forme výrazu (ak výraz platí, cyklus beží) 
                operácia - udáva, že ako sa má daná 
                premenná zmeniť po každom vykonaní cyklu 
                   V našom prípade cyklus 
                for pracuje následovne. Do premennej pokus 
                sa vloží číslo 2. Keďže je to číslo menšie ako 11, vykonajú sa 
                príkazy vo vnútri hranatých zátvoriek. Po ich vykonaní sa hodnota 
                premennej pokus zvýši o 1 (pokus++, viď príloha). 
                Teraz premenná pokus obsahuje číslo 3. Podmienka 
                je opäť splnená (pokus je menší ako 11), a preto 
                sa opäť vykonajú príkazy vo vnútri for. Celé 
                sa to opakuje dovtedy, kým hráč neuhádne dané číslo alebo mu neuplynie 
                desiaty pokus (cyklus for už ďalej nebude pokračovať, 
                pretože prestáva platiť podmienka pokus<11). 
             | 
              | 
             
              <html>
<head>
<title>Hra: Hadanie cisel</title>
<script language="JavaScript">
<!--
  function hadanie_cisel()
  {
    oznam1="Hra: Hadanie cisel\n\n";
    oznam2="Cielom hry je uhadnut cislo na 10 pokusov\n";
    oznam3="Pocitac vam bude radit (menej/viac)\n\n";
    oznam4="Vela stastia!";
    window.alert(oznam1+oznam2+oznam3+oznam4);
                  vymyslene=Math.round(Math.random()*100);
    hadane=window.prompt("Hadaj cislo do 100 (1.pokus)","0");
                  for (pokus=2; pokus<11; pokus++)
    {
                    if (vymyslene==hadane)
      {
        window.alert("Vyhral si na "+(pokus-1)+".pokus");
        return;
      }
                    if (vymyslene<=hadane)
        hadane=window.prompt("Hadaj menej! (pokus "+pokus+".)",hadane);
      else
        hadane=window.prompt("Hadaj viac! (pokus "+pokus+".)",hadane);
                    if (pokus==10) window.alert("Prehral si!");
                    }
    }
// -->
</script>
</head>
<body>
<script language="JavaScript">
<!--
  hadanie_cisel();
// -->
</script>
</body>
</html>
             | 
           
         
        Záverom... 
             A máme tu koniec 2. časti seriálu 
          o programovaní v JavaScripte. Dúfam, že ste aj túto časť zvládli v pohode 
          a že ste sa nestretli s nejakými nejasnosťami. Ak si predsa neviete 
          dať s niečim rady, kľudne mi pošlite e-mail a ja sa vám pokúsim zodpovedať 
          na vaše otázky. Na budúce si rozoberieme problematiku prezentačných 
          okien... 
             Veľa úspechov s JavaScriptom vám želá, 
         
          Rastislav Škultéty 
            webmaster@javascript.sk 
         
         
        PRÍLOHA: Matematické funkcie 
          a aritmetické operátory 
        
           
            | 
               Funkcia (Math.nazov) 
              abs 
                sin, cos, tan 
                asin, acos, atan 
                exp 
                log 
                ceil 
                floor 
                min, max 
                pow 
                round 
                sqrt 
             | 
              | 
            
               Popis funkcie 
              absolútna hodnota 
                štandartné trigonometrické funkcie (argument v radiánoch) 
                inverzné trigonometrické funkcie (vracajú hodnotu v radiánoch) 
                exponenciálna funkcia (základ e) 
                prirodzený logaritmus (základ e) 
                zaokrúhľovanie smerom hore 
                zaokrúhľovanie smerom dole 
                argument obsahuje 2 čísla, funkcia vráti to číslo, ktoré je menšie/väčšie 
                exponenciálna funkcia (prvý argument je základ, druhý exponent) 
                všeobecné zaokrúhľovanie 
                odmocnina 
             | 
           
         
         
         
        
           
            | Symbol
               pokus++ 
                pokus-- 
                pokus+=x 
                pokus-=x 
                pokus*=x 
                pokus/=x 
             | 
              | 
            Popis
               pripočíta k premennej pokus číslo 1 
                odpočíta z premennej pokus číslo 1 
                pripočíta k premennej pokus číslo x 
                odpočíta z premennej pokus číslo x 
                vynásobí pôvodný obsah premennej číslom x 
                vydelí pôvodný obsah premennej číslom x 
             | 
              | 
            To isté ako
               pokus=pokus+1 (pokus+=1) 
                pokus=pokus-1 (pokus-=1) 
                pokus=pokus+x 
                pokus=pokus-x 
                pokus=pokus*x 
                pokus=pokus/x 
             | 
           
         
         
         
         
        NAHORU 
          grafické zpracování (C) 1999 Jakub 
          Holý, časopis Internet, 
          Trade & Leisure Publications 
          Praha 
          obsah, online zpracování (C) 1998 - 1999 Rastislav 
          Škultéty 
          
       |