background image

Wspó

łbieżność w języku Ada 

                                              

 1

 

Skrócony opis języka ADA 

 

1. Wstęp 

Ada jest rozbudowanym j

ęzykiem programowania przeznaczonym do 

tworzenia oprogramowania w du

żej skali ze szczególnym względnieniem 

systemów czasu rzeczywistego i systemów wbudowanych.  
 
Projekt zosta

ł zainicjowany przez Departament Obrony USA. Język Ada  

jest u

żywany do programowania systemów militarnych. Opracowany w 

firmie Honeywell w latach 70 XX wieku. 
 
Istniej

ą dwa standardy Ady:  

• 

starszy - Ada83  

• 

nowszy - Ada95 w którym dodano m.in. obs

ługę obiektów. 

 
Nazwa ADA jest akronimem i pochodzi od lady Ady Lovelace (1815-
1852) uwa

żanej za pierwszą programistkę – współpracowała z 

Charlesem Babbage. Ada Lovelace by

ła córką poety Lorda Byrona. 

 
Istniej

ą bezpłatne wersje Ady na wiele systemów operacyjnych 

(Windows, Linux, Solaris, HP-UX): 

• 

GNAT (GNU Ada Translator)   - http://www.gnu.org/software/gnat/

https://libre2.adacore.com 

• 

MINGW - http://www.mingw.org 

 
Literatura: 
[1]  Z. Huzar, Z. Fry

źlewicz, I. Dubielewicz, ADA 95, wyd. Helion 1998. 

[2]  Gilles  Motet,  Tomasz  Szmuc,  Programowanie  systemów  czasu 
rzeczywistego  z  zastosowaniem  j

ęzyka  ADA,  AGH  uczelniane 

wydawnictwo naukowo dydaktyczne, Kraków 2002. 
[3] Pyle I. C. Ada, Warszawa WNT 1986. 
[4] Richard Riehle, Ada Distilled,  An Introduction to Ada Programming 
     for Experienced Computer Programmers 
    

http://www.adaic.org/docs/distilled/adadistilled.pdf

 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 2

 

G

łówne cechy języka to: 

• 

Czytelno

ść 

• 

Scis

ła typizacja 

• 

Wsparcie  dla  programowania  w  du

