JĘzyki programowania obiektowego wiesław Porębski Ada95 Program Wykładu



Pobieranie 187.36 Kb.
Strona3/8
Data28.04.2016
Rozmiar187.36 Kb.
1   2   3   4   5   6   7   8

1.3.Instrukcje


Instrukcje są poleceniami do wykonania. Przypomnijmy, że każda instrukcja kończy się średnikiem, który pełni rolę symbolu terminalnego. Instrukcje dzielą się na proste i złożone. Instrukcja prosta nie zawiera żadnych innych instrukcji; instrukcja złożona może zawierać inne instrukcje proste oraz instrukcje złożone.

Najprostsze instrukcje proste to instrukcja pusta o składni: null; oraz instrukcja przypisania. Pośród instrukcji złożonych wyróżnia się: instrukcję blokową, instrukcję if, instrukcję case, instrukcje pętli, instrukcję accept oraz instrukcję select.



1.3.1.Instrukcja przypisania


Instrukcja przypisania zastępuje bieżącą wartość zmiennej wynikiem opracowania wyrażenia. Składnia instrukcji jest następująca:

nazwa_zmiennej := wyrażenie;

Nazwana zmienna i wyrażenie po prawej stronie instrukcji przypisania muszą być tego samego typu lub wyrażenie musi być podtypem typu zmiennej. Przykłady:

x,y: Integer; x := 75; y := x - 1;


1.3.2.Instrukcje blokowe


Instrukcja blokowa zawiera sekwencję instrukcji, ewentualnie poprzedzoną przez część deklaracyjną. Składnia instrukcji blokowej ma postać:

[identyfikator:]

[declare

-- lokalne deklaracje]

begin

-- sekwencja instrukcji



end [identyfikator];

Frazy ujęte w nawiasy prostokątne są opcjonalne. Jeżeli instrukcja blokowa posiada identyfikator, to musimy go umieścić po end. Zakładając, że zmienne U i V są typu Integer, możemy zapisać następujący przykład:

swap:

declare


Temp: Integer;

begin


Temp := V; V := U; U := Temp;

end swap;



Uwaga. Wszelkie deklaracje zmiennych lokalnych są widoczne tylko w zasięgu danej instrukcji blokowej.

1.3.3.Instrukcje warunkowe


Instrukcje warunkowe (if) służą do wyboru działania w zależności od spełnienia określonego warunku logicznego. Warunkami w instrukcji if mogą być wyrażenia z operatorami relacji (=, /=, <, >, <=, >=), z operatorami logicznymi (and, not, or, xor) oraz z warunkowymi operatorami logicznymi (and then, or else). Składnia najprostszej instrukcji if ma postać:

if Warunek then

Instrukcja (-e)

end if;


Jeżeli chcemy podjąć alternatywne działania przy niespełnionym warunku, możemy zastosować instrukcję if o składni:

if Warunek then

Instrukcje_po_then

else


Instrukcje_po_else

end if;


Instrukcje if można dowolnie zagnieżdżać. Można tworzyć wielokrotnie złożone instrukcje if, wykorzystując słowo kluczowe elsif, np.

if Warunek_1 then

Instrukcje_1

elsif Warunek_2 then

Instrukcje_2

else


Instrukcje_3

----------------

{elsif Warunek_n then Instrukcje_n}

end if;


Należy przy tym pamiętać, że opcja else może wystąpić tylko jeden raz, natomiast elsif wielokrotnie.

1.3.4.Instrukcja wyboru


Jeżeli liczba alternatywnych działań w instrukcji if prowadzi do zbyt głębokich zagnieżdżeń, można zastosować instrukcję wyboru case o składni:

case W is

when Wartość_1 => sekwencja_instrukcj1_1;

when Wartość_2 => sekwencja_instrukcj1_2;;

...

when Wartość_n => sekwencja_instrukcji_n;;



[when others => Instrukcje_o;]

end case;



