Matkönyv megjelenítő főoldal | Programraktár főoldal |
Jelenleg a programraktár fájljait csak én (a Fazekas gd felhasználója) tudom írni. Kérem, hogy az új/módosított fájlokat a groszd@users.sourceforge.net e-mail címre küldjék. A programraktár fájljai a "programraktár gyökérkönyvtárában" foglalnak helyet, ami jelenleg a pingvin.fazekas.hu gép /home/gd/public_html/mathdisplay/pd könyvtára. Lehetőleg egy tömörített (pl. zip, tar.gz) állományt küldjenek, amelyben a könyvtárszerkezet olyan, mint a programraktár könyvtárszerkezete, tehát kiderül, melyik fájlnak melyik könyvtárba kell kerülnie.
A programraktár fájljainak nevében csak angol kisbetűk, számjegyek és _ jel és pont szerepelhet. A forrásfájlok nevében legfeljebb egy pont lehet, és nem lehet olyan forrásfájl, amelyben _ jel szerepel, de pont nem. A pont után nem lehet _ jel.
Név | Funkció |
---|---|
description | A modul ismertetője. Részletesen leírja a modul által nyújtott szubrutinok és egyéb deklarációk használatát. |
shortdescr | Rövid leírás a modul céljáról. |
used | A felhasznált deklarációk listáját tartalmazó fájl. Minden sorba egy azonosító kerül. |
subs könyvtár | A modul által deklarált azonosítókat tartalmazza. Minden fájl neve egy azonosító, tartalma annak rövid leírása. Ha a programnyelvben nem számítanak a kisbetű-nagybetű különbségek (Pascal ilyen, C++ nem), a fájlnév kisbetűs legyen. |
files könyvtár | A modul fájljai. Minden programnyelvkez egy a programnyelv nevével megegyező nevű alkönyvtár tartozik, amelyben vannak a modulhoz tartozó forrásfájlok. Ezekbe alkönyvtárakat ne helyezzünk, ha szükséges, tömörítsük egy fájlba a fájlokat/könyvtárakat, és írjuk le a description fájlban, hogy ki kell csomagolni. |
examples könyvtár | Minden alkönyvtár egy példát tartalmaz. |
Név | Funkció |
---|---|
description | A példa ismertetője. |
shortdescr | Rövid leírás a példa funkciójáról. |
install | A példa részletes telepítési, lefordítási, futtatási utasításai, szükség esetén programnyelvekre és/vagy operációs rendszerekre lebontva. |
files könyvtár | A példa fájljai. Minden programnyelvkez egy a programnyelv nevével megegyező nevű alkönyvtár tartozik, amelyben vannak a példához tartozó forrásfájlok. Ezekbe alkönyvtárakat ne helyezzünk, ha szükséges, tömörítsük egy fájlba a fájlokat/könyvtárakat, és írjuk le a description fájlban, hogy ki kell csomagolni. |
Név | Funkció |
---|---|
shortdescr | Rövid leírás a kategória tartalmáról. |
modules | A kategóriába tartozó modulok listáját tartalmazó fájl. Minden sorba egy modul neve kerül. |
A bonyolultabb forrásfájlokba megjegyzéseket, hiszen a programraktár célja nem csak egy programokban felhasználható függvénytár létrehozása, hanem az is, hogy bemutassa az algoritmusokat, megmutassa, hogy hogy lehet hatékonyan megoldani egy-egy programozási feladatot.
Hogy elkerüljük az ékezetes betűk különböző kódolásaiból eredő zavarokat, a forrásfájlokban, főleg a modulookban (de a példákban is) lehetőleg csak a megjegyzésekben használjunk ékezetes betűket. Az azonosítókat angolul írjuk.
Törekedjünk arra, hogy az algoritmusból mindig újrafelhasználható modult készítsünk, ne kész programot, és a keretprogramot példaként tegyük közzé. Ha lehet, a modul ne írjon semmit a képernyőre, és ne olvasson onnan semmit. Ez a keretprogram dolga. A modul, ha mégis beolvas vagy kiír valamit, és lehetőleg a példaprogram is, csak a standard csatornákat használja, pl. semmiképpen ne használja Pascalban a crt unitot, mert az nehézzé teszi a program automatikus futtatását más programból. A példaprogram pl. csak akkor törölje a képernyőt, ha valóbban a teljes képernyőfelületet használja. A példaprogramok ne várjanak Enter-re a befejeződésük után. A fejlesztőkörnyezetek lehetőséget biztosítanak a program kimenetének megtekintésére (pl. Turbo Pascalban Window/User screen), ha pedig parancssorból futtatjuk a programot, felesleges és kényelmetlen. A modul legyen minél szélesebb körben felhasználható, minél jobban bővíthető, és az adatmennyiségre minél kevésbé vonatkozzanak megkötések (pl. használjunk dinamikus memóriát akkor is, ha a közzétett példaprogramban nem is használjuk ezt ki). A példaprogramokban mutassuk is be a modul képességeit, hiszen egy algoritmus sebessége sokszor nem akkor mutatkozik meg, ha 5-10 kézzel bevitt adaton próbáljuk ki, hanem sok MB-os adatfájloknál. Ilyenkor esetleg közzétehetünk az adott példának megfelelő, véletlenszerű adatokkal feltöltött, nagyméretű adatfájlokat generáló programot is.
Mivel lehet, hogy egy program több modult is használ, amelyek mindegyike beilleszti ugyanazt a forrásfájlt,
meg kell oldani, hogy ha egy forrásfájl már betöltődött, és újra beillesztésre kerül, akkor a benne lévő deklarációkat
a fordító ne olvassa el még egyszer, mert az duplikált azonosító hibaüzenethez vezetne. Ezért a Pascal forrásfájlok
elejére helyezzük el a következő direktívákat:
{$IFNDEF filename}
{$DEFINE filename}
, a végére pedig a következőt:
{$ENDIF}
. C, C++ források elejére, külön sorokba:
Hogy a felesleges ütközéseket elkerüljük, ha két forrásfájl nem tartalmaz ugyanolyan nevű azonosítót, ne legyen ugyanaz a nevük. Ezt "A modulok fájljainak listája" oldalon ellenőrizhetjük. Két modulban csak akkor legyen azonos nevű szubrutin, ha azok paraméterezése és funkciója is azonos, csak implementációjuk más. Ha az implementációjuk is azonos, rakjuk őket egy külön modulba. Lehetnek azonos nevű, különböző paraméterezésű (Pascalban overloados) szubrutinok, de ezeknek azonos modulban kell lenniük, és ha egy másik modul szintén implementálja őket, annak az összeset implementálnia kell. (A portolhatóság érdekében Free Pascal esetén is tegyük ki az overload jelzést.) Ha két modul azonos nevű szubrutint tartalmaz, azoknak azonos nevű fájlban kell lenniük, hogy a szubrutint használó program megtalálja.
A forrásfájlokba írjunk copyright információt. Ajánlott copyright információ forrásfájl elejére, megjegyzésben:
Copyright X. Y., évszám(intervallum).
Ez a fájl a GNU GPL v2 vagy későbbi változat feltételei mellett terjeszthető, lásd http://fazekas.hu/~gd/mathdisplay/pd/gpl.txt .