De code is illustratief voor het gebruik van de procedures, lay-out en commentaar.
Sorts.Tool :
Code: Select all
- Sorts.Tool
(*
Auteur : Kristof Overdulve
Datum : 21/10/2005
Werkwijze : In dit programma gaan we een array sorteren aan de hand van een Insertion Sort algoritme, beschreven in de opgave van de opdracht. Om dit te verwezenlijken maken we gebruik van de reeks bestaande procedures "LeesRij" en "DrukRij" uit de module "Sorts.Mod" die respectievelijk dienen om getallen in te lezen en om ze af te drukken. We creëren zelf de procedure "InsertionSort" die het algoritme om de arrays te sorteren beschrijft en "Insertion" die de verschillende benodigde procedures oproept en er waardeparameters aan toekent.
*)
Builder.Compile \2wvs
OutExt.Mod
Sorts.Mod
~
Builder.Compile \f*
System.Free
OutExt.Mod
Sorts.Mod
~
Sorts.Insertion
1.2
45.3
0.33
5.21
8.2
-3.5
2.35
7.88
5.12
6.23
2.36
55.8
-5.66
0.0
6.66
3.2
~
Code: Select all
MODULE Sorts;
(*
Doel : Reeks Portfolio opdracht 2 : Sorteeralgoritmes :
Vorm de module Sorts.MOD om zodat de Insertion Sort geimplementeerd wordt.
Auteur : Kristof Overdulve
Datum : 21/10/2005
*)
IMPORT
In, OutExt;
CONST
max = 25;
TYPE
GetallenRij = ARRAY max OF REAL;
PROCEDURE LeesRij(VAR x: GetallenRij; VAR n: INTEGER);
(*
Omschrijving : Leest een aantal getallen in.
Parameters :
x : De array waarin de getallen opgeslagen zijn.
n : Het aantal getallen in die array.
Returntype : -
Algoritme : -
*)
VAR
i: INTEGER;
BEGIN
In.Open;
i := 0;
WHILE In.Done DO
In.Real(x[i]);
INC(i);
END;
n := i - 1;
END LeesRij;
PROCEDURE DrukRij(x: GetallenRij; n: INTEGER; s: ARRAY
OF CHAR);
(*
Omschrijving : Drukt de array af.
Parameters :
x : De array waarin de getallen opgeslagen zijn.
n : Het aantal getallen in die array.
s : De naam van het gebruikte sorteeralgoritme.
Returntype : -
Algoritme : -
*)
VAR
i: INTEGER;
BEGIN
OutExt.String("De geordende array "); OutExt.String(s); OutExt.String(" is: ");
OutExt.Ln;
FOR i := 0 TO n - 1 DO
OutExt.RealFix(x[i], 13, 5);
OutExt.Ln;
END;
END DrukRij;
PROCEDURE InsertionSort(VAR a : GetallenRij; n :
INTEGER);
(*
Omschrijving : Sorteert een gegeven aantal getallen in een array.
Parameters :
a : De array waarin de getallen opgeslagen zijn.
n : Het aantal getallen in die array.
Returntype : -
Algoritme : InsertionSort sorteeralgoritme
*)
VAR
index, index2 : INTEGER;
hulpvariabele : REAL;
BEGIN
FOR index := 1 TO n DO
hulpvariabele := a[index];
index2 := index;
WHILE ((index2 > 0) & (a[index2-1] >
hulpvariabele)) DO
a[index2] := a[index2-1];
DEC(index2);
END;
a[index2] := hulpvariabele;
END;
END InsertionSort;
PROCEDURE Insertion*;
(*
Omschrijving : Dit is de hoofdprocedure.
Parameters : -
Returntype : -
Algoritme : -
*)
VAR
getallen : GetallenRij;
aantalGetallen : INTEGER;
BEGIN
LeesRij(getallen, aantalGetallen);
InsertionSort(getallen, aantalGetallen);
DrukRij(getallen, aantalGetallen, "(InsertionSort)");
END Insertion;
BEGIN
OutExt.Open;
OutExt.Clear;
END Sorts.