Turbo pascal – instrukcje warunkowe, iteracyjne,… Opracowała: Elżbieta Fedko
Instrukcje warunkowe: W zależności od warunku umieszczonego w „rombie”, wykonuje wyznaczoną instrukcje. If warunek then instrukcja_1 else instrukcja_2
Przykład instrukcji warunkowej w Turbo Pascalu: USES CRT; VAR liczba:longint; BEGIN clrscr; writeln('Wprowadź jakąś liczbę‘, liczba); read(liczba); IF liczba=1000 THEN writeln('Brawo! Podałeś liczbę tysiąc!') ELSE halt; readln; END.
Zagnieżdżone instrukcje wyboru: Instrukcja wielokrotnego wyboru:
Przykład instrukcji zagnieżdżonej case…of USES CRT; VAR liczba:byte; BEGIN clrscr; writeln(' Wprowadź liczbę od 1 do 20'); read(liczba); CASE liczba OF 1 : writeln('Liczba ta dzieli się przez 1'); 2 : writeln('Liczba ta dzieli się przez 2 i 1'); 3 : writeln('Liczba ta dzieli się przez 1 i 3'); 4 : writeln('Liczba ta dzieli się przez 1,2 i 4'); 5 : writeln('Liczba ta dzieli się przez 1 i 5'); 6 : writeln('Liczba ta dzieli się przez 1,2,3 i 6'); 7 : writeln('Liczba ta dzieli się przez 1 i 7'); 8 : writeln('Liczba ta dzieli się przez 1,2,4 i 8'); 9 : writeln('Liczba ta dzieli się przez 1,3 i 9'); 10 : writeln('Liczba ta dzieli się przez 1,2,5 i 10'); 11 : writeln('Liczba ta dzieli się przez 1 i 11'); 12 : writeln('Liczba ta dzieli się przez 1,2,4,6 i 12'); 13 : writeln('Liczba ta dzieli się przez 1 i 13'); 14 : writeln('Liczba ta dzieli się przez 1,2,7 i 14'); 15 : writeln('Liczba ta dzieli się przez 1,3,5 i 15'); 16 : writeln('Liczba ta dzieli się przez 1,2,4,8 i 16'); 17 : writeln('Liczba ta dzieli się przez 1 i 17'); 18 : writeln('Liczba ta dzieli się przez 1,2,6,9 i 18'); 19 : writeln('Liczba ta dzieli się przez 1 i 19'); 20 : writeln('Liczba ta dzieli się przez 1,2,4,5,10 i 20'); end; readln; END.
Instrukcje iteracyjne Instrukcje wykonywane w pętli. Wyróżniamy 3 typy pętli: iteracyjną; z przyzwoleniem; na dokładność.
For zmienna:=wartość to wartość końcowa Pętla iteracyjna: Wielokrotne przetwarzanie jednej operacji, lub grupy operacji oznaczonych symbolicznie jako instrukcja. Pętla pozwala na wykonanie pętli tyle razy ile wymaga twórca algorytmu określając wartość początkową i końcową licznika oraz krok jego zwiększania. Pętle zapisujemy jako For zmienna:=wartość to wartość końcowa do instrukcja lub for…downto…do
Przykład pętli iteracyjnej:
Pętla z przyzwoleniem: Pętla "WHILE..DO", najpierw sprawdza warunek, a potem dopiero, (jeżeli jest on spełniony) się wykonuje. Dlatego właśnie w tej pętli zaistnieć może sytuacja, że pętla w ogóle się nie włączy, gdy warunek nie będzie spełniony. Poza tym, program działa tak: dopóki warunek jest spełniony, wykonuj. Po słowie "WHILE" zawsze jest warunek. Potem następuje słowo "DO" i wpisujemy polecenia pętli. Po słowie "DO", musimy zastosować "BEGIN". Zatem wszystkie polecenia pętli muszą być ujęte w oddzielny blok.
Przykład pętli z przyzwoleniem:
Pętla na dokładność: Wszystko, co będzie między znacznikami "REPEAT" i "UNTIL" będzie się w kółko powtarzało, aż warunek będzie spełniony. Np.: USES CRT; VAR licznik:longint; BEGIN clrscr; licznik:=0; REPEAT licznik:=licznik+1; writeln('Witam cię po raz ',licznik); UNTIL licznik=100 readln; END.
Przykład pętli na dokładność:
Zadania: Napisz algorytm w postaci schematu blokowego, obliczając średnią arytmetyczną n-liczb calkowitych. Napisz algorytm w postaci schematu blokowego, wprowadzając 10 liczb całkowitych i obliczający sumę liczb większych od 6. Napisz algorytm w postaci schematu blokowego, znajdujący NWD dwóch liczb naturalnych. (algorytm Euklidesa).