Adatszerkezetek és algoritmusok


A gyakorlatokon használt Pszeudonyelv leírása

  1. Nincs deklaráció, nincs futtatható kód. A kezelt adattípusok: numerikus (szám), karakter, logikai, mutató (tárcím, memóriacím). Speciális mutatóérték a NIL. Összetett adattípusok: egydimenziós tömb (statikus vektor), dinamikus vektor, rekord. Egy adatelem vagy atomi, vagy rekord. Absztrakt adatszerkezetekből felépülő absztrakt adatszerkezetekkel nem foglalkozunk.
  2. Az algoritmus leírásánál a sorokat sorszámozzuk.
  3. Az algoritmus elemi lépései (tevékenységei, utasításai) megfogalmazhatók szövegesen vagy formálisan. Minden elemi lépés új sorba kerül.
  4. A vektor indexelése (ha mást nem mondunk) 1-ről indul. Vektorelemre A[index], részvektorra A[kezdő_index .. vég_index] módon hivatkozunk.
  5. A feltétel egy rövidzár kiértékelésű logikai kifejezés.
  6. Az értékadás alakja: változóérték. Többszörös értékadás létezik: v1v2v3érték.
  7. Vezérlési szerkezetek a következők:

    VÁLASZTÁS (szelekció):

    if feltétel then

    tevékenységek
    [ else if feltétel then

    tevékenységek ] . . .
    [ else

    tevékenységek ]
    end if

    Szemantikája: A felírás sorrendjében megkeressük az első igaz értékű feltételt. Ha van ilyen, lefutnak a hozzá tartozó then után megadott tevékenységek, majd az end if után folytatódik az algoritmus végrehajtása. Ha minden feltétel hamis és van else ág, akkor az else utáni tevékenységek futnak le, majd az algoritmus az end if után folytatódik. Ha minden feltétel hamis és nincs else ág, akkor az algoritmus az end if után folytatódik.


    CIKLUSOK (iterációk):

    for ciklusváltozókezdőérték to végérték do

    tevékenységek
    end for

    Elöltesztelő előírt lépésszámú ciklus. Szemantikája: Ha a kezdőérték nagyobb, mint a végérték, akkor az algoritmus az end for után folytatódik. Különben a ciklusváltozó felveszi értékül a kezdőérték-et, majd lefutnak a tevékenységek. Ezután a ciklusváltozó értéke megnövelődik eggyel, és ha az így kapott érték nem nagyobb, mint a végérték, akkor újra lefutnak a tevékenységek. Ha a ciklusváltozó értéke nagyobb lett, mint a végérték, akkor az algoritmus az end for után folytatódik. A ciklus lefutása után a ciklusváltozó értéke határozatlan.

    while feltétel do

    tevékenységek
    end while

    Előfeltételes ciklus. Szemantikája: Kiértékelődik a feltétel. Ha igaz, lefutnak a megadott tevékenységek, majd újra kiértékelődik a feltétel. Ha a feltétel hamis, akkor az algoritmus az end while után folytatódik.

    repeat

    tevékenységek
    until feltétel

    Végfeltételes ciklus. Szemantikája: Lefutnak a megadott tevékenységek, majd kiértékelődik a feltétel. Ha hamis, akkor újra lefutnak a tevékenységek, majd újra kiértékelődik a feltétel. Ha a feltétel igaz, az algoritmus az until feltétel után folytatódik.
  8. Az egy vezérlési szerkezetben lévő, összetartozó tevékenységek bekezdési mélysége azonos.
  9. Van függvény és eljárás. A függvény alakja:

    function FÜGGVÉNYNÉV [(fpl)]

    törzs
    end function

    Az eljárás alakja:

    procedure ELJÁRÁSNÉV [(fpl)]

    törzs
    end procedure

    Az fpl a formális paraméterlista, amely a formális paramétereket tartalmazza vesszővel elválasztva. A paraméterátadás általában érték szerinti, kivéve, ha az aktuális paraméter változó, tömbelem vagy rekordmező, amikor cím szerinti. A törzs egy algoritmus. A függvény befejeztetésére szolgál a return érték, ahol az érték a függvény visszatérési értéke. Legalább egy ilyen utasításnak szerepelnie kell a függvényben. Az eljárást befejeztethetjük a return utasítással. Globális változókat lehetőség szerint nem használunk.
  10. Kivételes helyzet (esemény) bekövetkezésekor a KIVÉTELszöveg” alkalmazandó, amely szabályosan befejezteti az aktuális alprogram működését. Ha szükségünk van egy kivétel kezelésére, a kivétel(alprogramhívás) pszeudofüggvényt kell használnunk, amely a meghívott alprogramban bekövetkezett kivétel szövegével tér vissza, illetve üres sztringgel, ha a meghívott alprogramban nem lépett fel kivétel. Az alprogramhívás eljárás esetén maga az eljáráshívás, függvény esetén pedig egy xfüggvényhívás alakú értékadás lehet. Ha nem kezelünk egy kivételt, amely a meghívott alprogramban lépett fel, akkor az aktuális alprogram is befejezi a működését, és a kivétel a hívó alprogramban is kiváltódik.
  11. Az eljárások, függvények és vektorok nevei nagybetűsek, a többi változó neve kisbetűs. Az azonosítók (nevek) magyar betűket, decimális számjegyeket és aláhúzásjelet tartalmazhatnak.
  12. Elektronikus anyagokban a pszeudonyelv alapszavai vastagbetűsek, kézírásban aláhúzottak.
  13. Megjegyzést bármely sorban a -- jel után a sor végéig helyezhetünk el.
  14. Rekord mezőire minősítéssel, rekord.mezőnév formában hivatkozhatunk.
  15. Mutató által hivatkozott tárrészen elhelyezkedő értékhez a -> operátorral férhetünk hozzá. Például egyirányban láncolt lista esetén a hivatkozás x->adat, x->következő lehet.
  16. A programozói objektumok egyes tulajdonságaira és bizonyos programozói eszközökre függvényszerűen hivatkozhatunk. A csak lekérdezhető tulajdonságokat pszeudofüggvényekkel, a lekérdezhető és beállítható elemeket pedig pszeudováltozókkal érhetjük el. Az órákon leggyakrabban használt pszeudofüggvények és pszeudováltozók a következők:

    Név Típus Leírás
    méret(V) pszeudofüggvény statikus vektor elemeinek a száma (egész)
    méret(V) pszeudováltozó dinamikus vektor elemeinek a száma (egész)
    lefoglal pszeudofüggvény a szükséges mennyiségben lefoglalt tárhely kezdőcíme (mutató)
    kivétel(alprogramhívás) pszeudofüggvény az alprogram futása során fellépett kivétel szövege (sztring)