Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
haben wie z.B. “(jahr:INTEGER)” in den Routinen alter und setze todesjahr, aber das muß nicht sein. Formale<br />
Argumente werden beschrieben durch ihren Namen und ihren Typ, getrennt durch einen Doppelpunkt.<br />
Die Routinen alter und anzahl vornamen sind zusammen mit einem Ergebnistyp deklariert, <strong>der</strong> – getrennt<br />
durch einen Doppelpunkt – hinter <strong>der</strong> Argumentenliste auftritt. Dies bedeutet, daß beide Routinen als Funktionen<br />
deklariert werden, während die Routine setze todesjahr eine Prozedur ohne Ergebnistyp ist.<br />
Der Rumpf einer Routine besteht aus einer Folge von Anweisungen, die durch ein Semikolon voneinan<strong>der</strong><br />
getrennt sind und von den Schlüsselworten do und end begrenzt werden. 10 In Eiffel gibt es nur wenige Arten von<br />
Anweisungen. Neben <strong>der</strong> kursiv geschriebenen, nicht näher erklärten Bestimmung <strong>der</strong> Anzahl von Vornamen<br />
verwenden die Routinen von PERSON nur die im Zuweisung :=, die einer Größe den Wert eines Ausdrucks<br />
zuweist (siehe Abschnitt 3.3.4). Dabei wird – neben den Attributnamen – auch <strong>der</strong> beson<strong>der</strong>e Name Result<br />
als Bezeichner für Größen benutzt.<br />
Result bezeichnet das Ergebnis einer Funktion. Beim Eintritt in die Funktion wird Result mit einem fest<br />
vereinbarten Standardwert (siehe Tabelle 3.12) initialisiert, beim Verlassen <strong>der</strong> Funktion wird als Ergebnis <strong>der</strong><br />
<strong>der</strong>zeitige Wert von Result als Funktionswert zurückgegeben. So ist z.B. <strong>der</strong> Funktionswert von alter(1993)<br />
genau die Differenz von 1993 und <strong>der</strong> Komponente geburtsjahr des angesprochenen Objektes.<br />
Prozeduren verän<strong>der</strong>n Werte gemäß <strong>der</strong> in ihnen enthaltenen Anweisungen. So setzt zum Beispiel die Prozedur<br />
setze todesjahr(1993) die Komponente todesjahr auf 1993 (die Notwendigkeit einer solchen Prozedur<br />
diskutieren wir im Abschnitt 3.4). Prozeduren liefern keine Ergebnisse.<br />
Routinen einer Klasse dürfen sich in ihrer Implementierung auch auf an<strong>der</strong>e Routinen <strong>der</strong>selben Klasse beziehen.<br />
Man darf zum Beispiel in einer weiteren Routine <strong>der</strong> Klasse PERSON die Funktion alter aufrufen.<br />
Den nach außen hin uninteressanten Unterschied zwischen Attributen, Funktionen und Prozeduren kann man<br />
in einer Deklaration leicht an <strong>der</strong> Syntax einer feature-Deklaration erkennen.<br />
• Folgt auf den Namen des Features f bis zum Semikolon o<strong>der</strong> end nur die Typdeklaration wie in<br />
f:Typ<br />
so beschreibt f ein Attribut.<br />
• Folgt auf den Namen des Features eine Argumentenliste, eine Typdeklaration und die Schlüsselwortfolge<br />
is...do...end wie in<br />
f(x1:A1,..xn:An):Typ is do ... end<br />
so beschreibt f eine Funktion. Das ist auch dann <strong>der</strong> Fall, wenn die Argumentenliste fehlt, wie in<br />
f:Typ is do ... end<br />
• Folgt auf den Namen des Features eine Argumentenliste und die Schlüsselwortfolge is...do...end wie in<br />
f(x1:A1,..xn:An) is do ... end<br />
so beschreibt f eine Prozedur. Das ist auch dann <strong>der</strong> Fall, wenn die Argumentenliste fehlt, wie in<br />
f is do ... end<br />
• Eine Beson<strong>der</strong>heit, welche die Verwendung des Schlüsselwortes is notwendig macht, haben wir noch<br />
nicht besprochen. Eine Deklaration<br />
f:Typ is Wert<br />
beschreibt ein Konstanten-Attribut, welches zusammen mit einem festen Wert deklariert wird.<br />
3.3.3 Lokale Variablen<br />
In vielen Routinen ist es notwendig, Zwischenwerte zu berechnen, bevor die eigentliche Aktion ausgeführt<br />
wird. So ist es z.B. sinnvoll, in <strong>der</strong> Funktion anzahl vornamen zunächst die Liste <strong>der</strong> einzelnen Vornamen aus<br />
10 Diese Form ist nur eine Heraushebung des Verwendungszwecks einer Folge von Anweisungen. Mathematisch betrachtet<br />
ist “do anweisung1; anweisung2; ...;anweisungn end” einfach eine Liste .<br />
Die Verwendung <strong>der</strong>artiger Notationen aber würde ein Programm unlesbar machen.