22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!