Dokumentáció az inf2be2 programhoz

Felhasználói dokumentáció


Feladat: "Készits demográfiai szimulációs programot, amelyikben kétféle nemû állat szerepel,

s mindkettõhöz különböz paraméterek tartoznak."

Azaz kell: korcsoportonkénti eloszlás,

Adott: egy fajta állat, két nemben, szaporodási stratégia, van szaporodasi strategia,

a korabbi korcsoportok megmaradnak

Létszámmódosítás (véletlenszámok):

- egy adott korú egyed milyen valószínüséggel-el hal meg?

- milyen valószínüséggel születnek új egyedek (pl. nulla evesen)?


Indítás: A program a neve leírásásval (pl: "a:\infa2be1") indítható.


Futtatási környezet: IBM PC, PC DOS 7.0 (vagy avval kompatibilis operációs rendszer).


A program (bemenete): A program elõször megkérdezi az maximális helyek syámát, majd a népsûrûséget. (Illetve, ha nem találja az egavga.bgi file-t, akkor annak az elérési útját).

A továbbiakban a program az alsó-menüsoron nagybetûvel jelzett billentyûk segítségével vezérelhetõ.

Fõbb lehetõségetk:

N: normál mód (ezt alapesetben nem jelzi ki, csak az eltérést)

L: lépésenkénti megerõsítést kér

C ún. csendes mód (nincs se ábra, se grafikon - itt korfa)

S: segítség-képernyõ megjelenítése

M: paraméterek módosítása

(felhasználóként nem változtatható: maximális életkor, születési/halálozási valószínûség)

P: pihenés, szünet (billentyû-lenyomásra vár)

F: állapot mentése file-ba (a visszaállítás még nem mûködik)

J: járvány (a népesség véletlenül kiválasztott fele kihal)

K: kilépés a programból


Ha legalább az egyik nem egyedek elfogynak (vagy a követkeyõ lépésben fogynának el), akkor a program jelzi, hogy kihaltak, továbbá felkínálja a lehetõséget az újrakezdésre.


Hibalehetõségek: Ha egy adatot indításkor rosszul kap meg, akkor még legfeljebb kétszer ismét bekéri.

Ha az "egavga.bgi" file-t nem találja (elvileg ez kizárt, mert ugyanabban a könyvtárban vannak

és ott kezdi a program elõször keresni),és nem is kapja meg a helyes elérési útvonalát, akkor a program nem indul el.



A program lehetséges kimenetei:



  1. ábra: Induló képernyõ:



A szimulációban elemeinek darabszáma? (6..50) 25


... milyen sûrûséggel? (0..9) 0

... milyen sûrûséggel? (0..9) 4


Az egavga.bgi helye? C:\TP\70\BE\egavga.bgi



  1. ábra: Futás közben (a grafikon a korfa):





Fejlesztõi dokumentáció


Feladat: "Készits demográfiai szimulációs programot, amelyikben kétféle nemû állat szerepel,

s mindkettõhöz különböz paraméterek tartoznak."


Indítás: A program a neve leírásásval (pl: "a:\infa2be2") indítható.


Fejlesztõi környezet: IBM PC, PC DOS 7.0 (vagy avval kompatibilis operációs rendszer),

Turbo Pascal (legalább) 6.0 fejlesztõi környezet,

TP unit-ok: Crt (a képernyõhöz), Dos (a file-okhoz), Graph (a grafikához).

A program teszteléskor helyesen futott OS/2 4.5 (eComStation Prev 1) és PC-DOS 7.0 alatt


Hatékonysági tesztesetek jelenleg nincsenek.


A program felépítésérõl:


Fontosabb típusok, változók

Konstansok

pmax=8; (paraméterek száma)

kormax=290; {1..290} (a maximálsi életkor)


Típusok

Telem=rekord (egy egyed)

