Πανεπιστημίο Ιωαννίνων - arqèc glwss¸n...

94

Upload: others

Post on 01-Mar-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Arqèc Glwss¸n Programmatismou

Qr stoc Nomikìc

Tm ma Mhqanik¸n H/U kai Plhroforik cPanepist mio IwannÐnwn

2015

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 1 / 94

Page 2: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 2 / 94

Page 3: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 3 / 94

Page 4: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Entol  an�jeshc: skopìc thc eÐnai na jèsei wc tim  thc metablht cpou brÐsketai arister� tou telest  an�jeshc, thn tim  pou prokÔpteiapì thn apotÐmhsh thc par�stashc pou brÐsketai dexi� tou telest an�jeshc.

Sun jwc qrhsimopoieÐtai to =   to := gia na sumbolÐsei ton telest an�jeshc.

To p¸c akrib¸c ulopoieÐtai h entol  an�jeshc exart�tai apì to anefarmìzetai to montèlo tim¸n   to montèlo anafor¸n gia thmetablht .

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 4 / 94

Page 5: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

'Otan efarmìzetai to montèlo tim¸n, tìte h tim  pou prokÔptei apìthn apotÐmhsh thc par�stashc apojhkeÔtai sth jèsh mn mhc pouantistoiqeÐ sth metablht .

'Otan efarmìzetai to montèlo anafor¸n, tìte apì thn apotÐmhsh thcpar�stashc prokÔptei èna antikeÐmeno, to opoÐo sundèetai me thmetablht  (h anafor� tou antikeimènou apojhkeÔtai sth jèsh mn mhcpou antistoiqeÐ sth metablht ). To antikeÐmeno autì mporeÐ na up rqeprin apì thn ektèlesh thc entol c an�jeshc   na kataskeu�sthke wcapotèlesma thc apotÐmhshc thc par�stashc. H tim  thc metablht ceÐnai h tim  tou antikeimènou me to opoÐo sundèetai.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 5 / 94

Page 6: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Par�deigma

Sto parak�tw sq ma faÐnetai to apotèlesma thc ektèleshc thcentol c a:=b-c sthn Pascal (h opoÐa qrhsimopoieÐ montèlo tim¸n gia ticmetablhtèc). Oi timèc twn metablht¸n a,b,c prin apì thn ektèlesh thcentol c eÐnai antÐstoiqa 33, 20,10.

a

b

33

20

c 10

a := b-c

a

b

10

20

c 10

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 6 / 94

Page 7: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Sto parak�tw sq ma faÐnetai to apotèlesma thc ektèleshc thcantÐstoiqhc entol c a=b-c sthn Python (h opoÐa qrhsimopoieÐ montèloanafor¸n gia tic metablhtèc).

a

b

c

a = b-c

33

20

10

a

b

c

33

20

10

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 7 / 94

Page 8: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

ParathroÔme ìti se mÐa entol  an�jeshc ta onìmata twn metablht¸nèqoun diaforetik  shmasÐa an�loga me to an qrhsimopoioÔntaiarister�   dexi� tou telest  an�jeshc:

Sto montèlo tim¸n, to ìnoma mÐac metablht c arister� toutelest  an�jeshc prosdiorÐzei th jèsh mn mhc sthn opoÐaapojhkeÔetai h tim  thc metablht c (sthn opoÐa ja apojhkeuteÐ htim  pou ja prokÔyei apì thn apotÐmhsh thc par�stashc poubrÐsketai dexi� tou telest  an�jeshc), en¸ dexia tou telest an�jeshc sumbolÐzei thn tim  thc metablht c.

Sto montèlo anafor¸n, to ìnoma mÐac metablht c arister� toutelest  an�jeshc prosdiorÐzei th jèsh mn mhc sthn opoÐaapojhkeÔetai h anafor� tou antikeimènou me to opoÐo eÐnaisundedemènh h metablht , en¸ dexia tou telest  an�jeshcsumbolÐzei to antikeÐmeno me to opoÐo eÐnai sundedemènh hmetablht .

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 8 / 94

Page 9: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Genikìtera, arister� tou telest  an�jeshc mporeÐ na brÐsketaisÔnjeth èkfrash h opoÐa prosdiorÐzei mÐa jèsh mn mhc sthn opoÐaapojhkeÔtai mÐa tim  (an efarmìzetai to montèlo tim¸n)   h anafor�enìc antikeimènou (an efarmìzetai to montèlo anafor¸n).

Gia par�deigma arister� tou telest  an�jeshc mporeÐ na up�rqeik�poio stoiqeÐo enìc pÐnaka (to opoÐo kajorÐzetai apì to ìnoma toupÐnaka kai th jèsh tou stoiqeÐou pou mporeÐ na prokÔptei apì thnapotÐmhsh mÐac par�stashc), èna pediì mÐac eggraf c, h jèsh mn mhcsthn opoÐa deÐqnei ènac deÐkthc klp.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 9 / 94

Page 10: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

ParadeÐgmata entol¸n an�jeshc me sÔnjetec ekfr�seic arister� toutelest  an�jeshc (qrhsimopoieÐtai h sÔntaxh thc Pascal):

a[i] := 0;

a[2*i+j] := a[i]+f(n);

r.height := 1.84;

p^.next := nil;

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 10 / 94

Page 11: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Lìgw thc yeudwnumÐac, eÐnai dunatìn h tim  mÐac metablht c naall�zei apì thn ektèlesh mÐac entol c an�jeshc, parìti to ìnoma thcmetablht c den emplèketai sthn entol  aut .

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 11 / 94

Page 12: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Par�deigma

Met� thn ektèlesh twn parak�tw entol¸n se C h tim  thc metablht cn eÐnai 1.

n = 0;

p = &n;

*p = 1;

H deÔterh entol  èqei wc apotèlesma o deÐkthc p na deÐqnei sth jèshpou eÐnai apojhkeumènh h n. H trÐth entol  apojhkeÔei thn tim  1 sthjèsh mn mhc sthn opoÐa deÐqnei o p, h opoÐa eÐnai h jèsh mn mhc poueÐnai apojhkeumènh h n. Sunep¸c h trÐth entol  all�zei thn tim  thcn, parìti h n den anafèretai se aut .

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 12 / 94

Page 13: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Par�deigma

Met� thn ektèlesh twn parak�tw entol¸n Python h tim  thcmetablht c b eÐnai [0,2,3].

a = [1,2,3]

b = a

a[0] = 0