żej  skali  (ang.  programming  in  the 

large

• 

Ukrywanie  szczegó

łów  i  abstrakcja  danych  –  oddzielna  część 

specyfikacyjna i deklaracyjna 

• 

Rozbudowany mechanizm wspó

łbieżności  

• 

Wsparcie dla akcji zwi

ązanych z czasem 

• 

Wsparcie dla systemów czasu rzeczywistego 

• 

Wsparcie  dla  niezawodnego  programowanie  (m.  in.  obs

ługa 

wyj

ątków) 

• 

Mechanizmy  dla  programowanie  systemowego  i  le

żącego  blisko 

sprz

ętu. 

• 

Wsparcie dla programowania rozproszonego 

• 

Mechanizmy programowania obiektowego 

• 

Aplikacje o d

ługim czasie życia 

 
 
Notacja BNF 
Symbol 

Znaczenie 

::= 

Jest definiowany jako 

[ ] 

Element w nawiasach wyst

ępuje lub nie 

{ } 

Iteracja – element w nawiasach wyst

ępuje N>=0 razy 

Alternatywa 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 3

 

2. Elementy struktury 

2.1  Jednostki programowe 
Podstawowe jednostki programowe: 

1.  Podprogramy (ang. 

subprograms) – funkcje i procedury 

2.  Pakiety (ang. 

packages) – zbiór danych podprogramów i innych 

jednostek które mog

ą stanowić element biblioteki 

3.  Zadania (ang. 

tasks) – reprezentują wykonywane współbieznie 

procesy 

4.  Obiekty chronione (ang. 

protected objects) – implementują pamięć 

dzielon

ą i zapewniają do niej dostęp zapewniający wzajemne 

wykluczanie. 

5.  Jednostki rodzajowe (ang. 

generic units) – umożliwiają 

definiowanie jednostek programowych niezale

żnych od typów 

danych. 

 

2.2  Jednostki leksykalne 
Tekst  programu  zapisany  ma  by

ć  jako  plik  tekstowy  utworzony  za 

pomoc

ą  8  bitowych  znaków  ze  zbioru  Latin1.  Każdy  program  zawiera 

przynajmniej  jedn

ą  jednostkę  programową  która  jest  procedurą  bez 

parametrów b

ędącą programem głównym. 

 
Jednostkami leksykalnymi s

ą: 

• 

Identyfikatory – ma

łe i duże litery nie są rozróżniane 

• 

Liczby – np. 3.14,  0.11E-2,   2#1111# 

• 

Napisy 

• 

Komentarze 

 

2.3  Pierwszy program 
Aby  uruchomi

ć  program  w  Adzie  należy  dysponować  odpowiednim 

środowiskiem.  Tutaj  posłużono  się  środowiskiem  GNAT  które  można 
uzyska

ć  bezpłatnie  pod  adresem 

http://www.gnu.org/software/gnat/

Nale

ży  pobrać  plik  odpowiedni  dla  systemu  operacyjnego.  Dla  Windows 

jest  to  plik  gnu-ada-3.4.2.gz.  Plik  nale

ży  rozpakować  i  zainstalować 

zgodnie z instrukcj

ą. 

 
 
 
Program tworzy si

ę dowolnym edytorem tekstowym.  

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 4

 

 

with Ada.Text_IO; use Ada.Text_IO; 

procedure Hello is 

begin 

   Put_Line ("Hello World. Welcome to GNAT"); 
end; 

Program hello.adb 
 
Aby skompilowa

ć i uruchomić program należy: 

• 

Otworzy

ć okno poleceń tekstowych. 

• 

Przej

ść do katalogu z programem źrodłowym. 

• 

Napisa

ć polecenie: 

gnatmake hello

 

• 

Uruchomi

ć program: hello 

 
Mo

żna  się  także  posłużyć  środowiskiem  zintegrowanym  GPS 

(

https://libre2.adacore.com/gps/

). 

 

 

Środowisko zintegrowane GPS - Gnat Programming Studio 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 5

 

 

3. Typy 

J

ęzyk  Ada  wymaga  aby  każdy  występujący  w  nim  obiekt  miał  określony 

typ co pozwala na kontrol

ę poprawności jego stosowania. 

 

 

Typ  jest  to  zbiór  warto

ści  wraz  ze  zbiorem  operacji  które  są  na  tych  

warto

ściach wykonywane. 

 
 

• 

Typy dziel

ą się na elementarne i złożone (z typów składowych). 

• 

Typy  elementarne  dziel

ą  się  na  skalarne  (dyskretne  i  rzeczywiste)  i 

wska

źnikowe. 

• 

Typy dyskretne dziel

ą się na całkowite i wyliczeniowe. 

• 

Typy  z

łożone  dzielą  się  na  tablice,  rekordy,  rozszerzenia  rekordów, 

zadania i typy chronione. 

 

znakowe 
boolowskie 

wyliczeniowe 

inne 
ze znakiem 

dyskretne 

ca

łkowite 

resztowy 

zmienno 
przecinkowe 

 

zwyk

łe 

skalarne 

rzeczywiste 

sta

ło przecinkowe 

dziesi

ętne 

wska

źnik do  

obiektu 

proste 

wska

źnikowe 

wska

źnik do 

podprogramu 
łańcuch 

tablica 

inna 

rekord 
rekord z 
wariantami 
zadanie 

z

łożone 

Obiekt chroniony 

 

 

Tab. 3-1 Typy w języku Ada 

 
Podstawowe typy danych zdefiniowane s

ą w pakiecie Standard. W 

pakiecie tym zdefiniowane typy proste: Integer, Positive, Natura, Float, 
Boolean, Charakter, Wide_Character, String, Wide_String, Duration.

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 6

 

Definicja typu wprowadzana jest zwykle podczas jego deklaracji. 
 
 
Deklaracja_typu ::=

 type

 

nazwa_typu

 

is

 

definicja_typu 

 

 
Na przyk

ład: 

type

 Kolor 

is

 (White, Red, Green, Blue,  Black); 

type

 Kolumna 

is

 range 1 .. 72; 

type

 Tablica 

is

 array(1 .. 10) of 

Integer

 

Dla danego typu zdefiniowa

ć można podtyp operujący na 

zaw

ężonym zbiorze wartości. Operacje są takie same jak na 

typie bazowym.  

 

 
Deklaracja_podtypu ::= 

subtype

 nazwa_podtypu 

is

 

Identyfikator_typu

 

[Zaw

ężenie]

 

 
 

 
Na przyk

ład: 

subtype

 Small_Int 

is Integer   range

 –10 .. 10; 

 

3.1  Typy skalarne 
 
Typy skalarne – warto

ści tych typów są uporządkowane liniowo. 

 

Typ wyliczeniowy 

Typ wyliczeniowy jest typem dyskretnym którego warto

ści są wprost 

wymienione za pomoc

ą zbioru różnych literałów znakowych. 

 

type

 Kolor  

is

 (White, Red, Green, Blue,  Black); 

 

Pierwotnie  zdefiniowany  typ  znakowy 

character

  jest  typem 

wyliczeniowym którego warto

ści są znakami kodu Latin1. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 7

 

Pierwotnie  zdefiniowany  typ  wyliczeniowy 

boolean

  jest  typem 

wyliczeniowym którego warto

ści są 

False

 

i

 

True

Dla typu 

boolean

 

zdefiniowane s

ą operacje 

not

and

or

xor

Typ całkowity 

Typ  ca

łkowity  może  być  całkowity  ze  znakiem  (Integer)  albo  resztowy. 

Dla typów ca

łkowitych zdefiniowane są operacje: 

*, /, +, - , **, mod (modulo), rem (reszta). 
 

type

 Page_Num  

is range

 1 .. 2_000; 

type

 Line_Size 

is range

 1 .. Max_Line_Size; 

subtype

 indeks  

is

 Line_Size   

range

 1 .. 10; 

 

Typ zmiennopozycyjny 

 
Typ_zmiennopozycyjny  ::= 

digits

  Wyra

żenie_statyczne  [ 

range

 

Proste_wyra

żenie_statyczne1 ..  Proste_wyrażenie_statyczne2] 

 
 
Wyst

ępujące  po 

digits

  wyra

żenie  definiuje  minimalną  liczbę  cyfr 

dziesi

ętnych  reprezentującą  wartość    tego  typu.  Wyrażenia  po 

range

 

definiuj

ą zakres wartości. 

 

type

 przeplyw 

is digits

 3 

range

 20.5 .. 40.0; 

 
W pakiecie 

Standard zawarty jest predefiniowany typ Float. 

 

3.2  Typy złożone 

Typ tablicowy 

Typ tablicowy jest typem z

łożonym którego składowe są tego samego 

typu (typu bazowego). Sk

ładowe są identyfikowane przez indeks. 

 

type

 Table 

is array

(1..10) 

of Integer

type

 Line  

is array

(1..Max)

of Character

type

 Buffer 

is array

(1..10,1..80)

of Character

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 8

 

Rekordy 

Rekord jest struktur

ą grupującą elementy róznego typu. Język ADA 

definiuje ró

żnorodne typy rekordów. Tutaj podana będzie tylko 

najprostsza definicja. 
 

type

 Data 

is

 

record 

  dzien:  

Integer range 1..31; 

  miesiac:   Integer range 1..12; 
  rok:  

Integer range 2000..2100; 

end record

 
Dost

ęp do elementów rekordu nastepuje poprzez notację kropkową lub 

konstrukcj

ę agregatową. 

 
Urodziny: Data; 
Urodziny.dzien := 26; 
Urodziny.miesiac := 11; 
Urodziny.rok := 1952; 
Lub 
Urodziny := (dzien=>27, miesiac=>11, rok=>1952); 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 9

 

4. Instrukcje 

Instrukcje okre

ślają działania na zbiorze danych. 

 

Pusta null 
Przypisania  
Wywo

łania procedury 

Wywo

łania wejścia 

requeue 
delay 
abort 

sekwencyjne 

code 
exit 

skok 

goto

 

raise 

Proste 

steruj

ące 

return 

Warunkowa 

if

 

Wybor 

case

 

P

ętla 

loop

 

Blok 

declare

 

accept 

Z

łożone 

select 

 

 

4.1  Instrukcja przypisania  
Nazwa_zmiennej := wyra

żenie 

 

4.2  Instrukcja bloku 
Instrukcja bloku pozwala na zagnie

żdżanie bloków. Każda jednostka 

programowa sk

łada się z jednego lub więcej bloków.  

 
Ka

żdy blok składa się z: 

1.  Deklaracji jednostek (sta

łych, typów, zmiennych, podprogramów) 

lokalnych dla danego bloku. 

2.  Sekwencji instrukcji 

3.  Obs

ługi wyjątków 

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 10

 

[Identyfikator_bloku:] 
[

declare

  

    deklaracje ] 

  begin 

 

sekwencja instrukcji 

     [ 

exception

   obs

ługa wyjątków ] 

     

end 

[Identyfikator_bloku:]; 

 
Podzia

ł na bloki umożliwia wyodrębnienie spójnych fragmentów 

programu i jest narz

ędziem strukturalizacji programu. 

 
Przyk

ład: 

Swap: 
 

declare

 

 

 

Temp : Integer; 

 

begin

 

 

 

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

 

end Swap

 

4.3  Instrukcja warunkowa 

if

 

Pozwala wybra

ć który ciąg instrukcji ma być wykonany. Warunki są 

wyra

żeniami logicznymi. 

 

Instrukcja_if ::= 

if

 warunek1 

then

 

 

Instrukcje1 

elsif

 warunek2 

then

 

 

Instrukcje} 

 [

else

 

    instrukcje0 ] 

