Zespół Szkół Licealnych i Technicznych
w Tucholi
Schematy blokowe instrukcji sterujących w Turbo Pascalu wraz z przykładami programów.
Opracował:
mgr inż. Piotr Pełczyński
Tuchola 2003r.
Wstęp
Praca zawiera schematy blokowe instrukcji sterujących wykorzystywanych w języku TurboPascal. Są tu schematy do:
instrukcji warunkowej if ( w dwóch postaciach)
instrukcji iteracyjnej for ( w dwóch postaciach)
instrukcji iteracyjnej repeat
instrukcji iteracyjnej while
instrukcji wyboru case ( w dwóch postaciach)
Ponadto pracę wzbogaciłem przykładami programów ilustrujących wykorzystanie omawianych instrukcji. Załączyłem źródła programów, bogato skomentowane i ułożone w kolejności od bardzo prostego do nieco trudniejszego.
Korzystałem głównie z książki Andrzeja Marciniaka - Turbo Pascal 7.0 z elementami programowania cz.I - Wydawnictwo Nakom - Poznań 2000 oraz z bogatych zasobów internetu.
Opracowanie to można znaleźć także na stronie mojej szkoły pod adresem www.zslit.tuchola.pl w dziale Zasoby Edukacyjne. Jest ono tam wzbogacone o wersje skompilowane (*.exe) i źródłowe (*.pas) zamieszczonych programów, a także ich schematy blokowe.
Wszelkie uwagi proszę przesyłać na adres: piotrpel@tuchola.pl
Instrukcja warunkowa IF - postać I
Instrukcja warunkowa IF ma postać:
IF Warunek THEN
{ Blok instrukcji 1 }
Jeżeli Warunek jest spełniony (prawdziwy) wykonywany jest Blok instrukcji 1, a po nim Blok instrukcji 2; przy warunku niespełnionym wykonywany jest Blok instrukcji 2 (Blok instrukcji 1 zostaje pominięty).
Blok instrukcji 2 nie zależy od spełnienia Warunku - są to instrukcje bezwarunkowe.
Instrukcja warunkowa IF - postać II
Instrukcja warunkowa IF ma postać :
IF Warunek THEN
{ Blok instrukcji 1 }
ELSE
{ Blok instrukcji 2 }
Jeżeli Warunek jest spełniony (prawdziwy) wykonywany jest Blok instrukcji 1, w przeciwnym razie wykonywany jest Blok instrukcji 2. W obu wzajemnie wykluczających się przypadkach zostanie wykonany Blok instrukcji 3.
Blok instrukcji 3 nie zależy od spełnienia Warunku - są to instrukcje bezwarunkowe.
Program wypisze większą z dwóch podanych liczb.
Program Instrukcja_IF_1;
{ Program wypisuje większą z dwóch podanych liczb. }
uses
Crt;
var
A, B : Integer; { Deklaracja zmiennych: A- pierwsza liczba; B- druga liczba}
begin
ClrScr; { Procedura czyszczenia ekranu.}
Writeln;
Writeln (' Program wypisuje większą z dwóch podanych liczb.');
Writeln;
Write (' Podaj A: ');
Readln (A); { Wczytanie pierwszej liczby.}
Write (' Podaj B: ');
Readln (B); { Wczytanie drugiej liczby. }
Writeln;
if (A>B) then { Jeśli A>B wykonaj }
Writeln (' Większa jest liczba : ', A)
else { w przeciwnym razie }
Writeln (' Większa jest liczba : ', B);
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Program obliczy i wyświetli pierwiastki równania kwadratowego .
Program Instrukcja_IF_2;
{ Program oblicza pierwiastki równania kwadratowego. }
uses Crt;
var
A, B, C : Real; { Deklaracja zmiennych }
Delta, X1, X2 : Real;
begin
ClrScr; { Procedura czyszczenia ekranu.}
Writeln;
Writeln(' Program oblicza pierwiastki równania kwadratowego.');
Writeln;
Writeln (' Podaj współczynniki równania kwadratowego.');
Write (' Podaj A: '); { Wczytanie pierwszego współczynnika. }
Readln (A);
Write (' Podaj B: ');
Readln (B); { Wczytanie drugiego współczynnika. }
Write (' Podaj C: ');
Readln (C); { Wczytanie trzeciego współczynnika. }
Writeln;
Delta := Sqr(B)-4*A*C;
if (Delta<0) then { Jeśli Delta<0 wykonaj }
Writeln (' Równanie nie ma pierwiastków rzeczywistych !')
else { w przeciwnym razie }
if (Delta=0) then { Jeśli Delta=0 wykonaj }
begin
X1 := -B/(2*A);
Writeln (' Równanie ma jeden pierwiastek rzeczywisty : ',
'X1=', X1:8:2);
end
else { w przeciwnym razie }
begin
X1 := (-B-Sqrt(Delta))/(2*A);
X2 := (-B+Sqrt(Delta))/(2*A);
Writeln ('Równanie ma dwa pierwiastki rzeczywiste : ','X1=',X1:8:2,';
end; X2=', X2:8:2);
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Program wczyta trzy liczby podane przez użytkownika, a następnie wypisze je w kolejności rosnącej .
Program Instrukcja_IF_3;
{ Program wczytuje trzy liczby podane przez użytkownika, }
{ a następnie wypisuje je na ekranie w kolejności rosnącej.}
uses
Crt;
var
A, B, C : Real; { Deklaracja zmiennych }
begin
ClrScr; { Procedura czyszczenia ekranu.}
Writeln;
Writeln (' Program wczytuje trzy liczby podane przez użytkownika,');
Writeln (' a następnie wypisuje je na ekranie w kolejności rosnącej.');
Writeln;
Writeln(' Podaj liczby A, B i C :');
Write(' A = ');
Readln(A); { Wczytanie pierwszej liczby.}
Write(' B = ');
Readln(B); { Wczytanie pierwszej liczby.}
Write(' C = ');
Readln(C); { Wczytanie pierwszej liczby.}
Writeln;
if A<B then
if B<C then
Writeln(' Liczby w kolejności rosnącej: ', A:2:0, ' ', B:2:0, ' ',C:2:0)
else
if C<A then
Writeln(' Liczby w kolejności rosnącej: ', C:2:0, ' ', A:2:0, ' ',B:2:0)
else
Writeln(' Liczby w kolejności rosnącej: ', A:2:0, ' ', C:2:0, ' ',B:2:0)
else {B<=A}
if A<C then
Writeln(' Liczby w kolejności rosnącej: ', B:2:0, ' ', A:2:0, ' ',C:2:0)
else
if C<B then
Writeln(' Liczby w kolejności rosnącej: ', C:2:0, ' ', B:2:0, ' ',A:2:0)
else
Writeln(' Liczby w kolejności rosnącej: ', B:2:0, ' ', C:2:0, ' ',A:2:0);
Writeln; Writeln;
Writeln(' Naciśnij klawisz ENTER...');
Readln;
end.
Instrukcja iteracyjna FOR - postać I
Instrukcję FOR stosujemy gdy z góry znamy liczbę powtórzeń w cyklu pętli, jest ona kontrolowana tzw. licznikiem. Jej postać to:
FOR I := Początek TO Koniec DO { Blok instrukcji }
Wartość początkowa - Początek i wartość końcowa - Koniec mogą być dowolnymi wyrażeniami typu porządkowego. W instrukcji pętli stosuje się słowo kluczowe TO - pętla ”w górę”, krok +1.
Instrukcja iteracyjna FOR - postać I
OPIS DZIAŁANIA
Na schemacie zmienna sterująca I spełnia rolę licznika, który steruje cyklami pętli. Zanim instrukcja I := I + 1 będzie wykonana po raz pierwszy, zachodzą następujące zdarzenia :
Zmiennej sterującej I zostaje przypisana wartość początkowa Początek.
Zostaje wyznaczona wartość końcowa Koniec (jeżeli jest wyrażeniem) i porównana z wartością początkową I. Jeżeli I <= Koniec, to nastąpi wejście do pętli; jeżeli I > Koniec to pętla jest pomijana. Program przechodzi do wykonywania kolejnych instrukcji.
Zostaje zapamiętana wartość końcowa Koniec, dzięki czemu może być porównywana z wartością zmiennej sterującej I przed rozpoczęciem każdego następnego cyklu pętli. Ponieważ kolejne wartości zmiennej sterującej są wyznaczane za pomocą funkcji standardowej Succ(I), zatem zmienna sterująca I musi być typu porządkowego (Integer, Char, Boolean).
Instrukcja iteracyjna FOR - postać II
Instrukcję FOR stosujemy gdy z góry znamy liczbę powtórzeń w cyklu pętli, jest ona kontrolowana tzw. licznikiem. Jej postać to:
FOR I := Początek DOWNTO Koniec DO
{ Blok instrukcji }
Wartość początkowa - Początek i wartość końcowa - Koniec mogą być dowolnymi wyrażeniami typu porządkowego. W instrukcji pętli stosuje się słowo kluczowe DOWNTO - pętla ”w dół”, krok -1 .
Instrukcja iteracyjna FOR - postać II
OPIS DZIAŁANIA
Na schemacie zmienna sterująca I spełnia rolę licznika, który steruje cyklami pętli. Zanim instrukcja I := I - 1 będzie wykonana po raz pierwszy, zachodzą następujące zdarzenia :
Zmiennej sterującej I zostaje przypisana wartość początkowa Początek.
Zostaje wyznaczona wartość końcowa Koniec (jeżeli jest wyrażeniem) i porównana z wartością początkową I. Jeżeli I >= Koniec, to nastąpi wejście do pętli; jeżeli I < Koniec to pętla jest pomijana. Program przechodzi do wykonywania kolejnych instrukcji.
Zostaje zapamiętana wartość końcowa Koniec, dzięki czemu może być porównywana z wartością zmiennej sterującej I przed rozpoczęciem każdego następnego cyklu pętli. Ponieważ kolejne wartości zmiennej sterującej są wyznaczane za pomocą funkcji standardowej Pred(I), zatem zmienna sterująca I musi być typu porządkowego (Integer, Char, Boolean).
1. Program wypisze liczby od 1 do 10, a następnie od 10 do 1.
Program Petla_FOR_1;
{ Program wpisuje liczby od 1 do 10, a następnie od 10 do 1.}
uses
Crt;
var
I : Byte; { Deklaracja zmiennej }
begin
ClrScr; { Procedura czyszczenia ekranu. }
Writeln; { Przejście do kolejnego wiersza.}
Writeln (' Program wpisuje liczby od 1 do 10, a następnie od 10 do 1.');
Writeln;
for I := 1 to 10 do { Początek pętli FOR, gdzie I to zmienna sterująca; }
{ wartość początkowa I=1; wartość końcowa I=10; krok=1.}
Write (I, ' '); { Wypisywanie kolejnych liczb od 1 do 10.}
Writeln;
for I:= 10 downto 1 do {Początek pętli FOR, gdzie I to zmienna sterująca;}
{ wartość początkowa I=10; wartość końcowa I=1; krok=1.}
Write (I, ' '); { Wypisywanie kolejnych liczb od 1 do 10.}
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
2. Program obliczy i wyświetli N!.
Program Petla_FOR_2;
{ Program oblicza i wyświetla N!. }
uses
Crt;
var
N, I : Byte;
Silnia : Longint;
begin
ClrScr;
Writeln;
Writeln (' Program oblicza i wyświetla N!.');
Writeln;
Write (' Podaj liczbę: ');
Readln (N);
Silnia := 1;
for I := 1 to N do
Silnia := Silnia * I;
Writeln (' ',N, '! = ', Silnia);
Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Program oblicza i wyświetla średnią N podanych przez użytkownika liczb.
Program Petla_FOR_3;
{ Program oblicza średnią N podanych przez użytkownika liczb. }
uses
Crt;
var
Ilosc, I : Byte;
{ Deklaracja zmiennych: Ilosc- ilość liczb; I- zm. sterująca pętlą FOR }
Wartosc, Suma : Real;
{ Wartosc- wartości poszczególnych wpisywanych liczb; }
{ Suma- suma wpisanych liczb }
begin
ClrScr; { Procedura czyszczenia ekranu.}
Suma := 0; { Nadanie wartości początkowej zmiennej Suma.}
Writeln;
Writeln (' Program oblicza średnią N podanych przez użytkownika liczb.');
Writeln; Writeln;
Write (' Podaj ilość liczb, z których ma zostać policzona średnia: ');
Readln (Ilosc); { Wczytanie ilości liczb. }
Writeln;
if (Ilosc<1) then { Jeśli liczba mniejsza od 1 to wykonaj: }
Writeln (' Nie można policzyć średniej ', Ilosc, ' liczb.')
else { w przeciwnym razie }
begin
for I := 1 to Ilosc do {wartość początkowa I=1; wartość końcowa I=ilość}
{podanych liczb; krok=1 }
begin { Początek pętli FOR }
Write (' Podaj liczbę ', I, ': ');
Readln (Wartosc); { Wczytywanie kolejnych wartości liczb.}
Suma := Suma + Wartosc; {Sumowanie kolejnych wpisywanych liczb}
end; { Koniec pętli FOR }
Writeln;
Writeln (' Średnia podanych ', Ilosc, ' liczb to: ', Suma/Ilosc:10:2);
{ Wypisanie obliczonej średniej podanych liczb.}
end; { Koniec instrukcji IF }
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Instrukcja iteracyjna REPEAT
Instrukcja REPEAT jest pętlą warunkową ze sprawdzeniem warunku na końcu (zatem zawsze będzie wykonany co najmniej jeden cykl pętli ) i ma postać :
REPEAT
Blok instrukcji 1; Blok instrukcji 2; ... Blok instrukcji N;
UNTIL Warunek;
Spełnienie warunku powoduje przerwanie pętli.
Program będzie wypisywał podany przez użytkownika tekst tak długo, dopóki nie zostanie wciśnięty dowolny klawisz.
Program Instrukcja_REPEAT_1;
{ Program wypisuje podany przez użytkownika tekst tak długo, }
{ dopóki nie zostanie wciśnięty dowolny klawisz. }
uses
Crt;
var
Tekst : String; { Deklaracja zmiennej Tekst- do wczytania tekstu }
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Program wypisuje podany przez użytkownika tekst tak długo,');
Writeln (' dopóki nie zostanie wciśnięty dowolny klawisz. ');
Writeln;
Write(' Wpisz tekst, który będę powtarzał : ');
Read(Tekst); { Wczytanie podanego tekstu }
repeat { Początek pętli REPEAT }
Write(Tekst,' '); { Wypisywanie tekstu }
Delay(100); { Procedura przerywająca działanie programu na 100
Milisekund }
until Keypressed; { Koniec pętli REPEAT gdy zostanie wciśnięty dowolny
klawisz }
end.
Program czyta kolejne liczby i liczy ich sumę, aż do wpisania 0.
Program Instrukcja_REPEAT_2;
{ Program czyta kolejne liczby i liczy ich sumę, }
{ aż do wpisania przez użytkownika liczby 0. }
uses
Crt;
var
Liczba,Suma: Real; { Deklaracja zmiennych: Liczba- do wczytania podanej }
{ liczby; Suma- do policzenia sumy wpisanych liczb }
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Program czyta kolejne liczby i liczy ich sumę, ');
Writeln (' aż do wpisania przez użytkownika liczby 0.');
Writeln;
Suma := 0; { Nadanie wartości początkowej zmiennej Suma }
repeat { Początek pętli REPEAT }
Writeln (' Dotychczasowa suma: ', Suma:10:2, '.');
Write (' Podaj liczbę: ');
Readln (Liczba); { Wczytywanie liczby}
Suma := Suma + Liczba { Sumowanie wprowadzanych liczb }
until (Liczba = 0); { Koniec pętli REPEAT }
Writeln;
Writeln (' Całkowita suma: ', Suma:10:2);
Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Program pokazujący prosty wygaszacz ekranu.
Program Instrukcja_REPEAT_3;
{ Program pokazujący prosty wygaszacz ekranu.}
uses
Crt;
var
Imie : String;{Deklaracja zmiennych: Imie- do wczytania podanego imienia}
Licznik : Integer; { Licznik- do liczenia ile razy Imie zostało wyświetlone }
begin
ClrScr; { Procedura czyszczenia ekranu }
TextBackground(Black); { Kolor tła czarny }
TextColor(White); { Kolor tekstu biały }
Writeln;
Writeln(' Program pokazujący prosty wygaszacz ekranu.');
Writeln;
Write(' Podaj swoje imię: ');
Read(Imie); { Wczytanie podanego imienia }
Licznik:=0; { Nadanie wartości początkowej zmiennej Licznik }
ClrScr;
Randomize; { Procedura losująca }
repeat { Początek pętli REPEAT }
Licznik:=Licznik+1; { Zwiększanie zmiennej licznik o 1 }
TextBackground(Random(12)); { Losowanie koloru tła }
TextColor(Random(12)); { Losowanie koloru tekstu }
GoToXY(Random(70),Random(24)); {Losowanie współrzędnych położenia}
{tekstu }
Write(Imie); { Wypisanie tekstu (imienia) }
delay(50); { Procedura przerywa działanie programu na 50 milisekund.}
if Licznik=100 then { Jeśli Licznik=100 wykonaj }
begin
Licznik:=0; { Nadanie zmiennej Licznik wartości = 0 }
TextBackground(Random(12)); { Losowanie koloru tła }
ClrScr; { Procedura czyszczenia ekranu }
end; { Koniec instrukcji IF }
until Keypressed; { Koniec pętli REPEAT gdy zostanie wciśnięty dowolny }
{ klawisz }
end.
Instrukcja iteracyjna WHILE
Instrukcja WHILE jest pętlą warunkową ze sprawdzeniem warunku na początku i ma postać :
WHILE Warunek DO
{ Blok instrukcji }
Spełnienie warunku powoduje wykonanie pętli.
Instrukcję WHILE odczytujemy następująco :
dopóki Warunek (wyrażenie logiczne) jest prawdziwy (True), wykonuj Blok instrukcji; w przeciwnym przypadku (False) przejdź do dalszej części programu (następnych instrukcji).
1. Program wczytuje znaki z klawiatury tak długo, dopóki nie zostanie wpisany znak (`*') .
Program Instrukcja_WHILE_1;
{ Program wczytuje znaki z klawiatury tak długo, }
{ dopóki nie zostanie wpisany znak ('*'). }
uses
Crt;
var
Znak : Char; { Deklaracja zmiennej Znak }
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Program wczytuje znaki z klawiatury tak długo,');
Writeln (' dopóki nie zostanie wpisany znak (*). ');
Writeln;
Write(' Podaj znak i wciśnij ENTER : ');
Readln(Znak); { Wczytanie podanego znaku }
while (Znak<>'*') do
begin { Początek pętli WHILE }
Write(' Podaj znak i wcinij ENTER : '); { Wyświetlenie komunikatu }
Readln(Znak); { Wczytanie podanego znaku }
end; { Koniec pętli WHILE }
end.
2. Program znajdzie największy wspólny dzielnik dwóch liczb.
Program Petla_WHILE_2;
{ Program znajduje największy wspólny dzielnik dwóch liczb: A i B. }
uses
Crt;
var
A, B, Pom : Integer; { Deklaracja zmiennych }
begin
ClrScr;
Writeln;
Writeln (' Program znajduje największy wspólny dzielnik dwóch liczb: A i B.');
Writeln;
Write (' Podaj A: ');
Readln (A); { Wczytanie pierwszej liczby.}
Write (' Podaj B: ');
Readln (B); { Wczytanie drugiej liczby. }
Writeln;
Write (' NWD podanych liczb (', A, ', ', B, ') = ');
while (A<>B) do
begin { Początek pętli WHILE }
if A<B then { Jeśli A<B to wykonaj }
begin { Początek instrukcji IF }
Pom := A;
A := B;
B := Pom;
end; { Koniec instrukcji IF }
A := A - B;
end; { Koniec pętli WHILE }
Writeln (A);
Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
3. Program obliczy sumę N=10 liczb typu Integer.
Program Petla_WHILE_3;
{ Program oblicza sumę N=10 liczb typy Integer. }
uses
Crt;
const
N = 10; { Deklaracja stałej N=10 }
var
K, Suma, X : Integer; { Deklaracja zmiennych: K- do liczenia ilości }
{ wprowadzanych liczb; Suma- do policzenia sumy }
{ wprowadzonych liczb; X- do wczytywania wprowadzanych liczb }
begin
ClrScr;
Writeln;
Writeln (' Program oblicza sumę N=10 liczb typy Integer.');
Writeln (' Wykonanie programu kończy się po wprowadzeniu 10 liczb.');
Writeln;
K := 1; { Nadanie wartości początkowej zmiennej K }
Suma := 0; { Nadanie wartości początkowej zmiennej Suma }
while K<=N do { dopóki K<=N (10) to wykonuj }
begin { Początek pętli WHILE }
Write (' Wprowadź liczbę typu Integer : ');
Read(X); { Wczytanie wprowadzonej liczby }
Writeln;
Suma := Suma + X; { Sumowanie wprowadzanych liczb.}
Writeln (' Suma częściowa liczb wynosi :',Suma:6);
K := K +1; { Zwiększanie wartości K o 1 }
If (K>N) then { Jeśli K>N to wykonaj }
begin
ClrScr;
Writeln; Writeln;
Writeln(' Suma całkowita N=',N,' liczb wynosi :',Suma:6);
Writeln; Writeln;
Writeln(' Naciśnij klawisz ENTER...');
Readkey; { Czytaj klawisz }
end;
end; { Koniec Pętli WHILE }
end.
Instrukcja wyboru CASE - postać I
Instrukcja CASE jest instrukcją wyboru (selekcji), sterującą wyborem jednej z instrukcji do wykonania i ma postać :
CASE Wyrażenie OF
wartość1 : { Blok instrukcji } ;
wartość2 : { Blok instrukcji } ;
. . .
wartośćN : { Blok instrukcji } ;
END;
Instrukcja wyboru CASE - postać II
Instrukcja CASE jest instrukcją wyboru (selekcji), sterującą wyborem jednej z instrukcji do wykonania i ma postać :
CASE Wyrażenie OF
wartość1 : { Blok instrukcji } ;
wartość2 : { Blok instrukcji } ;
. . .
wartośćN : { Blok instrukcji } ;
ELSE
{ Blok instrukcji }
END;
Program po wczytaniu numeru (1-3) wypisze odpowiedni komunikat.
Program Instrukcja_CASE_1;
{ Program wczytuje numer (1-3) i wypisuje odpowiedni komunikat }
{ znajdujący się pod wczytanym numerem. }
uses
Crt;
var
Numer : Char; { Deklaracja zmiennej Numer typu znakowego }
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Program wczytuje numer (1-3) i wypisuje odpowiedni komunikat');
Writeln (' znajdujący się pod wczytanym numerem.');
Writeln;
Writeln (' 1) Poziom łatwy. ');
Writeln (' 2) Poziom średni.');
Writeln (' 3) Poziom trudny.');
Writeln;
Write (' Podaj numer (1-3) i naciśnij ENTER : ');
Read (Numer); { Wczytanie podanego numeru }
Writeln;
case Numer of { Początek instrukcji CASE }
'1':begin
Write(' WYBRAŁEŚ POZIOM ŁATWY !!!');
end;
'2':begin
Write(' WYBRAŁEŚ POZIOM ŚREDNI !!!');
end;
'3':begin
Write(' WYBRAŁEŚ POZIOM TRUDNY !!!');
end;
end; { Koniec instrukcji CASE }
Readln;
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
Program po podaniu cyfry przez użytkownika wypisz jej nazwę słownie.
Program Instrukcja_CASE_2;
{ Program po podaniu cyfry przez użytkownika wypisuje jej nazwę słownie. }
uses
Crt;
var
Cyfra : Byte; { Deklaracja zmiennych: Cyfra- do wczytania cyfry;}
NazwaCyfry : String; { NazwaCyfry- do wypisania słownie cyfry }
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Program po podaniu cyfry przez użytkownika wypisuje jej nazwę
słownie. ');
Writeln;
Write (' Podaj cyfrę w postaci numeru: ');
Readln (Cyfra); { Wczytanie cyfry }
Writeln;
case Cyfra of { Początek instrukcji CASE }
0 : NazwaCyfry := 'ZERO';
1 : NazwaCyfry := 'JEDEN';
2 : NazwaCyfry := 'DWA';
3 : NazwaCyfry := 'TRZY';
4 : NazwaCyfry := 'CZTERY';
5 : NazwaCyfry := 'PIĘĆ';
6 : NazwaCyfry := 'SZEŚĆ';
7 : NazwaCyfry := 'SIEDEM';
8 : NazwaCyfry := 'OSIEM';
9 : NazwaCyfry := 'DZIEWIĘĆ';
else
NazwaCyfry := 'to nie jest cyfra tylko liczba !!!';
end; { Koniec instrukcji CASE }
Writeln (' Podana cyfra ',(Cyfra),' - ', NazwaCyfry,' !');
Writeln; Writeln;
Writeln(' Naciśnij klawisz ENTER...');
Readln;
end.
Program pokazujący działanie prostego menu.
Program Instrukcja_CASE_3;
{ Prosty kalkulator. Program wczytuje dwie liczby, a następnie wyświetla }
{ menu. Z menu można wybrać numer opcji (1-4), pod którym wykona się }
{ odpowiednie działanie matematyczne dla wprowadzonych liczb. }
uses
Crt;
var
Numer : Integer;
Liczba1, Liczba2 : Real;
begin
ClrScr; { Procedura czyszczenia ekranu }
Writeln;
Writeln (' Prosty kalkulator. Program wczytuje dwie liczby, a następnie
wyświetla');
Writeln (' menu. Z menu można wybrać numer opcji (1-4), pod którym
wykona się');
Writeln('odpowiednie działanie matematyczne dla wprowadzonych liczb.');
Writeln;
Write(' Podaj pierwszą liczbę :');
Read(Liczba1); { Wczytanie pierwszej liczby }
Write(' Podaj drugą liczbę :');
Read(Liczba2); { Wczytanie drugiej liczby }
ClrScr;
Writeln;
{--------------------------MENU------------------------}
Writeln(' 1) DODAWANIE.');
Writeln(' 2) ODEJMOWANIE.');
Writeln(' 3) MNOŻENIE.');
Writeln(' 4) DZIELENIE.');
{--------------------------MENU------------------------}
Writeln;
Write(' Podaj numer: ');
Read(Numer); { Wczytanie numeru opcji menu }
ClrScr;
case Numer of { Początek instrukcji CASE }
1:begin
Writeln;
Write(' Suma liczb ',liczba1:3:0,' i ',liczba2:3:0,' wynosi:liczba1+Liczba2:3:0);
end;
2:begin
Writeln;
Write('Różnica liczb',liczba1:3:0,' i ',liczba2:3:0,'wynosi:',Liczba1-liczba2:3:0);
end;
3:begin
Writeln;
Write('Iloczyn liczb ',liczba1:3:0,' i ',liczba2:3:0,'wynosi:',Liczba1*Liczba2:3:0);
end;
4:begin
Writeln;
Write('Iloraz liczb ',liczba1:8:2,' i ',liczba2:8:2,' wynosi :',Liczba1/Liczba2:8:2);
end;
end; { Koniec instrukcji CASE }
Readln;
Writeln; Writeln; Writeln;
Write(' Naciśnij klawisz ENTER...');
Readln;
end.
TRUE
Czy Warunek
jest spełniony?
( T/N )
Blok
instrukcji 1
FALSE
Blok
instrukcji 2
FALSE
Czy Warunek
jest spełniony?
( T/F )
TRUE
Blok
instrukcji 2
Blok
instrukcji 1
N
Blok
instrukcji 3
I - zmienna sterująca
Początek- wartość początkowa zmiennej sterującej
Koniec - wartość końcowa
zmiennej sterującej
I := Początek
Dalsza część
programu
TRUE
I > Koniec?
FALSE
Blok instrukcji
I := I + 1
I - zmienna sterująca
Początek - wartość początkowa zmiennej sterującej
Koniec - wartość końcowa
zmiennej sterującej
I := Początek
Dalsza część
programu
TRUE
I < Koniec?
FALSE
Blok instrukcji
I := I - 1
Blok
instrukcji 1
Instrukcja REPEAT poleca co następuje:
powtarzaj wykonanie Bloku instrukcji 1
Bloku instrukcji 2
...
Bloku instrukcji N
pomiędzy symbolami REPEAT i UNTIL tak długo, jak Warunek (wyrażenie logiczne) będzie miał wartość False.
Blok
instrukcji 2
Blok
instrukcji N
Dalsza część
programu
FALSE
TRUE
Czy Warunek
jest spełniony?
( T/F )
Blok instrukcji
TRUE
Dalsza część
programu
Czy Warunek
jest spełniony?
( T/F )
FALSE
Wyr - Wyrażenie
W1 - wartość1
W2 - wartość2
Wn - wartośćN
TRUE
Blok instrukcji
Wyr = W1
Wartości od 1 do N - zwane stałymi wyboru muszą mieć z góry określoną wartość (nie mogą być wyrażeniami zawierającymi zmienne).
W trakcie wykonywania instrukcji CASE wykonywany jest tylko jeden Blok instrukcji. Jest to pierwszy napotkany, dla którego zdefiniowana stała wyboru (lub jedna z nich, jeżeli zdefiniowaliśmy kilka lub przedział) spełnia wyrażenie :
Wyrażenie = Wartość.
Jeżeli żadna ze stałych wyboru nie spełnia Wyrażenia, to Blok instrukcji zostanie pominięty i wykonywana jest dalsza część programu.
FALSE
TRUE
Blok instrukcji
Wyr = W2
FALSE
TRUE
Wyr = Wn
Blok instrukcji
FALSE
Dalsza część programu
Wyr - Wyrażenie
W1 - wartość1
W2 - wartość2
Wn - wartośćN
TRUE
Blok instrukcji
Wyr = W1
Wartości od 1 do N - zwane stałymi wyboru muszą mieć z góry określoną wartość (nie mogą być wyrażeniami zawierającymi zmienne).
W trakcie wykonywania instrukcji CASE wykonywany jest tylko jeden Blok instrukcji. Jest to pierwszy napotkany, dla którego zdefiniowana stała wyboru (lub jedna z nich, jeżeli zdefiniowaliśmy kilka lub przedział) spełnia wyrażenie :
Wyrażenie = Wartość,
bądź Blok instrukcji po ELSE, jeżeli żadna ze stałych wyboru nie spełnia Wyrażenia.
FALSE
TRUE
Blok instrukcji
Wyr = W2
FALSE
TRUE
Wyr = Wn
Blok instrukcji
FALSE
Dalsza część programu
Blok instrukcji