H pr¸th entol  èqei wc apotèlesma thc dhmiourgÐa enìc antikeimènou(thc lÐstac [1,2,3]). H deÔterh entol  èqei wc apotèlesma h metablht b na sundejeÐ me thn Ðdia lÐsta me thn opoÐa sundèetai kai h a. H trÐthentol  tropopoieÐ èna stoiqeÐo thc lÐstac.H tim  thc b all�zei Ôstera apì thn ektèlesh thc trÐth entol c:parìti h b exakoloujeÐ na sundèetai me to Ðdio antikeÐmeno, h entol èqei wc apotèlesma thn tropopoÐhsh tou antikeimènou autoÔ(antikeÐmena ta opoÐa mporoÔn na all�zoun timèc ìpwc oi lÐsteconom�zontai metall�xima (mutable)).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 13 / 94

Page 14: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Gia na eÐnai kal� orismènh h shmasÐa thc entol c an�jeshc ja prèpeina kajorÐzetai an h dieÔjunsh mn mhc arister� tou telest  an�jeshcprosdiorÐzetai prin   met� ton upologismì thc par�stashc dexi� toutelest  an�jeshc.

Se antÐjeth perÐptwsh endèqetai to apotèlesma thc entol c an�jeshcna mhn orÐzetai monos manta.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 14 / 94

Page 15: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Par�deigma

'Estw to parak�tw prìgramma Python:

def f(n):

global i

i = i-1

return n*n

a = [1,2,3]

i = 2

a[i] = f(i)

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 15 / 94

Page 16: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

an kat� thn ektèlesh thc entol c a[i] = f(i) o kajorismìc toustoiqeÐou thc lÐstac pou ja all�xei, gÐnei prin apì tonupologismì tou f(i), tìte to i ja èqei tim  2 kai met� thn ektèleshtwn parap�nw entol¸n h a ja èqei tim  [1,2,4].

an antijètwc o kajorismìc tou stoiqeÐou thc lÐstac pou jaall�xei, gÐnei met� apì ton upologismì tou f(i), tìte to i ja èqeitim  1 kai met� thn ektèlesh twn parap�nw entol¸n h a ja èqeitim  [1,4,3].

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 16 / 94

Page 17: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Up�rqoun pio sÔnjetec morfèc entol c an�jeshc

Pollapl  an�jesh. Python:

x,y = y,x

Epitrèpei thn enallag  twn tim¸n dÔo metablht¸n qwric qr shtrÐthc metablht c.

Sunduasmènh an�jesh. C, C++, Java:

student[code].grade[index] *= 1.2;

Epitrèpei thn apofug  thc epan�lhyhc thc Ðdiac èkfrashcaristera kai dexi� tou telest  an�jeshc.

Entolèc aÔxhshc   meiwshc kat� 1. C, C++, Java:

x++; ++x; x--; --x;

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 17 / 94

Page 18: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Se orismènec gl¸ssec (p.q.C, C++, Java) h entol  an�jeshc jewreÐtaiwc par�stash pou èqei wc tim  thn anatijèmenh tim .

O telest c = prosetairÐzetai apì dexi� proc ta arister�.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 18 / 94

Page 19: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Autì epitrèpei na gr�foume alusidwtèc anajèseic:

c = b = 1;

To b = 1, ektìc tou ìti anajètei thn tim  1 sth b, lamb�netai wcpar�stash pou èqei wc tim  1. H tim  1 anatÐjetai kai sth c.

Epiplèon mporoÔme na èqoume perissìterec apì mÐa anajèseicdiaforetik¸n tim¸n se metablhtèc se mÐa mìno entol . H parak�twentol  èqei wc apotèlesma na anatejoÔn oi timèc 2,3 kai 5 antÐstoiqastic a,b,c:

c = (a=2) + (b=3);

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 19 / 94

Page 20: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

H tim  mÐac metablht c mporeÐ na arqikopoihjeÐ me mÐa entol an�jeshc sthn arq  tou mplok sto opoÐo dhl¸netai,   se genikìterase opoiod pote shmeÐo prin apì thn qrhsimopoÐhsh thc tim c thcmetablht c se k�poia par�stash.

Orismènec gl¸ssec parèqoun th dunatìthta arqikopoÐhshc thcmetablht c kat� th d lws  thc, ìpwc gia par�deigma h C:

int n=0, a[3]={4,5,7};

EpÐshc orismènec gl¸ssec anajètoun prokajorismènec timèc semetablhtèc pou den èqoun arqikopoihjeÐ. Gia par�deigma h C anajèteimhdenikèc timèc se ìlec tic statikèc metablhtèc pou denarqikopoioÔntai.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 20 / 94

Page 21: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entol  an�jeshc

Se orismènec gl¸ssec qrhsimopoieÐtai to sÔmbolo = gia an�jeshall� kai gia sÔgkrish. Autì mei¸nei thn anagnwsimìthta touprogr�mmatoc. PL/1:.

A = B = C

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 21 / 94

Page 22: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 22 / 94

Page 23: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Entolèc epilog c: skopìc aut c thc kathgorÐac entol¸n eÐnai hektèlesh mÐac   perissotèrwn entol¸n mìno sthn perÐptwsh pouikanopoioÔntai k�poiec proôpojèseic.

Up�rqoun dÔo kathgorÐec entol¸n epilog c, an�loga me to p¸ckajorÐzetai h entol  pou ja ektelesteÐ:

apì mÐa logik  sunj kh

apì thn tim  mÐac par�stashc

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 23 / 94

Page 24: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

MÐa entol  epilog c me logik  sunj kh perilamb�nei mÐa logik sunj kh kai mÐa   perissìterec entolèc pou ekteloÔntai an alhjeÔei hsunj kh.

Stic perissìterec gl¸ssec aut  h entol  onom�zetai if.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 24 / 94

Page 25: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Se k�poiec gl¸ssec h sÔntaxh thc entol c if epitrèpei thn ektèleshmÐac mìno entol c sthn perÐptwsh pou alhjeÔei h sunj kh. Wstìsokat� kanìna autèc oi gl¸ssec epitrèpoun to sqhmatismì sÔnjetwnentol¸n (me begin - end   { }). Sunep¸c gia thn ektèlesh perissìterwnapì mÐa entolèc ìtan alhjeÔei h sunj kh, sqhmatÐzetai mÐa sÔnjethentol  pou apoteleÐtai apì tic entolèc autèc.

Se �llec gl¸ssec up�rqei k�poioc trìpoc d lwshc tou tèlouc ticentol c if (p.q. me end   end if   me b�sh k�poiouc kanìnec stoÐqishc).Se aut  thn perÐptwsh h sunj kh thc entol c if mporeÐ naakoloujeÐtai apì opoiod pote pl joc entol¸n.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 25 / 94

