1213z wdprog ww13

background image

Podprogramy - cd

Pakiety

Wstęp do programowania

wykład 13

Agata Półrola

Wydział Matematyki i Informatyki UŁ

sem. zimowy 2012/2013

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Podprogramy - uwaga dot. parametrów typu niezawężonego

Jeśli parametrem procedury lub funkcji jest tablica typu
niezawężonego, to pisząc dany podprogram nie można zakładać
że indeksowanie tablicy zaczyna się od 1 - może to prowadzić
do blędnych wyników, a podprogram nie jest uniwersalny!

(a

powinien

być uniwersalny, tzn. zadziałać poprawnie dla

każdej

tablicy dla której zostanie wywołany)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (konsekwencje błędnych założeń o indeksowaniu tablic
niezawęzonych)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

p r o c e d u r e

w 1 4 z a k r e s y

i s

t y p e Tab i s

a r r a y

( i n t e g e r

r a n g e <>) o f

i n t e g e r ;

t a b p u s t a :

e x c e p t i o n ;

p r o c e d u r e Get ( t :

o u t t a b )

i s

b e g i n

f o r

i

i n t ’ r a n g e l o o p

g e t ( t ( i ) ) ;

end l o o p ;

end g e t ;

p r o c e d u r e Put ( x :

i n

t a b )

i s

b e g i n

f o r

i

i n x ’ r a n g e l o o p p u t ( x ( i ) , 2 ) ;

p u t ( ” , ” ) ;

end l o o p ;

end p u t ;

f u n c t i o n

G d z i e M a x z l e ( x :

i n

t a b )

r e t u r n

i n t e g e r

i s

max , mmaxa :

i n t e g e r ;

b e g i n

max:= x ( 1 ) ; mmaxa : = 1 ;

f o r

i

i n

1 . . x ’ l a s t

l o o p

i f

x ( i )>max t h e n max:= x ( i ) ; mmaxa:= i ; end

i f ;

end l o o p ;

r e t u r n mmaxa ;

end G d z i e m a x z l e ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (konsekwencje błędnych założeń - cd)

f u n c t i o n

G d z i e M a x o k ( x :

i n

t a b )

r e t u r n

i n t e g e r

i s

max , mmaxa :

i n t e g e r ;

b e g i n

i f

x ’ l e n g t h =0 t h e n

r a i s e

t a b p u s t a ; end

i f ;

max:= x ( x ’ f i r s t ) ;
mmaxa:= x ’ f i r s t ;

f o r

i

i n x ’ f i r s t + 1 . . x ’ l a s t

l o o p

i f

x ( i )>max t h e n max:= x ( i ) ; mmaxa:= i ; end

i f ;

end l o o p ;

r e t u r n mmaxa ;

end G d z i e m a x o k ;

k :

t a b ( − 5 . . 5 ) ;

m:

i n t e g e r ;

b e g i n

g e t ( k ) ;

p u t ( k ) ;

n e w l i n e ;

p u t l i n e ( ” u z y c i e

p o p r a w n e j

f u n k c j i

z w r a c a j a c e j

i n d e k s

m i e j s c a maxa : ” ) ;

b e g i n

m:= g d z i e m a x o k ( k ) ;

p u t ( ” m i e j s c e maxa : ” ) ;
p u t (m, 5 ) ;

n e w l i n e ;

p u t ( ”max t o ” ) ;

p u t ( k (m ) ) ;

e x c e p t i o n

when t a b p u s t a => p u t ( ” maxa n i e ma ; −) ” ) ;

end ;

n e w l i n e ( 3 ) ;
p u t l i n e ( ” u z y c i e

n i e p o p r a w n e j

f u n k c j i

z w r a c a j a c e j

i n d e k s

m i e j s c a maxa : ) ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (konsekwencje błędnych założeń - cd)

b e g i n

m:= g d z i e m a x z l e ( k ) ;

p u t ( ” m i e j s c e maxa : ” ) ;
p u t (m, 5 ) ;

n e w l i n e ;

p u t ( ”max t o ” ) ;

p u t ( k (m ) ) ;

e x c e p t i o n

when t a b p u s t a => p u t ( ” maxa n i e ma ; −) ” ) ;

end ;

−− aby z o b a c z y c n i e p o p r a w n o s c

d z i a l a n i a

n a l e z y

p o d a c

t a b l i c e

−− t a k a z e maksymalna w a r t o s c

j e s t w j e j

p i e r w s z e j

c z e s c i

end w 1 4 z a k r e s y ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (konsekwencje błędnych założeń dot. indeksowania - inny
przykład)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

p r o c e d u r e

w 1 4 z a k r e s y 2

i s

t y p e Tab i s

a r r a y

( i n t e g e r

r a n g e <>) o f

i n t e g e r ;

p r o c e d u r e Get ( t :

o u t t a b )

i s

b e g i n

f o r

i

i n t ’ r a n g e l o o p

g e t ( t ( i ) ) ;

end l o o p ;

end g e t ;

p r o c e d u r e Put ( x :

i n

t a b )

i s

b e g i n

f o r

i

i n x ’ r a n g e l o o p p u t ( x ( i ) , 2 ) ;

p u t ( ” , ” ) ;

end l o o p ;

end p u t ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (konsekwencje błędnych założeń dot. indeksowania - inny
przykład - cd)

f u n c t i o n

T a b l i c a N P o c z a t k o w y c h z l a ( a : Tab ; n :

n a t u r a l )

r e t u r n Tab i s

