Ver. 1.0 Beta, Nie masz kompilatora? Teraz możesz pisać skrypty ONLINE! Wersja podstawowa -nie zawiera wszystkich poleceń Pascala. Służy do nauki podstaw

Pętla: for to do. Programowanie pętli. Przykłady w Turbo Pascalu i Delphi

Pascal

Wsteczwstecz Warunki, if... then... else...
W góręw górę Podstawy Pascala
Dalejdalej Rekordy i wskaźniki

Pętla for … to… do


 

Gdyby zdarzyło Ci się kiedyś zasnąć w autobusie komunikacji miejskiej -mógłbyś się zaniepokoić. Nie byłby to jednak wielki problem, gdyby okazało się, że masz wystarczająco dużo czasu, nie złapał Cię kontroler biletów i co najważniejsze minęło akurat tyle czasu, że znowu zbliżasz się do właściwego przystanku.


Ten dość abstrakcyjny przykład pokazuje działanie pętli. Tak jak autobus jeździ określoną trasą przez wszystkie przystanki, tak pętla zaczyna się w określonym miejscu i wykonuje po kolei wszystkie zaplanowane instrukcje. Tak samo jak autobus pokonuje całą trasę wielokrotnie, tak samo pętla powraca do początku wielokrotnie. Gdy wykonana zostanie ostatnia instrukcja zaplanowana w tym okresie pętli, program momentalnie przeskakuje do jej początku.


Pętla wykonuje wielokrotnie jakąś operację. Przypuśćmy że chcesz aby Twój program wypisał liczby od 1 do 1000. Co zrobisz? Czy będzie Ci się chciało pisać:



begin
 WriteLn(‘1’);
 WriteLn(‘2’);
 WriteLn(‘3’);
 WriteLn(‘4’);
 {...}
 WriteLn(‘1000’);
end.


Zajęłoby to na pewno dużo czasu. Nie tylko czasu, ale nie spełniałoby wszystkich oczekiwań programisty. Np. gdy chcesz aby program wykonał jakąś czynność określoną ilość razy, którą poda użytkownik nie byłbyś w stanie określić kiedy ma nastąpić koniec.


Jednym z prostszych rozwiązań jest wykonywanie kodu aż do momentu spełnienia przez program warunku.



label petla;
var i : Integer;
begin
 i := 0;
 petla:
   Inc(i); {Inc czyli i:=i+1}
   WriteLn(i);
 if i<1000 then goto petla;
end.

Mniej więcej tak właśnie wyglądają pętle. Na szczęście nie trzeba pisać aż tyle, żeby jakąś oprogramować. Powyższy przykład pokazuje jak samemu można napisać pętlę. Kod pętli zazwyczaj polega właśnie na takiej idei opisanej poniżej:



Początek pętli:
Wykonaj jakieś zadanie (np. wyświetl jakiś napis)
Zwiększ zmienną i o 1 (i := i + 1)
Sprawdź czy i jest mniejsze niż maksymalna wartość (np. 1000)
Jeśli mniejsze skocz z powrotem do początku pętli
Jeśli nie, wykonuj kod dalej...


Ideą większości pętli jest możliwość sprawdzenia, który raz się ona powtarza. Zazwyczaj pętla udostępnia pewną zmienną, która za każdym razem jest automatycznie zwiększana o 1 albo zmniejszana. W programie będzie Ci potrzebne częste korzystanie z tej zmiennej.


Pętle pozwalają rozwiązać problem wykonania dowolnego zadania z dowolną liczbą powtórzeń. Dzięki nim wpisujesz tylko liczbę powtórzeń i w taki sposób układasz instrukcje aby wiedziały, który raz się wykonują. Zobacz przykład, który całkowicie poradzi sobie z problemem liczenia od 1 do 1000.




var i:Integer;
begin
for i:=1 to 1000 do
  WriteLn(i);
end.

…I wszystko. Całość zajmuje tylko 5 lini. Wewnątrz pętli masz dostęp do zmiennej „i”, która po kolei przyjmuje wartości od 1 do 1000. Po zwiększeniu wartości zmiennej „i” pętla ta wykonuje instrukcję WriteLn(i), a więc po kolei WriteLn(1), WriteLn(2), WriteLn(3)… Oczywiście jeśli chcesz w pętli użyć więcej instrukcji niż tylko WriteLn musisz poinformować o tym komputer, bo niestety sam się nie domyśli. Możesz użyć BEGIN i END;



var i:Integer;
begin
for i:=1 to 1000 do
 begin
  WriteLn(i);
  {Jeszcze inne instrukcje}
 end;
end.