Page 26: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Par�deigma

H parak�tw entol  if se Pascal antimetajètei tic timèc twn stoiqeÐwnA[i] kai A[i+1], an to A[i] èqei megalÔterh tim  apì to A[i+1]:

if A[i] > A[i+1] then

begin

tmp := A[i];

A[i] := A[i+1];

A[i+1] := tmp

end;

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 26 / 94

Page 27: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

H antÐstoiqh entol  se C   se Java eÐnai:

if (A[i] > A[i+1]) {

tmp = A[i];

A[i] = A[i+1];

A[i+1] = tmp;

}

H antÐstoiqh entol  se Modula 2 eÐnai:

IF A[i] > A[i+1] THEN

tmp := A[i];

A[i] := A[i+1];

A[i+1] := tmp;

END;

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 27 / 94

Page 28: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Tèloc se Python h antÐstoiqh entol  eÐnai:

if A[i] > A[i+1]:

tmp = A[i]

A[i] = A[i+1]

A[i+1] = tmp

(h epìmenh entol , an up�rqei, ja prèpei na xekin sei sthn Ðdia st lhme th lèxh if).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 28 / 94

Page 29: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Stic perissìterec peript¸seic dÐnetai h dunatìthta kajorismoÔ miacentol c pou ja ektelesteÐ an den alhjeÔei h sunj kh. Aut  sun jwcakoloujeÐ th lèxh else.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 29 / 94

Page 30: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Par�deigma

H parak�tw entol  if se Pascal brÐskei to megalÔtero an�mesa se dÔodÔo arijmoÔc:

if a >= b then

max := a

else

max := b

H antÐstoiqh entol  se C   se Java eÐnai:

if (a >= b)

max = a;

else

max = b;

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 30 / 94

Page 31: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

H antÐstoiqh entol  se Modula 2 eÐnai:

IF a >= b THEN

max := a;

ELSE

max := b;

END;

Tèloc se Python h antÐstoiqh entol  eÐnai:

if a >= b:

max = a

else:

max = b

(h epìmenh entol , an up�rqei, ja prèpei na xekin�ei sthn Ðdia st lhme tic lèxeic if kai else).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 31 / 94

Page 32: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Se gl¸ssec stic opoÐec den up�rqei k�poioc trìpoc d lwshc thcolokl rwshc thc entol c if, se perÐptwsh pou up�rqoun stoprìgramma fwliasmènec entolèc if akoloujoÔmenec apì èna else, japrèpei h gl¸ssa na kajorÐzei se poiì apì ìla ta if anafèretai tosugkekrimèno else:

if ... then

if ... then ...

else ...

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 32 / 94

Page 33: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

H pio sun jhc prosèggish eÐnai to else na tairi�zei me to pioprìsfato (dhlad  to pio eswterikì) if to opoÐo den èqei tairi�xei mek�poio prohgoÔmeno else. H prosèggish aut  qrhsimopoieÐtai metaxÔ�llwn apì thn Pascal, th C kai th Java.

H ALGOL 60 akoloujeÐ mÐa diaforetik  prossègish, mhn epitrèpontacna up�rqoun �mesa fwliasmèna if. An jèloume h entol  pou akoloujeÐto if   to else na eÐnai epÐshc if, thn kleÐnoume mèsa se begin - end.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 33 / 94

Page 34: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Par�deigma

H parak�tw entol  if se Pascal dÐnei sth metablht  z thn tim  xmod y ìtan oi timèc twn x kai y eÐnai jetikèc kai thn tim  -1 ìtan htim  thc x eÐnai jetik  kai thc y arnhtik    0. An h x den èqei jetik tim  h tim  thc z den all�zei.

if x > 0 then

if y > 0 then z := x mod y

else z := -1

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 34 / 94

Page 35: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Orismènec gl¸ssec (Modula 2, ALGOL68, FORTRAN 77, Ada) dÐnoun thdunatìthta elègqou enallaktik¸n sunjhk¸n an den ikanopoieÐtai hpr¸th sunj kh thc if, oi opoÐec akoloujoÔn mÐa lèxh kleidÐ (p.q. elsif  elif).

Se aut  th morf  thc if, exet�zetai poia eÐnai h pr¸th kat� seir�sunj kh (met� apì if   elsif) pou alhjeÔei kai ekteloÔntai oi entolècpou akoloujoÔn thn antÐstoiqh sunj kh. An kamia sunj kh denalhjeÔei ekteleÐtai h entol  pou akoloujeÐ to else.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 35 / 94

Page 36: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Par�deigma

H parak�tw entol  if se Modula 2 anajètei sthn metablht  days topl joc twn hmer¸n tou m na pou prosdiorÐzetai apì thn tim  thcmonth

IF month = 2 THEN

days := 28;

ELSIF (month = 4) OR (month = 6) OR (month = 9) OR (month = 11) THEN

days := 30;

ELSE

days := 31;

END

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 36 / 94

Page 37: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

MÐa parallag  thc parap�nw entol c se Python eÐnai:

if month == 2:

days = 28

elif month in {4,6,9,11}:

days = 30

else:

days = 31

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 37 / 94

Page 38: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Se mia entol  epilog c me par�stash, oi entolèc pou ja ektelestoÔnkajorÐzontai apì thn tim  mÐac par�stashc.

H qr sh mÐa entol c epilog c me par�stash eÐnai protimìterh apì thqr sh mÐac isodÔnamhc entol c if, tìso gia lìgouc anagnwsimìthtac,all� epeid  mporeÐ na odhg sei se paragwg  apodotikìterou k¸dika.

ParadeÐgmata entol¸n pou empÐptoun sthn parap�nw kathgorÐa:

to arijmhtikì IF thc FORTRAN

oi entolec case thc Pascal (protoemfanÐsthke sthn Algol-W) kaiswitch thc C.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 38 / 94

Page 39: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Sthn entol  case thc Pascal dÐnetai mÐa par�stash kai èna sÔnolopeript¸sewn. K�je perÐptwsh perièqei èna sÔnolo tim¸n kai mÐaentol  (h opoÐa endèqetai na eÐnai sÔnjeth). An h apotÐmhsh thcpar�stashc d¸sei tim  pou perilamb�netai se k�poia perÐptwsh tìteekteleÐtai h antÐstoiqh entol  (kai mìno aut ).

