programozási nyelvek közoktatás

26
Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Upload: riddick72

Post on 18-Feb-2016

229 views

Category:

Documents


0 download

DESCRIPTION

programozási nyelvek közoktatás 3. előadás

TRANSCRIPT

Page 1: programozási nyelvek közoktatás

Programozási nyelvek a

közoktatásban

alapfogalmak II. előadás

Page 2: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/52

Szintaxis, szemantika

BNF

szintaxisgráf

absztrakt értelmező

axiomatikus (elő- és utófeltétel)

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 3: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/53

Fordítás, értelmezésElőny:

szintaktikus elemzés csak egyszer

könnyű nyomkövetés, gyors javítási lehetőség

csak szintaktikailag helyes programot lehet futtatni

Hátrány:

nehéz a hibakeresés,

körülményes a javítás

lassú, sok memóriát igényel

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 4: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/54

Fordítás, értelmezésFordítás előny:

szintaktikus elemzés csak egyszer

csak szintaktikailag helyes programot lehet futtatni

Értelmezés előny:

könnyű nyomkövetés

gyors javítási lehetőség

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 5: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/55

Fordítás, értelmezésFordítás hátrány:

nehéz a hibakeresés,

körülményes a javítás

Értelmezés hátrány :

lassú, sok memóriát igényel

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 6: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/56

Fordítás, értelmezésKözbülső utak:

értelmező TOKEN-eket, belső ábrázolási formákat, lengyel

formára hozást használ,

fordító operációs rendszerszerű eljárásokat hív – mini

értelmező kell a végrehajtáshoz

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 7: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/57

Programstruktúrák programcsomag program (futtatási egység) (párhuzamos) folyamat fordítási egység (modul), kapcsolata (export-, importlista),

részei (specifikáció, reprezentáció, implementáció, kezdő-érték; vagy definíció, implementáció, kezdőérték)

programegység: funkcionálisan összefüggő, környezettől elzárt rész (eljárás, függvény, operátor), részei (deklarációs rész, törzs)

blokkstruktúra

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 8: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/58

Azonosító hossz, jelek, szóköz vagy ékezetes betű lehet-e benne? védett azonosítók azonosítók átlapolása (azonos név több objektumhoz) blokkstruktúra (globális, lokális azonosítók) hatáskör (a deklaráció érvényességi köre a programban), láthatóság, lyuk a hatáskörön , kijelölése:

statikus: program szerkezet alapján (fordításkor)

dinamikus: végrehajtás alapján

példa ennek problémáira

fordítási konstans

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 9: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/59

Típustípus=értékhalmaz+műveletek (lehet statikus és dinamikus)

típus nélküli (az azonosítóihoz nem rendelünk típust),

típusos (futási időben kell a típus hozzárendelés), erősen

típusos nyelv (fordítási időben kell a típus hozzárendelés)

típus hozzárendelés: deklarációban,

névhez kötötten,

első értékadáskor

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 10: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/510

Típus altípus: az eredetivel ekvivalens típus, annak valamilyen

része, műveleteit örökli (nem csak intervallum, nem csak

elemi típusra)

származtatott típus: az eredetivel nem ekvivalens típus, lehet

annak része, de az egész értékhalmaz is, műveleteit

örökölheti, de van nyelv, ahol csak részben

dinamikus típus (memóriaigénye, memóriacíme futás

közben változhat)

névtelen típus (struktúrája van, neve nincs)

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 11: programozási nyelvek közoktatás

Nyelvi alapfogalmak

2011/10/511

Típus típuskompatibilitás (név szerint, struktúra szerint)

típuskényszerítés (automatikus konverzió)

paraméteres típus (paraméter lehet: konstans, típus – a kód

másolása, vagy valódi paraméterezés), feltételezett

paraméterértékek, feltételezett típus-kezdőértékek

átlátszatlan típus

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

Page 12: programozási nyelvek közoktatás

Nyelvi alapfogalmak

VáltozóMemóriakezelés:

statikus (fordításkor kiderül)

félstatikus (futás közben csak növekedhet)

dinamikus

Deklaráció kiértékelés

statikus (pl. fix indexhatárok: Pascal, típusok nem paraméte-

rezhetőek változóval, kezdőérték nem származhat más vál-

tozóból)

dinamikus (pl. BASIC, C++ - int x[n]; int i=j+1)

2011/10/5Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.

12

Page 13: programozási nyelvek közoktatás

Nyelvi alapfogalmak

VáltozóMemória lefoglalás

Automatikus: a deklarációkiértékeléskor automatikusan leké-

pezzük a memóriába a változót.

Időpontja: vagy fordításkor (statikus memóriakezelés) vagy

pedig a hatáskörébe belépve (dinamikus memóriakezelés).

Memóriafelszabadítás – dinamikus memóriakezelés esetén –

a hatáskörből kilépéskor.

Kézi (Pascal: new, dispose - heap)

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.2011/10/5

