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

Hasonló dokumentumok
Algoritmizálás és adatmodellezés tanítása 1. előadás

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozási nyelvek Java

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

Eljárások és függvények

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Programozási nyelvek (ADA)

Programozás alapjai. 7. előadás

OOP #14 (referencia-elv)

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Alprogramok, paraméterátadás

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Java II. I A Java programozási nyelv alapelemei

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Bevezetés a C++ programozási nyelvbe

Algoritmizálás, adatmodellezés tanítása 6. előadás

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Java II. I A Java programozási nyelv alapelemei

Algoritmizálás és adatmodellezés tanítása 4. előadás

Programozás alapjai. 5. előadás

Bevezetés a programozásba Előadás: A const

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Programozás alapjai. 10. előadás

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Adatszerkezetek I. 1. előadás

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás alapjai. 2. előadás

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Programozási nyelvek Java

4. Programozási nyelvek osztályozása. Amatőr és professzionális

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Alkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés

Alkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto

Adatszerkezetek és algoritmusok

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Programozás II. 4. Dr. Iványi Péter

Programozas 1. Strukturak, mutatok

8. előadás Dinamikus memóriakezelés. Mutatók. Láncolt adatszerkezetek.

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Objektumelvű programozás

S0-02 Típusmodellek (Programozás elmélet)

Algoritmizálás, adatmodellezés 1. előadás

Eljárások, függvények

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Bevezetés a programozásba. 9. Előadás: Rekordok

Pénzügyi algoritmusok

A C programozási nyelv III. Pointerek és tömbök.

Programozási nyelvek (ADA)

Objektumorientált szoftverfejlesztés alapjai

8. gyakorlat Pointerek, dinamikus memóriakezelés

A C programozási nyelv III. Pointerek és tömbök.

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Algoritmizálás + kódolás C++ nyelven és Pascalban

Occam 1. Készítette: Szabó Éva

2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási nyelvek 6. előadás

Fordító Optimalizálás

A C programozási nyelv IV. Deklaráció és definíció

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Objektumok inicializálása

Programfejlesztési Modellek

FUNKCIONÁLIS PROGRAMOZÁS

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Kifejezések. Kozsik Tamás. December 11, 2016

Bevezetés az informatikába

Programozási tételek általánosítása 2. Szlávi Péter 2015

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

3 A C programozási nyelv szintaktikai egységei

5. Gyakorlat. struct diak {

Algoritmizálás, adatmodellezés 1. előadás

Java programozási nyelv 5. rész Osztályok III.

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Programozás II. 2. Dr. Iványi Péter

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mutatók és mutató-aritmetika C-ben március 19.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek Java

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Már megismert fogalmak áttekintése

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Informatika terméktervezőknek

Java programozási nyelv

Bevezetés a programozásba I.

Átírás:

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

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. 2011/10/5 2

Fordítás, értelmezés Elő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. 2011/10/5 3

Fordítás, értelmezés Fordí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. 2011/10/5 4

Fordítás, értelmezés Fordí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 Nyelvi alapfogalmak Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban. 2011/10/5 5

Fordítás, értelmezés Kö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. 2011/10/5 6

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. 2011/10/5 7

Azonosító Nyelvi alapfogalmak 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. 2011/10/5 8

Típus tí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. 2011/10/5 9

Típus Nyelvi alapfogalmak 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. 2011/10/5 10

Típus Nyelvi alapfogalmak 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. 2011/10/5 11

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éterezhetőek változóval, kezdőérték nem származhat más változóból) dinamikus (pl. BASIC, C++ - int x[n]; int i=j+1) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban. 2011/10/5 12

Változó Memória lefoglalás Nyelvi alapfogalmak 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

Változó Nyelvi alapfogalmak 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/5 14

Változó Nyelvi alapfogalmak 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/5 15

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

Változó Kezdőérték nincs Nyelvi alapfogalmak 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

Paraméter megfeleltetés sorrend szerint procedure valami(a,b);... valami(1,2); név szerint procedure 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. 2011/10/5 18

Paraméter feltételezett értéke (változó számú paraméter) Ada példa: function Hatvány(X: real; Kitevõ: integer:=2) return real is... Y:=Hatvány(5); // Y:=5 2... Z:=Hatvány(Y,3); // Z:=Y 3 típus nélküli paraméter Pap Gáborné. Szlávi Péter, Zsakó László: Programozási nyelvek a közoktatásban. 2011/10/5 19

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. 2011/10/5 20

Paraméterátadás Cí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. 2011/10/5 21

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. 2011/10/5 22

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. 2011/10/5 23

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. 2011/10/5 24

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. 2011/10/5 25

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