Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou...

44
PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P. Sqed. Glwss∏n Programmatismo‘: Sust†mata T‘pwn Ep. Kaj. P. KatsarÏc 22/05/2017 Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Transcript of Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou...

Page 1: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Ep. Kaj. P. KatsarÏc

22/05/2017

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 2: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

1 Oi t‘poi stic G.P.T‘poi kai sust†mata t‘pwnLàjh ektËleshc & asfàleia programmàtwnIdiÏthtec sust†matoc t‘pwn

2 Sust†mata t‘pwnSqed–ash sust†matoc t‘pwnOrismÏc sust†matoc t‘pwn

3 S‘sthma t‘pwn G.P.KanÏnec t‘pwn G.P.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 3: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

T‘poi

O t‘poc e–nai m–a idiÏthta suntaktik∏n stoiqe–wn twnprogrammàtwn, Ïpwc gia paràdeigma twn ekfràsewn.

MerikËc dhl∏seic mpore– na sundËoun àrhta Ënan t‘po me ËnaÏnoma, Ïpwc h d†lwsh Pascal

const PI = 3.14159;

O t‘poc or–zei Ëna s‘nolo twn tim∏n (e‘roc tim∏n) kai Ënas‘nolo leitourgi∏n (pràxewn) me autËc tic timËc.

'Olec oi timËc dedomËnwn pou mpore– na ekfrasto‘n se m–a G.P.an†koun se Ënan t‘po.

Oi klàseic e–nai m–a per–ptwsh miac s‘gqronhc ekdoq†c t‘pwn:

ta ped–a kai oi mËjodoi miac klàshc thc Java anaparisto‘ntimËc kai epitrpetËc leitourg–ec gi' autËc tic timËc

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 4: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Oi t‘poi thc C

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 5: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Oi t‘poi thc Java

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 6: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Oi t‘poi thc Ada

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 7: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Sust†mata T‘pwn

'Ena s‘sthma t‘pwn e–nai Ëna s‘nolo kanÏnwn, pou apod–dount‘pouc se suntaktikà stoiqe–a (epiplËon periorismo‘c gia tonËlegqo thc egkurÏthtac twn programmàtwn - h parab–ash twnperiorism∏n antistoiqe– se làjh).

S‘sthma T‘pwn G.P.

To s‘sthma t‘pwn miac G.P. or–zei poiec leitourg–ec e–nai Ëgkurecgia poiouc t‘pouc kai aposkope– sthn apotrop† laj∏n katà thnektËlesh twn programmàtwn (làjh ektËleshc).

Oi kanÏnec t‘pwn or–zontai wc proc th dom† twn ekfràsewn kaidiafËroun apÏ gl∏ssa se gl∏ssa.

EpitrËpetai h ektËlesh mÏno twn programmàtwn pousummorf∏nontai me to s‘sthma t‘pwn.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 8: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Se ti qreiàzontai ta sust†mata t‘pwn;

Ac jewr†soume thn entol† Pentium assembly

ADD r, r/m

pou prosjËtei to perieqÏmeno enÏc kataqwrht† † jËshc mn†mhc(r/m) sto perieqÏmeno enÏc kataqwrht† (r).

Ta perieqÏmena twn prosjetËwn ja mporo‘se na e–nai p.q. 32bit (dword), 16 bit (word) † 8 bit (byte).

H gl∏ssa assembly DEN EQEI TUPOUS!

Sth gl∏ssa C den Ëqei nÏhma h prÏsjesh enÏc de–kth sesunàrthsh me Ënan akËraio, allà . . .ja mporo‘same na e–qame prÏsjesh d‘o akera–wn.

Kai oi d‘o peript∏seic prÏsjeshc ulopoio‘ntai se assembly methn –dia entol†.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 9: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Qr†sh twn t‘pwn

Ston entopismÏ laj∏n:

⇤ Làjh mn†mhc, p.q. Ïpwc h apÏpeira qr†shc enÏc akera–ouant– gia de–kth.

⇤ Parab–ash perijwr–wn afa–reshc, p.q. Ïpwc h qr†sh enÏcped–ou private ektÏc thc klàshc.

Sthn upobo†jhsh thc metàfrashc:

⇤ 'Otan h Python diabàzei thn x+y, to s‘sthma t‘pwn den lËeisqedÏn t–pota gia tic x, y· oi metablhtËc den Ëqoun t‘pouc(dunhtikà antistoiqo‘n se opoiad†pote tim†). T‘poucËqoun oi timËc, pou e–nai antike–mena qrÏnou ektËleshc(dunamiko– t‘poi). O k∏dikac pou paràgetai e–nai genikÏc.

