Zur Themenübersicht     

Konkrete Realisierung des Euklidische Algorithmus

Grobe Erklärung des Programmcodes

Sinn des ggt Programmes war es nun den Euklidische Algorithmus (wie im Kapitel "Euklidische Algorithmus" erklärt) in eine funktionsfähige Prozedur umzusetzen. Dabei musste man sich erst einmal eine Art Eingabemaske erstellen, die den Benutzer auffordert die beiden Zahlen einzugeben und gleichzeitig einen Button aufweist, der auf Klick das Ergebnis (den ggT) ausrechnet. Ein Beispiel für diese Eingabemaske zeigt das folgende Bild:

Eingabemaske

In diese Eingabemaske werden nun die Werte eingegeben und dann kann der Benutzer den Button klicken. Bei dieser Aktion wird folgender Programmtext aufgerufen:

Differenzierte Erklärungen zum Programm

Programmcode beim Klicken des Buttons "btloesung"



Die Prozedur wird aufgerufen.

In dieser Zeile werden
die Variablen(a,b,rest,ggt),
die die Prozedur
benutzt definiert.

Die Variblen a, b bekommen
ihre aktuellen Werte.


Hier wird überprüft ob der
Wert für b = 0 ist. Wenn dies der
Fall ist, dann wird ein Fenster
geöffnet, weil die Division durch 0
nicht zulässig ist.





Hier wird die Prozedur zum Ausrechnen des ggT´s aufgerufen,
der Programmcode steht in der nächsten Zeile der Tabelle.

Diese Zeile gibt den endgültig berechneten
Wert für den ggT aus.
Programmcode:

procedure
TForm1.btloesungClick(Sender: TObject);
var
a, b, rest, ggt :Integer;



begin
a := strtoint(edita.text);
b := strtoint(editb.text);
end;

Try
if b = 0 then
begin
 showmessage('Division durch null
              unzulässig!');
 exit
end;
Except
 ShowMessage('Fehler')
end;

berechne_ggt(a,b,ggt);


editggt.text := InttoStr(ggt);

end;






Hier wird die Prozedur "berechne_ggT" aufgerufen. In den
Klammern stehen die formalen Parameter der Prozedur. "alok" und
"blok" sind Werteparameter und "ggtlok" ist ein Referenzparameter
(Erklärungen im Kapitel "Werte und Refernzparameter").


Hier wird die Variable "rest" innerhalb der Prozedur festgelegt

In dieser Zeilke wird die Abbruchbedingung festgelegt, solange
"rest" größer 0 ist werden die folgenden Zeilen durchgeführt.


Diese Befehlszeile rechnet den Rest von der Division a - b aus
und ordnet ihn der Variablen "rest" zu.

Die Variable "alok" bekommt den Wert der Variablen
"blok" zugeordnet.

Die Variable "blok" bekommt den Wert von "rest" zugeordnet.


Der Referenzparameter "ggtlok" bekommt den Wert von
"alok" zugewiesen, wenn "rest" null ist.

Programmcode für
die ggT Prozedur:

procedure
TForm1.berechne_ggt(alok, blok :integer;
                    var ggtlok :integer);





var rest :integer;
begin
while rest <> 0 do


begin
  rest := alok mod blok;


  alok := blok;


  blok := rest;
 end;

 ggtlok := alok;

end;

Diese Aktionen werden bei dem Klicken auf den Button "btloesung" durchgeführt

 

Dies ist ein Beispiel für einen reinen Programmcode
procedure
TForm1.berechne_ggt(alok, blok :integer; var ggtlok :integer);
var
 rest :integer;
begin
while rest <> 0 do
 begin
  rest := alok mod blok;
  alok := blok;
  blok := rest;
 end;
 ggtlok := alok;
end;