http://www.adaconcept.com/programs/kartyacsomag.adb
package body kartyacsomag is
procedure rendez (kp: in out kartyapakli) is --a rendezo eljaras
--beagyazas + "enkapszulacio" (fizikai/logikai tartalmazas)
---------[specifikacio]-------
generic --| beagyazott generikus eljaras, ami valamilyen csere-re lesz jo, egy "majd" kapott tipusra
--| (azert "majd" mert meg nem tudjuk milyen tipus, es azert kapott, multido!!!, mert most gondoltunk ra, sokkal elobb, mit ahogy hasznalnank a sablont) ez a hasznalonak mar a mult...
type tipus is private; --| a kapott/kapando :) valamilyen tipus...
procedure csere(A:in out tipus; B:in out tipus); --| es erre a tipusra a csere
-----[specifikacio vege]------
------[torzs]------
procedure csere(A:in out tipus; B:in out tipus) is
c:tipus ;
begin
c:=a;
a:=b;
b:=c;
end csere;
---[torzs vege]----
procedure cserelo is new csere(lap); --peldanyositas, a "kulso"/tartalmazo kartyacsomag csomag lap tipusaval. azaz lapok cserelesere hasznalhatjuk ezekutan
begin
for i in kp'first..kp'last-1 loop --| A maximumkivalasztasos rendezes, ami az eljaras parameterekent kapott kp tombot rendezi
for j in i+1..kp'last loop --| figyeljuk meg, hogy az attributumokat hasznalva ( 'attributum... :) ) barmilyen indexhataru tombbon mukodik az algoritmus
if kp(i)<kp(j) then cserelo(kp(i),kp(j)); end if; --| itt hasznaljuk a generikus/sablonparameterkent kapott "<" fuggvenyt ("rendezesi elvet")...
end loop; --| ...valamint a specialisan lap-ok cserelesere szolgalo, lapokat cserelo cserelo eljarasunkat
end loop; --|
end rendez;
end kartyacsomag;