b e g i n

r e t u r n a ( 1 . . n ) ;

end T a b l i c a N P o c z a t k o w y c h z l a ;

f u n c t i o n

T a b l i c a N P o c z a t k o w y c h o k ( a : Tab ; n :

n a t u r a l )

r e t u r n Tab i s

b e g i n

r e t u r n a ( a ’ f i r s t . . a ’ f i r s t +n −1);

end T a b l i c a N P o c z a t k o w y c h o k ;

k :

t a b ( − 5 . . 5 ) ;

b e g i n

g e t ( k ) ;
p u t ( k ) ;
n e w l i n e ;

p u t l i n e ( ” T a b l i c a 3 p o c z a t k o w y c h e l e m e n t o w : ” ) ;

p u t ( T a b l i c a N P o c z a t k o w y c h o k ( k , 3 ) ) ;

n e w l i n e ;
p u t l i n e ( ” T a b l i c a 3 p o c z a t k o w y c h ( ? ? ; −) ) e l e m e n t o w − z l a

w e r s j a : ” ) ;

p u t ( T a b l i c a N P o c z a t k o w y c h z l a ( k , 3 ) ) ;

end w 1 4 z a k r e s y 2 ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Specyfikacja podprogramu

Specyfikacja podprogramu

opisuje rodzaj podprogramu, jego

nazwę, parametry i w przypadku funkcji - typ wyniku.

Aby otrzymać specyfikację, z funkcji / procedury “wycinamy” słówko is i wszystko co

za nim, a w miejsce tego wstawiamy średnik

Przykłady

function PoleTrojkata(a,b,c: float) return float;
function CzyTrojkat(x,y,x: integer) return boolean;
procedure Wizytowka;
procedure WypiszTablice(t: in Tab);

Specyfikacje potrzebne są w pakietach, a także w pojedynczych

programach z podprogramami korzystającymi z siebie nawzajem

(wzajemnie rekurencyjnymi)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Wzajemna rekurencja procedur)

w i t h ada . t e x t i o , ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o , ada . i n t e g e r t e x t i o ;

p r o c e d u r e

w 1 4 d o u b l e r e c

i s

p r o c e d u r e P1 ( a :

i n t e g e r ; b :

c h a r a c t e r ) ;

p r o c e d u r e P2 ( b :

i n

o u t

c h a r a c t e r ) ;

p r o c e d u r e P1 ( a :

i n t e g e r ; b :

c h a r a c t e r )

i s

c : c h a r a c t e r := b ;

b e g i n

i f

c<’ Z ’ t h e n

f o r

i

i n

1 . . a l o o p

n e w l i n e ; P2 ( c ) ;

end l o o p ;

e l s e

p u t ( ” k o n i e c ” ) ;

end

i f ;

end P1 ;

p r o c e d u r e P2 ( b :

i n

o u t

c h a r a c t e r )

i s

b e g i n

p u t ( ”−−>” ) ;

i f

b<’ Z ’ t h e n p u t ( b ) ; b := c h a r a c t e r ’ s u c c ( b ) ; P1 ( 1 , b ) ;

end

i f ;

end P2 ;

k :

i n t e g e r ;

b e g i n

p u t ( ” p o d a j

l i c z b e : ” ) ;

g e t ( k ) ;

P1 ( k , ’A ’ ) ;

end w 1 4 d o u b l e r e c ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Pakiety

Rola pakietów

Ada umożliwia grupowanie definicji typów, deklaracji zmiennych i
stałych oraz procedur i funkcji tak, aby mozna z nich było
korzystać w wielu programach

Konstrukcję służącą do tego celu nazywamy

pakietem

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Pakiety

Rola pakietów

Ada umożliwia grupowanie definicji typów, deklaracji zmiennych i
stałych oraz procedur i funkcji tak, aby mozna z nich było
korzystać w wielu programach
Konstrukcję służącą do tego celu nazywamy

pakietem

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Struktura pakietu

Pakiet składa się z dwóch części:

specyfikacji

i

ciała

specyfikacja zawiera definicje i deklaracje elementów
widocznych dla użytkowników pakietu

ciało zawiera:

ciała procedur i funkcji “zapowiedzianych” w specyfikacji
wszelkie elementy lokalne (nie udostępnione użytkownikom
pakietu), w tym funkcje i procedury

specyfikacja może zawierać również tzw.

część prywatną

.

Elementy w niej umieszczone traktowane są tak jakby były
umieszczone w ciele pakietu.

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Specyfikacja pakietu

specyfikacja pakietu (plik nazwa pakietu.ads)

bez części prywatnej:

-- opcjonalnie: klauzula with i klauzula use (rzadko potrzebne)
package nazwa_pakietu is

-- definicje typów
-- deklaracje zmiennych i stałych
-- konkretyzacje pakietów
-- specyfikacje procedur i funkcji

end nazwa_pakietu;

z częścią prywatną:

-- opcjonalnie: klauzula with i klauzula use (rzadko potrzebne)
package nazwa_pakietu is

-- definicje typów
-- deklaracje zmiennych i stałych
-- konkretyzacje pakietów

-- specyfikacje procedur i funkcji

private

-- część prywatna

end nazwa_pakietu;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (specyfikacja pakietu Tablice

[Tablice.ads]

)

p a c k a g e

t a b l i c e

i s

t y p e Tab i s

a r r a y

( i n t e g e r

r a n g e <>) o f

i n t e g e r ;

t a b l i c a p u s t a :