An h tim  thc par�stashc den perilamb�netai se k�poia perÐptwshtìte to apotèlesma eÐnai aprosdiìristo. Orismènec di�lektoi thcPascal epitrèpoun na dojeÐ mÐa entol  pou ja ektelesteÐ sthnperÐptwsh aut  met� apì th lèxh otherwise   else.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 39 / 94

Page 40: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

H entol  switch thc C leitourgeÐ parìmoia, ìmwc gia mÐa dedomènh tim den ekteleÐ mìno mÐa entol , all� ìlec tic entolèc pou akoloujoÔn thnemf�nish thc tim c sthn switch mèqri to tèloc thc switch. Autì mporeÐna apofeuqjeÐ me qr sh thc break.

H entol  switch epitrèpetai na èqei sto tèloc thc mÐa etikèta default, hopoÐa tairi�zei me opoiad pote tim . Oi entolèc pou akoloujoÔn thndefault ekteloÔntai gia ìlec tic timèc, ektìc apì autèc gia tic opoÐecèqei ektelesteÐ prohgoumènwc h entol  break.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 40 / 94

Page 41: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

Par�deigma

H parak�tw entol  case mporeÐ na qrhsimopoihjeÐ gia thn anajèteisthn metablht  days tou pl jouc twn hmer¸n tou m na pouprosdiorÐzetai apì thn tim  thc month:

case month of

2: days := 28;

4,6,9,11: days := 30;

1,3,5,7,8,10,12: days := 31

end

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 41 / 94

Page 42: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epilog c

H antÐstoiqh entol  switch eÐnai:

switch(month) {

case 2: days = 28; break;

case 4:

case 6:

case 9:

case 11: days = 30; break;

default: days = 31;

}

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 42 / 94

Page 43: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 43 / 94

Page 44: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Entolèc epan�lhyhc: skopìc aut c thc kathgorÐac entol¸n eÐnai hepanalhptik  ektèlesh mÐac   perissotèrwn entol¸n.

Up�rqoun dÔo kathgorÐec entol¸n epan�lhyhc, an�loga me to p¸ckajorÐzetai to an ja up�rqei �llh epan�lhyh:

Me logik  sunj kh

Me metablht  elègqou

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 44 / 94

Page 45: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

MÐa entol  epan�lhyhc me logik  sunj kh perilamb�nei mÐa logik sunj kh kai mÐa   perissìterec entolèc pou ekteloÔntai en¸soalhjeÔei h sunj kh.

DiakrÐnoume dÔo peript¸seic, an�loga me to pìte gÐnetai o èlegqocthc sunj khc:

H sunj kh elègqetai prin thn ektèlesh twn entol¸n (entol  while,entol  for thc C kai thc Java). An arqik� h sunj kh den alhjeÔeitìte oi entolèc den ekteloÔntai potè.

H sunj kh elègqetai met� thn ektèlesh twn entol c (entol repeat-until thc Pascal, entol  do-while thc C). H entolècekteloÔntai toul�qiston mÐa for�.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 45 / 94

Page 46: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Par�deigma

H parak�tw entol  while se Pascal brÐskei th jèsh tou stoiqeÐou a seènan taxinomhmèno pÐnaka S. Upojètoume ìti to stoiqeÐo up�rqei stonpÐnaka kai ìti oi arqikèc timèc twn i kai j eÐnai ta ìria tou pÐnaka S. Htelik  tim  twn i kai j dÐnei th jèsh tou stoiqeÐou a:

while i<j do

begin

k := (i+j) div 2;

if a > S[k] then i := k+1

else j := k

end

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 46 / 94

Page 47: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

H antÐstoiqh entol  se C   se Java eÐnai:

while (i<j) {

k = (i+j) / 2;

if (a > S[k]) i = k+1;

else j = k;

}

H antÐstoiqh entol  se Python eÐnai:

while i<j:

k = (i+j) // 2

if a > S[k]:

i = k+1

else:

j = k

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 47 / 94

Page 48: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Par�deigma

H parak�tw entol  repeat-until se Pascal brÐskei (upì proôpojèseic)èna stajerì shmeÐo thc sun�rthshc f.

repeat

y := x;

x := f(x)

until y=x

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 48 / 94

Page 49: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

H antÐstoiqh entol  se C   se Java eÐnai:

do {

y = x;

x = f(x);

} while (x != y);

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 49 / 94

Page 50: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Se mÐa entol  epan�lhyhc me metablht  elègqou, to pl joc twnepanal yewn kajorÐzetai apì ènan eÐdoc metrht , th metablht elègqou.

O kajorismìc thc arqik c tim c, thc telik c tim c kai tou b matocapoteloÔn tm mata thc entolhc epan�lhyhc. Sun jwc entol epan�lhyhc me metablht  elègqou onom�zetai for.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 50 / 94

Page 51: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Up�rqoun pollèc enallaktikèc morfèc pou mporeÐ na p�rei h for, poukajorÐzontai apì tic apant seic sta parak�tw erwt mata:

PoioÐ eÐnai oi epitreptoÐ tÔpoi gia th metablht  elègqou?

Pìso sÔnjetec parast�seic mporeÐ na eÐnai h arqik  tim , htelik  tim  kai to b ma?

Pìso suqn� upologÐzetai to b ma kai h telik  tim ?

Pìte elègqetai h tim  thc metablht c elègqou?

MporeÐ na gÐnei an�jesh tim c sth metablht  elègqou?

Poi� eÐnai h tim  thc metablht c elègqou met� thn olokl rwshthc for?

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 51 / 94

Page 52: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Sthn PASCAL:

H metablht  elègqou mporeÐ na p�rei opoiond pote bajmwtì tÔpoektìc apì real (p.q. akèraio, qarakt ra, aparijmhtì tÔpo).

H arqik  kai telik  tim  mporeÐ na eÐnai opoiad pote par�stashtou Ðdiou tÔpou me th metablht  elègqou, en¸ to b ma eÐnai +1  -1 (se mh arijmhtikoÔc tÔpouc eÐnai h prohgoÔmenh   h epìmenhtim ).

H arqik  kai h telik  tim  upologÐzontai mìno mÐa for�, sthnarq .

H tim  thc metablht c elègqou elègqetai sthn arq  k�jeepan�lhyhc.

Den mporeÐ na gÐnei an�jesh tim c sth metablht  elègqou.

H tim  thc metablht c elègqou met� thn ektèlesh thc for eÐnaiaìristh.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 52 / 94

Page 53: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Par�deigma