end if

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 11

 

Przyk

ład: 

if (x >= 1) and (x < 10) then 

 

y := x + y; 

elsif (x >= 10) and (x < 20)  then 

 

New_Line; 

 

Put(Item); 

else 

 

Put(Item); 

end if; 

4.4  Instrukcja wyboru case 
 

Instrukcja_wyboru ::= 

case

 wyrażenie_wyboru 

is

 

  

when

 Lista1  => Instrukcje1 

  .... 
  

when

 ListaN  => InstrukcjeN 

  [

when others

 => Instrukcje0] 

end case

 

 
Wyra

żenie wyboru musi być typem dyskretnym. Lista elementów musi 

by

ć wyrażeniami statycznymi rozdzielonymi pionowymi kreskami. 

 
Wykonanie instrukcji: 

1.  Obliczenie warto

ści wyrażenia wyboru. 

2.  Gdy wyra

żenie jest na którejś liście to wykonanie instrukcji po => 

3.  Gdy wyra

żenia brak na listach to zgłoszenie wyjątku 

Constraint_Error. 

 

case i is 

  when 1 | 2 | 3   => x = 1; 

  when range 4..10 => x = 2; 

  when others      => x = 3; 
end case; 

 

4.5  Instrukcja pętli 
Instrukcja p

ętli umożliwia wielokrotne wykonanie pewnego bloku 