e x c e p t i o n ;

p r o c e d u r e

P o b i e r z ( x :

o u t Tab ) ;

p r o c e d u r e W y p i s z ( x :

i n Tab ) ;

f u n c t i o n ZnajdzMax ( x : Tab )

r e t u r n

i n t e g e r ;

end

t a b l i c e ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (specyfikacja pakietu DniPak

[DniPak.ads]

)

w i t h ada . t e x t i o ;
p a c k a g e d n i P a k

i s

t y p e

d n i

i s

( pon , wt ,

s r , czw ,

pt ,

so ,

n i e ) ;

s u b t y p e weekend

i s

d n i

r a n g e s o . . n i e ;

t y p e d a t a

i s

p r i v a t e ;

p a c k a g e

d n i i o

i s new ada . t e x t i o . e n u m e r a t i o n i o ( d n i ) ;

p o c z a t e k :

c o n s t a n t

d a t a ;

z l a d a t a :

e x c e p t i o n ;

f u n c t i o n

J u t r o ( d :

d n i )

r e t u r n

d n i ;

f u n c t i o n D z i e n T y g ( d :

d a t a )

r e t u r n

d n i ;

f u n c t i o n TworzDate ( d , m, r :

i n t e g e r )

r e t u r n

d a t a ;

p r o c e d u r e W y p i s z D a t e ( d :

d a t a ) ;

p r i v a t e

t y p e d a t a

i s

a r r a y ( 1 . . 3 )

o f

i n t e g e r ;

p o c z a t e k :

c o n s t a n t

d a t a

: = ( 1 , 1 , 2 0 1 0 ) ;

end d n i P a k ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Ciało pakietu

ciało pakietu (plik nazwa pakietu.adb)

bez części wykonywalnej

-- opcjonalnie: klauzula with i klauzula use (zazwyczaj potrzebne)
package body nazwa_pakietu is

-- ciała procedur i funkcji pomocniczych (prywatnych)
-- inne elementy pomocnicze (prywatne)
-- ciała procedur i funkcji ze specyfikacji

end nazwa_pakietu;

z częścią wykonywalną:

-- opcjonalnie: klauzula with i klauzula use (zazwyczaj potrzebne)
package body nazwa_pakietu is

-- ciała procedur i funkcji pomocniczych (prywatnych)
-- inne elementy pomocnicze (prywatne)
-- ciała procedur i funkcji ze specyfikacji

begin

-- instrukcje

end nazwa_pakietu;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu Tablice

[Tablice.adb]

)

w i t h ada . t e x t i o ,

ada . I n t e g e r t e x t i o ;

u s e ada . t e x t i o ,

ada . I n t e g e r t e x t i o ;

p a c k a g e body

t a b l i c e

i s

p r o c e d u r e

P o b i e r z ( x :

o u t Tab )

i s

b e g i n

f o r

i

i n x ’ r a n g e l o o p

p u t ( ” e l e m e n t ” ) ;

p u t ( i , 0 ) ;

p u t ( ”> ” ) ;

g e t ( x ( i ) ) ;

end l o o p ;

end P o b i e r z ;

p r o c e d u r e W y p i s z ( x :

i n Tab )

i s

b e g i n

f o r

i

i n x ’ r a n g e l o o p

p u t ( x ( i ) , 2 ) ; p u t ( ” , ” ) ;

end l o o p ;

end W y p i s z ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu Tablice- cd. )

f u n c t i o n ZnajdzMax ( x : Tab )

r e t u r n

i n t e g e r

i s

m:

i n t e g e r ;

b e g i n

i f

x ’ l e n g t h =0 t h e n

r a i s e

t a b l i c a p u s t a ; end

i f ;

m:= x ( x ’ f i r s t ) ;

f o r

i

i n x ’ r a n g e l o o p

i f

x ( i )>m t h e n m:= x ( i ) ;

end

i f ;

end l o o p ;

r e t u r n m;

end ZnajdzMax ;

b e g i n

p u t l i n e ( ”−−−−−−− PAKIET ’ TABLICE ’ −−−−−−−−−−−−−−−−−−−−−−” ) ;

end

t a b l i c e ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Kompilacja pakietu

pakiet tylko kompilujemy (nie wykonujemy linkowania)

porządek kompilacji: specyfikacja pakietu (plik .ads), ciało
pakietu (plik .adb)

zmiany w specyfikacji pakietu powodują konieczność
ponownego skompilowania jego specyfikacji i ciała, zmiany w
ciele pakietu wymagają ponownego przekompilowania tego
ciała

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Korzystanie z pakietu

wszystkie pakiety (zarówno standardowe jak i własne) dołączamy do
programu w taki sam sposób (klauzula with, ewentualnie klauzula
use)

w programie można korzystać ze wszystkich “upublicznionych”
zasobów danego pakietu (tj. typów, zmiennych, stałych, wyjątków,
procedur, funcji etc. wymienionych w publicznej części specyfikacji
pakietu)

jeśli zasoby pakietu nie są dostępne bezpośrednio (nazwa pakietu
nie wystąpiła w klauzuli use) lub jeśli nazwa danego zasobu nie jest
jednoznaczna (tzn. w kilku pakietach dołączonych do programu
występuje zasób o takiej samej nazwie, a rozróżnienie ich np. na
podstawie typu parametrów jest niemożliwe), to musimy używać
“pełnej” nazwy zasobu (nazwa pakietu.nazwa zasobu, np.
tablice.tablica pusta, tablica.Pobierz)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (program używający pakietu Tablice (wersja 1) )