H parak�tw fwliasmènec entolèc for se Pascal upologÐzoun toginomeno dÔo pin�kwn A kai B di�stashc n × n:

for i:=1 to n do

for j:=1 to n do

begin

sum := 0;

for k:=1 to n do

sum := sum + A[i,k]*B[k,j];

C[i,j] := sum

end

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 53 / 94

Page 54: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Par�deigma

H parak�tw entol  for se Pascal olisjaÐnei ta stoiqeÐa tou pÐnaka Akat� mÐa jèsh. To downto dhlwnei ìti to b ma eÐnai -1:

for i:=n downto 2 do

A[i] := A[i-1]

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 54 / 94

Page 55: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Stic ekdoq  thc entol c for pou perigr�yame mèqri t¸ra, oi timèc thcmetablht c elègqou diafèroun kat� mÐa stajer  tim  pou kajorÐzetaiapì to b ma. H gl¸ssa Clu eis gage ènan pio genikì kai euèliktomhqanismì gia ton kajorismì twn tim¸n thc metablht c elègqou, toucepanal ptec.

'Enac epanal pthc eÐnai parìmoioc mè èna upoprìgramma, me thnparak�tw diafor�: O epanal pthc epistrèfei timèc me qr sh mÐacentol c yield (antÐ thc return). Met� thn ektèlesh thc yield hleitourgÐa tou epanal pth den oloklhr¸netai all� anastèlletai.'Otan h metablht  elègqou qreiasteÐ thn epìmenh tim , h leitourgÐatou epanal pth suneqÐzetai akrib¸c met� apì to shmeÐo pou brÐsketaih teleutaÐa entol  yield pou ektelèsthke.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 55 / 94

Page 56: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Qrhsimopoi¸ntac epanal ptec eÐnai dunatìn h metablht  elègqou nap�rei diadoqik� tic timèc opoioud pote sunìlou to opoÐo mporeÐ nakataskeuasteÐ apì to prìgramma kai me opoiad pote seir�.

EpÐshc oi epanal ptec dÐnoun th dunatìthta diaqwrismoÔ thcparagwg c twn tim¸n thc metablht c elègqou apì thn Ðdia thn entol for pou qrhsimopoieÐ tic timèc. Me autìn ton trìpo diaforetikècentolèc for mporoÔn na qrhsimopoioÔn ton Ðdio epanal pth.

Epanal ptec uposthrÐzontai apì sÔgqronec gl¸ssec ìpwc h Python,h Ruby kai h C#.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 56 / 94

Page 57: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Par�deigma

O parak�tw epanal pthc se Python kataskeu�zei ìla ta uposÔnolame m stoiqeÐa enìc sunìlou S:

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 57 / 94

Page 58: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

def combinations(S,m):

L = list(S)

n = len(L)

if m>n: return

k = n-m

P = list(range(m))

yield set([L[i] for i in P])

if m == 0: return

while P[0]!=k:

i = m-1

while i>=0 and P[i]==i+k:

i = i-1

P[i] = P[i]+1

i = i+1

while i<m:

P[i] = P[i-1]+1

i = i+1

yield set([L[i] for i in P])

return

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 58 / 94

Page 59: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

MporoÔme epanalhptik� ne epexergastoÔme (p.q. na tup¸soume) tauposÔnola plhjikìthtac m enìc sunìlou S, qrhsimopoi¸ntac tonepanal pth combinations se mÐa entol  for:

>>> for i in combinations({1,2,3,4,5},2):

print(i)

{1, 2}

{1, 3}

{1, 4}

{1, 5}

{2, 3}

{2, 4}

{2, 5}

{3, 4}

{3, 5}

{4, 5}

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 59 / 94

Page 60: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

Se antikeimenostrefeÐc gl¸ssec pou den uposthrÐzoun thn entol  yieldden mporoÔn na oristoÔn alhjinoÐ epanal ptec. Se autèc tic gl¸ssecoi entol  for mporeÐ na qrhsimopoieÐ antikeÐmena epanal ptec, taopoÐa parèqoun akoloujiak� ìla ta stoiqeÐa enìc sunìlou.

Gia thn anapar�stash sunìlwn stic antikeimenostrefeÐc gl¸ssecqrhsimopoioÔntai antikeÐmena ta opoÐa onom�zontai apoj kec(containers). 'Ena antikeÐmeno-epanal pthc sundèetai me ènaantikeÐmeno-apoj kh kai na parèqei ta stoiqeÐa tou, èna k�je for�,me qr sh kat�llhlwn mejìdwn.

Shmei¸netai ìti o ep�nal pthc den tautÐzetai me thn Ðdia thnapoj kh, kaj¸c mporoÔme na orÐsoume perissìterouc apì ènanepanal ptec gia to Ðdio sÔnolo stoiqeÐwn (kajènac apì touc opoÐoucepistrèfei ta stoiqeÐa me diaforetik  seir�).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 60 / 94

Page 61: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

H ektèlesh miac opoiasd pote entol c epan�lhyhc eÐnai dunatìn nadiakìptetai me mh omalì trìpo, an qrhsimopoihjoÔn entolèc ìpwc oigoto, break kai continue, oi opoÐec perigr�fontai parak�tw.

H mh omal  èxodoc apì entolèc epan�lhyhc mei¸nei thnanagnwsimìthta tou progr�mmatoc kai eÐnai kalì qr sh thc nagÐnetai me mètro.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 61 / 94

Page 62: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc epan�lhyhc

MporoÔme na epanal�boume entolèc me èmmesouc trìpouc,qrhsimopoi¸ntac

anadrom  (stic sunarthsiakèc kai logikèc gl¸ssec eÐnai omonadikìc trìpoc gia na gÐnei epan�lhyh)

thn entol  goto (eÐnai o monadikìc trìpoc gia epan�lhyh sthgl¸ssa mhqan c)

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 62 / 94

Page 63: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 63 / 94

Page 64: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Entolèc met�bashc: skopìc aut c thc kathgorÐac entol¸n eÐnai tona kajorÐzoun thn entol  me thn opoÐa ja suneqisteÐ h ektèlesh touprogr�mmatoc.

Sth sunèqeia perigr�fontai oi basikìterec entolèc aut c thckathgorÐac.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 64 / 94

Page 65: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  �lmatoc, h opoÐa sun jwc onom�zetai goto, kajorÐzei me�meso trìpo thn epìmenh entol  pou ja ektèlesteÐ: h entol  pou jaektelesteÐ eÐnai aut  pou brÐsketai amèswc met� apì thn etikèta hopoÐa prosdiorÐzetai sthn entol  goto.