Dyskusja. W jest pewnym wyrażeniem o dyskretnym zbiorze wartości (np. typu Integer lub wyliczeniowego). Instrukcja wyboru działa następująco: po obliczeniu W następuje porównanie otrzymanego wyniku z każdą z wartości podanych po słowie kluczowym when; po stwierdzeniu zgodności wykonywana jest odpowiednia sekwencja instrukcji; przy braku zgodności wykonywana jest sekwencja instrukcji po others (pozostałe przypadki). Złożony symbol asocjacji '=>' pozwala kojarzyć wartości z sekwencjami instrukcji dla wszystkich przypadków, w tym i others.

Ada 95 pozwala również grupować alternatywne wartości, jak pokazano w poniższym przykładzie.



With Ada.Text_IO; Use Ada.Text_IO;

procedure Case1 is

Time : Float;

Route : Character range 'A'..'z';

begin --Case1

Get(Route);

case Route is

when 'A' => Time := 3.0; Put("Very short trip.");

when 'B' | 'N' => Time := 4.0;

when 'C' .. 'D' => Time := 4.5;

when others => Put("Stay home!");

end case;

end Case1;
Uwaga 1. Symbol '|' odziela przypadki alternatywne. Złożony symbol asocjacji '=>' został tutaj wykorzystany do wywołania podprogramu; w tym przypadku parametr aktualny podprogramu ("Stay home!") został jawnie skojarzony z argumentem (parametrem) formalnym.

Uwaga 2. Ada 95 wymaga umieszczenia instrukcji dla każdego przypadku; zatem, jeżeli dla pewnego przypadku nie przewidujemy żadnego działania, musimy wtedy umieścić instrukcję pustą, np.: when 'N' => null;.


1.4.Instrukcje pętli


Najprostsza instrukcja pętli posiada następującą składnię:

loop


Sekwencja instrukcji do powtarzania

end loop;

Instrukcje pętli można poprzedzać identyfikatorem; wtedy po end loop należy umieścić identyfikator:

[identyfikator:]

loop

Sekwencja instrukcji do powtarzania



end loop [identyfikator];

Pętla while posiada następującą składnię:



while Warunek

loop


Instrukcja (-e)

end loop;

Podobnie, jak dla pętli prostej, pętlę while można poprzedzić identyfikatorem.

Pętlę for stosuje się w przypadku, gdy liczba powtórzeń jest a priori znana i jest podana w predykacie pętli. Składnia pętli for jest następująca:



for Parametr_Pętli in [reverse] Zakres_Iteracji loop

Sekwencja instrukcji

end loop;

Podobnie jak inne instrukcje pętli, instrukcję for można poprzedzić identyfikatorem:

[identyfikator:]

for Parametr_Pętli in [reverse] Zakres_Iteracji loop

Sekwencja instrukcji

end loop [identyfikator];



Parametr_Pętli jest zmienną lokalną niejawnie zadeklarowaną przez jej obecność w pętli. Istnieje ona tylko w zasięgu pętli, i przyjmuje typ określony przedziałem Zakres_Iteracji. Opcja reverse pozwala przebiegać pętlę for w odwrotnym kierunku przy tym samym zakresie iteracji.

1.4.1.Instrukcja exit


Niekiedy istnieje konieczność wcześniejszego zakończenia pętli, mimo że nadal jest spełniony warunek wejścia do pętli. Stosuje się wtedy instrukcję exit. Dla pętli while może ona wystąpić w zagnieżdżonej w niej instrukcji if:

while Warunek loop

if Warunek2 then exit;

end if;


end loop;

Powyższy kod można uprościć do postaci:

while Warunek loop

exit when Warunek2;

end loop;

Instrukcja exit pozwala tworzyć pętle z badaniem warunku wyjścia z pętli, wykonywane co najmniej jeden raz; składnia takiej pętli może mieć postać:

loop

Instrukcja (-e)



exit when Warunek;

end loop;


1   2   3   4   5   6   7   8


©absta.pl 2016
wyślij wiadomość

    Strona główna