w i t h ada . t e x t i o ,

t a b l i c e ;

u s e ada . t e x t i o ;

p r o c e d u r e

w 0 1 4 t a b l i c e T e s t

i s

t :

t a b l i c e . t a b ( 1 . . 1 0 ) ;

x :

i n t e g e r ;

b e g i n

p u t l i n e ( ” p o d a j

z a w a r t o s c

t a b l i c y : ” ) ;

t a b l i c e . p o b i e r z ( t ) ;
p u t l i n e ( ” Oto t a b l i c a : ” ) ;
t a b l i c e . w y p i s z ( t ) ;

x := t a b l i c e . z n a j d z m a x ( t ) ;

e x c e p t i o n

when t a b l i c e . t a b l i c a p u s t a =>

p u t ( ” t a b l i c a

b y l a

p u s t a − maxa b r a k ” ) ;

end w 0 1 4 t a b l i c e t e s t ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (program używający pakietu Tablice (wersja 2) )

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ,

t a b l i c e ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o , t a b l i c e ;

p r o c e d u r e

w 0 1 4 t a b l i c e T e s t 1

i s

d l :

n a t u r a l ;

b e g i n

p u t ( ” p o d a j

d l u g o s c

t a b l i c y : ” ) ;

g e t ( d l ) ;

d e c l a r e

t : Tab ( 1 . . d l ) ;

b e g i n

p u t l i n e ( ” p o d a j

z a w a r t o s c

t a b l i c y : ” ) ;

p o b i e r z ( t ) ;
p u t l i n e ( ” Oto t a b l i c a : ” ) ;
w y p i s z ( t ) ;

p u t ( ” n a j w i e k s z y

e l e m e n t w t a b l i c y : ” ) ;

p u t ( ZnajdzMax ( t ) ) ;

e x c e p t i o n

when t a b l i c a p u s t a =>

p u t ( ” t a b l i c a

b y l a

p u s t a − maxa b r a k ” ) ;

end ;

end w 0 1 4 t a b l i c e t e s t 1 ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Kolejny przykład - kompletny pakiet Dnipak i program
korzystający z tego pakietu
(na kolejnych slajdach)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (specyfikacja pakietu DniPak

[DniPak.ads]

)

w i t h ada . t e x t i o ;
p a c k a g e d n i P a k

i s

t y p e

d n i

i s

( pon , wt ,

s r , czw ,

pt ,

so ,

n i e ) ;

s u b t y p e weekend

i s

d n i

r a n g e s o . . n i e ;

t y p e d a t a

i s

p r i v a t e ;

p a c k a g e

d n i i o

i s new ada . t e x t i o . e n u m e r a t i o n i o ( d n i ) ;

p o c z a t e k :

c o n s t a n t

d a t a ;

z l a d a t a :

e x c e p t i o n ;

f u n c t i o n

J u t r o ( d :

d n i )

r e t u r n

d n i ;

f u n c t i o n D z i e n T y g ( d :

d a t a )

r e t u r n

d n i ;

f u n c t i o n TworzDate ( d , m, r :

i n t e g e r )

r e t u r n

d a t a ;

p r o c e d u r e W y p i s z D a t e ( d :

d a t a ) ;

p r i v a t e

t y p e d a t a

i s

a r r a y ( 1 . . 3 )

o f

i n t e g e r ;

p o c z a t e k :

c o n s t a n t

d a t a

: = ( 1 , 1 , 2 0 1 0 ) ;

end d n i P a k ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu DniPak

[DniPak.adb]

)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o ;

p a c k a g e body DniPak

i s

f u n c t i o n

J u t r o ( d :

i n

d n i )

r e t u r n

d n i

i s

b e g i n

i f

d/= n i e

t h e n

r e t u r n

d n i ’ s u c c ( d ) ;

e l s e

r e t u r n pon ; end

i f ;

end J u t r o ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

−− s t a l a p o m o c n i c z a

d z i e n p o c z :

c o n s t a n t

d n i := p t ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu DniPak

[DniPak.adb] - cd

)

−− f u n k c j a p o m o c n i c z a ( p r y w a t n a )
−− r o z n i c a

d n i m i e d z y dwiema d a t a m i

−− ( w y l i c z e n i a b a r d z o u p r o s z c z o n e n i e d o k l a d n e )

f u n c t i o n ”−” ( d1 , d2 :

d a t a )

r e t u r n

i n t e g e r

i s

r o z n i c a :

i n t e g e r ;

b e g i n

i f

d1 (3)= d2 ( 3 ) and d1 (2)/= d2 ( 2 ) t h e n

r o z n i c a :=(30 − d2 ( 1 ) ) + 3 0 ∗ ( d1 (2) − d2 (2) −1)+ d1 ( 1 ) ;

e l s i f

d1 (3)= d2 ( 3 ) and d1 (2)= d2 ( 2 ) t h e n

r o z n i c a := d1 (1) − d2 ( 1 ) ;

e l s i f

d1 (3)/= d2 ( 3 ) t h e n

r o z n i c a :=(30 − d2 (1))+(12 − d1 ( 2 ) ) ∗ 3 0 +

3 6 5 ∗ ( d1 (3) − d2 (3) −1)+ d1 (1)+ d1 ( 2 ) ∗ 3 0 ;

end

i f ;

r e t u r n

r o z n i c a ;

end ”−” ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu DniPak

[DniPak.adb] - cd

)