⇤ Stic C, C++, Java, oi metablhtËc Ëqoun t‘po (statiko–t‘poi) kai o k∏dikac pou paràgetai gia thn x+y e–nai piomikrÏc kai gr†goroc, epeid† e–nai gnwst† h anaparàstashtwn t‘pwn.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 10: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Rhto– & àdhloi t‘poi

M–a G.P. mpore– na diajËtei s‘sthma t‘pwn anexàrthta apÏ toan oi t‘poi efan–zontai sth s‘ntaxh † Ïqi.

OrismÏc 1 (Rhto– & àdhloi t‘poi)

An oi t‘poi e–nai mËroc thc s‘ntaxhc thc G.P., tÏte lËme Ïti hgl∏ssa diajËtei rhto‘c t‘pouc (explicitly typed), en∏ se diaforetik†per–ptwsh Ëqoume àdhlouc t‘pouc (implicitly typed).

Oi perissÏterec G.P. diajËtoun apokleistikà rhto‘c t‘pouc.

Oi G.P. ML kai Haskell Ëqoun meiktÏ s‘sthma t‘pwn: mpore– seËna mËroc tou progràmmatoc na parale–pontai oi plhrofor–ect‘pwn, opÏte autËc sunàgontai autÏmata.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 11: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

'Elegqoc t‘pwn kai sunagwg† t‘pwn

'Elegqoc t‘pwn e–nai h diadikas–a epal†jeushcprogrammàtwn me anaforà se t‘pouc.

Sunagwg† t‘pwn e–nai h diadikas–a sumpl†rwshcplhrofori∏n pou le–poun, sqetik∏n me t‘pouc.

An kai prÏkeitai gia d‘o diaforetikËc diadikas–ec, suqnàqrhsimopoio‘ntai maz–.

Oi diadikas–ec elËgqou kai sunagwg†c t‘pwn upobohjo‘ntaiapÏ rhtËc dhl∏seic t‘pwn twn metablht∏n, twn sunart†sewnkai àllwn stoiqe–wn (gl∏ssec me statiko‘c t‘pouc).

P.q. an x, y e–nai metablhtËc, h orjÏthta t‘pou thc Ëkfrashc x+ y e–nai d‘skolo na elegqje– prin apÏ thn ektËlesh ektÏc kaian oi t‘poi twn x kai y anafËrontai rhtà se m–a d†lwsh.

M–a gl∏ssa me statiko‘c t‘pouc den proÙpojËtei rhtËcdhl∏seic: oi ML kai Haskell Ëqoun statikÏ Ëlegqo t‘pwn, qwr–cna apaite–tai h d†lwsh twn t‘pwn. Auto– sunàgontai apÏ topla–sio anaforàc me Ënan isqurÏ mhqanismÏ sunagwg†c t‘pwn.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 12: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

KanÏnec t‘pwn

Gia tic ekfràseic kai tic paramËtrouc den e–nai apara–thto nadhl∏nontai rhtà statiko– t‘poi. Oi t‘poi touc mporo‘n nasunàgontai me bàsh touc katàllhlouc kanÏnec.

O katàllhloc formalismÏc gia ton Ëlegqo t‘pwn e–nai logiko–kanÏnec thc morf†c:

If upÏjesh, then sumpËrasma

Gia ton Ëlegqo t‘pwn Ëna tËtoioc kanÏnac mpore– na e–nai o:

If oi E1 kai E2 e–nai sugkekrimËnwn t‘pwn,then h E3 Ëqei Ëna sugkekrimËno t‘po.

Oi kanÏnec t‘pwn e–nai Ënac sumpag†c sumbolismÏc apÏdhl∏seic if-then

To s‘mbolo ^ shma–nei ‘and’, to s‘mbolo ) shma–nei if-then kaito x : T shma–nei Ïti h ‘x Ëqei t‘po T ’

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 13: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Paràdeigma kanÏna t‘pwn

If e1 Ëqei t‘po Int kai e2 Ëqei t‘po Intthen e1 + e2 Ëqei t‘po Int.

e1 Ëqei t‘po Int ^ e2 Ëqei t‘po Int )e1 + e2 Ëqei t‘po Int.

(e1 : Int ^ e2 : Int) ) e1 + e2 : Int

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 14: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

KanÏnac t‘pwn

H d†lwsh

(e1 : Int ^ e2 : Int) ) e1 + e2 : Int

e–nai mia eidik† per–ptwsh tou

(upÏjesh1 ^ . . . upÏjeshn) ) sumpËrasma

AutÏ e–nai Ënac kanÏnac t‘pou.Oi kanÏnec t‘pwn Ëqei epikrat†sei na gràfontai wc:

