Unterprogramme

Prozeduren und Funktionen 

 PROCEDURE mit Variablenparametern

Beispiel  

Beim Addieren von zwei Brüchen muss im ersten Schritt  der Hauptnenner gebildet werden. Der Hauptnenner ist das kleinste gemeinsame Vielfache der beiden Nenner.

Ein Programm soll das  kleinste gemeinsame Vielfache (kgV) von zwei Zahlen ermitteln.

Beispiel: Es ist das kgV von 15 und 12 zu ermitteln.

1. Methode Das Vielfache bilden, das erste gemeinsame Vielfache ist das kgV.

V15 = {15; 30; 45; 60; 75 ;...}

V12 = {12; 24;36;48;60;72;...}    Ergebnis: kgV = 60

2. Methode über das ggT

15 = 3*5

12 = 3*  2 *2   

ggT = 3; 15 / ggT = 5 --> Merke_1; 42 / ggT = 4 --> Merke_2;

kgV = ggT * Merke_1 * Merke_2 = 60

Algorithmus Eingabe zweier natürlicher Zahlen
  ggT {siehe ggT}
  1. Zahl dividieren mit ggT -->Merke_1
  2. Zahl dividieren mit ggT -->Merke_2
  kgV = ggT * Merke_1 * Merke_2
  Ausgabe kgV der beiden Zahlen

 

Quelltext

program kgV_1;                 {Ermiitelt das kleinste gemeinsame Vielfache}
                             {von zwei natuelrichen Zahlen}
                             {mithilfe des ggT}
                             {***Procedure mit Variablenparametern***}
uses crt;
var zahl1, zahl2, ggt, kgv  :integer;  {globale Variablen}
procedure bildschirm;
var i,j   :  integer;
begin
     clrscr;
     for i:=1 to 80 do
         begin
           for j:=1 to 24 do
           gotoxy(j,i);textbackground(white); write('');
         end;
     textcolor(black);gotoxy(1,1);
end;
procedure g_g_T(x, y : integer; var ggt : integer);
var Rest : integer;
begin
    repeat
          Rest := x mod y;
          x    := y;
          y    := Rest;
    until Rest = 0;
    ggT  := x;
end;{Ende ggt}
procedure k_g_V (x, y, ggt_h  :  integer; var kgv : integer);
var merke_1, merke_2  :  integer;
begin
     merke_1 := x div ggt_h;
     merke_2 := y div ggt_h;
        kgv  := ggt_h * merke_1 * merke_2;
end;{Ende kgV}
{+++++++++++++++HAUPTPROGRAMM++++++++++++++++++}
begin
     bildschirm;
     gotoxy(20,3);writeln(' Bestimmen des ');
     gotoxy(20,5);writeln(' kleinsten gemeinsamen Vielfachen');
     gotoxy(20,7);writeln(' zweier natrlicher Zahlen');
     gotoxy(14,10);write('1. Zahl :  ');readln(zahl1);
     gotoxy(14,12);write('2. Zahl :  ');readln(zahl2);
     g_g_t(zahl1,zahl2,ggt);
     k_g_v(zahl1,zahl2,ggt,kgv);
     gotoxy(14,16);textcolor(green);write('Das kleinste gemeinsame Vielfache von');
     gotoxy(14,18);write(zahl1,'  und  ',zahl2, '  betraegt  ',kgv);

     readln;
end.

Nach oben

Erläuterung

Prozeduren können beliebig viele Eingangsparameter  und  beliebig viele Ausgangsparameter  haben, über welche die Ergebnisse übermittelt werden.

Die Deklaration einer Prozedur geschieht im Deklarationsteil des Programms (nach der Variablenvereinbarung), diese Deklaration nennt man auch Block

Im Deklarationsteil einer Prozedur können Konstanten, Typen, Variablen und wieder Blöcke (Prozeduren, Funktionen) definiert werden

Der Deklarationsteil ist die Schnittstelle zur übergeordneten Programmeinheit festgelegt; dazu dienen die formalen Parameter,nsie werden in den Anweisungen der Prozedur verwendet und fungieren als Platzhalter für die beim Aufruf einzusetzender aktueller Parameter.

Die formalen Paramter werden durch einen Bezeichner und einen Typ gekennzeichnet, wobei der Typ sein kann:

- einfacher Typ (z.B. integer, real, char, boolean)

- Typname (ist mit Typ-Deklaration einzuführen)

Die formalen Parameter und die im Deklarationsteil der Prozedur vereinbarten lokalen Variablen gelten nur in der Prozedur.

Aufruf einer Prozedur erfolgt mit seinem Namen und der Angabe aktueller Parameter, die mit den formalen Parametern korrespondieren.

Bei Variablenparameter werden von der aufgerufenen Prozedur keine neuen Speicherplätze belegt, 
es wird auf die übergebenen Variablen der aufrufenden Prozedur direkt zugegriffen. 
Deshalb müssen die aktuellen Parameter stets Variablen sein.

Anzahl, Reihenfolge und Typname der aktuellen und formalen Parameter müssen übereinstimmen

(nicht aber die Namen der Variablen)

 FUNKTIONEN