instrukcji. Pierwsz

ą konstrukcją jest pętla nieskończona. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 12

 

Pętla_nieskonczona ::= 

[Identyfikator_pętli] 

loop 

    ciąg instrukcji 

end loop

 [Identyfikator_pętli]; 

 
Wyj

ście z pętli następuje po wykonaniu instrukcji 

exit

 

loop 

  i:= i+1; 

  if i >= 10 then exit; end if; 

end loop; 

 
Liczb

ę powtórzeń wyspecyfikować można używając klauzul 

while

 i 

for

 

Pętla_while ::=  

[Identyfikator_pętli] 

while

 [Wyrażenie_logiczne] 

loop 

    Ciąg instrukcji 

end loop

 [Identyfikator_pętli]; 

 
Ci

ąg instrukcji powtarzany jest tak długo jak 

Wyrażenie_logiczne

 

pozostaje prawdziwe. 
 

Pętla_for ::=  

[Identyfikator_pętli] 

for

 Identyfikator 

in

 [

reverse

]Podtyp_dyskretny 

loop 

    Ciąg instrukcji 

end loop

 [Identyfikator_pętli]; 

 
Instrukcja for powoduje powtórzenie 

Ciągu_instrukcji

 dla ka

żdej 

warto

ści określonej przez 

Podtyp_dyskretny

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 13

 

