While
Juhas
Instrukcja While ... Do (nazywana petlą "dopóki")
Zastosowanie pętli while ... do jest wykorzystywane w powtarzajacych się instrukcjach. W instrukcji while ... do warunek jest sprawdzany przed jej wykonaniem, a działanie kończy się w przypadku zwrócenia fałszu (czyli False) przez porównywane wyrażenie.
Postać instrukcji przedstawia się następująco:
while {Warunek do spełnienia} do
{ instrukcje }
Napiszmy prosty program prezentujący zastosowanie tej pętli, którego działanie polega na pobieraniu hasła dostępu przedstawiony jest poniżej. Jeżeli hasło będzie błędne, pętla zostanie wykonana po raz drugi; jeżeli hasło będzie poprawne ? nastąpi zakończenie działania programu:
program WhileLoop;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Password : String; // deklaracja zmiennej
begin
while Password <> 'delphi' do
begin
Writeln('Podaj hasło...');
Readln(Password);
end;
Writeln('Hasło poprawne!');
Readln;
end.
Omówię pokrótce działanie tego programu. Na samym początku umieszczamy warunek:
while Password <> 'delphi' do
Za jego pomocą sprawdzamy, czy zmienna Password jest różna od delphi
? jeżeli tak, następuje wykonanie instrukcji pętli znajdującej się w bloku Begin..End. Jeżeli wpisane hasło jest niepoprawne, wykonywana zostaje kolejna iteracja. W przeciwnym przypadku pętla kończy swoje działanie.
Należy pamiętać, że pętla while nie zwiększa tzw. licznika, jak to robi pętla For. Musimy o tym pamiętać sami.
Po co stosować pętle while?
- Pętla while (w odróżnieniu od for) sprawdza warunek logiczny. Czyli jeśli warunek jest prawdziwy, to wykonaj iterację
- Pętla while (w odróżnieniu od Repeat..Until) sprawdza warunek na samym początku, wniosek z tego taki, że nie zawsze się wykona, np:
begin
//...jakiś kod
zmienna := true;
//...jakiś inny kod
while zmienna=false do
begin
if a<>b then a:=a+1;
if a=50 then zmienna:=true;
end;
end;
W połączeniu z pętla while możemy stosować operatory logiczne, jak np. Not:
while not {warunek} do { instrukcje }
Zobacz też:
Hmm... Trochę niezbyt trafiony ten pierwszy przykład. W takiej sytuacji najlepszą do zastosowania jest pętla for. Przykład powinien być tak skonstruowany, by przedstawiać sytuację, w której pętla while jest najwygodniejsza, a nie taki przykład na siłę.
P.S. Od czego są linki? Po to Coyote oparty jest o system w stylu Wiki, by każde słowo kluczowe, jakie tylko się da było linkiem do odpowiedniego arta (nawet, jeśli w chwili obecnej nie istnieje!).