Podmínky a cykly

Cykly

Pomocí cyklů for a while můžeme vykonávat nějakou činnost opakovaně. Můžeme cyklit buď jeden příkaz, nebo nějaký blok příkazů. Pokud chceme cyklus z nějakého důvodu ukončit, můžeme v bloku uvést příkaz break. Cyklus se tak ukončí a program pokračuje dalšími příkazy. Jinou možností je příkaz continue. Tento příkaz přeruší vykonávání dalších příkazů v těle cyklu a program skočí na začátek cyklu.

For

Cyklus for provádí příkazy (instrukce) v těle cyklu tak dlouho, dokud platí podmínka.
Syntaxe: for var = expr, instruction, ... , instruction, end
for var = expr do instruction, ... , instruction, end
kde var je proměnná (variable), expr je výraz (expression) a instruction jsou jednotlivé instrukce (tělo cyklu). Celý cyklus je ukončen příkazem end. Příkaz do se může vynechat, slouží pouze pro přehlednost celého cyklu.

Příklad 7.1.A - for cyklus
 // v tomto programu je instrukce mezi do a end provedena 5krát
 for n = 1:5 do
   disp('Scilab')
 end

 Scilab

 Scilab

 Scilab

 Scilab

 Scilab  


 // pro k od 1 do 4 se vypočítá x = x*k
 x = 1;
 for k = 1:4 do
   x = x*k
 end
 
 x  =
    1.
 x  =
    2.
 x  =
    6.
 x  =
    24. 


While

Podmínka se vyhodnocuje před provedením cyklu, pokud platí, cyklus se provede. Pokud neplatí, cyklus se ukončí.
Syntaxe: while expr ,instructions,...[,else instructions], end
while expr do instructions,...[,else instructions], end
expr je výraz (expression), instructions jsou instrukce, end značí konec cyklu while. Příkaz do se opět může vynechat, slouží pouze pro přehlednost celého cyklu.
Ve formě while do else end se instrukce umístěná mezi else a end provede pouze jednou při ukončení smyčky.

Příklad 7.1.B - cyklus while
 // program vyhodnocuje, dokud je n < 2, pak vypisuje slovo Scilab
 n = 0;
 while n < 2  do
  disp ('Scilab');
  n =  n + 0.5;
 end

 Scilab

 Scilab

 Scilab

 Scilab    


 // instrukce za else se provede pouze jednou při ukončení smyčky 
 n = 0;
 while n < 2 then
  disp ('Ahoj');
  n =  n + 0.5;
 else
  disp ('Konec');
 end;

 Ahoj

 Ahoj

 Ahoj

 Ahoj

 Konec  



Podmínky



If - then - end

Syntaxe: if expr1 then statements
elseif expr2 then statements
....
else statements
end
kde expr je logický výraz, statements jsou příkazy (instrukce).
If vyhodnotí logický výraz a pokud je pravdivý, provede následnou skupinu příkazů (statements). Podmínky elseif a else jsou volitelná položka. Vyhodnocování podmínek probíhá do té doby, než se některá vyhodnotí jako pravdivá (true). Další podmínky se již nevyhodnocují. Pokud se žádná podmínka nevyhodnotí jako true, pak se provede tělo bloku za else. Else se umisťuje vždy na konec.

Příklad 7.1.C - příkaz if - else
 // program vyhodnotí, jeslti n je nebo neni nula
 n = 1;
 if n == 0 then
   disp ( 'Je nula');
 else 
   disp ('Není nula');
 end;

 Není nula
 
 
 // program vyhodnotí, jeslti je n kladné, záporné nebo nula
 n = -1;
 if n < 0 then
   disp ('Záporné');
 elseif n = 0 then
   disp ('Nula');
 else
   disp ('Kladné');
 end;
 
 Záporné


Select - case

Syntaxe: select expr,
case expr1 then instructions1,
case expr2 then instructions2,
...
case exprn then instructionsn,
[else instructions],
end
expr je výraz (expression), instructions jsou instrukce, end značí konec. Na základě výrazu za slovem select přeskočí program na návěstí case se stejnou hodnotou jakou má výraz za select a pokračuje vykonáváním příkazů za ním. Přepínač select může obsahovat else, na které skočí tehdy, když výraz za select neodpovídá žádným návěstím case.

Příklad 7.1.D - select - case
 // Program vyhodnotí n a vypíše výsledek
 n = -1;
 select n
  case -1.0  disp ('Záporná jednička');
  case  0.0  disp ('Nula');
  case  1.0  disp ('Kladná jednička');
  else       disp ('Jiné číslo');
 end;

 Záporná jednička