H entol  goto èqei arnhtik  epÐdrash sthn anagnwsimìthta touprogr�mmatoc, en¸ mporeÐ na èqei aprosdiìrista apotelèsmata semerikèc peript¸seic (p.q. met�bash sto eswterikì enìc brìqou for,parak�mptontac thn arqikopoÐhsh thc metablht c elègqou   stos¸ma enìc upoprogr�mmatoc, parak�mptontac thn enhmèrwsh thcstoÐbac kai to pèrasma paramètrwn).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 65 / 94

Page 66: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Stic orismènec apì tic pr¸tec gl¸ssec uyhloÔ epipèdou pouanaptÔqjhkan (p.q. Cobol, PL1), h qr sh thc entol c goto  tan omonadikìc trìpoc gia thn uplopoÐhsh thc epan�lhyhc.

Stic gl¸ssec pou parèqoun domhmènec entolèc epan�lhyhc, h gotomporeÐ na faneÐ qr simh mìno se periorismènec peript¸seic, ìpwc oiparak�tw:

�mesoc termatismìc thc ektèleshc mÐac entol c epan�lhyhc (me�lma sthn pr¸th entol  met� thn entol  epan�lhyhc).

�mesoc termatismìc thc trèqousac epan�lhyhc se mÐa entol epan�lhyhc (me �lma sto tèloc tou mplok twn entol¸n pouekteloÔntai epanalhptik�).

�mesoc termatismìc thc ektèleshc enìc upoprogrammatoc (me�lma sto tèloc tou s¸matoc tou upoprogr�mmatoc).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 66 / 94

Page 67: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Oi pio sÔgqronec gl¸ssec, ìpwc h Clu, h Java kai h Python, den èqounentol  goto kai parèqoun eidikèc entolèc oi opoÐec mporoÔn naektelestoÔn stic parap�nw peript¸seic.

Sthn Pascal up�rqei entol  goto, me di�forouc periorismoÔc, wstìso hqr sh thc den sunÐstatai. Stic parap�nw peript¸seic antÐ gia qr shthc entol c goto se k�poio shmeÐo tou s¸matoc mÐac entol cepan�lhyhc   enìc upoprogr�mmatoc, mporeÐ na qrhsimopoihjoÔnkat�llhlec logikèc metablhtèc kai to upìloipo tou s¸matoc na mpeÐmèsa se mÐa entol  if.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 67 / 94

Page 68: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Par�deigma

To parak�tw tm ma progr�mmatoc se C brÐskei thn pr¸th jèsh enìcdidi�statou pÐnaka sthn opoÐa up�rqei to stoiqeÐo 0. 'Otan entopisteÐto stoiqeÐo autì qrhsimopoieÐtai h entol  goto gia �meso termatismìtwn fwliasmènwn entol¸n for:

for (i = 0; i < MAX; i++) {

for (j = 0; j < MAX; j++) {

if (A[i][j] == 0) goto Label1;

}

}

Label1: ...

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 68 / 94

Page 69: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  �mesou termatismoÔ entol c epan�lhyhc, prokaleÐ diakop thc ektèleshc thc entol c epan�lhyhc sthn opoÐa perièqetai kai thmet�bash thc ro c ektèleshc tou progr�mmatoc amèswc met� thnentol  epan�lhyhc.

Tètoiec entolèc eÐnai gia par�deigma h break thc C, thc Java, kai thcPython kai h EXIT thc FORTRAN 90.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 69 / 94

Page 70: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Sth C kai sthn Python h break epidr� sthn eswterikìterh entol epan�lhyhc pou thn perièqei.

Sth Java mporeÐ na epilegeÐ h diakop  opoiasd pote entol cepan�lhyhc apo autèc pou perièqoun th break, qrhsimopoi¸ntackat�llhlh etikèta.

Sth FORTRAN h entol  EXIT prokaleÐ �mesh èxodo apì thnexwterikìterh entol  epan�lhyhc pou thn perièqei.

H Pascal pou uposthrÐzei to domhmèno programmatismì, den èqeik�poia entol  aut c thc kathgorÐac.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 70 / 94

Page 71: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Par�deigma

To parak�tw tm ma progr�mmatoc se Java ekteleÐ thn Ðdia leitourgÐame to tm ma progr�mmatoc tou prohgoÔmenou paradeÐgmatoc. AntÐ thcentol c goto (h opoÐa den up�rqei sth Java) qrhsimopoieÐtai h entol break gia thn èxodo apì ton exwterikìtero brìqo for (ìpwcprosdiorÐzei h etikèta pou akoloujèi th lèxh break):

OuterLoop: for (i = 0; i < MAX; i++) {

for (j = 0; j < MAX; j++) {

if (A[i][j] == 0) break OuterLoop;

}

}

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 71 / 94

Page 72: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Sth C gia na epiteuqjeÐ to Ðdio apotèlesma, qrei�zontai dÔo entolècbreak (mÐa gia èxodo apì to eswterikì for kai �llh mÐa gia èxodo apìto exwterikì for):

for (i=0; i<MAX; i++) {

for (j=0; j<MAX; j++) {

if (A[i][j] == 0) break;

}

if (j<MAX) break;

}

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 72 / 94

Page 73: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  �mesou termatismoÔ thc trèqousac epan�lhyhc, èqei wcapotèlesma thn �mesh oloklhrwsh thc trèqousac epan�lhyhc enìcepanalhptikoÔ brìqou kai thn met�bash thc ro c ektèleshc touprogr�mmatoc ston èlegqo thc sunj khc thc entol c epan�lhyhc(¸ste na exetasteÐ an ja up�rqei epìmenh epan�lhyh   jaoloklhrwjeÐ h ektèlesh tou brìqou).

Tètoiec entolèc eÐnai gia par�deigma h continue thc C, thc Java, kaithc Python kai h CYCLE thc FORTRAN 90.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 73 / 94

Page 74: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  continue thc C kai thc Python kai h CYCLE thc FORTRAN 90epidroÔn sthn eswterikìterh entol  epan�lhyhc pou thn perièqei.

Sth Java mporeÐ na epilegeÐ h diakop  thc trèqousac epan�lhyhcopoiasd pote entol c epan�lhyhc apo autèc pou perièqoun thncontinue, qrhsimopoi¸ntac kat�llhlh etikèta.

H Pascal den èqei k�poia entol  aut c thc kathgorÐac.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 74 / 94

Page 75: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Par�deigma

