Az alábbi
visszatérő hibákkal találkoztam a zh javítása során.
1.
Nem
tiszta még mindig mindenki előtt az algoritmikus nyelv 'amíg-os ciklus’-ának
szemantikája. Vagyis, hogy addig kell a ciklusmagot végrehajtani, amíg a
feltétel logikai értéke IGAZ, más szóval akkor kell a ciklust elhagyni, amikor
a feltétel HAMIS. Nem csökkenti az elírást az a tény, hogy van olyan
programozási nyelv, amelyben van olyan ciklusféle, amiben a kilépés feltételét
kell megfogalmazni.
2.
A
’számlálós’ ciklus (mint a Pascal-beli ’For’-ciklus) ciklusváltozójának direkt
módosítás tilos, mivel ezt a ciklust szervező kód automatikusan és
definíciószerűen végzi. Ha ok van arra. hogy a ciklusváltozó értéke időnként
„szabálytalanul” módosuljon, akkor ’amíg-os ciklus’-sal kell az algoritmust (és
a kódot) megvalósítani.
Helytelen |
Helyes |
… |
… |
|
Helyes Pascal kód |
|
… |
3.
Nem
mindegy –sokszor– a több tényezős vagy tagos feltételek részkifejezéseinek
sorrendje!
Helytelen |
Helyes |
Ciklus
amíg T(x(i)) és i£N |
Ciklus
amíg i£N és T(x(i)) |
Magyarázat: mivel a logikai
műveletek (többnyire[1])
nem szimmetrikusak, azaz ha a feltétel logikai értéke már kiderült, akkor a
továbbiak kiértékelése elhagyandó. Így a helyes példában i>N-re a T(x(i)) nem értékelődik ki, azaz
index-túllépési hiba nem történik, amint a helytelen esetében.
4.
Az eljárás
(függvény és operátor) hívásakor[2]
felesleges, sőt tilos az aktuális paraméterek típusának explicit
kiírása.
Helytelen |
Helyes |
… |
… |
Megjegyzem: a híváskor persze a hozzáférési
jog (Változó/Konstans) megadása éppen úgy tilos, mint a
típusé! Az persze természetes, hogy az eljárás (függvény és operátor) definiálásakor
viszont szükségesek:
Helytelen |
Helyes |
… |
… |
5.
Sokak
számára az utófeltétel célja (s nem „csupán” a formalizmusa)
homályos. Az utófeltétel NEM az ALGORITMUS leírás szavakkal! Célja, hogy precízen
(ezért leginkább formális eszközökkel) fogalmazzuk meg a program
(részprogram=eljárás/függvény/operátor) által elérendő célt (=adatváltozást),
nem a célhoz vezető utat.
6.
Az operátor
olyan függvény vagy eljárás, amely hívási szintaxisa eltér a
függvényekétől, vagy eljárásokétól. Vannak „hagyományos” bináris, infix
jelöléssel használatosak (pl. „=”, vagy „:=”), de vannak „szokatlanabb”
szintaxissal alkalmazandók is (pl. „Be:”, vagy tömb-indexelés).
Helytelen |
Helyes |
Függvény Kisebb(Konstans s1, ekkor
az illeszkedő hívás alakja: … |
Infix
Operátor Kisebb(Konstans s1, ekkor
az illeszkedő hívás alakja: … |
7.
Sajnálatos
módon sokan nem ismerik a Szöveg-típust. Közhiedelem, hogy karaktertömb, aminek
értelmes dolog adottadik elemére hivatkozni. Ki kell jelentenem, a Szöveg olyan
típus, amelyhez azon műveletgarnitúra egyike van hozzárendelve, amelyek az
előadáson elhangzottak (vagy a mikrológiában, PowerPoint-os bemutatón olvashatók).
Nagy-nagy tisztelettel hívom föl
a Hallgató figyelmét, hogy az 1-4. hibák bármelyikének elkövetésének egyes
gyakorlati jegyet von maga után.
[1] Ha mást nem mondunk. L. a ’Programtranszformációk’-ról szóló (2001.11.12-i) előadást.
[2] Remélem, itt és most definiálás nélkül is világos a ’hívás’ szó jelentése