Az azonosító tárolási osztálya Az azonosító élettartama

Slides:



Advertisements
Hasonló előadás
Étrend-kiegészítő vagy gyógyszer? Határterületi termékek elhatárolásának szempontjai Medical Tribune konferencia október 1. Dr.
Advertisements

FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
Az új közbeszerzési törvény megalkotásának körülményei, várható jövőbeli változások május 26. Dr. Kovács László Miniszterelnökség Közbeszerzési Szabályozási.
Hogyan teljesíthetjük a HpT 13§B követelményeit Egy vállalati Compliance Adatbázis terve Dr Lőrincz István Associator Kft.
Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
Nem csak szövegszerkeszt ő virtuózoknak Az Open Office.org 2.0 béta verzió Bándliné Utasi Mária Writer.
EU pályázati programok A szervezet / változások 1.A pályázók adminisztrációs terheinek csökkentése a projektfejlesztési, pályázati szakaszban.
Gazdasági jog IV. Előadás Egyes társasági formák Közkeresleti társaság, betéti társaság.
Gazdasági informatika - bevezető
Rendezésen alapuló kétmenetes algoritmusok
Fájlkezelés.
Munkalapok védelme az Excelben
EN 1993 Eurocode 3: Acélszerkezetek tervezése
Nemzeti Erőforrás Minisztérium Oktatásért Felelős Államtitkárság
Pályaválasztási tanácsadás
WE PROVIDE SOLUTIONS.
Dr. Kovács László Főtitkár
Programstruktúrák.
Becslés gyakorlat november 3.
A FELÜGYELŐBIZOTTSÁG BESZÁMOLÓJA A VSZT
Komplex természettudomány 9.évfolyam
Iratbetekintés, másolat készítés május 14-15
Scilab programozás alapjai

Adatok importálása, rendezése és szűrése
A C++ programozási nyelv
PHP - függvények.
Háttértárak karbantartása
Kockázat és megbízhatóság
A Hazug paradoxona Minden krétai hazudik. (Mondta egy krétai.)
Kockázat és megbízhatóság
Vörös-Gubicza Zsanett képzési referens MKIK
Követelményelemzés Cél: A rendszer tervezése, a feladatok leosztása.
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Kockázat és megbízhatóság
Kockázat és megbízhatóság
Hipotézisvizsgálat.
Animációk.
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
A PDCA elv alkalmazása az információvédelmi irányítási rendszerekben 1
☺ Programozási környezetek Validátorok Fazekas Judit PTI 2010.
Szerkezetek Dinamikája
középfokú felvételi eljárás
Dr. Hubai Ágnes Közbeszerzési Tanácsadók Országos Szövetsége, elnök
Tájékoztató az Önkormányzati ASP Projektről
Munkanélküliség.
Informatikai gyakorlatok 11. évfolyam
INFOÉRA Zsakó László Informatikai tanárszak problémái ELTE Informatikai Kar Juhász István-Zsakó László: Informatikai.
Környezeti Kontrolling
A KRÉTA rendszer céljai, fejlesztési irányai
Új pályainformációs eszközök - filmek
3. előadás.
TÁRGYI ESZKÖZÖK ELSZÁMOLÁSA
A Közbeszerzési Döntőbizottság tapasztalatai Dr
SZAKKÉPZÉSI ÖNÉRTÉKELÉSI MODELL I. HELYZETFELMÉRŐ SZINT FOLYAMATA 8
További rendező és kereső algoritmusok
Foglalkoztatási és Szociális Hivatal
SQL jogosultság-kezelés
Scool-Túra Kft Miskolc Széchenyi út 36.
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
Bináris fájlok kezelése
Állandó és Változó Nyomású tágulási tartályok és méretezésük
3. előadás.
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
A részekre bontás tilalma és annak gyakorlati alkalmazása
Algoritmusok.
Környezetgazdaságtan 6. előadás A környezeti szabályozás eszközei
Előadás másolata:

Az azonosító tárolási osztálya Az azonosító élettartama Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./0. Tárolási osztályok Az azonosító tárolási osztálya Az azonosító élettartama Az azonosító érvényességi tartománya Az azonosító láthatósága Összefoglaló táblázat a tárolási osztályokról A program fordítása A programtesztelés és nyomkövetés eszközei