f u n c t i o n D z i e n T y g ( d :

d a t a )

r e t u r n

d n i

i s

x , dz :

i n t e g e r ;

b e g i n

x := p o c z a t e k − d ;
dz := ( d n i ’ p o s ( d z i e n p o c z ) + x ) mod 7 ;

r e t u r n

d n i ’ v a l ( d z ) ;

end D z i e n T y g ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

f u n c t i o n TworzDate ( d , m, r :

i n t e g e r )

r e t u r n

d a t a

i s

d t : d a t a ;

b e g i n

i f

d>31 o r m>12 o r r <2010 t h e n

r a i s e

z l a d a t a ; end

i f ;

d t : = ( d , m, r ) ;

r e t u r n

d t ;

end TworzDate ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ciało pakietu DniPak

[DniPak.adb] - cd

)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

−− p r o c e d u r a wymaga t e x t i o

i

i n t e g e r t e x t i o

p r o c e d u r e W y p i s z D a t e ( d :

d a t a )

i s

b e g i n

ada . i n t e g e r t e x t i o . p u t ( d ( 1 ) , 0 ) ;

p u t ( ’− ’ ) ;

ada . i n t e g e r t e x t i o . p u t ( d ( 2 ) , 0 ) ;

p u t ( ’− ’ ) ;

ada . i n t e g e r t e x t i o . p u t ( d ( 3 ) , 0 ) ;

end W y p i s z D a t e ;

end DniPak ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (program korzystający z pakietu DniPak)

w i t h

ada . t e x t i o ,

ada . i n t e g e r t e x t i o ,

d n i p a k ;

u s e

ada . t e x t i o ,

ada . i n t e g e r t e x t i o ,

d n i p a k ;

p r o c e d u r e

w 1 5 d n i p a k t e s t

i s

d :

d a t a ;

dz , m, r : i n t e g e r ;

u s e

d n i i o ;

b e g i n

p u t ( ” p o d a j

d z i e n ,

m i e s i a c

i

r o k

: ” ) ;

g e t ( dz ) ;

g e t (m) ;

g e t ( r ) ;

d := t w o r z d a t e ( dz , m, r ) ;

p u t ( ” d a t a : ” ) ;

w y p i s z D a t e ( d ) ;

n e w l i n e ;

p u t ( ” d z i e n

t y g o d n i a : ” ) ;

d n i i o . p u t ( D z i e n T y g ( d ) ) ;

end w 1 5 d n i p a k t e s t ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Pakiety - uwagi

klauzuli with w specyfikacji pakietu używa się zazwyczaj rzadko
(tylko gdy ta specyfikacja korzysta z pakietu, np. zawiera jego
konkretyzację)

umieszczenie pakietu A w klauzulach with i use specyfikacji pakietu
B nie powoduje automatycznego dołączenia pakietu A do programu
w którym jest użyty pakiet B (nie zastępuje with A; use A; w tym
programie)

oczywiście pakiet A należy dołączyć tylko wtedy gdy program korzysta

bezpośrednio z zasobów pakietu A

jeśli specyfikacja pakietu B “powołuje do życia” pakiet C (poprzez
konkretyzację pewnego pakietu rodzajowego), to programy
korzystające z B dołączają automatycznie ten pakiet (“with C;” nie
jest potrzebne), ale nie widzą bezpośrednio jego zasobów
(potrzebne jest “use C;” albo “use B.C;”, przy czym umieszcza
się je w części deklaracyjnej programu)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Pakiety - uwagi cd

zmiany w specyfikacji pakietu powodują konieczność
przekompilowania programu który z niego korzysta; zmiany w
ciele pakietu powodują konieczność ponownego zbudowania
wersji wykonywalnej

pakiet może mieć tylko specyfikację

np. jeśli specyfikacja pakietu będzie zawierać wyłącznie definicje typów i

konkretyzacje pakietów, to ciało będzie zbędne

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Pakiety - uwagi cd

zmiany w specyfikacji pakietu powodują konieczność
przekompilowania programu który z niego korzysta; zmiany w
ciele pakietu powodują konieczność ponownego zbudowania
wersji wykonywalnej

pakiet może mieć tylko specyfikację

np. jeśli specyfikacja pakietu będzie zawierać wyłącznie definicje typów i

konkretyzacje pakietów, to ciało będzie zbędne

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Typy prywatne

Pakiety umożliwiają definiowanie

typów prywatnych

(przykład: typ

data w pakiecie DniPak)

w publicznej części specyfikacji pakietu definiujemy taki typ
pisząc
type nazwa typu is private;

szczegóły typu (jego pełna definicja) umieszczone są w części
prywatnej specyfikacji pakietu (po słowie private)

w tej samej części umieszcza się inicjalizacje publicznych
stałych tego typu (zob. stałą poczatek w pakiecie DniPak)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Typy prywatne - cd

zdefiniowanie typu jako prywatnego oznacza, że programy
korzystające z zasobów pakietu mogą używać tego typu, ale
nie mają dostępu do szczegółów typu (czyli np. “nie
wiedzą” że typ data w pakiecie DniPak jest tablicą )

jedynymi dostępnymi w tych programach operacjami jakie
można wykonywać na wartościach typu prywatnego są
podstawienie (:=), porównywanie za pomocą = i /= oraz
operacje udostępniane przez dany pakiet

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Po co typy prywatne? - przykład

Przykład (Pakiet bez użycia typu prywatnego - specyfikacja)

p a c k a g e u l a m k i

