1213z wdprog ww06

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania

background image

Pętle - zadania

Bloki

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Ł

Wstęp do programowania


Document Outline


Wyszukiwarka

Podobne podstrony:
1213z wdprog ww04
1213z wdprog ww02
1213z wdprog ww07
1011z wdprog ww06
1213z wdprog ww11
1213z wdprog ww09
1213z wdprog ww08
1213z wdprog ww12
1213z wdprog ww10
1213z wdprog ww13
1213z wdprog ww01
1213z wdprog ww02

więcej podobnych podstron