Az azonosító tárolási osztálya Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./1. Az azonosító tárolási osztálya A tárolási osztályok a memória szegmentálhatóságával vannak összefüggés-ben. A számítógép mikroprocesszora rendelkezik négy olyan szegmensre-giszterrel, amelyek a memória tetszőleges 64 kByte-os területének az első byte-jára tudnak mutatni. Ezeket a regisztereket CS, DS, SS és ES jelekkel azonosítják. Általában a CS (code segment) regiszter mutat a lefordított programkód elejére, a DS (data segment) mutat a program globális adatait tároló terület elejére, az SS (stack segment) mutat a lokális adatokat tároló veremre és az ES (extra segment) mutathat további adatterületre. A dinamikus memóriafoglalás területe a HEAP (halom). Lokálisan deklarált adatokat tároló verem Dinamikus adatok területe Programkód Globális adatok Teli Részben üres CS DS SS

globális adatok területe - static globális adatok területe - extern Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./2. A memórián kívül még a processzor néhány másik regisztere is szolgálhat változók értékének tárolására. A megismert tárolási helyek és a négy tárolási osztály a következőképpen párosítható: globális adatok területe - static globális adatok területe - extern verem - auto regiszter - register A tárolási osztályokat változónevek előtt szerepeltethetjük, a static és az extern osztálynévvel függvényazonosítókat is elláthatunk, módosítva ezzel a programbeli helyükből eredő alapértelmezett osztálybasorolást, valamint az azonosító élettartamát. Példa az alkalmazás formájára: register int valt1; extern float hatvany( float alap, float kitevo);

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./3. A globális jellegű static és extern változók a programban egyszer jönnek létre, ha adtunk nekik kezdeti értéket, akkor azzal, egyébként 0 induló értékkel. Amíg a main() függvénnyel azonos szinten definiált azonosítók alapértelmezetten extern osztályúak, azaz másik programmodul-fájlból (ott extern-nek újradeklarálva) elérthetőek, addig a static osztálymódosítót mindig nekünk kell kiírni. A blokkon belül, lokálisan definiált változók annyiszor jönnek létre a veremben, vagy regiszterben, ahányszor a program ráfut a blokkra, és annyiszor veszik fel újra a megadott kezdőértéküket, annak híján azonban értékük definiálatlan! A változók általában auto tárolási osztállyal a veremben jönnek létre, de bizonyos feltételek esetén a regiszter tárolási osztály megadása nélkül is regiszterbe kerülhetnek. A regiszteres változó jelentősen gyorsabb programfutást eredményez, azonban a változó regiszterbe kerülésében a register osztály előírásán kívül implementáció-függő jellemzők is közrejátszanak.

Az azonosító élettartama Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./4. Az azonosító élettartama A programobjektum tárolási osztálya szoros kapcsolatban van az élettarta-mával, azaz azzal a programfutáson belüli időtartammal, ameddig az objek-tum létezik, foglalja a memóriát, vagy egy regisztert. Statikus (globális, permanens) élettartam: Minden függvényazonosító és a függvényekkel azonos (külső) szinten definiált változó statikus, azaz a teljes programfutás idején élő és memóriát foglaló objektum. Ebbe természetszerűen beletartoznak a más fájlokban extern tárolási osztállyal újradeklarált objektumok is. (A deklarálás nem jár memóriafoglalással, csak utalás egy definiált objektumra.) A static tárolási osztályba kényszerített lokális , blokkon belül definiált változók, melyek egyébként auto tárolási osztályba (verem), vagy regiszterbe kerültek volna, a globális memóriában jönnek létre és teljes programfutás alatt foglalják a memóriát (de csak a blokkban láthatóak).

Automatikus (lokális, időszakos) élettartam: Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./5. Automatikus (lokális, időszakos) élettartam: Az osztálybasorolás nélkül, vagy regiszteres osztálybasorolással blokkban definiált változók számára arra az időtartamra, amig a program el nem éri a blokk végét, a veremben, vagy a regiszterben foglalódik memória. Hasonlóan a függvényparaméterek számára a függvény meghívásakor lefoglalt memória a függvényblokk végéig él. Dinamikus élettartam A programozó által programfutás közben a dinamikus adatok területén (Heap) lefoglalt (allokált), majd felszabadított változók dinamikus, programozó által diktált élettartammal rendelkeznek.

Az azonosító érvényességi tartománya Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./6. Az azonosító érvényességi tartománya Az azonosító érvényességi tartománya az azonosító deklarálásának, ill. definiálásának helye által meghatározott és a hivatkozhatóságnak, elérhetőségnek szükséges feltétele. Blokk szintű érvényességi tartománya van azon azonosítóknak, amelyeket blokkban deklaráltunk, ill. definiáltunk és a megadástól a blokk végéig tart. Fájl (programmodul) szintű érvényességi tartománya van a fájlban a main() függvény szintjén deklarált, ill. definiált változóknak és a fájl függvényazonosítóinak. Az érvényességi tartomány a deklarálástól, ill. definiálástól a fájl végéig tart. Prototípus szintű érvényességi tartomány vonatkozik a függvényprototípusok paramétereire és a megadástól a paraméterlista végéig tart. A deklarálás mind blokk, mind fájlszintnél történhet extern osztálymeghatá-rozóval, ilyenkor az objektum más fájlban került definiálásra. Függvény nem definiálható másik függvény blokkjában, de deklarálható.