i s

t y p e u l a m e k

i s

a r r a y ( i n t e g e r

r a n g e

1 . . 2 )

o f

i n t e g e r ;

z l y m i a n o w n i k :

e x c e p t i o n ;

p r o c e d u r e

w y p i s z ( u :

i n u l a m e k ) ;

p r o c e d u r e

p o b i e r z ( u :

o u t u l a m e k ) ;

end u l a m k i ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Pakiet bez użycia typu prywatnego - ciało)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

p a c k a g e body u l a m k i

i s

p r o c e d u r e

w y p i s z ( u :

i n u l a m e k )

i s

b e g i n

p u t ( u ( 1 ) , 0 ) ; p u t ( ” / ” ) ; p u t ( u ( 2 ) , 0 ) ;

end w y p i s z ;

p r o c e d u r e

p o b i e r z ( u :

o u t u l a m e k )

i s

b e g i n

p u t ( ” p o d a j

l i c z n i k > ” ) ;

g e t ( u ( 1 ) ) ;

p u t ( ” p o d a j m i a n o w n i k > ” ) ;

g e t ( u ( 2 ) ) ;

i f

u (2)=0 t h e n

r a i s e

z l y m i a n o w n i k ; end

i f ;

i f

u (2) <0 t h e n u (2):= − u ( 2 ) ; u (1):= − u ( 1 ) ; end

i f ;

end p o b i e r z ;

end u l a m k i ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Pakiet bez użycia typu prywatnego - przykład użycia)

w i t h ada . t e x t i o ,

ada . I n t e g e r T e x t I O ,

u l a m k i ;

u s e ada . t e x t i o ,

ada . I n t e g e r T e x t I O ,

u l a m k i ;

p r o c e d u r e

u l a m k i t e s t

i s

u1 , u2 :

u l a m e k ;

b e g i n

p o b i e r z ( u1 ) ;

p o b i e r z ( u2 ) ;

i f

u1=u2 t h e n

p u t ( ” p o d a l e s dwa r o w n e u l a m k i ” ) ;

e l s e

p u t ( ” p o d a l e s

u l a m k i

k t o r e

n i e

s a r o w n e : ” ) ;

w y p i s z ( u1 ) ;

p u t ( ” i ” ) ;

w y p i s z ( u2 ) ;

i f

u1>u2 t h e n p u t ( ”

− p i e r w s z y

j e s t

w i e k s z y ” ) ;

e l s e

p u t ( ” − d r u g i

j e s t

w i e k s z y ” ) ;

end

i f ;

end

i f ;

−− u ł a m k i 1/2 i 5/10 n i e będą równe ,

d r u g i

b ę d z i e

u z n a n y z a w i ę k s z y

n e w l i n e ;
f o r

i

i n u1 ’ r a n g e l o o p p u t ( u1 ( i ) ) ;

end l o o p ;

n e w l i n e ;

u1 ( 2 ) : = 0 ;

w y p i s z ( u1 ) ;

−− można w t e n s p o s ó b u t w o r z y ć ułamek z zerowym m i a n o w n i k i e m ,
−− c h o c i a ż p r o c e d u r a p o b i e r a j ą c a na t o n i e p o z w a l a

end u l a m k i t e s t ;

Problem równości i porównywania ułamków można “obejść” definiując odpowiednie operatory, ale problemu

zerowych mianowników obejść nie można

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ten sam pakiet z typem prywatnym - specyfikacja)

p a c k a g e

u l a m k i p r i v

i s

t y p e u l a m e k

i s

p r i v a t e ;

z l y m i a n o w n i k :

e x c e p t i o n ;

p r o c e d u r e

w y p i s z ( u :

i n u l a m e k ) ;

p r o c e d u r e

p o b i e r z ( u :

o u t u l a m e k ) ;

−− e w e n t u a l n i e :

f u n c t i o n ”=”( a , b : u l a m e k )

r e t u r n

b o o l e a n ;

p r i v a t e

t y p e u l a m e k

i s

a r r a y ( i n t e g e r

r a n g e

1 . . 2 )

o f

i n t e g e r ;

end u l a m k i p r i v ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ten sam pakiet z typem prywatnym - ciało)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

p a c k a g e body u l a m k i p r i v

i s

p r o c e d u r e

w y p i s z ( u :

i n u l a m e k )

i s

b e g i n

p u t ( u ( 1 ) , 0 ) ; p u t ( ” / ” ) ; p u t ( u ( 2 ) , 0 ) ;

end w y p i s z ;

p r o c e d u r e

p o b i e r z ( u :

o u t u l a m e k )

i s

b e g i n

p u t ( ” p o d a j

l i c z n i k > ” ) ;

g e t ( u ( 1 ) ) ;

p u t ( ” p o d a j m i a n o w n i k > ” ) ;

g e t ( u ( 2 ) ) ;

i f

u (2)=0 t h e n

r a i s e

z l y m i a n o w n i k ; end

i f ;

i f

u (2) <0 t h e n u (2):= − u ( 2 ) ; u (1):= − u ( 1 ) ; end

i f ;

end p o b i e r z ;

−− e w e n t u a l n i e :

f u n c t i o n ”=”( a , b : u l a m e k )

r e t u r n

b o o l e a n

i s

−−

b e g i n

−−

i f

a ( 1 ) b (2)= b ( 1 ) a ( 2 )

t h e n

r e t u r n

t r u e ;

e l s e

r e t u r n

f a l s e ;

end

i f ;

