Instrukcje sterujące w Pascalu
Instrukcje warunkowe:
2. Instrukcja wyboru:
3. Instrukcje iteracyjne:
pętla FOR TO
UWAGA:
Zmienna sterująca pętli for MUSI być typu porządkowego !
Przykład:
{ wydrukowanie całego alfabetu }
Uses Crt;
Var
L : Char;
begin
for L := 'A' to 'Z' do
begin
write( L:2 );
end;
readkey;
end.pętla FOR DOWNTO
UWAGA:
Zmienna sterująca pętli for MUSI być typu porządkowego !
Przykład:
{ odliczanie przed startem }
Uses Crt;
Var
I : Byte;
begin
for I := 3 downto 0 do
begin
write( I:2 );
delay( 1000 );
end;
writeln( ' START ' );
readkey;
end.
pętla WHILE
„Dopóki warunek jest spełniony wykonuj instrukcje”
UWAGA:
W pętli while warunek jest sprawdzany PRZED wykonaniem instrukcji.
W pętli while instrukcje mogą się nie wykonać ani razu.
Przykład:
{ sumowanie liczb generowanych losowo }
Uses Crt;
Var
Suma, Liczba, N : Word;
begin
Randomize; { zainicjowanie generatora liczb losowych }
Suma := 0;
N := 0;
while Suma < 1000 do
begin
Liczba := Random( 10 ); { losowanie liczby od 0 do 9 }
write( Liczba:4 );
Suma := Suma + Liczba;
Inc( N ); { zwiększenie zmiennej N o 1 }
end;
writeln( ' Wylosowano ', N, ' liczb. ' );
readkey;
end.
pętla REPEAT UNTIL
„Powtarzaj instrukcje aż zostanie spełniony warunek”
UWAGA:
W pętli repeat until warunek jest sprawdzany PO wykonaniu instrukcji.
W pętli repeat until instrukcje MUSZĄ się wykonać co najmniej raz..
Przykład:
{ czekanie na naciśnięcie klawisza 'K' }
Uses Crt;
Var
Zn : Char;
begin
repeat
Zn := Upcase( ReadKey ); {czytanie znaku i zamiana na duże litery}
writeln( Zn:2 );
until Zn = 'K' ;
writeln( ' Koniec ' );
readkey;
end.
procedura CONTINUE
UWAGA:
Procedura continue MUSI być użyta wewnątrz pętli for, while lub repeat.
Przykład:
Uses Crt; { sumowanie liczb generowanych losowo }
Var
Suma, Liczba, N : Word;
begin
Randomize; { zainicjowanie generatora liczb losowych }
Suma := 0;
N := 0;
while Suma < 1000 do
begin
Liczba := Random( 10 ); { losowanie liczby od 0 do 9 }
if Liczba mod 2 = 0 then continue; {pomijaj parzyste liczby }
write( Liczba:4 );
Suma := Suma + Liczba;
Inc( N ); { zwiększenie zmiennej N o 1 }
end;
writeln( ' Wylosowano ', N, ' liczb. ' );
readkey;
end.
procedura BREAK
UWAGA:
Procedura break MUSI być użyta wewnątrz pętli for, while lub repeat.
Przykład:
Uses Crt; { sumowanie liczb generowanych losowo }
Var
Suma, Liczba, N : Word;
begin
Randomize; { zainicjowanie generatora liczb losowych }
Suma := 0;
N := 0;
while Suma < 1000 do
begin
Liczba := Random( 10 ); { losowanie liczby od 0 do 9 }
if Liczba = 0 then break; { kończymy sumowanie po }
{ wylosowaniu zera }
write( Liczba:4 );
Suma := Suma + Liczba;
Inc( N ); { zwiększenie zmiennej N o 1 }
end;
writeln( ' Wylosowano ', N, ' liczb. ' );
readkey;
end.
Przykład 1 { drukowanie na ekranie poziomej kreski o zadanej długości }
Uses Crt;
var
i,dlugosc:integer;
begin
write('Podaj zadana dlugosc kreski: ');
readln(dlugosc);
clrscr; { za pomocą pętli REPEAT }
writeln(' Za pomoca petli REAPAT');
i:=1;
repeat
write('-');
i:=i+1;
until i>dlugosc;
readkey;
clrscr; { za pomocą pętli WHILE }
writeln(' Za pomoca petli WHILE');
i:=1;
while i<=dlugosc do
begin
write('-');
i:=i+1;
end;
readkey;
clrscr; { za pomocą pętli FOR }
writeln(' Za pomoca petli FOR');
for i:=1 to dlugosc do
write('-');
readkey;
end.
Przykład 2 { odgadywanie wartości wylosowanej liczby z przedziału 1-6 }
var
liczba_losowa,liczba_wczytana:integer;
begin
randomize;
liczba_losowa:=1+random(6); { losowanie liczby }
repeat { za pomocą pętli REPEAT }
write('Odgadnij wylosowana liczbe: ');
readln(liczba_wczytana);
until liczba_wczytana=liczba_losowa;
writeln('Wylosowana liczba to: ',liczba_losowa);
writeln;
{ za pomocą pętli WHILE }
liczba_wczytana:=0;
while liczba_wczytana<>liczba_losowa do
begin
write('Odgadnij wylosowana liczbe: ');
readln(liczba_wczytana);
end;
write('Wylosowana liczba to: ',liczba_losowa);
end.
Przykład 3 { policzenie sumy N podanych liczb }
var
i,N:integer;
liczba,suma:real;
begin
write('Podaj ile liczb chcesz zsumowac:');
readln(N);
suma:=0; { za pomocą pętli FOR }
for i:=1 to N do
begin
write('Podaj ',i,' liczbe: ');
readln(liczba);
suma:=suma+liczba;
end;
writeln('Suma podanych liczb wynosi: ', suma );
end.
Przykład 4 { sumowanie podawanych liczb aż ich wartość przekroczy granicę }
var
liczba,suma,granica:real;
begin
write('Podaj wartosc graniczna sumowania:');
readln(granica);
suma:=0; { za pomocą pętli REPEAT }
repeat
write('Podaj liczbe: ');
readln(liczba);
suma:=suma+liczba;
until suma>granica;
writeln('Suma podanych liczb przekroczyla ',granica,
' i wynosi: ', suma );
end.
Przykład 5 { sumowanie liczb naturalnych aż ich wartość przekroczy granicę }
var
i:integer;
liczba,suma,granica:real;
begin
write('Podaj wartosc graniczna sumowania:');
readln(granica);
suma:=0; { za pomocą pętli WHILE }
i:=0;
while suma<=granica do
begin
suma:=suma+i;
i:=i+1;
end;
writeln('Suma podanych liczb wynosi: ', suma );
end.
Przykład 6 { oczekiwanie na naciśnięcie jednego z zadanych klawiszy }
Uses Crt;
var
znak:char;
begin
write('podaj znak N lub T: ');
repeat { za pomocą pętli REPEAT }
znak:=readkey;
znak:=UpCase(znak);
if (znak='T')or(znak='N') then
break
else
write(#7);
until FALSE;
writeln(` Dziekuje !');
write('podaj znak N lub T: ');
while TRUE do { za pomocą pętli WHILE }
begin
znak:=UpCase(readkey);
if (znak='T')or(znak='N') then
break
else
write(#7);
end;
writeln(` Dziekuje !');
end.
Przykład 7 { wyznaczenie wartości maksimum z podanych 10 liczb }
Uses Crt;
var
i:integer;
liczba,maximum:real;
begin
maximum:=-1.7e38; {najmniejsza wartość liczby real}
for i:=1 to 10 do
begin
write('Podaj ',i,' liczbe: ');
readln(liczba);
if liczba>maximum then
maximum:=liczba;
end;
write('Najwieksza wartosc wynosi: ',maximum);
readkey;
end.
Przykład 8 { wyznaczenie wartości i pozycji minimum z podanych liczb }
var
i,pozycja,N:integer;
liczba,minimum:real;
begin
write('Podaj ile liczb chcesz sprawdzic:');
readln(N);
minimum:=+1.7e38; {najwieksza wartość liczby real}
pozycja:=-1;
i:=1;
while i<=N do
begin
write('Podaj ',i,' liczbe: ');
readln(liczba);
if liczba<minimum then
begin
minimum:=liczba;
pozycja:=i;
end;
i:=i+1;
end;
writeln('Najmniejsza byla ',pozycja,
' liczba o wartosci: ',minimum);
end.
Przykład 9 { przykład realizacji wyboru opcji MENU programu }
Uses Crt;
var
wybor:char;
begin
repeat
clrscr;
writeln(' MENU PROGRAMU');
writeln(' 1 - Wczytanie danych z klawiatury');
writeln(' 2 - Obliczenia');
writeln(' 3 - Zapis wynikow do pliku');
writeln(' 4 - Wyswietlenie danych na ekranie');
writeln(' ESC - Koniec programu');
wybor:=readkey;
case wybor of
'1': { Procedura_wczytywania_z_klawiatury };
'2': { Procedura_obliczen };
'3': { Procedura_zapisu_do_pliku };
'4': { Procedura_wyswietlania_na_ekranie };
end;
until wybor=#27; { #27 -> klawisz ESC }
end.
Przykład 10 { rysowanie na ekranie ramki o zadanych współrzędnych }
Uses Crt;
var
x0,y0,x1,y1:byte;
i:byte;
begin
writeln(`Podaj polozenie lewego gornego naroznika');
write(` X='); readln(x0);
write(` Y='); readln(y0);
writeln(`Podaj polozenie prawego dolnego naroznika');
write(` X='); readln(x1);
write(` Y='); readln(y1);
clrscr;
gotoxy( x0,y0 ); {rysowanie gornej krawedzi}
for i:=x0 to x1 do
write('-');
gotoxy( x0,y1 ); {rysowanie dolnej krawedzi}
for i:=x0 to x1 do
write('-');
for i:=y0 to y1 do {rysowanie lewej krawedzi}
begin
gotoxy( x0,i );
write('|');
end;
for i:=y0 to y1 do {rysowanie prawej krawedzi}
begin
gotoxy( x1,i );
write('|');
end;
readkey;
end.
− 1 −