`sumpËrasma`upÏjesh1 ... `upÏjeshn

Oi upojËseic kai ta sumperàsmata Ëqoun th morf† ` e : T , Ïpou tos‘mbolo ` shma–nei «apodeikn‘etai Ïti . . .».

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 15: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Parade–gmata kanÏnwn t‘pwn

Oi parakàtw kanÏnec or–zoun prÏtupa pou perigràfoun to p∏ckajor–zontai oi t‘poi twn akËraiwn kai twn ekfràsewn àjroishc.

`i :Inti e–nai integer

[Int]

`e1+e2:Int

` e1 : Int

` e2 : Int[Add]

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 16: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Parade–gmata kanÏnwn t‘pwn

Me th sumpl†rwsh twn jËsewn sta prÏtupa autà, mporo‘me naparàxoume Ënan oloklhrwmËno orismÏ t‘pwn gia opoiad†poteËkfrash.

`1+2:Int`1:Int

1 e–nai integer

`2:Int2 e–nai integer

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 17: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Gl∏ssec me statiko‘c kai gl∏ssec me dunamiko‘c t‘pouc

Gl∏ssec me statiko‘c t‘pouc: o Ëlegqoc t‘pwn g–netaiexolokl†rou † sqedÏn exolokl†rou katà th diàrkeia thcmetagl∏ttishc (C, Java).

Gl∏ssec me dunamiko‘c t‘pouc: o Ëlegqoc t‘pwn g–netai sqedÏnexolokl†rou katà thn ektËlesh (Scheme).

Gl∏ssec qwr–c t‘pouc: den upàrqei Ëlegqoc t‘pwn (assembly,k∏dikac mhqan†c).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 18: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Gl∏ssec me statiko‘c kai gl∏ssec me dunamiko‘c t‘pouc

O dunamikÏc t‘poc enÏc antikeimËnou e–nai h klàsh C pouqrhsimopoie–tai sthn Ëkfrash new C , pou dhmiourge– toantike–meno.

⇤ E–nai Ënnoia pou anafËretai se qrÏno ektËleshc.⇤ AkÏmh kai oi gl∏ssec pou Ëqoun statiko‘c t‘poucqrhsimopoio‘n thn Ënnoia tou dunamiko‘ t‘pou.

O statikÏc t‘poc miac Ëkfrashc e–nai Ënnoia, pou anafËretaise Ïlouc touc pijano‘c dunamiko‘c t‘pouc, pou ja mporo‘sanna apodojo‘n sthn Ëkfrash

⇤ E–nai Ënnoia pou aforà to qrÏno metagl∏ttishc.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 19: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

SqËsh statik∏n & dunamik∏n t‘pwn se aplà sust†mata

Je∏rhma eurwst–ac (soundness theorem)Gia Ïlec tic ekfràseic E

dynamic type(E )=static type(E )dhlad† se Ïlec tic ektelËseic, sthn Ëkfrash E apod–dontai timËcpou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†.

'Ola ta progràmmata me kal∏c orismËnouc t‘pouc ja e–nai kaiasfal†. 'Ena tËtoio s‘sthma t‘pwn lËme Ïti e–nai e‘rwsto. Tishma–nei Ïmwc Ïti ta progràmmata e–nai asfal†;

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 20: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Làjh ektËleshc & asfàleia programmàtwn

D‘o kathgor–ec laj∏n qrÏnou ektËleshc:

1 Làjh katàrreushc, pou prokalo‘n diakop† thc ektËleshc(p.q. dia–resh me to mhdËn, prospËlash mh Ëgkurhc d/nshcmn†mhc k.a.)

2 Làjh astajo‘c sumperiforàc pou mpore– na perno‘naparat†rhta, allà ektrËpoun thn ektËlesh se anakÏloujhsumperiforà (p.q. prospËlash dedomËnou pËra apÏ to Ïriop–naka Ïtan de g–netai Ëlegqoc or–wn se qrÏno ektËleshc).

'Ena prÏgramma jewre–tai asfalËc an den periËqei làjhastajo‘c sumperiforàc. An Ïla ta pijanà progràmmata miacG.P. e–nai asfal†, tÏte lËme Ïti h gl∏ssa e–nai asfal†c.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 21: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Làjh ektËleshc & asfàleia programmàtwn

Oi G.P. me t‘pouc epibàloun thn asfàleia aporr–ptontac mestatik† anàlush Ïla ta progràmmata pou pijan∏c den e–naiasfal†. Mpore– na qrhsimopoio‘n Ëna me–gma apÏ statiko‘ct‘pouc kai dunamiko‘c t‘pouc.

Gia tic perissÏterec G.P. Ïla ta làjh astajo‘c sumperiforàc,kaj∏c kai Ëna upos‘nolo twn laj∏n katàrreushc jewro‘ntaiapagoreumËna làjh.