−−

end ”=”;

end u l a m k i p r i v ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (ten sam pakiet z typem prywatnym - przykład użycia)

w i t h ada . t e x t i o ,

ada . I n t e g e r T e x t I O ,

u l a m k i p r i v ;

u s e ada . t e x t i o ,

ada . I n t e g e r T e x t I O ,

u l a m k i p r i v ;

p r o c e d u r e

u l a m k i p r i v t e s t

i s

u1 , u2 :

u l a m e k ;

b e g i n

p o b i e r z ( u1 ) ;

p o b i e r z ( u2 ) ;

−− KOMPILOWALNE ZAWSZE :

i f

u1=u2 t h e n

p u t ( ” p o d a l e s dwa r o w n e u l a m k i ” ) ;

e l s e

p u t ( ” p o d a l e s

u l a m k i

k t o r e

n i e

s a r o w n e : ” ) ;

w y p i s z ( u1 ) ;

p u t ( ” i ” ) ;

w y p i s z ( u2 ) ;

−− PRZY CZYM PRZY STANDARDOWYM ”=” UŁAMKI 1/2 i 5/10 NIE BĘDĄ RÓWNE
−− PRAWIDŁOWE WYNIKI OTRZYMAMY TYLKO GDY NAPISZEMY WŁASNY OPEATOR ”=”
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
−−

KOMPILOWALNE TYLKO J E Ś L I NAPISZEMY WŁASNY OPERATOR ”<” DLA UŁAMKÓW:

−−

i f

u1>u2 t h e n p u t ( ” p i e r w s z y

j e s t

w i e k s z y ” ) ;

−−

e l s e

p u t ( ” d r u g i

j e s t

w i e k s z y ” ) ;

−−

end

i f ;

end

i f ;

n e w l i n e ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
−−

NIEKOMPILOWALNE :

−−

f o r

i

i n u1 ’ r a n g e

l o o p p u t ( u1 ( i ) ) ;

end l o o p ;

n e w l i n e ;

−−

u1 ( 2 ) : = 0 ;

−−

p u t ( ” nowy u l a m e k :

” ) ;

w y p i s z ( u1 ) ;

end

u l a m k i p r i v t e s t ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Ograniczone typy prywatne

oprócz typów prywatnych możemy definiować

ograniczone typy

prywatne

pisząc w publicznej części specyfikacji pakietu

type nazwa typu is limited private;

szczegóły typu (jego pełna definicja) umieszczone są w części
prywatnej specyfikacji pakietu (analogicznie jak w przypadku typów
prywatnych)

zdefiniowany w ten sposób typ zachowuje się tak jak typ prywatny,
przy czym operacje :=, = i /= nie są dla niego dostępne

dostępnymi w programach operacjami dla ograniczonych typów
prywatnych są zatem tylko operacje zdefiniowane w pakiecie.

oczywiście w pakiecie można zdefiniować także własny operator "=" dla danego

ograniczonego typu prywatnego. Operator "/=" jest implementowany

automatycznie. Operatora ":=" samodzielnie zdefiniować nie można (co

najwyżej można napisać funkcję/procedurę o innej nazwie pełniącą podobną

rolę)

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Po co ograniczone typy prywatne? - przykład

Przykład (Pakiet bez ograniczonego typu prywatnego -
specyfikacja)

p a c k a g e

k o l e j k i P a k

i s

t y p e

k o l e j k a

i s

p r i v a t e ;

k o l e j k a p u s t a :

e x c e p t i o n ;

p r o c e d u r e wstaw ( k :

i n

o u t

k o l e j k a ;

w s t a w i a n a l i c z b a :

i n

i n t e g e r ) ;

p r o c e d u r e u s u n ( k :

i n

o u t

k o l e j k a ;

u s u n i e t a l i c z b a :

o u t

i n t e g e r ) ;

p r o c e d u r e

w y p i s z ( k :

i n

k o l e j k a ) ;

p r i v a t e

t y p e box ;
t y p e w s k b o x

i s

a c c e s s box ;

t y p e box

i s

r e c o r d

d a n e :

i n t e g e r ;

n a s t e p n y :

w s k b o x ;

end r e c o r d ;

t y p e

k o l e j k a

i s

r e c o r d

p o c z a t e k ,

k o n i e c :

w s k b o x := n u l l ;

end r e c o r d ;

end k o l e j k i P a k ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Pakiet bez ogr. typu pryw. - ciało)

w i t h ada . t e x t i o ,

ada . i n t e g e r t e x t i o ,

ada . u n c h e c k e d d e a l l o c a t i o n ;

u s e ada . t e x t i o ,

ada . i n t e g e r t e x t i o ;

p a c k a g e body k o l e j k i P a k

i s

p r o c e d u r e

z w o l n i j P a m i e c

i s new ada . u n c h e c k e d d e a l l o c a t i o n ( box , w s k b o x ) ;

p r o c e d u r e wstaw ( k :

i n

o u t

k o l e j k a ;

w s t a w i a n a l i c z b a :

i n

i n t e g e r )

i s

nowy :

w s k b o x ;

b e g i n

nowy := new box ’ ( d a n e=>w s t a w i a n a l i c z b a , n a s t e p n y=>n u l l ) ;

i f

k . p o c z a t e k=n u l l

t h e n

k . p o c z a t e k := nowy ; k . k o n i e c := nowy ;

e l s e

k . k o n i e c . n a s t e p n y := nowy ; k . k o n i e c := k . k o n i e c . n a s t e p n y ;

