Laboratorium 8
Instrukcje while i repeat
Instrukcja while (dopóki)
while WB do Instrukcja;
Działanie instrukcji polega na powtarzaniu wykonywania instrukcji dopóki wyrażenie logiczne WB posiada wartość true. Wartość ta jest sprawdzana każdorazowo przed wykonaniem instrukcji.
Istnieje zatem konieczność wykonania w instrukcji (także złożonej) operacji wpływającej na wartość wyrażenia logicznego. Jeśli błędny warunek spowoduje nieskończoną pętlę możemy przerwać program kombinacją klawiszy CTRL+Break.
Schemat blokowy instrukcji WHILE
Przykładowy fragment programu oblicza sumę liczb parzystych od 2 do 100:
i := 2;
suma := 0;
while i <= 100 do
begin
suma := suma + i;
i := i + 2;
end;
Instrukcja repeat / until (powtarzaj .. aż)
repeat
ciąg instrukcji
until WB ;
Ciąg instrukcji wewnętrznych jest powtarzany dopóty, dopóki wyrażenie logiczne WB posiada wartość false, zmiana na true powoduje zakończenie pętli. Sprawdzanie warunku odbywa się na końcu pętli, stąd jest ona conajmniej raz wykonywana. Podobnie jak w iteracji while jedna z instrukcji powinna mieć wpływ na wartość wyrażenia logicznego.
Schemat blokowy instrukcji REPEAT / UNTIL
Przykładowy fragment programu oblicza sumę liczb parzystych od 2 do 100:
i := 2;
suma := 0;
repeat
suma:=suma+i;
i:=i+2;
until i>100;
writeln(suma);
end.
Program p8;
Uses crt;
Var i:integer;
Begin
Writeln(`Wprowadz liczbe ujemną');
Readln(i);
While i>0 do
Begin
Write(`to nie jest liczba ujemna, popraw');
Readln(i)
End;
Writeln(`wprowadziłeś liczbe ',i)
Repeat until keypressed;
End.
Program p9;
{wystawianie stopni}
Uses crt;
Var punkty:integer;
Begin
Repeat
Writeln (`podaj liczbe punktów');
Readln(punkty);
Case punkty of
: writeln(`koniec danych');
1..20 : writeln(`niedostateczny');
21..30 : writeln(`dostateczny');
31..40 :writeln (`dobry');
41..50 :writeln(`bardzo dobry')
else writeln(` blad danych')
end; {case}
until punkty=0;
writeln(`naciśnij dowolny klawisz');
repeat until keypressd;
end.
W programach została użyta funkcja logiczna keypressed z modułu crt. Funkcja ta ma standardowo wartość false, a po naciśnięciu dowolnego klawisza przybiera wartość true. Instrukcja repeat until keypressed jest iteracją powodującą zatrzymanie ekranu użytkownika do momentu naciśnięcia dowolnego klawisza.
Inną przydatna procedura jest procedura break , która powoduje wcześniejsze zakończenie bieżącej pętli.
Instrukcje iteracyjne tego samego i różnego typu mogą się zagnieżdżać.
Programy do samodzielnego wykonania
Zadanie 1.
Napisać program, który dla pobranych od użytkownika ciągu liczb a1, a2,...,an zakończonych liczbą 0 ( zero kończy wprowadzanie danych) wyznaczy i wyświetli element minimalny oraz jego indeks.
Zadanie 2
Napisać program, który wczytuje z klawiatury liczby rzeczywiste do momentu, gdy ich suma przekroczy wartość 1000, wylicza i wyświetla sumę wprowadzonych liczb i ile liczb wczytano.
Zadanie 3
Zmodyfikować program obliczający pola figur opisany w zadaniu 5 z laboratorium 3 tak, aby po obliczeniu pola figury pytał użytkownika czy chce obliczyć pole innej figury i przy odpowiedzi tak obliczał kolejne pole a przy odpowiedzi nie kończył program.
Zadanie 4.
Napisz program, który wprowadza z klawiatury dwie liczby: liczbę n (0<n<20) - rozmiar tablicy kwadratowej i liczbę k (0<k<100) a następnie:
wypełnia tablicę liczbami losowymi z przedziału (0,100) aż do momentu, gdy zostanie wylosowana liczba k.
gdy liczba k zostanie wylosowana przerywa wypełnianie tablicy i wyświetla całą tablicę
PODSTAWY PROGRAMOWANIA
TEMAT 8: Iteracje - c.d. Instrukcje while i repeat
------------------------------------------------------------------------------------------------------------------------------------------------
3/3