OrismÏc 2 (Kal∏c sumperiferÏmena progràmmata)

'Ena prÏgramma lËme Ïti epideikn‘ei kal† sumperiforà an denperilambànei apagoreumËna làjh (àra e–nai asfalËc).

OrismÏc 3 (Isqurà elegqÏmenh G.P.)

M–a G.P. thc opo–ac Ïla ta epitrepÏmena progràmmata Ëqoun kal†sumperiforà onomàzetai isqurà elegqÏmenh (strongly checked).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 22: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Làjh ektËleshc & asfàleia programmàtwn

Isqurà elegqÏmenh G.P.

Gia m–a isqurà elegqÏmenh G.P. se sqËsh me to s‘sthma t‘pwn thcisq‘oun ta ex†c:

De sumba–noun làjh astajo‘c sumperiforàc (àra e–naiasfal†c).

De sumba–nei kanËna apÏ ta làjh katàrreushc pou jewro‘ntaiapagoreumËna (ta epitreptà làjh katàrreushc e–nai euj‘nh touprogrammatist†).

OrismÏc 4 ('Elegqoc t‘pwn)

O Ëlegqoc t‘pwn e–nai Ënac algÏrijmoc pou se qrÏno metagl∏ttishcaporr–ptei ta kak∏c sumperiferÏmena progràmmata. 'EnaprÏgramma pou pernà ton Ëlegqo t‘pwn lËme Ïti Ëqei kal∏corismËnouc t‘pouc (well typed).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 23: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Làjh ektËleshc & asfàleia programmàtwn

Parade–gmata G.P. me statiko‘c t‘pouc: ML, Java, Pascal (hPascal diajËtei kàpoia mh asfal† qarakthristikà).

Oi G.P. qwr–c t‘pouc epibàloun thn kal† sumperiforà (àra kaithn asfàleia) mËsw elËgqwn se qrÏno ektËleshc, Ïpwc p.q. hLISP.P.q. elËgqontai dunamikà Ïla ta Ïria twn pinàkwn kai oidiairËseic kai endeqÏmenh emfànish apagoreumËnou làjoucshmatodote– thn energopoi†sh diaqeir–simhc exa–reshc.

AkÏmh kai oi G.P. me statiko‘c t‘pouc qreiàzetai na diexàgounkàpoiouc elËgqouc se qrÏno ektËleshc gia na egguhjo‘n thnasfal† ektËlesh, p.q. oi Ëlegqoi twn or–wn pinàkwn genikàg–nontai se qrÏno ektËleshc.

ArketËc G.P. axiopoio‘ne touc statiko‘c t‘pouc gia nadiexàgoune prohgmËnouc dunamiko‘c elËgqouc, p.q. h entol†TYPECASE sth Modula-3 kai h entol† instanceof sth Java.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 24: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Mh asfal† progràmmata

O prwtarqikÏc skopÏc enÏc sust†matoc t‘pwn e–nai naaporr–ptei Ïla ta làjh astajo‘c sumperiforàc gia Ïlec ticpijanËc ektelËseic tou progràmmatoc (asfàleia).

O dedhlwmËnoc skopÏc gia ta perissÏtera sust†mata t‘pwne–nai h pio genik† idiÏthta twn kal∏c sumperiferÏmenwnprogrammàtwn, pou Ëqei wc epakÏloujo thn asfàleia. 'Ara,autà ta sust†mata t‘pwn mporo‘n jewrhtikà na anagnwr–sounan Ëna prÏgramma Ëqei kal∏c orismËnouc t‘pouc.

Kàpoiec G.P. me statiko‘c t‘pouc den eggu∏ntai asfal†ektËlesh tou progràmmatoc: to s‘nolo twn apagoreumËnwnlaj∏n den perilambànei Ïla ta pijanà làjh astajo‘csumperiforàc. LËme Ïti autËc oi G.P. e–nai den e–nai isquràelegqÏmenec. P.q. sth gl∏ssa C tËtoia qarakthristikà e–naih arijmhtik† deikt∏n kai oi metatropËc (casting).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 25: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Mh asfal† progràmmata

Oi perissÏterec G.P. qwr–c t‘pouc e–nai asfale–c (p.q. h LISP),giat– alli∏c o programmatismÏc ja †tan pol‘ d‘skoloc. OiG.P. assembly e–nai qwr–c t‘pouc kai qwr–c asfàleia.

Me t‘pouc Qwr–c t‘pouc

Asfale–c ML, Java LISP

Mh asfale–c C Assembly

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 26: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Paràdeigma mh isqurà elegqÏmenhc gl∏ssac: C

H C anaparistà touc qarakt†rec wc arijmhtikËc timËc. 'Enacqarakt†rac, Ïpwc p.q. to ‘a’ e–nai Ënac arijmÏc ASCII.

Oi t‘poi gia tic metablhtËc sth C aplà kajor–zoun to pÏshmn†mh ekqwre–tai. 'Omwc gia na prospelaste– mia metablht†kai na tupwje– prËpei na e–nai gnwstÏc o t‘poc thc.

H C de gnwr–zei an h z e–nai Ënac qarakt†rac † Ënac akËraioc(weak type)· h printf apaite– plhrofor–a morfopo–hshc.

Gr†goroc Ëlegqoc, giat– den epibar‘netai me apomnhmÏneush twnt‘pwn, allà mpore– na proklhjo‘n d‘skola làjh· gia tomorfÏtupo thc z prËpei na e–nai gnwstÏc o t‘poc thc.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 27: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Paràdeigma isqurà elegqÏmenhc gl∏ssac: Java

H Java apaite– na Ëqoun oriste– ta pànta ∏ste kàje stigm† nae–nai gnwstÏc o t‘poc enÏc antikeimËnou, oi sunart†seic pouautÏ Ëqei kai an kale–tai orjà.

'Estw h klàsh kai Ëna antike–meno Person:

An ekqwr†sw thn person se diaforetikÏ t‘po, p.q. Ënaqarakt†ra † Ëna akËraio, tÏte o metaglwttist†c ja anafËreilàjoc asumbatÏthtac t‘pwn. An kalo‘ntan Ëna àllo API pouËqei allàxei apÏ thn teleuta–a metagl∏ttish, tÏte pàli toperibàllon ektËleshc ja Ëbriske to làjoc t‘pwn.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 28: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

IdiÏthtec susthmàtwn t‘pwn

'Ena s‘sthma t‘pwn ja prËpei:

na kajistà apofas–simh thn epal†jeush programmàtwn(decidable verifiable), dhl. na upàrqei algÏrijmoc pou naexasfal–zei Ïti Ëna prÏgramma e–nai kal∏c sumperiferÏmeno

na e–nai diàfano wc proc thn anàptuxh programmàtwn(transparent), dhl. na mporo‘me na diakr–noume an ËnaprÏgramma pernàei ton Ëlegqo t‘pwn

na epibàllei th leitourg–a tou (enforceable)

oi dhl∏seic t‘pwn na elËgqontai statikà an g–netai † ÏtanautÏ den e–nai efiktÏ na elËgqontai dunamikàna epalhje‘etai h sunËpeia twn programmàtwn me ticdhl∏seic t‘pwn (exairo‘ntai ta sqÏlia kai àllecsumbàseic twn G.P.)

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 29: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

S‘sthma t‘pwn thc C/C++

Oi metaglwttistËc thc C ulopoio‘n statikÏ Ëlegqo t‘pwn.

Sth C, pollËc asumbatÏthtec t‘pwn den prokalo‘n làjhmetagl∏ttishc allà dhmiourge–tai k∏dikac metatrop†c t‘pou,me † qwr–c proeidopoihtikÏ m†numa.

Oi s‘gqronoi metaglwttistËc diajËtoun rujm–seic epipËdoulaj∏n, gia isqurÏtero Ëlegqo t‘pwn.

H C++ prosjËtei isqurÏtero Ëlegqo t‘pwn sth C, kur–wc meproeidopoihtikà mhn‘mata tou metaglwttist† kai Ïqi me làjht‘pwn (gia na e–nai sumbat† me th C).

Pollà làjh t‘pwn emfan–zontai wc proeidopoi†seic kai denapokle–oun thn ektËlesh tou progràmmatoc.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 30: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

S‘sthma t‘pwn thc Scheme

H Scheme e–nai diàlektoc thc Lisp me dunamikà elegqÏmenouct‘pouc, sthn opo–a Ïla ta làjh t‘pwn termat–zoun toprÏgramma.

Den upàrqoun t‘poi stic dhl∏seic kai den upàrqei rht†anaforà se onÏmata t‘pwn. Oi metablhtËc den Ëqoun ek twnprotËrwn dhlwmËno t‘po, allà pa–rnoun ton t‘po thc tim†c pouËqoun se kàje stigm† thc ektËleshc. Oi t‘poi e–nai idiÏthtec twntim∏n.

O Ëlegqoc t‘pwn entop–zei làjh gia sunart†seic pou apaito‘nsugkekrimËnec timËc gia th leitourg–a touc. P.q., oi car kai cdrapaito‘n ta or–smatà touc na e–nai l–stec· h (car 2) prokale–làjoc. Ep–shc, oi t‘poi mpore– na elËgqontai rhtà apÏ tonprogrammatist† qrhsimopoi∏ntac prokajorismËnec sunart†seicdokim†c.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 31: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

S‘sthma t‘pwn thc Ada

H Ada e–nai m–a isqurà elegqÏmenh gl∏ssa, afo‘ Ïla ta làjht‘pwn prokalo‘n mhn‘mata làjouc metagl∏ttishc.

SugkekrimËna làjh, Ïpwc ta làjh e‘rouc katà thn prospËlashstoiqe–wn p–naka, de mporo‘n na sulhfjo‘n prin apÏ thnektËlesh (h jËsh tou stoiqe–ou g–netai gnwst† katà thnektËlesh).

To standard thc Ada Ïti Ïla autà ta làjh ja prokalo‘nexairËseic kai an de g–netai diaqe–rish aut∏n apÏ toprÏgramma, tÏte autÏ ja termat–zetai. Sthn tupik† per–ptwsh,ta làjh apÏ Ënan tËtoio Ëlegqo t‘pwn katà thn ektËleshprokalo‘n thn prokajorismËnh exa–resh Constraint Error.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 32: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Shmasiologik† anàlush gia t‘pouc

StÏqoi:

Poioc e–nai o t‘poc miac Ëkfrashc - sunagwg† t‘pou (poia e–naih tim† pou ja mporo‘se dunhtikà na pàrei h Ëkfrash; Me bàshto e‘roc tim∏n ti t‘pou e–nai;)

'Eqoume m–a swst† ekq∏rhsh (akolouj∏ntac touc kanÏnec)t‘pwn se Ïlec tic ekfràseic tou progràmmatoc; - Ëlegqoc t‘pwn

ProoptikËc melËthc t‘pwn:

SqediastËc glwss∏n: sqed–ash susthmàtwn t‘pwn

MetaglwttistËc: progràmmata elËgqou t‘pwn

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 33: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Sqed–ash sust†matoc t‘pwn

D‘o antikrouÏmenoi stÏqoi:

DunatÏthtec euelix–ac ston programmatismÏ.

ApokleismÏc pijan†c «kak†c sumperiforàc» porgrammàtwn mekal∏c orismËnouc t‘pouc.

M–a anoikt† ereunhtik† gramm† e–nai h sqed–ash pio euËliktwnsusthmàtwn t‘pwn, pou Ïmwc ja e–nai e‘rwsta.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 34: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Eurwst–a

E–nai m–a idiÏthta tou sust†matoc t‘pwn.

Diaisjhtikà, Ëna e‘rwsto s‘sthma t‘pwn mpore– orjà naproblËyei ton t‘po miac metablht†c se qrÏno ektËleshc.

Ja mporo‘same na Ëqoume pollo‘c diaforetiko‘c «kal∏corismËnouc» kanÏnec t‘pwn, allà qreiazÏmaste touc pioakribe–c ∏ste na e–nai qr†simoi.

'Ena s‘sthma t‘pwn e–nai e‘rwsto an

Ïtan ` e : T

tÏte h e apÏtimàtai se m–a tim† tou t‘pou T

PrËpei na apotele–tai mÏno apÏ kal∏c orismËnouc kanÏnec

allà meriko– kal∏c orismËnoi kanÏnec e–nai protimhtËoi se sqËshme kàpoiouc àllouc:

`i :Object

i e–nai integer

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 35: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

AntikrouÏmena stoiqe–a statiko‘ & dunamiko‘ elËgqou

Ëna statikÏ s‘sthma t‘pwn den mpore– na gnwr–zei tic timËceisÏdou † tic sumperiforËc tou progràmmatoc katà thn ektËlesh

mpore– na aporr–ptei merikà orjà progràmmata, giat– denmpore– me akr–beia na problËyei Ïlec tic sumperiforËc

StatikÏ:

Sulambànei pollà programmatistikà làjh sth metagl∏ttish.

Den epibar‘netai o qrÏnoc ektËleshc gia Ëlegqo t‘pwn.

Upàrqoun diàforoi mhqanismo– epanàkthshc thc qamËnhceuelix–ac: upot‘poi, metatropËc (coercions), parametropo–hsht‘pou

DunamikÏ:

Ta statikà sust†mata t‘pwn e–nai perioristikà· mpore– naapaite–tai perissÏterh douleià gia aplà pràgmata.

Se Ëna dunamikÏ s‘sthma t‘pwn mporo‘me na dhmiourg†soumeprwtÏtupa pio e‘kola kai pio gr†gora.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 36: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

StatikÏc kai dunamikÏc Ëlegqoc t‘pwn

StatikÏc DunamikÏc

Isqurà elegqÏmenh Java, ML Python,

JavaScript,

Ruby, Lisp

Mh isqurà elegqÏmenh C, C++,

Objective-C

-

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 37: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

StatikÏc kai dunamikÏc Ëlegqoc t‘pwn

Programmatist†c statikà e-legqÏmenhc gl∏ssac:

Programmatist†c dunamikà e-legqÏmenhc gl∏ssac:

«Piànei ta làjh o metaglwttist†c kai

den Ëqw eg∏ to prÏblhma».

«Piànei mÏno kàpoia làjh, allà den

ton empiste‘esai gia dokimËc».

«Pio anagn∏sima progràmmata, a-

fo‘ anafËretai rhtà to ti kànoun».

«Pio euanàgnwsth gl∏ssa, afo‘

gràfw ligÏtero k∏dika».

«Toulàqisto gnwr–zw Ïti o k∏dikac

metaglwtt–zetai».

«To Ïti metaglwtt–zetai de shma–nei

Ïti ektele–tai kiÏlac».

«Empiste‘omai touc statiko‘c t‘pouc

gia na gràfei h omàda kalÏ k∏dika».

«O metaglwttist†c den apagore‘ei th

suggraf† kako‘ k∏dika».

«H aposfalmàtwsh enÏc àgnwstou

antikeimËnou e–nai ad‘nath».

«H aposfalmàtwsh pol‘ s‘njetwn i-

erarqi∏n antikeimËnwn e–nai ep–ponh».

«Làjh metaglwttist† sto grafe–o

mou - làjh ektËleshc stouc pelàtec».

«Me dokimËc br–skoume perissÏtera

probl†mata apÏ to metaglwttist†».

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 38: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Qr†sh upot‘pwn

Se gl∏ssec Ïpwc h Java mporo‘me na or–soume t‘pouc (klàseic) gia:

na ulopoi†soume Ënan t‘po, †

na or–zoume tic leitourg–ec miac oikogËneiac t‘pwn qwr–c na ticulopoi†soume (exolokl†rou).

'Ara, katà kàpoio trÏpo «qalar∏nei» to statikÏ s‘sthmat‘pwn: mpore– na gnwr–zoume Ïti kàti e–nai Y qwr–c na xËroumeakrib∏c se poion upot‘po an†kei.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 39: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

'Adhlec metatropËc (coercions)

Sth Java mporo‘me na gràyoume:

H sqËsh metax‘ twn char kai int † metax‘ twn int kai floatlËgetai metatrop† (conversion † coercion).

Me autËc tic àdhlec metatropËc apofe‘gontai oi epik–nduneckat' apa–thsh metatropËc (casting).

Mpore– na proklhje– metabol† sthn tim† † sthn anaparàstash.

Allà sun†jwc autËc oi metatropËc epitrËpontai apÏ th gl∏ssamÏno an o t‘poc ston opo–o g–netai h metatrop† periËqei Ïlectic timËc tou t‘pou pou metatrËpetai (metatrop† die‘runshc).

To ant–jeto twn metatrop∏n die‘runshc, stic opo–ec mpore– naqànetai plhrofor–a (int ! char) lËgetai metatrop†periorismo‘ kai sun†jwc apaite–tai na e–nai rht†.

Exa–resh e–nai h int!float, Ïpou qànetai plhrofor–a· an kaiàdhlh, den e–nai metatrop† austhrà die‘runshc † periorismo‘.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 40: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

Parade–gmata metatrop∏n sth C++

H pijanÏthta àdhlwn metatrop∏n periplËkei touc kanÏnec t‘pwn.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 41: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

OrismÏc sust†matoc t‘pwn

B†mata gia ton tupikÏ orismÏ enÏc sust†matoc t‘pwn:

1 Or–zoume th s‘ntaxh twn t‘pwn kai twn Ïrwn. Oi t‘poiekfràzoun statik† gn∏sh gia ta progràmmata en∏ oi Ïroi(entolËc, ekfràseic k.a.) ekfràzoun thn algorijmik† toucsumperiforà.

2 Or–zoume touc kanÏnec embËleiac (scoping rules), pouantistoiqo‘n thn kàje emfànish onÏmatoc sto shme–o thcd†lws†c tou.Oi G.P. me t‘pouc qreiàzontai kanÏnec statik†c embËleiac(static scoping), dhl. oi antistoiq–seic g–nontai prin apÏ thnektËlesh. An oi antistoiq–seic kajor–zontai apeuje–ac apÏ ths‘ntaxh, tÏte lËme Ïti Ëqoume lexik† embËleia.An den upàrqei statik† embËleia, tÏte Ëqoume dunamik†embËleia (dynamic scoping).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 42: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

OrismÏc sust†matoc t‘pwn

Paràdeigma kanÏnwn embËleiac thc C

'Ena Ïnoma Ëqei topik† embËleia, an or–zetai mËsa se Ëna block,opÏte mpore– na qrhsimopoihje– sto block autÏ kai se Ïsa perikle–eiarke– na Ëqei prohgoumËnwc dhlwje–. Katà thn Ëxodo apÏ Ëna bock

ta onÏmata pou dhl∏nontai se autÏ den e–nai plËon diajËsima.

Ta onÏmata twn paramËtrwn sunàrthshc Ëqoun embËleia Ïlo to blockme ton k∏dika thc sunàrthshc. An h sunàrthsh dhl∏netai allà denor–zetai, tÏte h embËleia perior–zetai sto prwtÏtupo thc sunàrthshc.

An Ëna block periËqei Ëna àllo block, oi metablhtËc tou e–nai oratËcsto Ënjeto block. An Ïmwc mia metablht† tou Ënjetou dhl∏netai me toÏnoma metablht†c tou perikle–ontoc block, tÏte h Ënjeth d†lwshapokr‘ptei mËroc thc embËleiac thc d†lwshc tou perikle–ontoc block.

MÏno ta onÏmata etiket∏n Ëqoun embËleia sunàrthshc. H d†lwshetikËtac uponoe–tai apÏ thn emfànish thc sto prÏgramma kai e–naiorat† sth sunàrthsh pou aut† emfan–zetai. M–a etikËta mpore– naqrhsimopoihje– se entol† goto prin apÏ thn d†lws† thc.

'Ena Ïnoma Ëqei embËleia arqe–ou an den emfan–zetai mËsa se block.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 43: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

OrismÏc sust†matoc t‘pwn

3 Or–zoume touc kanÏnec t‘pwn. Auto– perigràfoun m–a sqËshM : A, pou ekfràzei Ïti oi Ïroi M Ëqoun t‘pouc A.Oi kanÏnec t‘pwn or–zontai pànta wc proc Ëna statikÏperibàllon t‘pwn: perilambànei touc t‘pouc twn ele‘jerwnmetablht∏n twn diafÏrwn mer∏n tou progràmmatoc (dhl. ticplhrofor–ec tou p–naka sumbÏlwn). 'Etsi, h sqËsh has-type pougràfetai wc

� ` M : A

shma–nei Ïti «oi Ïroi M Ëqoun t‘pouc A sto peribàllon �».Apaite–tai kai o orismÏc miac sqËshc subtype-of.

4 Or–zoume th shmas–a thc gl∏ssac wc m–a sqËsh has-valuemetax‘ twn Ïrwn thc kai miac sullog†c apotelesmàtwn. Hshmas–a thc G.P. kai to s‘sthma t‘pwn thc e–nai allhlËndeta:oi t‘poi enÏc Ïrou kai to apotËlesmà tou prËpei † na e–nai –dioi† na sqet–zontai katàllhla (p.q. isod‘namoi t‘poi).

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn

Page 44: Sqed Glwss∏n Programmatismo‘ Sust†mata T‘pwn...2019/06/05  · pou an†koun ston t‘po pou sunàgetai apÏ ton metaglwttist†. 'Ola ta progràmmata me kal∏c orismËnouc

PerieqÏmena Oi t‘poi stic G.P. Sust†mata t‘pwn S‘sthma t‘pwn G.P.

AlgÏrijmoc elËgqou t‘pwn

O Ëlegqoc t‘pwn apodeikn‘ei thn isq‘ t‘pwn e : T .

⇤ H apÏdeixh g–netai wc proc th dom† tou paràgwgou (†afairetiko‘ suntaktiko‘) dËntrou.

⇤ H apÏdeixh Ëqei to sq†ma tou afairetiko‘ suntaktiko‘dËntrou.

⇤ Qrhsimopoie–tai Ënac kanÏnac t‘pwn gia kàje e–doc kÏmboutou dËntrou.

Ston kanÏna t‘pwn pou qrhsimopoie–tai gia Ënan kÏmbo e:

⇤ Oi upojËseic e–nai oi apode–xeic twn t‘pwn twnupoekfràsewn thc e.

⇤ To sumpËrasma e–nai h apÏdeixh tou t‘pou thc e.To peribàllon t‘pwn metad–detai apÏ kàje gonËa kÏmbo seapÏgono kai oi t‘poi upolog–zontai se Ëna anodikÏ pËrasmatou dËntrou.

Ep. Kaj. P. KatsarÏc Sqed. Glwss∏n Programmatismo‘:Sust†mata T‘pwn