end

i f ;

end wstaw ;

p r o c e d u r e u s u n ( k :

i n

o u t

k o l e j k a ;

u s u n i e t a l i c z b a :

o u t

i n t e g e r )

i s

pom :

w s k b o x ;

b e g i n

i f

k . p o c z a t e k=n u l l

t h e n

r a i s e

k o l e j k a p u s t a ;

e l s e

pom:= k . p o c z a t e k ;

k . p o c z a t e k := k . p o c z a t e k . n a s t e p n y ;

u s u n i e t a l i c z b a :=pom . d a n e ;

z w o l n i j P a m i e c ( pom ) ;

end

i f ;

end u s u n ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Pakiet bez ogr. typu pryw. - ciało cd.)

p r o c e d u r e

w y p i s z ( k :

i n

k o l e j k a )

i s

pom :

w s k b o x := k . p o c z a t e k ;

b e g i n

p u t ( ” p o c z a t e k −> ” ) ;
w h i l e pom/= n u l l

l o o p

p u t ( pom . dane , 0 ) ;

p u t ( ”−>” ) ;

pom:=pom . n a s t e p n y ;

end l o o p ;
p u t ( ” n u l l ” ) ;

end w y p i s z ;

end k o l e j k i P a k ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Przykład (Pakiet bez ogr. typu pryw. - przykład użycia)

w i t h ada . t e x t i o ,

k o l e j k i P a k ;

u s e ada . t e x t i o ,

k o l e j k i P a k ;

p r o c e d u r e

k o l e j k i P a k t e s t

i s

k1 , k2 , k3 :

k o l e j k a ;

b e g i n

wstaw ( k=>k1 , w s t a w i a n a l i c z b a =>1); wstaw ( k1 , 2 ) ;
wstaw ( k=>k2 , w s t a w i a n a l i c z b a =>1); wstaw ( k2 , 2 ) ;

p u t l i n e ( ” Twoje

k o l e j k i : ” ) ;

w y p i s z ( k1 ) ;

n e w l i n e ;

w y p i s z ( k2 ) ;

n e w l i n e ;

i f

k1=k2 t h e n

p u t l i n e ( ” t e

k o l e j k i

s a j e d n a k o w e ” ) ;

e l s e

p u t l i n e ( ” t e

k o l e j k i

s i e

r o z n i a ” ) ;

end

i f ;

n e w l i n e ( 2 ) ;

k3 := k2 ;

p u t l i n e ( ” Twoje n a s t e p n e

k o l e j k i : ” ) ;

w y p i s z ( k2 ) ;

n e w l i n e ;

w y p i s z ( k3 ) ;

n e w l i n e ;

i f

k2=k3 t h e n

p u t l i n e ( ” t e

k o l e j k i

s a j e d n a k o w e ” ) ;

e l s e

p u t l i n e ( ” t e

k o l e j k i

s i e

r o z n i a ” ) ;

end

i f ;

wstaw ( k2 , 1 0 ) ;

p u t l i n e ( ”Te same

k o l e j k i

po w s t a w i e n i u

e l e m e n t u : ” ) ;

w y p i s z ( k2 ) ;

n e w l i n e ;

w y p i s z ( k3 ) ;

n e w l i n e ;

i f

k2=k3 t h e n

p u t l i n e ( ” t e

k o l e j k i

s a j e d n a k o w e ” ) ;

e l s e

p u t l i n e ( ” t e

k o l e j k i

s i e

r o z n i a ” ) ;

end

i f ;

end

k o l e j k i P a k t e s t ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania

background image

Podprogramy - cd

Pakiety

Problem z porównywaniem kolejek można “obejść” implementując własny operator

"=" , ale problemu podstawiania nie można “obejść” bez zamiany typu prywatnego na

ograniczony prywatny

Nowa specyfikacja:

p a c k a g e

k o l e j k i P a k

i s

t y p e

k o l e j k a

i s LIMITED p r i v a t e ;

k o l e j k a p u s t a :

e x c e p t i o n ;

p r o c e d u r e wstaw ( k :

i n

o u t

k o l e j k a ;

w s t a w i a n a l i c z b a :

i n

i n t e g e r ) ;

p r o c e d u r e u s u n ( k :

i n

o u t

k o l e j k a ;

u s u n i e t a l i c z b a :

o u t

i n t e g e r ) ;

p r o c e d u r e

w y p i s z ( k :

i n

k o l e j k a ) ;

p r i v a t e

t y p e box ;
t y p e w s k b o x

i s

a c c e s s box ;

t y p e box

i s

r e c o r d

d a n e :

i n t e g e r ;

n a s t e p n y :

w s k b o x ;

end r e c o r d ;

t y p e

k o l e j k a

i s

r e c o r d

p o c z a t e k ,

k o n i e c :

w s k b o x := n u l l ;

end r e c o r d ;

end k o l e j k i P a k ;

Agata Półrola Wydział Matematyki i Informatyki UŁ

Wstęp do programowania


Document Outline


Wyszukiwarka

Podobne podstrony:
1213z wdprog ww04
1213z wdprog ww02
1213z wdprog ww07
1213z wdprog ww11
1213z wdprog ww09
1213z wdprog ww08
1213z wdprog ww12
1213z wdprog ww10
1213z wdprog ww06
1213z wdprog ww14
1213z wdprog ww05
1213z wdprog ww03
1213z wdprog ww01
1213z wdprog ww02

więcej podobnych podstron