Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
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 / 58
Perieqìmena
1 TÔpoi dedomènwn
2 Metatropèc tÔpwn
3 IsodunamÐa tÔpwn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 2 / 58
Perieqìmena
1 TÔpoi dedomènwn
2 Metatropèc tÔpwn
3 IsodunamÐa tÔpwn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 3 / 58
TÔpoi dedomènwn
MporoÔme na doÔme touc tÔpouc dedomènwn mÐac gl¸ssac apìdi�forec optikèc gwnÐec
dhl¸tik : o tÔpoc kajorÐzetai apì to pediì tim¸n tou
kataskeuastik : o tÔpoc kajorÐzetai apì ton trìpo kataskeu ctou apì touc prwtarqikoÔc tÔpouc thc gl¸ssac
afairetik : o tÔpoc kajorÐzetai apì èna sÔnolo pr�xewn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 4 / 58
TÔpoi dedomènwn
'Ena sÔsthma tÔpwn apoteleÐtai apì:
'Enan mhqanismì orismoÔ tÔpwn, mazÐ me èna sÔnolo prwtarqik¸ntÔpwn pou uposthrÐzontai �mesa apì th gl¸ssa
'Ena sÔnolo kanìnwn gia isodunamÐa, sumbatìthta kai exagwg tÔpwn
Oi tÔpoi qwrÐzontai se
AploÔc bajmwtoÔc: to pedÐo tim¸n perigr�fetai apo ènasÔnolo stajer¸n tim¸n
SÔnjetouc domhmènouc: to pedÐo tim¸n perigr�fetai wcsun�rthsh twn pedÐwn tim¸n �llwn tÔpwn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 5 / 58
TÔpoi dedomènwn
O kajorismìc tou tÔpou miac metablht c mporeÐ na gÐnetai:
statik�, �mesa (me d lwsh) èmmesa
dunamik� (se qrìno ektèleshc)
Sth sunèqeia perigr�foume touc kuriìterouc tÔpouc dedomènwn kaj¸ckai èna sÔnolo basik¸n leitourgi¸n pou sun jwc uposthrÐzoun.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 6 / 58
TÔpoi dedomènwn
Akèraioi
PedÐo tim¸n: èna uposÔnolo tou sunìlou twn fusik¸n arijm¸n.Sun jwc perilamb�nei ìlec tic timèc metaxÔ −2k−1 kai 2k−1 − 1, ìpouk k�poio pollapl�sio tou m kouc lèxhc.
Prokajorismènec leitourgÐec: toul�qiston oi arijmhtikèc pr�xeic
prìsjesh
afaÐresh
pollaplasiasmìc
akèraia diaÐresh (apokìptei to dekadikì mèroc)
upìloipo diaÐreshc
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 7 / 58
TÔpoi dedomènwn
Pollèc gl¸ssec uposthrÐzoun perissìterouc apì ènan tÔpoucakeraÐwn, me diaforetik� pedÐa tim¸n.
H Java, h Haskell kai h Python uposthrÐzoun metaxÔ �llwn tÔpoakèraiou osod pote meg�lou m kouc.
H Pascal diajètei ènan mìno akèraio tÔpo, ton integer.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 8 / 58
TÔpoi dedomènwn
PragmatikoÐ
PedÐo tim¸n: èna uposÔnolo tou sunìlou twn rht¸n arijm¸n, poujewreÐtai ìti proseggÐzoun pragmatikoÔc.
Prokajorismènec leitourgÐec: oi tèssereic basikèc arijmhtikèc pr�xeic
prìsjesh
afaÐresh
pollaplasiasmìc
diaÐresh
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 9 / 58
TÔpoi dedomènwn
Pollèc gl¸ssec uposthrÐzoun perissìterouc apì ènan tÔpoucpragmatik¸n, pou diafèroun sthn akrÐbeia.
EpÐshc oi gl¸ssec sun jwc uposthrÐzoun dÔo morfèc graf cpragmatik¸n stajer¸n: stajer c upodiastol c kinht cupodiastol c.
H Pascal diajètei ènan mìno paragmatikì tÔpo, ton real.
H Fortran kai h Python uposthrÐzoun kai migadikoÔc arijmoÔc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 10 / 58
TÔpoi dedomènwn
Sun jwc oi arijmhtikoÐ tÔpoi basÐzontai sthn arijmhtik thc mhqan c.
pleonèkthma: oi pr�xeic ulopoioÔntai se epÐpedo mhqan c, kèrdocse taqÔthta.
meionèkthma: ex�rthsh apì th mhqan .
Sth Java oi arijmhtikoÐ tÔpoi (p.q. to pedÐo tim¸n) eÐnai anex�rthtoiapì th mhqan .
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 11 / 58
TÔpoi dedomènwn
Boolean
PedÐo tim¸n: {true, false }
Prokajorismènec leitourgÐec: oi logikèc pr�xeic
sÔzeuxh (kai)
di�zeuxh ( )
�rnhsh (ìqi)
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 12 / 58
TÔpoi dedomènwn
H Pascal èqei tÔpo boolean, kaj¸c kai touc logikoÔc telestèc and, or,not.
H C, h APL kai h PL/1 exomoi¸noun ton tÔpo boolean qrhsimopoi¸ntacakeraÐouc.
Se orismènec gl¸ssec ta true, false eÐnai desmeumènec lèxeic (Algol 60)en¸ se �llec prokajorismènec lèxeic (Pascal).
Oi alhjotimèc sthn Pascal eÐnai diatetagmènec (false < true).
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 13 / 58
TÔpoi dedomènwn
Qarakt rec
PedÐo tim¸n: oi qarakt rec tou alfab tou tou upologist
Prokajorismènec leitourgÐec: sÔgkrish (oi qarakt rec jewroÔntaidiatetagmènoi), prohgoÔmenoc, epìmenoc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 14 / 58
TÔpoi dedomènwn
H Pascal èqei ton tÔpo char
H C epitrèpei arijmhtikèc pr�xeic an�mesa se qarakt rec, qarakt rec kai arijmoÔc.
H Pascal diajètei sunart seic metatrop c enìc qarakt ra stonantÐstoiqo akèraio kai antÐstrofa.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 15 / 58
TÔpoi dedomènwn
Sumboloseirèc
PedÐo tim¸n: oi akoloujÐec qarakt rwn apì èna uposÔnolo toualfab tou tou upologist .
Prokajorismènec leitourgÐec: lexikografik sÔgkrish kai par�jesh.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 16 / 58
TÔpoi dedomènwn
Se pollèc gl¸ssec den eÐnai prwtarqikìc tÔpoc all� orÐzetai wcpÐnakac qarakt rwn (Pascal, C, C++).
Sth Snobol, pou eÐnai gl¸ssa qeirismoÔ sumboloakolouji¸n, eÐnaiprwtarqikìc tÔpoc kai up�rqoun pollèc �llec prokajorismènecleitourgÐec.
Sth Java up�rqei h klash String pou den eÐnai isodÔnamh me pÐnakaqarakt rwn.
MÐa metablht tÔpou string mporeÐ na èqei prokajorismèno m koc ìqi.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 17 / 58
TÔpoi dedomènwn
AparijmhtoÐ tÔpoi
PedÐo tim¸n: èna peperasmèno sÔnolo apì sumbolik� onìmata, poukajorÐzontai apì to qr sth kat� ton orismì tou tÔpou.
Prokajorismènec leitourgÐec: sÔgkrish gia isìthta. An jewrhjeÐ ìti oitimèc eÐnai diatetagmènec, tìte orÐzontai <, >, epìmenoc,prohgoÔmenoc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 18 / 58
TÔpoi dedomènwn
H qr sh aparijmht¸n tÔpwn, antÐ gia kwdikopoÐhsh me akeraÐouc:
aux�nei thn anagnwsimìthta tou progr�mmatoc
aux�nei thn axiopistÐa tou progr�mmatoc
Erwt mata:
epitrèpetai h qr sh tou Ðdiou anagnwristikoÔ se perissìteroucapì ènan aparijmhtoÔc tÔpouc? (Sthn Pascal ìqi)
up�rqei di�taxh stic timèc? (sthn Pascal nai)
UlopoÐhsh: antistoiqoÔn se diadoqikèc akèraiec timèc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 19 / 58
TÔpoi dedomènwn
Par�deigma orismoÔ aparijmht¸n tÔpwn sthn Pascal:
typeday = (sun, mon, tue, wed, thu, fri, sat);color = (white, red, green, blue);
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 20 / 58
TÔpoi dedomènwn
TÔpoi upodiast matoc
PedÐo tim¸n: èna di�sthma suneqìmenwn tim¸n apì ènan tÔpo mediatetagmèno pedÐo tim¸n.
Prokajorismènec leitourgÐec: oi leitourgÐec pou eÐnai diajèsimec giaton eurÔtero tÔpo.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 21 / 58
TÔpoi dedomènwn
H qr sh upodiasthm�twn, ìpwc kai h qr sh aparijmht¸n tÔpwn:
aux�nei thn anagnwsimìthta tou progr�mmatoc
aux�nei thn axiopistÐa tou progr�mmatoc
Sun jwc eÐnai sumbatìc me ton eurÔtero tÔpo tou opoÐou apoteleÐupodi�sthma.
UlopoÐhsh: ìpwc kai o eurÔteroc tÔpoc, me prosj kh k¸dika kat� thmet�frash gia èlegqo tÔpou.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 22 / 58
TÔpoi dedomènwn
Par�deigma orismoÔ tÔpwn diast matoc sthn Pascal:
typesmallint = -31 .. 31;workingday = mon .. fri;uppercase = ’A’ .. ’Z’;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 23 / 58
TÔpoi dedomènwn
PÐnakec
PÐnakac onom�zetai mÐa sullog dedomènwn pou ìla èqoun ton ÐdiotÔpo kai kajèna prosdiorÐzetai apì th jèsh tou. H jèsh enìcstoiqeÐou kajorÐzetai apì ènan perissìterouc deÐktec. To pl joctwn deikt¸n kajorÐzei th di�stash tou pÐnaka.
PedÐo tim¸n: D∗, ìpou D to pedÐo tim¸n enìc tÔpou.
Prokajorismènec leitourgÐec: prospèlash enìc stoiqeÐou tou pÐnakapou brÐsketai se sugkekrimènh jèsh.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 24 / 58
TÔpoi dedomènwn
Arijmìc diast�sewn:
stic di�forec ekdìseic thc Fortran eÐnai periorismènoc (3 sthFortran I kai 7 sth Fortran 77).
Oi gl¸ssec C, C++ kai Java uposthrÐzoun �mesa mìnomonodi�statouc pÐnakec, en¸ oi poludi�statoi pÐnakeculopoioÔntai èmmesa wc pÐnakec pou ta stoiqeÐa touc epÐshcpÐnakec.
H Pascal uposthrÐzei pÐnakec opoiasd pote di�stashc
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 25 / 58
TÔpoi dedomènwn
TÔpoc deikt¸n:
mporeÐ na eÐnai opoiosd pote akèraioc tÔpoc
den mporeÐ na eÐnai pragmatikìc arijmìc
sthn Pascal mporeÐ na eÐnai qarakt rac, boolean aparijmhtìctÔpoc
Prospèlash stoiqeÐou: me to ìnoma tou pÐnaka akoloujoÔmeno apìmÐa seir� deikt¸n mesa se () []:
Fortran: A(2,3)
C: A[2][3]
Pascal: A[2,3]
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 26 / 58
TÔpoi dedomènwn
ArqikopoÐhsh:
orismènec gl¸ssec epitrèpoun arqikopoÐhsh twn pin�kwn (C,C++, Fortran, Ada)
�llec gl¸ssec den epitrèpoun arqikopoÐhsh (Pascal, Modula-2)
To mègejoc enìc pÐnaka mporeÐ na kajorÐzetai:
statik� (Fortran, Pascal, C)
dunamik� (se qrìno ektèleshc) (Algol, Java)
Orismènec gl¸ssec dÐnoun th dunatìthta perigraf c upopin�kwn(tmhm�twn tou pÐnaka).
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 27 / 58
TÔpoi dedomènwn
UlopoÐhsh:
ta stoiqeÐa enìc pÐnaka apojhkeÔontai se suneqìmenec jèseicmn mhc
oi poludi�statoi pÐnakec apojhkeÔontai eÐte kat� grammèc(aux�nontac taqÔtera ton dexiìtero deÐkth) kat� st lec(aux�nontac taqÔtera ton aristerìtero deÐkth)
h jèsh enìc stoiqeÐou sth mn mh, me b�sh thn akoloujÐa deikt¸npou to prosdiorÐzei, upologÐzetai me b�sh mÐa apl arijmhtik par�stash.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 28 / 58
TÔpoi dedomènwn
Par�deigma orismoÔ tÔpwn pÐnaka sthn Pascal:
typevector = array[1..1000] of real;string = array[1..MaxStringSize] of char;matrix = array[1..9,’a’..’f’,day] of integer;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 29 / 58
TÔpoi dedomènwn
Eggrafèc (domèc)
Eggraf onom�zetai mÐa sullog dedomènwn pou endeqìmena an kounse diaforetikoÔc tÔpouc kai kajèna prosdiorÐzetai apì to ìnom� tou.
PedÐo tim¸n: D1 × D2 × · · · × Dn, ìpou Di to pedÐo tim¸n enìc tÔpou.
Prokajorismènec leitourgÐec: prospèlash enìc pedÐou thc eggraf c,sÔgkrish gia isìthta, antigraf .
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 30 / 58
TÔpoi dedomènwn
ArqikopoÐhsh:
h perissìterec gl¸ssec den epitrèpoun arqikopoÐhsh twn dom¸n(Pascal, C)
orismènec gl¸ssec epitrèpoun arqikopoÐhsh twn dom¸n (Ada)
Prospèlash pedÐou:
Pascal,C,Ada: x.age
Algol: age(x)
Cobol: age of x
ML: #age x
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 31 / 58
TÔpoi dedomènwn
UlopoÐhsh: ta pedÐa miac eggraf c apojhkeÔontai se suneqìmenecjèseic mn mhc.
Par�deigma orismoÔ tÔpou eggraf c sthn Pascal:
typepoint = record
x,y:real;c:color;
end;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 32 / 58
TÔpoi dedomènwn
En¸seic
'Enwsh eÐnai o tÔpoc dedomènwn pou epitrèpei se mÐa metablht napaÐrnei timèc apì diaforetikoÔc tÔpouc se diaforetikèc qronikècstigmèc. Sun jwc qrhsimopoieÐtai èna diaforetikì ìnoma gia thn tim k�je tÔpou.
PedÐo tim¸n: D1 ∪ D2 ∪ · · · ∪ Dn, ìpou Di to pedÐo tim¸n enìc tÔpou.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 33 / 58
TÔpoi dedomènwn
Se pollèc peript¸seic parèqontai se sunduasmì me tic eggrafèc(variant records thc Pascal).
DhmiourgoÔn prìblhma me ton èlegqo tÔpou: endèqetai na diab�soumemÐa metablht jewr¸ntac diaforetikì tÔpo apì ton apojhkeumèno.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 34 / 58
TÔpoi dedomènwn
SÔnola
PedÐo tim¸n: 2D , ìpou D to pedÐo tim¸n enìc tÔpou.
Prokajorismènec leitourgÐec: ènwsh, tom , diafor�, sÔgkrish (giaisìthta, uposÔnolo)
UlopoÐhsh: an to D eÐnai mikroÔ megèjouc, tìte to sÔnoloparist�netai me akoloujÐa apì bits.
Par�deigma orismoÔ tÔpou sunìlou sthn Pascal:type schedule = set of days;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 35 / 58
TÔpoi dedomènwn
DeÐktec
PedÐo tim¸n: oi dieujÔnseic mn mhc tou upologist ∪ {nil}
Prokajorismènec leitourgÐec: sÔgkrish gia isìthta, prospèlash thctim c sth jèsh pou deÐqnei, dèsmeush-apodèsmeush mn mhc.
Qreiazìmaste ènan trìpo gia na kajorÐzetai to an anaferìmaste sthtim thc metablht c tÔpou deÐkth (pou eÐnai h jèsh mn mhc pou deÐqneio deÐkthc nil) sthn tim pou eÐnai apojhkeumènh sth jèsh poudeÐqnei o deÐkthc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 36 / 58
TÔpoi dedomènwn
Sth Pascal kai th C me to ìnoma thc metablht c tÔpou deÐkthanaferìmaste ston Ðdio ton deÐkth. Gia par�deigma h entol thcPascal p:=q kai h entol p=q thc C èqoun wc apotèlesma odeÐkthc p na deÐqnei ekeÐ pou deÐqnei kai o q.
Gia na anaferjoÔme sthn tim pou eÐnai apojhkeumènh sth jèshpou deÐqnei o deÐkthc qrhsimopoioÔme ton telest ↑ sthn Pascal kaiton telest * sth C. Gia par�deigma h entol thc Pascal p↑:=q↑kai h entol *p=*q thc C èqoun wc apotèlesma h jèsh mn mhc poudeÐqnei o p na apokt sei to Ðdio perieqìmeno me th jèsh mn mhcpou deÐqnei o q. H jèsh mn mhc pou deÐqnei o p den all�zei.
Endèqetai perissìteroi apì ènac deÐktec na deÐqnoun sthn Ðdia jèshmn mhc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 37 / 58
TÔpoi dedomènwn
SkoupÐdia onom�zontai oi jèseic mn mhc pou èqoun paraqwrhjeÐdunamik� sto prìgramma kai proc tic opoÐec den up�rqei prìsbashmèsw deikt¸n apì to prìgramma.
Par�deigma dhmiourgÐac skoupidi¸n:
new(p);p:=q
H pr¸th entol paraqwreÐ sto prìgramma q¸ro mn mhc ston opoÐodeÐqnei o p. H deÔterh entol all�zei thn tim tou p, q�nontac thnprìsbash proc ton paraqwrhjènta q¸ro mn mhc.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 38 / 58
TÔpoi dedomènwn
H dhmiourgÐa skoupidi¸n mei¸nei th diajèsimh mn mh kat� thnektèlesh tou progr�mmatoc.
Sullog skoupidi¸n onom�zetai h diadikasÐa eÔreshc kaiapodèsmeushc twn jèsewn mn mhc pou apoteloÔn skoupÐdia. Hsullog skoupidi¸n gÐnetai autìmata apì th gl¸ssa.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 39 / 58
TÔpoi dedomènwn
Xekrèmastoi deÐktec onom�zontai deÐktec oi opoÐec deÐqnoun se mhègkurec jèseic mn mhc, gia par�deigma se jèseic pou èqoun epistrafeÐapì to prìgramma sto sÔsthma.
Par�deigma dhmiourgÐac xekrèmastou deÐkth:
p:=qdispose(q);
H pr¸th entol èqei wc apotèlesma o p na deÐqnei sth jèsh mn mhcpou deÐqnei kai o q. H deÔterh entol epistrèfei th jèsh mn mhc ìpoudeÐqnei o q sto sÔsthma.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 40 / 58
TÔpoi dedomènwn
H Ôparxh xekrèmastwn deikt¸n eÐnai katastrofik gia thn ektèleshtou progr�mmatoc.
H Java den perièqei tÔpo deÐkth, ìmwc h prìsbash proc ta antikeÐmenagÐnetai me ta handles pou èqoun an�logec idiìthtec me touc deÐktec.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 41 / 58
TÔpoi dedomènwn
Par�deigma orismoÔ tÔpou deÐkth sthn Pascal:
typeintptr = ↑integer;list = ↑node;node = record
value: integer;next:list
end
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 42 / 58
TÔpoi dedomènwn
Sunart seic
Stic sunarthsiakèc gl¸ssec oi sunart seic apoteloÔn tÔpodedomènwn, kaj¸c mporoÔn na perastoÔn wc par�metroi naepistrafoÔn apì �llec sunart seic (oi opoÐec onom�zontaisunart seic uyhlìterhc t�xhc).
Orismènec gl¸ssec metaxÔ twn opoÐwn kai h Pascal epitrèpoun staupoprogr�mmat� touc na dèqontai wc pramètrouc �llaupoprogr�mmata.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 43 / 58
TÔpoi dedomènwn
Par�deigma upoprogr�mmatoc wc paramètrou sthn Pascal:
typefunction integral(function f(x:real):real; a,b:real);
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 44 / 58
Perieqìmena
1 TÔpoi dedomènwn
2 Metatropèc tÔpwn
3 IsodunamÐa tÔpwn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 45 / 58
Metatropèc tÔpwn
Se pollèc peript¸seic eÐnai qr simo na metatrèpoume timèc enìc tÔpouse antÐstoiqec timèc �llou tÔpou, p.q. metatrop akeraÐou sepragmatikì.
H metatrop tupou mporeÐ na gÐnetai:
me rhtì trìpo (casting), p.q.c = (char) n;
autìmata an eÐnai anagkaÐo, p.q. sth Java:s = ”n=” + n;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 46 / 58
Metatropèc tÔpwn
onom�zoume dieÔrunsh th metatrop mÐac tim c apì ènan tÔpo mestenìtero pedÐo tim¸n se ènan tÔpo me eurÔtero pedÐo tim¸n, p.qakeraÐou se pragmatikì, pragmatikoÔ apl c akrÐbeiac se dipl cakrÐbeiac k.l.p. Se mÐa tètoia metatrop den èqoume ap¸leiaplhroforÐac (h tim ston arqikoÔ tÔpou kajorÐzetai monos mantaapì thn tim ston telikoÔ tÔpou).
onom�zoume periorismì th metatrop mÐac tim c apì ènan tÔpo meeurÔtero pedÐo tim¸n se ènan tÔpo me stenìtero pedÐo tim¸n, p.qpragmatikoÔ se akèraio, pragmatikoÔ dipl c akrÐbeiac se apl cakrÐbeiac k.l.p. Se mÐa tètoia metatrop endèqetai na èqoumeap¸leia plhroforÐac, kaj¸c h tim ston telikì tÔpo apoteleÐprosèggish thc tim c ston arqikì tÔpo.
den eÐnai p�nta dunat h metatrop an�mesa se dÔo tÔpouc
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 47 / 58
Metatropèc tÔpwn
'Elegqoc tÔpou onom�zetai h diadikasÐa epibebaÐwshc ìti o tÔpoc twnorÐsmatwn enìc telest ( twn pragmatik¸n paramètrwn kat� thnkl sh miac sun�rthshc) eÐnai sumbatìc me ton telest ( tic tupikècparamètrouc thc sun�rthshc)
'Enac tÔpoc eÐnai sumbatìc me ènan telest an eÐnai ènac apì touctÔpouc gia touc opoÐouc eÐnai orismènoc o telest c, eÐte an mporeÐ nametatrapeÐ se ènan tètoio tÔpo.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 48 / 58
Metatropèc tÔpwn
an o kajorismìc tÔpou eÐnai statikìc tìte kai oi perissìteroièlegqoi tÔpou mporoÔn na gÐnoun statik�.
an an o kajorismìc tÔpou eÐnai dunamikìc (gÐnetai se qrìnoektèleshc) tìte kai oi èlegqoi tÔpou prèpei na gÐnoun dunamik�.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 49 / 58
Metatropèc tÔpwn
Uperfìrtwsh enìc telest ( onìmatoc sun�rthshc) onom�zoume thnan�jesh se autìn diaforetik¸n leitourgi¸n gia diaforetikoÔc tÔpoucorism�twn. ParadeÐgmata:
oi arijmhtikoÐ telestèc dèqontai orÐsmata opoioud potearijmhtikoÔ tÔpou.
o telest c * sth C qrhsimopoieÐtai gia pollaplasiasmì, all�kai wc enadikìc telest c me ìrisma tÔpou deÐkth.
sth Fortran to = eÐnai telest c an�jeshc all� kai sÔgkrishc
sth Java to + qrhsimopoieÐtai kai gia par�jesh alfarijmhtik¸n.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 50 / 58
Metatropèc tÔpwn
Se pollèc peript¸seic arijmhtikèc parast�seic perièqoun stajerèc metablhtèc diaforetik¸n arijmhtik¸n tÔpwn.
Se aut thn perÐptwsh gÐnetai autìmath metatrop (dieÔrunsh periorismìc) ¸ste kaÐ ta dÔo orÐsmata k�je telest na èqoun ton ÐdiotÔpo.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 51 / 58
Metatropèc tÔpwn
Up�rqoun dÔo proseggÐseic:
prÐn efarmosteÐ ènac arijmhtikìc telest c, gÐnetai dieÔrunsh touorÐsmatoc pou an kei se stenìtero tÔpo, ston tÔpo tou �llouorÐsmatoc. An h par�stash prèpei na d¸sei tim sugkekrimènoutÔpou, tìte met� thn apotÐmhs thc gÐnetai h aparaÐththmetatrop .
P.q h d lwshfloat r = 5 / 2 + 2.0;arqikopoieÐ thn r me thn tim 4.0 (h pr¸th diaÐresh eÐnai akèraiakai prokaleÐ apokop )
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 52 / 58
Metatropèc tÔpwn
ìlec h timèc pou emplèkontai sthn par�stash metatrèpontai stontÔpo pou prèpei na èqei h tim thc par�stashc, prin efarmosteÐopoiosd pote telest c
P.q h d lwshfloat r = 5 / 2 + 2.0;arqikopoieÐ thn r me thn tim 4.5 (oi timèc 5 kai 2 metatrèpontaise 5.0 kai 2.0 prin gÐnei opoiad pote pr�xh, opìte h pr¸thdiaÐresh eÐnai pragmatik )
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 53 / 58
Perieqìmena
1 TÔpoi dedomènwn
2 Metatropèc tÔpwn
3 IsodunamÐa tÔpwn
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 54 / 58
IsodunamÐa tÔpwn
Er¸thma: pìte dÔo metablhtèc èqoun isodÔnamouc tÔpouc?
dÔo metablhtèc èqoun tÔpouc isodÔnamouc wc proc to ìnoma anèqoun dhlwjeÐ eÐte sthn Ðdia d lwsh eÐte se diaforetikèc dhl¸seicpou qrhsimopoioÔn to Ðdio ìnoma tÔpou.
dÔo metablhtèc èqoun tÔpouc isodÔnamouc wc proc th dom an oitÔpoi touc èqoun akrib¸c thn Ðdia dom .
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 55 / 58
IsodunamÐa tÔpwn
Par�deigma: 'Estw oi parak�tw dhl¸seic:
typevector = array[1..100] of integer;list = vector;
varx,y:array[1..100] of integer;z:array[1..100] of integer;w:vector;r:vector;L:list;
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 56 / 58
IsodunamÐa tÔpwn
ìlec oi metablhtèc sthn parap�nw d lwsh èqoun isodÔnamouctÔpouc wc proc th dom .
up�rqoun dÔo zeÔgh metablht¸n me isodÔnamouc tÔpouc wc procìnoma:
x,y που δηλώνονται στη ίδια δήλωσηw,r που δηλώνονται με το ίδιο αναγνωριστικό τύπου
h metablht L eÐnai isodÔnamh me tic w,r, sÔmfwna me mÐa pioasjen isodunamÐa wc proc ìnoma, h opoÐa jewreÐ ton tÔpo list wcyeud¸numo tou vector kai ìqi wc diaforetikì tÔpo
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 57 / 58
IsodunamÐa tÔpwn
Sun jwc oi gl¸ssec programmatismoÔ qrhsimopoioÔn mÐa endi�meshmorf isodunamÐac tÔpwn.
Qr stoc Nomikìc ( Tm ma Mhqanik¸n H/U kai Plhroforik c Panepist mio IwannÐnwn )Arqèc Glwss¸n Programmatismou 2015 58 / 58