ADA Jezyk 14

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


Wyszukiwarka

Podobne podstrony:
ADA Jezyk 16
czasowniki 10-14, Archeo, JĘZYK ŁACIŃSKI
Szkoła przyjazna rodzinie Wysłany przez bernadetarz dnia 14, Język polski i szkoła podstawowa
scenariusz 14 wydawnictwo 32, szkolne, Język polski metodyka, To lubię, To lubię - scenariusze
Język polski 14
s 14, LOGOPEDIA, Krasowicz - Kupis G, Język, czytanie i dysleksja, język czytanie i dysleksja CZERWO
scenariusz 3 wydawnictwo 14, szkolne, Język polski metodyka, To lubię, To lubię - scenariusze
14 1 Asymetria mózgu i język
arkusz Jezyk polski poziom r ro Nieznany (14)
jezyk ukrainski lekcja 14
Kurs Quenya 14, Język Elficki
Język w płynnej nowoczesności 14 2015
Język polski 14
jezyk ukrainski lekcja 14
wyklad 14
Vol 14 Podst wiedza na temat przeg okr 1

więcej podobnych podstron