Wykład nr 6 9 11 11


Pętle - zadania Bloki Wyjątki i ich obsługa
Wstęp do programowania
wykład 6
Agata Półrola
Wydział Matematyki i Informatyki UA
sem. zimowy 2011/2012
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Zadania, czyli wymyślanie algorytmów
Zadanie 1
Grupa osób - Jacek, Anka, Magda, Piotr, Tomek, Kamil, Adam,
Paweł, Ewa - ma wybrać spośród siebie dwuosobowy zespół.
Napisać program wypisujący:
wszystkie możliwe składy zespołów w których jedna osoba jest
szefem a druga podwładnym, oraz informację na ile sposobów
można wybrać taki zespół,
wszystkie możliwe składy zespołów złożonych z dwóch
równoprawnych członków, oraz informację na ile sposobów
można wybrać taki zespół.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
schemat postępowania:
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
schemat postępowania:
wybieramy szefa
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
schemat postępowania:
wybieramy szefa
tworzymy wszystkie możliwe pary: ten szef + podwładny (podwładnym może
być każda inna osoba w grupie)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  nierównorzędne
schemat postępowania:
wybieramy szefa
tworzymy wszystkie możliwe pary: ten szef + podwładny (podwładnym może
być każda inna osoba w grupie)
implementacja:
for szef in Jacek..Ewa loop
for podwladny in Jacek..Ewa loop
if szef/=podwladny then
-- wypisz pare
end if; end loop; end loop;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 1 - część 1)
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 ;
use 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 w06 os1temp i s
t yp e o s o by i s ( Jacek , Anka , Magda , P i o t r , Tomek , Kamil , Adam , Pawel , Ewa ) ;
package osobyPak i s new ada . t e x t i o . e n u m e r a t i o n i o ( o s o b y ) ;
use osobyPak ;
i l e : i n t e g e r : = 0 ;
b e g i n
f o r s z e f i n J a c e k . . Ewa l o o p
f o r podwladny i n J a c e k . . Ewa l o o p
i f s z e f /=podwladny then
put (  p a r a : s z e f -  ) ; put ( s z e f ) ;
put (  podwladny -  ) ; put ( podwladny ) ; n e w l i n e ;
i l e := i l e +1;
end i f ;
end l o o p ;
end l o o p ;
put (  p a r b y l o  ) ; put ( i l e ) ;
end w06 os1temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
schemat postępowania:
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
schemat postępowania:
wybieramy pierwszą osobę pary (A)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
schemat postępowania:
wybieramy pierwszą osobę pary (A)
dobieramy do niej drugą osobę (B), przy czym należy pominąć te osoby, które
były już w roli A (bo para z tych dwóch osób już była, a pary Kowalski+Nowak i
Nowak+Kowalski to to samo)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Pary  równorzędne
schemat postępowania:
wybieramy pierwszą osobę pary (A)
dobieramy do niej drugą osobę (B), przy czym należy pominąć te osoby, które
były już w roli A (bo para z tych dwóch osób już była, a pary Kowalski+Nowak i
Nowak+Kowalski to to samo)
implementacja:
for osoba1 in Jacek..Ewa loop
for osoba2 in osoba1..Ewa loop
if osoba1/=osoba2 then
-- wypisz pare
end if; end loop; end loop;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 1 - część 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 ;
use 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 w06 os2temp i s
t yp e o s o by i s ( Jacek , Anka , Magda , P i o t r , Tomek , Kamil , Adam , Pawel , Ewa ) ;
package osobyPak i s new ada . t e x t i o . e n u m e r a t i o n i o ( o s o b y ) ;
use osobyPak ;
i l e : i n t e g e r : = 0 ;
b e g i n
f o r o sob a 1 i n J a c e k . . Ewa l o o p - a l t e r n a t y w n i e : J a c e k . . Pawel
-
f o r osoba2 i n osoba1 . . Ewa l o o p - osoby  s u c c ( osoba 1 ) . . Ewa
-
i f osoba1/=osoba2 then - i wtedy j u z bez t e g o warunku
-
put (  p a r a  ) ; put ( o sob a1 ) ; put (   ) ; put ( osob a2 ) ; n e w l i n e ;
i l e := i l e +1;
end i f ;
end l o o p ;
end l o o p ;
put (  p a r b y l o  ) ; put ( i l e ) ;
end w06 os2temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Zadanie 2
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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
elementy schematu postępowania:
pobieranie liczb do momentu podania 0:
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
elementy schematu postępowania:
pobieranie liczb do momentu podania 0:
loop
put("podaj liczbe: "); get(liczba);
exit when liczba=0;
-- tu coś robimy z liczbą
end loop
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
elementy schematu postępowania:
pobieranie liczb do momentu podania 0:
loop
put("podaj liczbe: "); get(liczba);
exit when liczba=0;
-- tu coś robimy z liczbą
end loop
szukanie maksimum:
potrzebujemy zmiennej przechowującej  dotychczasowe maksimum (Max)
jeśli wprowadzona liczba jest większa niż dotychczasowa wartośćMaxto
zmieniamyMax
uwaga - po podaniu pierwszej liczbyMaxmusi stać się równe tej liczbie
(trzeba albo dobrać odpowiednią wartość początkową, albo  zauważyć
pierwsze wprowadzenie wartości)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
elementy schematu postępowania:
pobieranie liczb do momentu podania 0:
loop
put("podaj liczbe: "); get(liczba);
exit when liczba=0;
-- tu coś robimy z liczbą
end loop
szukanie maksimum:
potrzebujemy zmiennej przechowującej  dotychczasowe maksimum (Max)
jeśli wprowadzona liczba jest większa niż dotychczasowa wartośćMaxto
zmieniamyMax
uwaga - po podaniu pierwszej liczbyMaxmusi stać się równe tej liczbie
(trzeba albo dobrać odpowiednią wartość początkową, albo  zauważyć
pierwsze wprowadzenie wartości)
wypisywany wynik musi być poprawny nawet jeśli użytkownik od razu podał 0
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 2 - wersja 1)
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 ;
use 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 w06 p r ogzad1 temp i s
a : i n t e g e r ;
max : i n t e g e r ;
c z y b y l y l i c z b y : b o o l e a n ;
b e g i n
c z y b y l y l i c z b y := f a l s e ; - na p o c z a t k u n i e b y l o l i c z b
-
max:= i n t e g e r  f i r s t ;
l o o p
put (  p o d a j l i c z b e :  ) ; g e t ( a ) ;
e x i t when a =0;
- - c o s r o bim y z l i c z b a
-
c z y b y l y l i c z b y := t r u e ; - b y l a j a k a s l i c z b a ( n i e z e r o w a )
-
i f a>max then
max:= a ;
end i f ;
end l o o p ;
i f c z y b y l y l i c z b y=t r u e then
put (  n a j w i e k s z a l i c z b a t o  ) ; put ( max ) ;
e l s e
put (  n i e b y l o l i c z b , n i e ma n a j w i e k s z e j  ) ;
end i f ;
end w06 p rogz ad1 temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 2 - 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 ;
use 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 w06 p r ogzad1 temp i s
a : i n t e g e r ;
max : i n t e g e r ;
i l e : i n t e g e r ;
b e g i n
i l e : = 0 ; - l i c z y m y i l e j e s t l i c z b
-
l o o p
put (  p o d a j l i c z b e :  ) ; g e t ( a ) ;
e x i t when a =0;
- - c o s r o bim y z l i c z b a
-
i l e := i l e +1;
i f i l e =1 then - p i e r w s z a podana l i c z b a s t a j e s i e max
-
max:= a ;
e l s e - p o z n i e j zmieniamy max gdy p o t r z e b a
-
i f a>max then
max:= a ;
end i f ;
end i f ;
end l o o p ;
i f i l e >0 then
put (  n a j w i e k s z a l i c z b a t o  ) ; put ( max ) ;
end i f ;
end w06 p rogz ad1 temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Zadanie 3
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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
pojawienie się odpowiedniej wartości zmienia ten pogląd
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
pojawienie się odpowiedniej wartości zmienia ten pogląd
pojawienie się  nieodpowiedniej wartości zostawia
dotychczasowy pogląd bez zmiany
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
pojawienie się odpowiedniej wartości zmienia ten pogląd
pojawienie się  nieodpowiedniej wartości zostawia
dotychczasowy pogląd bez zmiany
ostatecznym wynikiem jest nasz  pogląd po wprowadzeniu
wszystkich liczb
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
(nie było dotąd liczby parzystej)
pojawienie się odpowiedniej wartości zmienia ten pogląd
pojawienie się  nieodpowiedniej wartości zostawia
dotychczasowy pogląd bez zmiany
ostatecznym wynikiem jest nasz  pogląd po wprowadzeniu
wszystkich liczb
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
(nie było dotąd liczby parzystej)
pojawienie się odpowiedniej wartości zmienia ten pogląd
(jeśli podano liczbę parzystą - pogląd zmienia się na  była
liczba parzysta )
pojawienie się  nieodpowiedniej wartości zostawia
dotychczasowy pogląd bez zmiany
ostatecznym wynikiem jest nasz  pogląd po wprowadzeniu
wszystkich liczb
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Algorytmy  z poglądem :
mamy jakiś  pogląd na wynik
(nie było dotąd liczby parzystej)
pojawienie się odpowiedniej wartości zmienia ten pogląd
(jeśli podano liczbę parzystą - pogląd zmienia się na  była
liczba parzysta )
pojawienie się  nieodpowiedniej wartości zostawia
dotychczasowy pogląd bez zmiany
(jeśli podano liczbę nieparzystą - pogląd na to czy dotąd była
liczba parzysta pozostaje taki jak był wcześniej)
ostatecznym wynikiem jest nasz  pogląd po wprowadzeniu
wszystkich liczb
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 3)
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 ;
use 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 w06 p r ogzad2 temp i s
a : i n t e g e r ;
c z y b y l a p a r z y s t a : b o o l e a n ;
b e g i n
c z y b y l a p a r z y s t a := f a l s e ;
l o o p
put (  p o d a j l i c z b e :  ) ; g e t ( a ) ;
e x i t when a =0;
- - c o s r o bi m y z l i c z b a
-
i f a mod 2 =0 then
c z y b y l a p a r z y s t a := t r u e ;
end i f ;
end l o o p ;
i f c z y b y l a p a r z y s t a=t r u e then
put (  b y l a l i c z b a p a r z y s t a  ) ;
e l s e
put (  p a r z y s t e j n i e b y l o  ) ;
end i f ;
end w 0 6 p rogza d 2 temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Zadanie 4
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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
wprowadzono 0 - koniec
implementacja:
potrzebne dwie zmienne:pierwszyelpary,drugielpary
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
wprowadzono 0 - koniec
implementacja:
potrzebne dwie zmienne:pierwszyelpary,drugielpary
przygotowanie do utworzenia nowej pary:
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
wprowadzono 0 - koniec
implementacja:
potrzebne dwie zmienne:pierwszyelpary,drugielpary
przygotowanie do utworzenia nowej pary:
drugi element  starej pary ma stać się pierwszym elementem nowej
pary (pierwszyelpary:=drugielpary)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
wprowadzono 0 - koniec
implementacja:
potrzebne dwie zmienne:pierwszyelpary,drugielpary
przygotowanie do utworzenia nowej pary:
drugi element  starej pary ma stać się pierwszym elementem nowej
pary (pierwszyelpary:=drugielpary)
drugi element nowej pary jest pobierany z klawiatury
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Elementy postępowania:
uwaga - pobieramy pojedyncze liczby, nie pary liczb
rozpatrujemy pary  zazębiające się :
wprowadzono 1 - nie ma pary
wprowadzono 2 - rozpatrywana para: 1,2
wprowadzono 3 - rozpatrywana para: 2,3
wprowadzono 4 - rozpatrywana para: 3,4
wprowadzono 5 - rozpatrywana para: 4,5
wprowadzono 0 - koniec
implementacja:
potrzebne dwie zmienne:pierwszyelpary,drugielpary
przygotowanie do utworzenia nowej pary:
drugi element  starej pary ma stać się pierwszym elementem nowej
pary (pierwszyelpary:=drugielpary)
drugi element nowej pary jest pobierany z klawiatury
należy zadbać aby nie była rozpatrywana para złożona z przypadkowej
wartości i pierwszej podanej liczby
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 4 - wersja 1)
w i t h ada . Text IO , ada . I n t e g e r T e x t I O ;
use ada . Text IO , ada . I n t e g e r T e x t I O ;
p r o c e d u r e w06 p r ogzad4 temp i s
l i c z b a 1 , l i c z b a 2 : i n t e g e r : = 0 ;
- p r z y p i s a n i e d l a u n i k n i e c i a w y p i s y w a n i a  s m i e c i o w e j  p a r y
-
- z e r o t o j e d y n a poprawna w a r t o s c
-
- bo n i g d y  n o r m a l n i e  n i e z o s t a n i e p r z y p i s a n a l i c z b o m
-
b e g i n
l o o p
l i c z b a 1 := l i c z b a 2 ;
put (  p o d a j l i c z b e :  ) ; g e t ( l i c z b a 2 ) ;
e x i t when l i c z b a 2 =0;
- - c o s r o bim y z l i c z b a
-
i f l i c z b a 1 /=0 then - n i e wypiszemy p a r y  s m i e c i o w e j 
-
i f l i c z b a 1 put ( l i c z b a 1 ) ; put ( l i c z b a 2 ) ;
n e w l i n e ;
end i f ;
end i f ;
end l o o p ;
end w 0 6 p rogza d 4 temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (zad 4 - wersja 2)
w i t h ada . Text IO , ada . I n t e g e r T e x t I O ;
use ada . Text IO , ada . I n t e g e r T e x t I O ;
p r o c e d u r e w0 6 p rogza d 4 2t em p i s
l i c z b a 1 , l i c z b a 2 : i n t e g e r ;
i l e : i n t e g e r ;
b e g i n
i l e : = 0 ;
l o o p
l i c z b a 1 := l i c z b a 2 ;
put (  p o d a j l i c z b e :  ) ; g e t ( l i c z b a 2 ) ;
e x i t when l i c z b a 2 =0;
- - c o s r o bim y z l i c z b a
-
i l e := i l e +1; - z l i c z a m y i l e l i c z b wprowadzono
-
i f i l e >=2 then - j e s l i co n a j m n i e j dwie , t o mamy p a r y  bez s m i e c i 
-
i f l i c z b a 1 put ( l i c z b a 1 ) ; put ( l i c z b a 2 ) ;
n e w l i n e ;
end i f ;
end i f ;
end l o o p ;
end w 0 6 prog zad4 2temp ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
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łowemdeclare.
Część wykonywalna bloku zaczyna się słowembegini 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łowemexception
(o tym co to wyjątki będzie pozniej)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykłady (Możliwe struktury bloku)
declare | declare | |
... | ... | |
begin | begin | begin | begin
... | | ... |
exception | ... | exception | ...
... | | ... |
end; | end; | end; | end;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Uwagi
Za przykład 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 ... isa słowem
beginrozpoczynającym część wykonywalną programu (nie
używamy instrukcjideclare)
Wniosek: program może mieć część zajmującą się obsługą
wyjątków (międzyexceptionaendkończącym program).
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Uwagi
Za przykład 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 ... isa słowem
beginrozpoczynającym część wykonywalną programu (nie
używamy instrukcjideclare)
Wniosek: program może mieć część zajmującą się obsługą
wyjątków (międzyexceptionaendkończącym program).
blokiem postacibegin ... end;możemy otoczyć dowolny
ciąg instrukcji, tyle że zazwyczaj jest to zbędne.
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
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 ;
use ada . Text IO , 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
put (  p o d a j l i c z b e >  ) ; g e t ( a ) ;
end ;
b e g i n
put (  p o d a j l i c z b e >  ) ; g e t ( b ) ;
end ;
i f a>b then
b e g i n put (  w i e k s z a l i c z b a t o  ) ; put ( a , 0 ) ; end ;
e l s i f ab e g i n put (  w i e k s z a l i c z b a t o  ) ; put ( b , 0 ) ; end ;
e l s e
b e g i n
put (  l i c z b y s a rowne  ) ;
end ;
end i f ;
n e w l i n e ; put (  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 00 0 l o o p
b e g i n
put ( 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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
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
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład (Deklaracja w części wykonywalnej programu)
wi t h ada . t e x t i o , ada . f l o a t T e x t I O ;
use ada . Text IO , 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
put (  p o d a j wysokosc 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 nim al 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
put (  p l a c a m i n im a l n a w y n o s i  ) ;
put ( p l a c a m i n , exp=>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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Wyjątki i ich obsługa
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 UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Wyjątki predefiniowane
Wyjątki predefiniowane (tzn. zdefiniowane w pakiecieStandard)
to:
ConstraintError
ProgramError
StorageError
TaskingError
Inne popularne wyjątki
DataErrorzdefiniowany w pakiecieada.textio
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Kiedy pojawiają się powyższe wyjątki
ConstraintError- przekroczenie jakiegoś zakresu.
(niektóre przypadki) :
przekroczenie zakresu typu
przekroczenie zakresu indeksu tablicy lub zakresu wyróżnika
rekordu
próba użycia pól rekordu nie istniejących dla danej wartości
wyrożnika
próba odwołania do zawartości obiektu który miałby być
pokazywany przez wskaznik, gdy wartość tego wskaznika jest
null
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład
with ada . t e x t i o , ada . i n t e g e r T e x t I O ;
use ada . Text IO , ada . i n t e g e r T e x t I O ;
procedure w06 wyjatki CE i s
a , b , c : i n t e g e r ;
begin
a:= i n t e g e r  l a s t ;
b:= i n t e g e r  l a s t / 2 ;
c :=a+2"b ; -- spowoduje c o n s t r a i n t e r r o r
put ( c ) ;
end w06 wyjatki CE ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Kiedy pojawiają się powyższe wyjątki - cd.
StorageError- przekroczenie rozmiaru stosu (tzw.
przepełnienie stosu)
stos - obszar pamięci wydzielony dla danego programu i służący do
przechowywania jego zmiennych lokalnych. Wielkość stosu jest stała w czasie
wykonania programu.
Główne przypadki:
deklarowanie zmiennych (np. tablicowych) zbyt dużego
rozmiaru
 nieodpowiednie wywoływanie niektórych funkcji
rekurencyjnych (np. dla zbyt dużych parametrów)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład
procedure w 0 6 w y j a t k i S E i s
a : i n t e g e r ;
begin
a:= i n t e g e r  l a s t / 2 ;
d e c l a r e
t : a rray ( i n t e g e r range 1 . . a ) of i n t e g e r ;
-- prawdop . spowoduje S t o r a g e E r r o r
begin
t ( 1 ) : = 1 0 ;
end ;
end w 0 6 w y j a t k i S E ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Kiedy pojawiają się powyższe wyjątki - cd.
ProgramError- próby jakiegoś  naruszenia struktury
programu (np. dla pewnych danych wykonanie funkcji nie
natrafi nareturn
TaskingError- błąd związany z wielozadaniowością
DataError- błąd danych (np. podanie litery zamiast liczby)
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
Przykład
with ada . f l o a t T e x t I O ,
ada . n u m e r i c s . E l e m e n t a r y F u n c t i o n s ;
use ada . f l o a t T e x t I O ,
ada . n u m e r i c s . E l e m e n t a r y F u n c t i o n s ;
procedure w0 6 w yja tk i P E i s
f u n c t i o n p i e r w i a s t e k ( a : f l o a t ) return f l o a t i s
begin
i f a>=0.0 then r e t u rn s q r t ( a ) ; end i f ;
end p i e r w i a s t e k ;
a : f l o a t ;
begin
g e t ( a ) ; -- p r z y z l y c h danych D a t a E r r o r
put ( p i e r w i a s t e k ( a ) ) ;
-- d l a ujemnego A P r o g r a m E r r o r
end w 06 w yj a tki P E ;
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania
Pętle - zadania Bloki Wyjątki i ich obsługa
ciąg dalszy wyjątków - na następnym wykładzie
Agata Półrola Wydział Matematyki i Informatyki UA
Wstęp do programowania


Wyszukiwarka

Podobne podstrony:
BO II stacjonarne wykład nr 11
Wyklad nr 11
Wykład nr 5 2 11 11
SS wyklad nr 11 ppt
0203 11 03 2009, wykład nr 3 , Białka powierzchni komórkowej Cząsteczki adhezyjne
Rysunki do wykladu nr 3  marca 11
Wykład nr 3 19 10 11
wyklad 7 zap i, 11 2013
socjo wykład z 26 11
5 Analiza systemowa wykłady PDF 11 z numeracją
wyklad 8 zap i, 11 2013
Techniki negocjacji i mediacji w administracji wykłady 05 11 2013
r 1 nr 11 1386694490
NEXUS Nowe Czasy nr 11 2000 3 nfo
TEST NR 11

więcej podobnych podstron