To parak�tw tm ma progr�mmatoc se Java metr�ei to pl joc twngramm¸n enìc pÐnaka oi opoÐec perièqoun to stoiqeÐo 0. 'OtanentopisteÐ se mÐa gramm  to stoiqeÐo 0, h entol  continue prokaleÐtermatismì thc trèqousac epan�lhyhc tou exwterikoÔ for (ìpwcprosdiorÐzei h etikèta) ¸ste na suneqisteÐ o èlegqoc sthn epìmenhgramm  tou pÐnaka (an up�rqei):

OuterLoop: for (counter=0,i = 0; i < MAX; i++) {

for (j = 0; j < MAX; j++) {

if (A[i][j] == 0) {

counter++;

continue OuterLoop;

}

}

}

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 75 / 94

Page 76: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H kl sh upoprogr�mmatoc, eÐnai mÐa entol  met�bashc h ektèlesh thcopoÐac èqei wc apotèlesma h ro  thc ektèleshc tou progr�mmatoc nametaferjeÐ sthn pr¸th entol  tou upoprogr�mmatoc (afoÔ pr¸taektelestoÔn oi aparaÐthtec entolèc gia enhmèrwsh thc stoÐbac,pèrasma paramètrwn klp).

Stic perissìterec gl¸ssec h entol  aut  den èqei k�poio ìnoma kaigia thn ektèles  thc gr�fetai apl� to ìnoma tou upoprogr�mmatocmazÐ me tic pragmatikèc paramètrouc.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 76 / 94

Page 77: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  epistrof c apì upoprìgramma èqei wc apotèlesma ton�meso termatismì thc ektèleshc enìc upoprogr�mmatoc, kai thmet�bash thc ro c ektèleshc tou progr�mmatoc amèswc met� apì toshmeÐo apì to opoÐo eÐqe klhjeÐ to upoprìgramma.

Tètoia entol  eÐnai h return thc C, thc Java kai thc Python.

'Otan qrhsimopoieÐtai mèsa se sun�rthsh, sun jwc epistrèfei kai thntim  thc sun�rthshc.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 77 / 94

Page 78: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

Parìmoia entol  eÐnai kai h yield pou qrhsimopoieÐtai apì toucepanal ptec, h opoÐa wstìso anastèllei (kai den termatÐzei) thleitourgÐa tou upoprogr�mmatoc.

H Pascal den èqei k�poia entol  aut c thc kathgorÐac (toupoprìgramma oloklhr¸netai me thn ektèlesh thc teleutaÐa entol ckai up�rqei diaforetikìc mhqanismìc epistrof c tim c apì ticsunart seic).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 78 / 94

Page 79: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Entolèc met�bashc

H entol  rÐyhc exaÐreshc èqei wc apotèlesma ton �meso termatismìthc ektèleshc enìc   perissìterwn upoprogramm�twn ta opoÐa eÐnaienerg�, mèqri na brejeÐ èna tm ma tou progr�mmatoc to opoÐo mporeÐna qeiristeÐ thn exaÐresh.

Entolèc autoÔ tou eÐdouc up�rqoun se gl¸ssec pou uposthrÐzounqeirismì exairèsewn, o opoÐoc eÐnai ènac mhqanismìc ¸ste na mporeÐ toprìgramma na diaqeirÐzetai aprìbleptec katast�seic (gia tic opoÐecsto shmeÐo pou emfanÐzontai den up�rqei p�nta h aparaÐththplhroforÐa gia to p¸c prèpei na antimetwpistoÔn).

Tètoia entol  eÐnai h throw thc Java.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 79 / 94

Page 80: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 80 / 94

Page 81: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

SÔnjeth entol  kai �llec entolèc

SÔnjeth entol : skopìc thc eÐnai na omadopoi sei èna pl jocentol¸n, ètsi ¸ste na mporoÔn na qrhsimopoihjoÔn suntaktik� wc mÐamonadik  entol .

Oi entolèc topojetoÔntai mèsa se begin - end (p.q. Pascal)   { } (p.q.C, Java).

H Pascal qrhsimopoieÐ gia diaqwristikì to ; en¸ h C kai h Java denqrhsimopoioÔn k�poio diaqwristikì, kaj¸c k�je entol  termatÐzetaime ;.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 81 / 94

Page 82: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

SÔnjeth entol  kai �llec entolèc

Allec entolèc: endèqetai tèloc mia gl¸ssa na perièqei kai �llecentolèc ìpwc:

Entolèc eisìdou - exìdou (an kai sun jwc qrhsimopoioÔntaiprokajorismènec sunart seic   diadikasÐec)

Entol  with thc Pascal: qrhsimopoieÐtai gia eukolìterh prìsbashtwn pedÐwn mÐac eggraf c

Ken  entol  thc Pascal: qrhsimopoieÐtai gia lìgouc eukolÐac sthsÔntaxh thc gl¸ssac

Entol  pass thc Python: den k�nei tÐpota, qrhsimopoieÐtai epÐshcgia lìgouc eukolÐac sth suggraf  programm�twn.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 82 / 94

Page 83: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Perieqìmena

1 Entol  an�jeshc

2 Entolèc epilog c

3 Entolèc epan�lhyhc

4 Entolèc met�bashc

5 SÔnjeth entol  kai �llec entolèc

6 Mon�dec K¸dika

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 83 / 94

Page 84: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

H dunatìthta d lwshc onom�twn topik� se èna upoprìgramma ( genikìtera mplok) apoteleÐ èna mhqanismì apìkruyhc plhroforÐac.

Ta topik� onìmata den eÐnai orat� èxw apì to upoprìgramma stoopoÐo dhl¸nontai. Autì epitrèpei thn apìkruyh leptomerei¸n, ticopoÐec den eÐnai aparaÐthto na gnwrÐzei ìpoioc qrhsimopoieÐ toupoprìgramma.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 84 / 94

Page 85: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Me autì ton trìpo, oi leptomèreiec thc ulopoÐhshc enìcupoprogr�mmatoc eÐnai dunatìn na all�xoun, qwrÐc autì naephre�sei th leitourgÐa tou sunolikoÔ progr�mmatoc.

EpÐshc h suggraf  tou k¸dika mporeÐ na moirasteÐ se polloÔcprogrammatistèc. To k�je upoprìgramma mporeÐ na grafteÐxeqwrist�, qrhsimopoi¸ntac ta dik� tou onìmata, anex�rthta apì topoi� onìmata qrhsimopoioÔntai se �lla upoprogr�mmata pousunup�rqoun sto Ðdio prìgramma.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 85 / 94