nem:egész (milyen nemû); szin:egész (miképp' ábrázolja a szimulációs tér)

kor:egész (mennyi idõs)

Tomb=tömb[1..50,1..30]: Telem; (a szimulációs tér)

PrString=String[23]; (a paraméterek nevei)

Tparam=rekord - a paramétertömb (nevek, értékek)

név:szöveg[23]; érték:egész;

ParamT=tömb[1..pmax]: Tparam; (a paramétertömb)

Hullt=tömb[0..580]: valós (az elhullási valószínûség: nemeknként, koronként)


Változók:

mxi,mxj:integer; (a tényleges létszám /hosszában, széltiben)

nepsûrûseg:valós; cse(ndes-e),le(pesben-e):logikai

T: tomb, P: ParamT (ténylegesen ezekkel dolgozik a program - illetve majdnem)


Szimulációs lépés:

Idõ kiírása

Paraméterek kiírása(az idõközben megváltozott értékek)

A "Tömb" értékeinek változtatása (öregedés; elhullás; szaporodás; elhullás)

(Ha nem csendes módban van a program, akkor:)

Ábra-rajzolás (a szimulációs téren ábrázolja a "tömböt")

Grafikon rajzolása (itt gyakorlatilag a korfáról van szó)


Stratégiák

Születés: véletlenszerûen választ a program (max.hely-szer) egy elemet (T[i,j]), majd egy szomszédját (T[k,l]). Ha különbözõ nemûek, akkor veszi az elsõnek (T[i,j]) egy véletlenszomszédját, ami ha üres (T[m,n].nem=3), akkor oda születik az új, egy évesen.


Halálozás: Ciklus 1-tõl létszámig

sv:=véletlenszám

Ha sv<(T[akt].halálozási valószínüsége) akkor törli (T[akt].nem:=3)

Ciklus vége


Öregedés: Mindegyik állat életkorát eggyel növeli.

(A halálozási valószínüség jelenleg: 0,6 20 év alatt és maxkor-20 felett, továbbá 0,3 különben)


Az algoritmusnak a tényleges szimulációt érintõ része

Ciklus...

Ciklus...

Billentyûre_vár(c)

Elágazás c szerint (...)

Ciklus amíg ((c='K') vagy (c='F')) (kilépés / file-mûvelet - például mentés)

Ha (c='F') akkor mentés

Ha (c='K') akkor (akarja_e_folytatni(ha nem akkor legvége:=igaz))

Ciklus amíg (legvége)

A programban aránylag sokszor használt PrHely függvény:

Függvény PrHely (P:Paramétertömb, K:betû):egész

A függvény megkeresi (keresés-tétel) P-ben, melyik az a paraméter, amelyik kezdõbetûje "K".

Függvény vége.


Fejlesztési lehetõségek:

Az elmentett állapotot vissza lehetne állítani (az eljárást - ami már benne van - ki kellene javítani)

Több paramétert módosíthatna a felhasználó.

Megjegyzés: A felhasználó által nem módosítható paraméterek: (élettér, file, név)

maximális életkor (globális konstans: infdef.inc, maxkor)

paraméterek száma (globális konstans, infdef.inc, pmax)

a paraméterek nevei (globális változók /illetve konstatnsok/, infinic.inc, PrFeltolt eljárás) halálozási valószínûség (globális változók, infinic.inc, TömbNulláz/HullFelt eljárás)

felsõ címsor (globális vltozók, infproba.pas, átadott szöveg-értékek)

alsó menüsor részei (nevek: globális konstans, infdef.inc, "pA" - ahol : "A" a kezdõbetû forróbillentyûk: lokális változó-értékek, infelj.inc, BillreVár eljárás) stratégiák (globális eljárások, infstrat.inc, az eljárások nevei)


Eddigi tesztesetek eredménye: (Az eddigi tesztesetek véletlenszámokkal történtek.)

Az kezdeti paraméterek nem feltétlen azonosak a tényleges indulási paraméterekkel.

Nem megfelelõ típusú paraméter-értékkel nem lehet a programok "kiakasztani".


Budapest, 2001. május 18-28.

Szamosközi Péter