Artykuł schematy blokowe algorytmów


Piotr Pełczyński

Przedmiot: informatyka

Schematy blokowe instrukcji
w Turbo Pascalu z przykładami

Artykuł opublikowany w specjalistycznym serwisie edukacyjnym http://awans.szkola.net/

0x08 graphic


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:

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).

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

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.

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

Blok instrukcji 3 nie zależy od spełnienia Warunku - są to instrukcje bezwarunkowe.

  1. 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.

  1. 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.

  1. 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.

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

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 :

  1. Zmiennej sterującej I zostaje przypisana wartość początkowa Początek.

  2. 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.

  3. 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 .

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

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 :

  1. Zmiennej sterującej I zostaje przypisana wartość początkowa Początek.

  2. 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.

  3. 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.

  1. 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.

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

  1. 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.

  1. 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.

  1. 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.

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

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 wci˜nij 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;

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

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 }

0x08 graphic
END;

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

  1. 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.

  1. 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.

  1. 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



Wyszukiwarka

Podobne podstrony:
Wymień podstawowe bloki potrzebne do konstruowania schematów blokowych (algorytmów), i opisz ich
5 Algorytmy i schematy blokowe
Algorytmy%20schematy%20blokowe
Algorytmy, schematy blokowe
Algorytmy, schematy blokowe
5 Algorytmy i schematy blokowe
Algorytmy schematy blokowe
Schemat blokowy to graficzny zapis algorytmu rozwiązania zadania
Algorytmy schematy blokowe
3 Projektowanie układów automatyki (schematy blokowe, charakterystyki)
10 schematy blokowe i grafy (jako zobrazowanie modeli matematycznych)
Schemat blokowy For 1
Schemat blokowy Do While 2
SCHEMAT BLOKOWY
SCHEMAT BLOKOWY RADARU
Algebra schematów blokowych c d
Schemat blokowy If 1
Schemat blokowy For 3
SCHEMATY BLOKOWE ODBIORNIKÓW

więcej podobnych podstron