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