Pascal-Tutorial Kapitel 5


Aus Wirthi's Wiki

Wechseln zu: Navigation, Suche
Pascal-Tutorial
Allgemeines
Kapitel 1 (Einleitung)
Kapitel 2 (Daten)
Kapitel 3 (Anweisungen)
Kapitel 4 (Ein- und Ausgabe)
Kapitel 5 (Unterprogramme)
Kapitel 6 (Felder und Strukturen)
Kapitel 7 (Dateien)

Inhaltsverzeichnis

Im Kapitel 5 des Pascal-Tutorials behandeln wir Unterprogramme, sogenannte Prozeduren und Funktionen.

[bearbeiten] Allgemeines zu Unterprogrammen

Stellen Sie sich vor, Sie haben einen eine Folge von Anweisungen, die mehrmals im Programm vorkommt, z.B. eine komplizierte mathematische Berechnung. Dieses Codestück mehrmals zu schreiben kostet Zeit beim Erstellen und Warten, außerdem vergrößert sich der Sourcecode und die ausführbare Datei.

Als Alternative dazu können Sie ein sogenanntes "Unterprogramm" schreiben. Dieses Unterprogramm kapselt die Funktionalität der enthaltenen Anweisungen und kann von jeder Stelle ihres Hauptprogramms aus aufgerufen werden. Dies funktioniert so, wie sie es bereits von den vordefinierten Prozeduren read und write oder der Funktion readkey kennen.

[bearbeiten] Funktionen

Syntax: function Name(Parameterliste):Rückgabe-Typ;

Funktionen sind Unterprogramme, die am Ende ihrer Ausführung einen Wert zurückliefern, wie z.B. readkey. Paradebeispiele für die Anwendung eine Function sind jedoch mathematische Formeln:

PROGRAM Functions_Test;
USES crt;
VAR Zahl1:integer;

 FUNCTION hoch2(Param1:integer):integer;
 BEGIN
   hoch2:=Param1*Param1;
 END;

BEGIN
  write('Zahl: ');
  readln(Zahl1);
  Zahl1:=hoch2(Zahl1);
  writeln('Eingabe hoch 2 = ',Zahl1);
  writeln('5 hoch 2 = ', hoch2(5));
  readkey;
END.
Bemerkungen zum Programm
  • Ein Unterprogramm steht immer im Deklarationsteil eines Programms (oder eines anderen Unterprogramms).
  • Nach dem reservierten Wort FUNCTION folgt der Name der Funktion, dann falls notwendig die Parameter inklusive Datentyp (werden mehrere Parameter unterschiedlicher Datentypen benötigt, dann muss man zwischen diesen einen Strichpunkt setzen). Anschließend folgt ein Doppelpunkt und der Rückgabe-Datentyp der Funktion (dieser muss ein Standard-Datentyp sein). Zum Schluss folgt noch der obligatorischen Strichpunkt.
  • Im Anweisungsteil der Funktion können ganz normal alle Anweisungen ausgeführt werden. Außerdem kann eine Funktion vor dem Anweisungsteil einen eigenen Deklarationsteil ("var ...") besitzen.

Vor dem letzten end der Funktion muss noch der Funktionswert zugewiesen werden. Das ist jener Wert, der im Hauptprogramm der Variablen zugewiesen wird (Sehen Sie sich das Beispiel an, dass sollte Klarheit schaffen). Dazu geben Sie lediglich folgendes an: "Funktionsname:=Wert". *Natürlich müssender Rückgabewert der Funktion und der zugewiesen Wert den selben Datentyp haben.

  • Im Anweisungsteil wird die Funktion einfach mit ihrem Namen und eventuell den Parametern aufgerufen.
  • Die textuelle Einrückung der Funktion nach rechts ist nicht notwendig, es dient lediglich der Übersichtlichkeit.

[bearbeiten] Prozeduren

Syntax: procedure Name(Parameterliste);

Eine Prozedur kann als Funktion ohne Rückgabewert angesehen werden. Sie ähnelt daher prinzipiell einer Funktion, bis auf folgende Unterschiede:

  • Es darf kein Rückgabe-Datentyp in der Definition angegeben werden, da kein Wert zurückgeliefert wird.
  • Eine Procedure kann daher beim Aufruf auch nicht einer Variablen zugewiesen werden sondern wird wie eine normale Anweisung behandelt (wie etwa writeln).
PROGRAM procedure_test;
USES crt;
VAR Zahl1:integer;

  PROCEDURE ausgeben(Param1:integer);
  BEGIN
    writeln('Der Wert der Variablen beträgt: ',Param1);
  END;

BEGIN
  ausgeben(23);
  Zahl1:=4;
  ausgeben(Zahl1);
END.
Bemerkungen zum Programm
  • Durch den Befehl "ausgeben(23);" wird die Prozedur "ausgeben" mit dem Parameter "23" aufgerufen. Param1 hat also den Wert 23. Die einzige Anweisung innerhalb der Prozedur ist writeln, die nun ausgeführt wird.
  • Danach wird mit dem nächsten Befehl innerhalb des Hauptprogramms fortgesetzt ("Zahl1:=4").
  • Der zweite Aufruf von ausgeben erfolgt mit dem Parameter Zahl1, also wird Param1 der Wert 4 zugewiesen. Dieser wird nun wieder mittels writeln ausgeben.

[bearbeiten] Die Funktionen ord und chr

Diese beiden Funktionen kommen meist im Zusammenhang mit CHAR-Variablen vor. CHAR-Variablen speichern bekanntlich Zeichen, zumindest scheint es so. In Wirklichkeit wird nur die Nummer des Zeichens gespeichert, so hat "A" die Nummer (den ASCII-Code) 65, B die Nummer 66, usw. Um diese Nummer, den so genannten Ordinalwert eines Zeichens oder einer CHAR-Variable zu erhalten, benutzt man die Funktion ord. Diese erwartet als Parameter einen Ausdruck vom Typ CHAR und liefert dessen Ordinalwert (d.h. den ASCII-CODE) zurück. Das Ganze funktioniert auch in die Gegenrichtung mit der Funktion chr. Diese liefert einen Ausdruck vom Typ CHAR, der das Zeichen zurück liefert, das den Wert des Parameters trägt.

PROGRAM ord_chr;
VAR Zahl1:integer;
    Zeichen1:char;
BEGIN
  Zahl1:=ord('A');
  Zahl1:=Zahl1+1;
  Zeichen1:=chr(Zahl1);
END.
Erklärung
  • Zahl1 wird der Ordinalwert von 'A' (also 65) zugewiesen.
  • Zahl1 wird um 1 erhöht, hat also den Wert 66.
  • Der Variablen Zeichen1 wird das Zeichen mit der Nummer 66, also 'B' zugewiesen.


Pascal-Tutorial: Allgemeines - Kapitel 1 - Kapitel 2 - Kapitel 3 - Kapitel 4 - Kapitel 5 - Kapitel 6 - Kapitel 7

Persönliche Werkzeuge