with ada.text_io; use ada.text_io; 

 

procedure Suma is 

Tab: array( Integer range 1..10) of Integer; 

Suma: Integer; 

begin 

   Suma := 0; 

   for i in Integer range 1..10 loop 

      Tab(i) := i; 

      Suma := Suma + i; 

   end loop; 

   put_line("Suma: " & Integer'Image(Suma)); 
end suma; 

Przykład 4-1 Sumowanie liczb 

 

4.6  Instrukcja skoku 

Wykonanie instrukcji 

goto

 etykieta

 powoduje przekazanie 

sterowania do instrukcji oznaczonej etykiet

ą. 

 

petla: loop 

  i:= i+1; 

  if i >= 10 then goto petla; end if; 
end loop; 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 14

 

5. Podprogramy 

Podprogramy s

ą podstawowymi jednostkami tworzącymi program Ady. 

Podprogramy umo

żliwiają uzyskanie następujących efektów: 

• 

Dekompozycja programu na hierarchi

ę jednostek - strukturalizacja 

• 

Tworzenie komponentów wielokrotnego u

żytku - biblioteki 

 
Zdefiniowane s

ą dwa rodzaje podprogramów: 

• 

Procedury 

• 

Funkcje 

 
 Definicja podprogramu sk

łada się z: 

• 

deklaracji podprogramu – opis interfejsu 

• 

tre

ści – opis działania 

 
Definicja_podprogramu := 
[Specyfikacja_podprogramu] 
Specyfikacja_podprogramu is 
[Deklaracje] 

begin 

  Ci

ąg_instrukcji 

end

 [nazwa_podprogramu] 

 
Specyfikacja podprogramu okre

śla: 

• 

Jego rodzaj (procedura czy funkcja) 

• 

Nazw

ę 

• 

Parametry formalne: nazwy, typy, kierunek przesy

łania 

• 

W funkcji typ zwracanej warto

ści 

 

5.1  Funkcje 
Funkcja to rodzaj podprogramu który zwraca pewn

ą wartość. Dlatego 

mog

ą być wykorzystane do obliczania wartości w wyrażeniach. 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 15

 

Tre

śc_funkcji := 

function

 nazwa_funkcji [(parametry_formalne_funkcji)] 

return

 Typ_zwracany 

is

 

  deklaracje 

begin 

  … 
  [

return

  … 

end

 nazwa_ funkcji; 

 
Lista parametrów formalnych jest postaci: 
 
parametry_formalne_funkcji:= 
Nazwa: [

in

] Typ {; Nazwa: [

in

] Typ } 

 
 
Gdy parametry s

ą tego samego typu to dopuszczalny jest zapis: 

Nazwa1, Nazwa2, ..., NazwaN: [Tryb] Typ 
 
W tre

ści funkcji powinno pojawić się przynajmniej jedno słowo kluczowe 

return

 a po nim wyra

żenie o typie zgodnym z definicją funkcji. 

 
 

  function    maxim(par1: Integer; par2: Integer) 

   return Integer is 

   begin 

      if(par1 >= par2) then 

         return par1; 

      else         

         return par2; 

      end if; 

   end maxim; 
    

 

5.2  Procedury 
Drugim rodzajem podprogramu jest procedura. 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 16

 

Tre

śc_procedury := 

procedure nazwa_procedury[(parametry_formalne_procedury)] 

is

 

  deklaracje 

begin 

  … 
  [

return

  … 

end

 nazwa_procedury; 

 
parametry_formalne_ procedury := 
Nazwa: [

in

] Typ {; Nazwa: [

in

] Typ } 

 
 
Tryb jest jedn

ą z trzech wartości: 

in

,

 in out

,

 out

. Oznacza on 

kierunek przekazywania danych: 

in 

Parametr wej

ściowy przekazywany przez wartość 

in out 

Parametr wej

ściowo wyjściowy przekazywany przez 

zmienn

ą 

out 

Parametr wyj

ściowy przekazywany przez zmienną 

 
Gdy parametry s

ą tego samego typu to dopuszczalny jest zapis: 

Nazwa1, Nazwa2, ..., NazwaN: [Tryb] Typ 
 
 
with Ada.Text_IO; use Ada.Text_IO; 
procedure proced1 is 
   x,y,pt: Float; 
 
procedure pole(a,b: in  Float; wynik: out Float) is 
  begin 
    wynik := (a * b)/2.0; 
  end pole; 
 
begin 
   Put_Line ("Pole trojkata"); 
   x:= 1.2; 
   y:= 2.4; 
   pole(x,y,pt); 
   Put_Line("Pole wynosi"& Float'Image(pt)); 
end; 

Przykład 5-1 Procedura obliczania pola trójkata 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 17

 

6. Pakiety 

Pakiet jest wa

żną konstrukcją języka Ada. Pakiet grupuje deklaracje i 

definicje i ukrywa ich wewn

ętrzne szczegóły. Pakiety mogą być 

oddzielnie kompilowane, grupowane w biblioteki i u

żywane  wielokrotnie. 

 
Specyfikacja_pakietu ::= 

package

 Nazwa 

is

 

 

[Deklaracje_sta

łych] 

[Deklaracje_typów] 
 

[Deklaracje_zmiennych] 

 

[Deklaracje_podprogramów] 

[

private

 

 

[Deklaracje_sta

łych] 

[Deklaracje_typów] 

end

 Nazwa; 

 
Tre

ść_pakietu ::= 

package body

 Nazwa 

is

 

[Deklaracje_wewn

ętrzne] 

begin 

 

[Instrukcje_inicjalizuj

ące_pakiet] 

end

 Nazwa; 

 
 
 
Specyfikacj

ę pakietu umieszcza się w oddzielnym pliku (z rozszrzeniem 

ads). 
 

-- Specyfikacja pakietu, plik stos.ads 

package stos is 

   procedure Push(x: Integer); 

   function  Pop return Integer; 
end stos; 

Przykład 6-1  Specyfikacja pakietu stos 

 
Deklaracj

ę pakietu umieszcza się w oddzielnym pliku (z rozszrzeniem 

adb). 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 18

 

 
-- Deklaracja pakietu stos - plik stos.adb 

package body stos is 

   rozmiar: constant := 10; 

   Buf: array(1..rozmiar) of Integer; 

   cnt: Integer; 

    

   procedure Push(x: Integer)is 

   begin 

      if(cnt = rozmiar) then return; 

      else 

         Buf(cnt) := x; 

         cnt := cnt+1; 

      end if; 

   end Push; 

    

   function  Pop return Integer is 

   begin 

      if(cnt = 0) then return -1; 

      else 

        cnt := cnt-1; 

        return Buf(cnt); 

      end if; 

   end Pop; 

 

begin 

  cnt := 1; 
end stos; 

Przykład 6-2 Implementacja pakietu stos 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

Wspó

łbieżność w języku Ada 

                                              

 19

 

-- Program testujący pakiet stos 

with ada.text_io; use ada.text_io; 

with stos; use stos; 

 

procedure stos_test is 

x: Integer; 

begin 

   Push(1); 

   Push(2); 

   Push(3); 

   for i in Integer range 1..3 loop 

    x := Pop; 

    put_line("Ze stosu: " & Integer'Image(x)); 

   end loop; 
end stos_test; 

Przykład 6-3 Program testujący pakiet stos 

 

PDF created with pdfFactory trial version 

www.pdffactory.com