VOBSAH           DalÓÉ           PŇedeÓlej           info           mod                     prefsy
logo

×   AMIGA E - V. díl   ×

Pátý díl přináší do placu zcela neočekávaně (:-)) některé řídící struktury, které lze v éčku zahlídnout. Konkrétně to jsou FOR-ENDFOR, WHILE-ENDWHILE, REPEAT-UNTIL, LOOP-ENDLOOP a SELECT-CASE-ENDSELECT.


Příkaz for (FOR)
FOR, TO, STEP, DO, ENDFOR
 
syntaxe: FOR <proměnná> := <výraz> TO <výraz> STEP <krok> DO <příkaz>
nebo: FOR <proměnná> := <výraz> TO <výraz> STEP <krok>
      <příkazy>
ENDFOR
 
Jak je vidět, existuje v éčku dvojí možnost zápisu příkazu (cyklu) for. První se používá pro jednořádkové příkazy a druhá pro složitější kousky rozvedené na více řádkách. <krok> může být jakákoliv konstanta (kladná nebo záporná) kromě nuly (to by pak for neměl žádný smysl :-)), a je zcela dobrovolný (STEP se pak samozřejmě také musí vynechat!).

Příklad:

FOR a:=1 TO 10 DO WriteF('\d\n',a)   -> vypíše čísla 0 až 10 na samostatných
  -> řádcích
 
Tělo příkazu FOR může obsahovat příkaz EXIT s následující syntaxí:
 
      EXIT <logický výraz>
 
Který umožní opuštění smyčky, je-li <log. výr.> pravdivý (nenulový = TRUE).


 
   

Příkaz while (WHILE)


WHILE, DO, ENDWHILE
 
syntaxe: WHILE <výraz> DO <příkaz>
nebo: WHILE <výraz>
    <příkazy>
ENDWHILE
 
Opět (jako vždy) jsou dvě možnosti zápisu. První pro jednoduché a druhá pro složitější, víceřádkové, příkazy. <příkaz(y)> je prováděn dokud je <výraz> pravdivý (nenulový).
 
Cyklus WHILE může samozřejmě také obsahovat příkaz EXIT, stejně jako FOR.


 
   

Příkaz repeat (REPEAT)


REPEAT, UNTIL
 
syntaxe: REPEAT
    [<příkaz(y)>]
UNTIL <výraz>
 
REPEAT-UNTIL smyčka je prováděna, dokud není <výraz> pravdivý (nenulový, TRUE).
 
Příklad:
 
REPEAT       WriteF('Chcete opravdu, ale opravdu skončit tento program?\n')
      ReadStr(stdout,s)
UNTIL StrCmp(s,'ano prosím!')


 
  

Příkaz loop (LOOP)


LOOP, ENDLOOP
 
syntaxe: LOOP
    <příkazy>
ENDLOOP
 
Chcete nekonečnou syčku? Máte ji mít!


 
   

Příkaz select-case (SELECT)


SELECT, CASE, DEFAULT, ENDSELECT
 
syntaxe: SELECT <proměnná>
[ CASE <výraz nebo konstanta>
    <příkaz(y)> ]
[ CASE <výraz>
    <příkaz(y)> ]     /* CASE bloků může být kolik chcete */
[ DEFAULT
    <příkaz(y)> ]
ENDSELECT
 
Vytvoří klasický select-case blok. Různé výrazy (<výraz>) budou porovnávány podle proměnné <proměnná> a pouze první z vyhovujících bloků se provede (první blok jehož výraz bude pro danou hodnotu proměnné pravdivý = nenulový). Nebude-li nic vyhovovat, bude proveden blok DEFAULT, kterýžto jest zcela volitelný, a když jej neuvedete, program bude pokračovat až za ENDSELECTem.
 
Příklad:
 
SELECT znak
    CASE 10
        WriteF('Yeah, to musí být řádkoodděloznák\n')
    CASE 9
        WriteF('Ehmm, že by tabulátor!\n')
    DEFAULT
        WriteF('Co by to jako mělo bejt: "\c" ?\n', znak)
ENDSELECT

Další možností, která je v éčku u příkazu SELECT je zadání rozsahu hodnot, podle kterého se pak provádí vlastní větvení. Za jednotlivými CASE se pak neuvádí rozhodovací výraz, ale seznam konstant (jejichš hodnoty jsou v mezích rozsahu)a podle nich se pak vybírají příslušné větve.

Formát zápisu je trošku odlišný od původního:
 
            SELECT <max. rozsah> OF <výraz>
            CASE <konstanta>, ..., <konstantan> -> vyjmenování
nebo CASE <konstanta1> TO <konstanta2> -> interval

Příklad:
 
SELECT 128 OF FgetC(vstup)     ->FgetC je z dos.library v36+ ;bufferovaný čtení znaku
    CASE "\n","\b"
        WriteF('řádkování\n')
    CASE "\t"," "
        WriteF('bílý znak\n')
    CASE "0" TO "9"
        WriteF('číslice\n')
    CASE "A" TO "Z", "a" TO "z", "_"
        WriteF('alfa-znaky\n')
    DEFAULT
        WriteF('nějaký další znak\n')
ENDSELECT

Větev DEFAULT se provede jak tehdy, když žádná CASE nevyhovuje, tak i když hodnota vybočí ze zadaného intervalu (v našem případě vše >= 128 a < 0).


 Pro dnešek vše. Koukněte na AE-Prakticky a čau!                
E.N.I.F.          

 
__________________________________________  
.
 
Další ve frontě:
 
KodeŇina   AMIGA E - Prakticky


VokeCáVKy HarDWare warez WorkBenchoviny DeMa Gfx&Muzika PaŇBY VokecÁvky II
Vokecávky Hardware Warez WBoviny Dema Gfx&Muz Pařby Vokecávky 2