Page 86: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Wstìsì, ìtan qrhsimopoieÐtai to montèlo tim¸n gia tic metablhtèc, taantikeÐmena ta opoÐa sundèontai me topikèc metablhtèc eÐnaiantikeÐmena stoÐbac, dhlad  èqoun di�rkeia zw c pou tautÐzetai me toqrìno ektèleshc tou upoprogr�mmatoc. Ta antikeÐmena aut�katastrèfontai ìtan oloklhrwjeÐ h ektèlesh tou upoprogr�mmatockai den eÐnai diajèsima se epìmenec ektelèseic tou Ðdiouupoprogr�mmatoc.

EpÐshc, ìtan qrhsimopoieÐte montèlo anafor¸n gia tic metablhtèc, taantikeÐmena pou sundèontai me autèc endèqetai exakoloujoÔn naup�rqoun met� thn olokl rwsh thc ektèleshc tou upoprogr�mmatoc,(kaj¸c eÐnai antikeÐmena swroÔ), wstìso oi sundèseic touc me tictopikèc metablhtèc (oi opoÐec sundèseic apojhkeÔontai sth stoÐba)katastrèfontai.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 86 / 94

Page 87: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Oi statikèc metablhtèc twn upoprogramm�twn apoteloÔn ènamhqanismì ¸ste topikèc metablhtèc na sundèontai me statik�antikeÐmena. Me autìn ton trìpo eÐnai dunatìn oi topikèc metablhtèctwn upoprogramm�twn na diathroÔn tic timèc touc an�mesa sediaforetikèc kl seic tou Ðdiou upoprogr�mmatoc.

Wstìso oi statikèc metablhtèc eÐnai oratèc mìno se ènaupoprìgramma.

Oi mon�dec k¸dika parèqoun èna mhqanismì ¸ste k�poia onìmata naeÐnai orat� mìno se èna sugkekrimèno sÔnolo upoprogramm�twn kaina diathroÔn tic timèc touc gia di�sthma pou uperbaÐnei th di�rkeiaektèleshc twn upoprogramm�twn aut¸n.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 87 / 94

Page 88: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

MÐa mon�da k¸dika eÐnai èna oriojethmèno tm ma tou progr�mmatocmèsa sto opoÐo mporeÐ na dhl¸nontai metablhtèc, stajerèc, tÔpoi,upoprogr�mmata, klp, ètsi ¸ste:

Ta onìmata pou dhl¸nontai mèsa sè mÐa mon�da k¸dika na eÐnaiorat� mèsa sth mon�da aut .

Ta onìmata pou dhl¸nontai mèsa sè mÐa mon�da k¸dika na mhneÐnai orat� sto tm ma tou progr�mmatoc pou brÐsketai èxw apìth mon�da, me exaÐresh aut� pou ex�gontai me rhtì trìpo.

Ta onìmata pou dhl¸nontai èxw apì mÐa mon�da k¸dika na mhneÐnai orat� entìc thc mon�dac, ektìc an eis�gontai me rhtì trìpo(autìc o periorismìc endèqetai na mh up�rqei se k�poiec gl¸ssecpou qrhsimopoioÔn mon�dec k¸dika).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 88 / 94

Page 89: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Oi mon�dec k¸dika gia tic opoÐec apaiteÐtai eisagwg  onom�twnonom�zontai kleistèc. Se antÐjeth perÐptwsh onom�zontai anoiktèc.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 89 / 94

Page 90: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Par�deigma

Sto parak�tw (se Modula-2) ta dÔo upoprogr�mmata push kai popqrhsimopoioÔn ènan pÐnaka s gia thn apoj keush thc stoÐbac kai mÐametablht  top pou deÐqnei thn koruf  thc stoÐbac, ta opoÐa den eÐnaiorat� èxw apì thn enìthta stack.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 90 / 94

Page 91: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

CONST stack_size = ... | PROCEDURE pop() : element;

TYPE element = ... | BEGIN

... | IF top = 1 THEN

MODULE stack; | error;

IMPORT element, stack_size; | ELSE

EXPORT push, pop; | top := top-1;

TYPE | RETURN s[top];

stack_index = [1..stack_size]; | END;

VAR | END pop;

s : ARRAY stack_index of element; |

top : stack_index; | BEGIN

| top :=1;

PROCEDURE error; ... | END stack;

|

PROCEDURE push(elem : element); |

BEGIN |

IF top = stack_size THEN |

error; |

ELSE |

s[top] := elem; |

top := top+1; |

END; |

END push; |

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 91 / 94

Page 92: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

Apo ta onìmata pou dhl¸nontai èxw apì th mon�da k¸dika stack tamìna pou eÐnai orat� mèsa se aut  eÐnai ta element kai stack size poueis�gontai me thn entol  IMPORT.

Apo ta onìmata pou dhl¸nontai mèsa sth mon�da k¸dika stack tomìna pou eÐnai orat� èxw apì aut  eÐnai ta onìmata twn dÔoupoprogramm�twn push kai pop pou ex�gontai me thn entol  EXPORT.AntÐjeta den eÐnai orat� èxw apì th mon�da k¸dika stack ta onìmatas, top kai error.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 92 / 94

Page 93: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

H di�rkeia zw c twn antikeimènwn ta opoÐa dhmiourgoÔntai mèsa semÐa mon�da k¸dika eÐnai h Ðdia me aut  pou ja eÐqan an katargoÔsameto ìrio thc mon�dac k¸dika (dhlad  an oi dhl¸seic twn antÐstoiqwnmetablht¸n brÐskontan to shmeÐo tou progr�mmatoc ìpou orÐzetai hmon�da k¸dika qwrÐc ìmwc na perikleÐontai se aut ).

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 93 / 94

Page 94: Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n Programmatismoucnomikos/courses/pl/ProgrammingLanguages3.pdfArqèc Glwss¸n Programmatismou Qr stoc Nomikìc Tm ma Mhqanik¸n

Mon�dec K¸dika

H embèleia twn onom�twn pou eis�gontai se mÐa mon�da k¸dikaperièqei olìklhrh thn mon�da k¸dika (ektìc an dhmiourgeÐtai trÔpasthn embèleia apì k�poia eswterik  d lwsh).

Ta onìmata pou dhl¸nontai mèsa se mÐa mon�da k¸dika kaiex�gontai apì aut , èqoun wc embèleia to tm ma tou progr�mmatocpou ja apoteloÔse thn embèleia enìc onìmatoc to opoÐo ja dhlwnìtansto shmeÐo pou brÐsketai h mon�da k¸dika.

Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 94 / 94