Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸n...
Transcript of Πανεπιστημίο Ιωαννίνων - Arqèc Glwss¸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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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