http://www.adaconcept.com/programs/sorsologep.ads
package sorsologep is
type sorsolasimodok is (kezi, gepi); --diszkret tipus(ok) (a tipusertekeit bekerjuk majd a billentyuzetrol)
type golyoallapot is (kihuzva, nincs_kihuzva); --ezekkel fejezzuk ki, hogy egy adott golyot kisorsoltunk/kihuztunk e mar
type golyotipus(allapot:golyoallapot:=nincs_kihuzva) is private; --atlatszatlan tipus, a kulvilag elol elrejtjuk a megvalositasat. Ez itt csak egy bejelentes, a forditonak...
type golyoktipus(<>) is private; --egy masik pelda erre... (nem teljesen definialt tipussal)
subtype sorszam is positive range 1..5; --altipus: nem hoz letre uj tipust... (egymasnak ertekuladhatok, futasi-idoben ellenorzes a megszoritasra...)
---------------------------[publikus metodusok]----------------------- --ezek lathatok kivulrol a csomag hasznaloja szamara
--ezek az alprogram deklaraciok.... ezeknek a definicioi vannak a csomag torzseben
procedure sorsolasimodbekeres; --beagyazott generikus csomag (enumeration_io) gyakorlasara
procedure golyokletrehozasa; --a golyok -tomb feltoltese alapertelmezett ertekekkel
procedure kisorsoltgolyokkiirasa;
procedure sorsolas; --veletlenszam generalas mutatasa + mas hasznos, egyszeru otletek
------[amik el vannak rejtve a "kulvilag"/csomag hasznaloja elol]------
private
type otoslottoszamtipus is new positive range 1..90; --uj tipus definialasa. Ezentul konvertalni kell az otoslottoszamtipus es a positive kozott.
type golyotipus(allapot:golyoallapot:=nincs_kihuzva) is record --diszkriminansos rekord alapertelmezett diszkriminans ertekkel
szam:otoslottoszamtipus;
case allapot is --elagazas a diszkriminans erteken, ami befolyasolja a rekord szerkezetet
when kihuzva => hanyadiknak_huztak:sorszam;
when nincs_kihuzva => null;
end case;
end record;
type golyoktipus is array(positive range <>) of golyotipus; --a golyotipus megszoritatlan altipus (ha megszoritott lenne golyotipus(nincs_kihuzva), akkor soha nem lehetne kihuzva)
--igy ha az egesz rekord erteket kap (diszkriminansostul), akkor megvaltoztathatjuk a szerkezetet
--A golyoktipus egy megszoritas nelkuli positive indexu tomb
----------------------------[adattagok]--------------------------------
sorsolasimod:sorsolasimodok;
golyok:golyoktipus(1..90); --mivel megszoritas nelkuli, itt, a deklaralaskor kell eldonteni a konkret indexhatarokat
end sorsologep;