Az azonosító láthatósága Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./7. Az azonosító láthatósága Egy azonosító akkor hivatkozható, elérhető, ha látható. A láthatósághoz az azonosítónak élnie kell és a hivatkozásnak az azonosító érvényességi tartományában kell történnie. Egymásbatokozott blokkokban ugyanazon nevű változó újradefiniálható, de ilyenkor a saját automatikus (lokális) élettartama idejére elfedi, láthatatlanná, és ezzel elérhetetlenné teszi a korábban definiált változót. A következő példához még tudnunk kell, hogy ha egy blokkban definiált (lokális) változót static tárolási osztályba kényszerítünk, akkor az globális, az egész programfutás alatt memóriát foglaló lesz, de csak abban a blokkban lesz érvényes, amelyben a definiálás történt. Ha a blokkból kilép, majd újra belép a program végrehajtás közben, a változó a kilépéskori értékével jelenik meg újra. A main() függvény szintjén, globális élettartammal definiált azonosító pedig, amely alapértelmezetten extern, azaz külső fájlból is elérthető lenne, a static osztályba átsorolva nem lesz továbbra elérhető külső fájlból még abban megadott extern deklarálással sem.

#include <stdio.h> main() /* Mintaprogram a láthatóságra */ { Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./8. #include <stdio.h> main() /* Mintaprogram a láthatóságra */ { int valt; valt = 8; printf("Nagyblokkban= %d", valt ); /* 8 */ int valt; /* elfedi a korábbi valt-ot */ valt = 5; printf("\nKisblokkban= %d", valt ); /* 5 */ } printf("\nNagyblokkban= %d", valt ); /* 8 */

#include <stdio.h> void elj( int k ); /* prototipus */ Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./9. #include <stdio.h> void elj( int k ); /* prototipus */ main() /* Mintaprogram a static tárolási osztályra */ { elj(1); /* 5 */ elj(2); /* 10 */ } void elj( int k ) static int lokbolglob; /* static-nak definiáljuk */ /* k > 1 esetén a statikusan megörzött értékkel számol /* if ( k == 1 ) lokbolglob = 5; else lokbolglob = k * lokbolglob; printf( "\nlokbolglob= %d", lokbolglob );

Összefoglaló táblázat a tárolási osztályokról Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./10. Összefoglaló táblázat a tárolási osztályokról

Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./11. A program fordítása A fordítás szolgál a futtatható .exe kiterjesztésű fájl előállítására. Három fő része az előfeldolgozás, a szorosan vett fordítás és az összeszerkesztés. Az előfeldolgozás szövegmanipulációkkal kezeli a megjegyzéseket, a # kezdetű, előfeldolgozónak szóló sorokat, stb. A fordító előállítja a szövegfájlból a .obj kiterjesztésű tárgy-kódot, amelyben lévő külső objektumhivatkozásoknak megfelelő programrészek beszerkesztése az .exe programba a szerkesztő (linker) feladata. előfeldolgozás fodítás szerkesztés

A programtesztelés és nyomkövetés eszközei Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 23./12. A programtesztelés és nyomkövetés eszközei A szintaktikailag hibátlan, lefordított program még sokféle, futásidőben jelentkező hibát tartalmazhat, és a kiakadás nélkül futó program is működhet a programíró szándékaitól eltérő módon. A körülményes, vagy egyáltalán el sem végezhető programhelyesség-bizonyítás helyett megszokott dolog a programok alapos tesztelése. A program működésének futás közbeni nyomonkövetésére a Borland C fejlesztő környezete a következő eszközöket nyújtja: Trace into F7: Soronkénti futtatás a függvények blokkjába is belépve Step over F8: Soronkénti futtatás a függvények belsejének átlépésével Run to cursor F4: A program (tovább)futtatása a kurzort tartalmazó sorig Inspect Alt+F4: Változók, függvények memóriabeli elhelyezkedésének vizsgálata Evaluate/modify Ctrl+F4: Változók értékének megtekintése, módosítása Add watch Ctrl+F7: Kiválasztott változók tartalmának állandó kijeleztetése a Watch ablakban Toggle breakpoint Ctrl+F8: Töréspont (ideiglenes programmegállítás) elhelyezése a program valamelyik sorában.