Wstęp do programowania
wykład 6
Agata Półrola
Wydział Matematyki i Informatyki UŁ
sem. zimowy 2010/2011
Agata Półrola Wydział Matematyki i Informatyki UŁ
Zadania
Zadanie 1
Napisać progam pobierający liczby całkowite do momentu pobrania
zera i wypisujący największą z podanych liczb (końcowe zero nie
jest brane pod uwagę)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Zadanie 2
Napisać progam pobierający liczby całkowite do momentu pobrania
zera i wypisujący informację czy była wśród nich liczba parzysta
(końcowe zero nie jest brane pod uwagę)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Zadanie 3
Napisać progam pobierający liczby całkowite do momentu pobrania
zera i wypisujący pary kolejno podanych liczb w których pierwszy
element jest mniejszy niż drugi (końcowe zero nie jest brane pod
uwagę)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Bloki
Struktura bloku
W programie możemy używać
bloków
.
Blok może (ale nie musi) mieć na początku własną część
deklaracyjną rozpoczynającą się słowem
declare
.
Część wykonywalna bloku zaczyna się słowem
begin
i słowem
end
.
Ponadto blok może (ale nie musi) mieć na końcu części
wykonywalnej fragment służący do obsługi wyjątków
rozpoczynający się słowem
exception
(o tym co to wyjątki będzie poźniej)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Przykłady
declare
|
declare
|
|
...
|
...
|
|
begin
|
begin
|
begin
|
begin
...
|
|
...
|
exception
|
...
|
exception
|
...
...
|
|
...
|
end;
|
end;
|
end;
|
end;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Uwagi
Za przykładem bloku możemy uznać również cały program
(procedurę). Jedyna różnica to taka, że jej część deklaracyjna
jest zawarta między linią procedure ...
is a słowem
begin rozpoczynającym część wykonywalną programu (nie
używamy instrukcji declare)
Wniosek: program może mieć część zajmującą się obsługą
wyjątków (między exception a end kończącym program).
blokiem postaci begin ...
end; możemy otoczyć dowolny
ciąg instrukcji, tyle że zazwyczaj jest to zbędne.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Uwagi
Za przykładem bloku możemy uznać również cały program
(procedurę). Jedyna różnica to taka, że jej część deklaracyjna
jest zawarta między linią procedure ...
is a słowem
begin rozpoczynającym część wykonywalną programu (nie
używamy instrukcji declare)
Wniosek: program może mieć część zajmującą się obsługą
wyjątków (między exception a end kończącym program).
blokiem postaci begin ...
end; możemy otoczyć dowolny
ciąg instrukcji, tyle że zazwyczaj jest to zbędne.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Przykład (Zbędne bloki)
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 0 6 z b e d n e b l o k i
i s
a , b : i n t e g e r ;
b e g i n
b e g i n
p u t ( ” p o d a j
l i c z b e > ” ) ;
g e t ( a ) ;
end ;
b e g i n
p u t ( ” p o d a j
l i c z b e > ” ) ;
g e t ( b ) ;
end ;
i f
a>b t h e n
b e g i n p u t ( ” w i e k s z a
l i c z b a
t o ” ) ;
p u t ( a , 0 ) ;
end ;
e l s i f
a<b t h e n
b e g i n p u t ( ” w i e k s z a
l i c z b a
t o ” ) ;
p u t ( b , 0 ) ;
end ;
e l s e
b e g i n
p u t ( ” l i c z b y
s a r o w n e ” ) ;
end ;
end
i f ;
n e w l i n e ;
p u t ( ” a t e r a z
s n i e g
l i c z b o w y ; −) − w c i s n i j
e n t e r ” ) ;
s k i p l i n e ( 2 ) ;
f o r
i
i n
1 . . 1 0 0 0 0 l o o p
b e g i n
p u t ( a ) ;
end ;
end l o o p ;
end w 0 6 z b e d n e b l o k i ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Kiedy używać bloków
kiedy chcemy wewnątrz programu zadeklarować
zmienną/stałą której deklaracja zależy od pobranej lub
obliczonej wcześniej w programie wartości
zadeklarowana zmienna “żyje” tylko wewnatrz bloku
kiedy chcemy obsłużyć wyjątek
Agata Półrola Wydział Matematyki i Informatyki UŁ
Kiedy używać bloków
kiedy chcemy wewnątrz programu zadeklarować
zmienną/stałą której deklaracja zależy od pobranej lub
obliczonej wcześniej w programie wartości
zadeklarowana zmienna “żyje” tylko wewnatrz bloku
kiedy chcemy obsłużyć wyjątek
Agata Półrola Wydział Matematyki i Informatyki UŁ
Przykład (Deklaracja w części wykonywalnej programu)
w i t h ada . t e x t i o ,
ada . f l o a t T e x t I O ;
u s e ada . T e x t I O ,
ada . f l o a t T e x t I O ;
p r o c e d u r e
w 0 6 b l o k d e k l
i s
p r z e c w y n
: f l o a t ;
b e g i n
p u t ( ” p o d a j w y s o k o s c
p r z e c i e t n e g o
w y n a g r o d z e n i a > ” ) ;
g e t ( p r z e c w y n ) ;
d e c l a r e
p l a c a m i n :
c o n s t a n t
f l o a t : = 0 . 4 1 ∗ p r z e c w y n ;
−− p l a c a m i n i m a l n a
j e s t
u s t a l o n a
j a k o
−− 41 p r o c e n t
p r z e c i e t n e g o
w y n a g r o d z e n i a
b e g i n
p u t ( ” p l a c a
m i n i m a l n a w y n o s i ” ) ;
p u t ( p l a c a m i n , e x p =>0, a f t =>2);
end ;
end w 0 6 b l o k d e k l ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wyjątki
W sytuacjach “awaryjnych” (wczytanie litery zamiast liczby,
dzielenie przez zero, przekroczenie zakresu i itp) zgłaszany jest
tzw.
wyjątek
nazwy wyjątków określone są w odpowiednich pakietach;
można również deklarować własne wyjątki.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wyjątki predefiniowane
Wyjątki predefiniowane (tzn. zdefiniowane w pakiecie Standard)
to:
Constraint Error
Program Error
Storage Error
Tasking Error
Inne popularne wyjątki
Data Error zdefiniowany w pakiecie ada.text io
Agata Półrola Wydział Matematyki i Informatyki UŁ