Zpět na seznam článků     Číst komentáře (0)     Verze pro tisk

Pascal pro začátečníky 6 - Cykly

Autor: Kub@z   
13.4.2004

Co je to cyklus? Cyklus je něco pořád dokola se opakujícího (lat. cyklus = koloběh (nebo tak něco :)). Takže cyklus v Pascalu je...


Co je to cyklus? Cyklus je něco pořád dokola se opakujícího (lat. cyklus = koloběh (nebo tak něco :)). Takže cyklus v Pascalu je nějaká část kódu, která se bude vykonávat pořád dokola. Pascal obsahuje 3 druhy cyklů:

for prom := ? to ? do něco
while podmínka do něco
repeat until podmínka


Cyklus FOR

Jak vidíte, zápis cyklu for vypadá trochu zmateně :). Předvedu na příkladu:

var i: integer;
begin
for i := 1 to 10 do writeln(i);
end.

Pokud tento prográmek spustíte, vypíše se vám:

1
2
3

10

Cyklus for funguje tak, že přiřadí do proměnné hodnotu, vykoná příkaz který je za "do", zvedne hodnotu proměnné o 1 a znovu vykoná příkaz za do. Takto se to pořád opakuje, dokud je hodnota proměnné (v našem případě "i") menší než hodnota uvedená za "to". Pokud chcete, aby šel cyklus "shora dolů", použijte místo "to" "downto". Příklad:

var i: integer;
begin
for i := 10 downto 1 do writeln(i);
end.

Vypíše:

10
9
8

1


Cyklus WHILE

Cyklus while, funguje jako normální podmínka "if", s tím rozdílem, že místo "then" se uvádí "do" a příkaz za "do" se provádí pořád opakovaně, dokud podmínka platí. Příklad:

var i: integer;
begin
i := 1;
while i < 50 do begin (* dokud je "i" menší než 50 *)
writeln(i);
i := i + 5;
 end;
end.

Chápete? Doufám že jo :).

Cyklus REPEAT UNTIL

Cyklus "repeat until podmínka" funguje na stejném principu, jako cyklus while s tím rozdílem, že se opakuje do té doby, dokud podmínka uvedená za until NEPLATÍ:

var i: integer;
begin
i := 1;
repeat
writeln(i);
i := i + 5;
until i > 50; (* dokud "i" není větší než 50 *)
end.

Teď si možná říkáte, k čemu existují 2 cykly, se stejnou funkcí, lišící se pouze zadáním podmínky? Rozdíl je v tom, že cyklus "repeat" se vždy vykoná alespoň jednou, kdežto cyklus "while" se vykoná pouze pokud na začátku podmínka platí:

var i: integer;
begin
i := 1;
repeat
writeln('Until probehlo');
until i = 1;
while i <> 1 do
writeln('While probehlo');
end.

Tento program vypíše pouze "Until probehlo".


V souvislosti s cykly se musím ještě zmínit o příkazu "break", který běh cyklu ukončí. Př.:

var i: integer;
begin
for i := 1 to 10 do begin
 if i = 6 then break; (* když je i 6, cyklus se ukončí *)
 writeln(i);
 end;
end.

A opříkazu continue, který poskočí k dalšímu průběhu cyklu:

var i: integer;
begin
for i := 1 to 10 do begin
 if i = 6 then continue; (* když je i 6, cyklus se přeskočí *)
 writeln(i);
 end;
end.

Tento cyklus vypíše čísla od 1 do 10 kromě šestky.

Kub@z

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.88/42

1  2  3  4  5    
(známkování jako ve škole)