Állományműveletek


  1. ADATBEVITEL- ÉS KIVITEL
  2. Az input-output az az eszközrendszer, amit a programban akkor használunk, ha a perifériákkal akarunk kommunikálni.
    Hardverfüggő, operációs rendszer-függő, a leginkompatibilisebb része a nyelveknek.
    A nyelvek egy részében nincs I/O utasítás, más nyelvekben van.
    Az I/O alapja az állomány. A nyelvek gyakran kihagyják, a kommunikációt "a" perifériával képzelik el (implicit/standard állomány). Ezt az állományt a nyelv nem kezeli explicit módon, de a rendszer igen. Nem kell deklarálnom, megnyitnom, összerendelnem fizikai állománnyal, lezárnom. Ilyenkor a program a szabvány bemenetről (alaphelyzetben a billentyűzet) olvas és a szabvány rendszerkimeneti perifériára (alaphelyzetben a monitor) ír. A kimenet és a bemenet átdefiniálható.
    Logikai állomány: A program szövegében ezzel az állománnyal dolgozom. Névvel rendelkező objektum (programozási eszköz), tehát deklarálni kell. A deklarációban a következő jellemzőket rendelem hozzá:

    Fizikai állomány: A periférián megjelenő adatállomány.

    Az állomány funkciója szerint lehet:
    Az adatátvitel a tár és a periféria között a konverziótól függően lehet:
    1. Konverzió nélküli: Bináris (rekordmódú) adatátvitel. A adatábrázolás nem változik, ugyanaz a bitkombináció jelenik meg mindkét helyen.
    2. Van konverzió: Folyamatos módú adatátvitel. Más az adatok reprezentációja a tárban és a periférián. Mindenütt előfordul, ahol az ember kommunikál a géppel.
      Az adat a periférián egy folytonos karakterlánc, a tárban pedig valamilyen reprezentáció. Hogy a tárra képezzem le a karakterláncot, feltördelni és értelmezni kell. A tárban lévő egyedi adatokból konverzióval és adatösszevonással képezhetek karakterláncot.
      1. Formátumos adatátvitel: Az író/olvasó eszközhöz kapcsolódóan minden egyes adathoz külön speciális eszköz, a formátum áll a rendelkezésemre. Olvasásnál megmondom, hogy a folytonos karakterláncból hány karaktert kell kiemelni onnantól, ahol éppen állok (hosszmegadás), és hogy az adatot milyen típussal értelmezze. Írásnál a fordítottját kell megmondani: mi az alapábrázolás és milyen hosszú karakterlánc legyen az eredmény. Ezeket minden egyes adatnál explicit módon kell megadnom. Hiba akkor történhet, ha az adat nem megfelelő.
      2. Szerkesztett adatátvitel: Az I/O eszköz mellé megadok egy maszkot. Akárhány adatot tudok vele kezelni, a hossza végzi a tördelést. Karakterenként adom meg, a karakter dönti el, hogy az adott helyen milyen adatot várjak. Hiba van, ha nem megfelelő az adat.
      3. Listázott adatátvitel: Ennél az adatátviteli módnál nincsen plusz eszköz. A tördelést a folytonos karaktersorba helyezett speciális karakterek végzik. A konverziót az író/olvasó eszköz intézi.
    A nyelvek általában ezek keverékét alkalmazzák.

    Műveletek állományokkal
    1. Logikai állomány deklarálása: Minden nyelv definiálja, hogy milyen állományrendszerrel dolgozik. Deklarálásnál egy objektum jön létre, névvel, attribútummal.
    2. Logikai és a fizikai állomány összerendelése: Az egyetlen szituáció, ahol a fizikai állomány megjelenik a program szövegében. Az összerendelés történhet nyelvi eszközzel, vagy ahol nincsenek rá nyelvi eszközök (régebbi nyelvek), a programon kívül.
    3. Megnyitás: Csak nyitott állománnyal lehet dolgozni. A megnyitás folyamán a futtatórendszer ellenőrzi, hogy az összerendelt logikai és fizikai állományok jellemzői egyeznek-e, operációs rendszer szinten rögzítődnek az információk. Az állomány funkciója eldőlhet a deklarálásnál és a megnyitásnál is, de flexibilisebben dönthető el a megnyitásnál.
    4. Írás/olvasás: Az általános olvasóeszköznek meg kell adni az olvasandó állomány nevét, a változólistát, amelynek az értékkomponensét rögzítjük az olvasás során, és sokminden mást is (formátum, maszk, egyéb információ stb., ezek a változó típusára konvertálják az adatot). Az általános íróeszköznek megadjuk az írandó állomány nevét, a kifejezéslistát, amelynek az értéke adja azt az adatot, amelyet az állományba írok, de van sok más egyéb változata is a megadásnak.
    5. Állomány lezárása: Sok rendszeradminisztrációs tevékenységgel jár, a könyvtári bejegyzések is ekkor születnek meg, ha az output vagy az input-output állományokban történik változás. Ezért az output vagy az input-output állományokat le kell, az input állományokat illik lezárni. A rendszer a program végén mindenesetre lezárja őket.


  3. KIVÉTELEK
  4. A kivétel olyan esemény, szélsőséges eset, amelyre fel kell készíteni a programot az algoritmus írásakor. A kivétel előfordulhat hiba vagy speciális, ritkán bekövetkező esemény esetén. Egy részét szemantikai hibák váltják ki.
    Operációs rendszer szinten a kivételkezelést a megszakítási rendszer végzi. Kiírja, ha hiba történt és kivágja a programot. Kivételkezeléskor az a célom, hogy az esemény kezelését átvegyem a rendszertől.
    A kivételes események megoldására többféle módszer létezik a nyelvekben:

    1. Plusz paraméterekkel jelzi a program, hogy milyen speciális esemény következett be. Ebben az esetben rengeteg paramétere van szükségünk és nem kezeli le a hibát, csak jelzi.
    2. Minden speciális esemény bekövetkeztére elágazást építek be a programba. Legtöbb esetben a rengeteg lehetséges elágazás miatt nem valósítható meg.

    A kivételkezelés az a tevékenység, amit a program végez, ha kivétel történik, a kivételkezelő pedig az a programrész, amely elindul, ha a speciális esemény bekövetkezik. Az operációs rendszertől átveszem programszintre a megszakítás-kezelést. Kevesebb azon nyelvek száma, ahol van kivételkezelő eszközrendszer, de a későbbiekbe általában beépítették.

    A kivételkezelőre vonatkozó kérdések:


  5. A PROGRAM FUTÁS KÖZBENI IMPLEMENTÁCIÓJA
  6. Az alprogramok kezelésének egyik megközelítése, a probléma implementációfüggő.
    Minden alprogram esetén futás közben híváskor felépül egy aktiváló rekord, ettől kezdve számítjuk aktívnak az alprogramot. Az alprogram futásának végén az aktiváló rekord törlődik. Egy alprogramnak akármennyi aktiváló rekordja lehet (pl. rekurzió).
    Egyszerűbb esetekben az aktiváló rekord elemei:

    1. Dinamikus kapcsolók: Olyan mutató, amely a hívó alprogram aktiváló rekordjának a kezdőcímére mutat. Célja, hogy statikus hatáskörkezelésnél a hívott alprogram szükség esetén hozzá tudjon férni a hívó alprogram információihoz. Oda mutat, ameddig az alprogram inaktívvá válásakor az aktiváló rekordot törölni kell. A hívási lánc lényegében az aktiváló rekordok lánca.
    2. Statikus kapcsolók: Mutató, amely lerendezi a statikus hatáskörkezelés problémáját: azon alprogram aktiváló rekordjára mutat, amely alprogram tartalmazza ezt az alprogramot. Így tudni lehet, hogy az alprogram a globális neveket honnan kapja.
    3. Visszatérési cím: A kódszegmens azon utasításának a címe, ahol a programot az adott alprogram befejezése után folytatni kell.
    4. Függvény esetén a visszatérési érték
    5. Az aktiváló rekord lokális változói
    6. Paraméterek

    A fordítás után a gépi kódú program a megfelelő információkkal együtt bekerül a tárba. Az aktiváló rekordok a rendszerveremben (system stack) találhatóak.
    Minden egyes alprogramnak van kódrésze, ami a kódszegmensben jelenik meg. Ez az utasításokat, a rendszerinformációkat és a konstansokat tartalmazza. A kódszegmensek általában más, de statikus tárterületen helyezkednek el. Speciális szerepe van a főprogramnak, mert nincs se tartalmazó, se hívó programegysége, se paramétere, de vannak lokális változói. Van aktiváló rekordja is, a verem legaljára kerül, a főprogram lokális változóit tartalmazza. Ha a verem üres, vége a főprogramnak.



Egy szintet vissza, vagy vissza a főmenübe.