Wstęp do programowania
wykład 6
Agata Półrola
Wydział Matematyki i Informatyki UŁ
sem. zimowy 2012/2013
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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
;
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 o s 1 t e m p
i s
t y p e o s o b y
i s
( J a c e k , Anka , Magda ,
P i o t r , Tomek ,
Kamil , Adam , Pawel , Ewa ) ;
p a c k a g e o s o b y P a k
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 ) ;
u s e o s o b y P a k ;
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
p o d w l a d n y
i n
J a c e k . . Ewa l o o p
i f
s z e f /=p o d w l a d n y t h e n
p u t ( ” p a r a :
s z e f − ” ) ;
p u t ( s z e f ) ;
p u t ( ” p o d w l a d n y − ” ) ;
p u t ( p o d w l a d n y ) ;
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 ;
p u t ( ” p a r
b y l o ” ) ;
p u t ( i l e ) ;
end w 0 6 o s 1 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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
;
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 o s 2 t e m p
i s
t y p e o s o b y
i s
( J a c e k , Anka , Magda ,
P i o t r , Tomek ,
Kamil , Adam , Pawel , Ewa ) ;
p a c k a g e o s o b y P a k
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 ) ;
u s e o s o b y P a k ;
i l e : i n t e g e r : = 0 ;
b e g i n
f o r
o s o b 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 . .
P a w e l
f o r
o s o b a 2
i n
o s o b a 1 . . Ewa l o o p
−−
o s o b y ’ s u c c ( o s o b a 1 ) . . Ewa
i f
o s o b a 1/=o s o b a 2 t h e n
−−
i
w t e d y j u z
b e z t e g o warunku
p u t ( ” p a r a ” ) ;
p u t ( o s o b a 1 ) ;
p u t ( ” ” ) ;
p u t ( o s o b a 2 ) ;
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 ;
p u t ( ” p a r
b y l o ” ) ;
p u t ( i l e ) ;
end w 0 6 o s 2 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 UŁ
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ść Max to
zmieniamy Max
uwaga - po podaniu pierwszej liczby Max musi 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 UŁ
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ść Max to
zmieniamy Max
uwaga - po podaniu pierwszej liczby Max musi 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 UŁ
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ść Max to
zmieniamy Max
uwaga - po podaniu pierwszej liczby Max musi 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 UŁ
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ść Max to
zmieniamy Max
uwaga - po podaniu pierwszej liczby Max musi 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 UŁ
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 ;
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 p r o g z a d 1 t e m p
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
p u t ( ” 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 b i m 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 t h e n
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
t h e n
p u t ( ” n a j w i e k s z a
l i c z b a
t o ” ) ;
p u t ( max ) ;
e l s e
p u t ( ” 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
w 0 6 p r o g z a d 1 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 ;
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 p r o g z a d 1 t e m p
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
p u t ( ” 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 b i m y z l i c z b a
i l e := i l e +1;
i f
i l e =1 t h e n
−− 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 z m i e n i a m y max gdy p o t r z e b a
i f
a>max t h e n
max:= a ;
end
i f ;
end
i f ;
end l o o p ;
i f
i l e >0 t h e n
p u t ( ” n a j w i e k s z a
l i c z b a
t o ” ) ;
p u t ( max ) ;
end
i f ;
end
w 0 6 p r o g z a d 1 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 UŁ
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 ;
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 p r o g z a d 2 t e m p
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
p u t ( ” 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 b i m y z l i c z b a
i f
a mod 2 =0 t h e n
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
t h e n
p u t ( ” b y l a
l i c z b a
p a r z y s t a ” ) ;
e l s e
p u t ( ” p a r z y s t e j
n i e
b y l o ” ) ;
end
i f ;
end w 0 6 p r o g z a d 2 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
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: pierwszy el pary, drugi el pary
przygotowanie do utworzenia nowej pary:
drugi element “starej” pary ma stać się pierwszym elementem nowej
pary (pierwszy el pary:=drugi el pary)
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 UŁ
Przykład (zad 4 - 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 ;
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 p r o g z a d 4 t e m p
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 ;
p u t ( ” 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 b i m y z l i c z b a
i f
l i c z b a 1 /=0 t h e n
−− n i e w y p i s z e m y p a r y ” s m i e c i o w e j ”
i f
l i c z b a 1 <l i c z b a 2
t h e n
p u t ( l i c z b a 1 ) ;
p u t ( 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 r o g z a d 4 t e m p ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Przykład (zad 4 - 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 ;
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 p r o g z a d 4 2 t e m 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 ;
p u t ( ” 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 b i m 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 t h e n
−− j e s l i
c o n a j m n i e j d w i e ,
t o mamy p a r y ” b e z
s m i e c i ”
i f
l i c z b a 1 <l i c z b a 2
t h e n
p u t ( l i c z b a 1 ) ;
p u t ( 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 r o g z a d 4 2 t e m p ;
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 (Możliwe struktury bloku)
declare
|
declare
|
|
...
|
...
|
|
begin
|
begin
|
begin
|
begin
...
|
|
...
|
exception
|
...
|
exception
|
...
...
|
|
...
|
end;
|
end;
|
end;
|
end;
Agata Półrola Wydział Matematyki i Informatyki UŁ
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 ...
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ł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 ...
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
wyjątki - na następnym wykładzie
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
wyjątki - na następnym wykładzie
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Ł