13

Page 14: programozási nyelvek közoktatás

Nyelvi alapfogalmak

VáltozóLevegőben lógó hivatkozás – P megszűnik, de hivatkozunk

rá.Var Q: ^Valami;

Procedure A;

Var P: Valami;

Begin

Q:=címe(P);

End;

Begin

Q^:=...;

End;

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban. 2011/10/514

Page 15: programozási nyelvek közoktatás

Nyelvi alapfogalmak

VáltozóLevegőben lógó hivatkozás – P megszűnik, de hivatkozunk

rá a hatáskörön belül.Type Tömb=Array [1..100] of Integer;

Var P: ^Tömb;

...

New(P);

...

Dispose(P);

P^:=...

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban. 2011/10/515

Page 16: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Változó

Értékmásolás – értékmegosztás

Élettartam (a futási idő része)

statikus: program lefutásáig

dinamikus: a program futási idejének része automatikus lefoglalással: eljárás indulástól eljárás befejeződésig

(veremben)

kézi lefoglalással: new és dispose között (heap-ben)

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.2011/10/5

16

Page 17: programozási nyelvek közoktatás

Nyelvi alapfogalmak

VáltozóKezdőérték

nincs

típusfüggő (rögzített vagy típusdefiniáláskor megadható)

deklarációban

type Komplex is record Valós, Képzetes: real

end record := (0.0,0.0);

c: Komplex;

i: Komplex := (0.0,1.0);

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.2011/10/5

17

Page 18: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Paraméter megfeleltetés sorrend szerintprocedure valami(a,b);

...

valami(1,2);

név szerintprocedure valami(a,b);

...

valami(b=1,a=2);

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.18

2011/10/5

Page 19: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Paraméter feltételezett értéke (változó számú pa-

raméter)Ada példa:function Hatvány(X: real; Kitevõ: integer:=2)

return real is

...

Y:=Hatvány(5); // Y:=52

...

Z:=Hatvány(Y,3); // Z:=Y3

típus nélküli paraméter

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.19

2011/10/5

Page 20: programozási nyelvek közoktatás

Nyelvi alapfogalmak

ParaméterátadásÉrték szerint: a hívott megkapja az aktuális paraméter értékét

egy, a hívott futási idejére lefoglalt memóriatartományban.

Pascal példa:Procedure Név(I: Integer; X: Tömb);

Jellemzők:

A paraméter értéke nem változhat meg (bár a később

felszabaduló memóriaterületre írhatunk)

Az aktuális paraméter lehet: konstans, változó, kifejezés.

Paraméterátadáskor mindent lemásolunk, a tömböket is.

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.20

2011/10/5

Page 21: programozási nyelvek közoktatás

Nyelvi alapfogalmak

ParaméterátadásCím szerint: a hívott a paraméter memóriabeli címét kapja

meg.

Pascal példa:Procedure Név(var I: Integer; var X: Tömb);

Jellemzők: A paraméter értéke lekérdezhető és módosítható is.

Az aktuális paraméter csak változó lehet.

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.21

2011/10/5

Page 22: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Paraméterátadás

Név szerint: a hívott a paraméter memóriabeli címét

kiszámító függvény címét kapja meg.

Jellemzők: A paraméter értéke lekérdezhető és módosítható is.

Az aktuális paraméter csak változó lehet.

Ha az eljárás a paraméterre többször hivatkozik, akkor a

címét többször is kiszámítja (ha egyszer sem, akkor persze

egyszer sem számítja ki).

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.22

2011/10/5

Page 23: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Példa a név-, és a címszerinti paraméterátadás problémáira

Névszerinti paraméter esetén:Procedure Csere(X,Y: Valami);

Var Z: Valami;

Begin

Z:=X; X:=Y; Y:=Z;

End;

...

I:=1; A[1]:=5; Csere(I,A[I]);

Hatása X=I, Y=A[I] helyettesítéssel: I=5, A[5]=1.

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.23

2011/10/5

Page 24: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Példa a név-, és a címszerinti paraméterátadás problémáira

Címszerinti paraméter esetén:

Procedure Csere(X,Y: Valami)

Begin

X:=X+Y; Y:=X-Y; X:=X-Y;

End;

...

I:=1; A[1]:=5; Csere(A[I],A[I]);

Hatása X és Y azonos memóriacíme miatt: A[1]=0.

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.24

2011/10/5

Page 25: programozási nyelvek közoktatás

Nyelvi alapfogalmak

Más elv szerint: bemenő, kimenő, vagy be- és kimenő:

Ada példa:

Procedure Push(in out V: Verem;

in X: Elemtípus) is ...

Más elv szerint: konstans vagy változó:

Pascal példa:

Procedure Push(var V: Verem;

const X: Elemtípus);

Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban.25

2011/10/5

Page 26: programozási nyelvek közoktatás

Programozási nyelvek a

közoktatásban

alapfogalmak II. előadás

vége