22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Die Art <strong>der</strong> Anweisungen ist nicht an<strong>der</strong>s als in an<strong>der</strong>en imperativen Programmiersprachen. Es gibt Zuweisungen,<br />

Prozedur- und Funktionsaufrufe, bedingte Anweisungen und Schleifen. Im Vergleich zu an<strong>der</strong>en Programmiersprachen<br />

wirken manche Anweisungsformen zuweilen weniger elegant o<strong>der</strong> sogar etwas umständlich.<br />

Der große Vorteil dieser Konzeption ist jedoch, daß die scheinbaren Einschränkungen einen Programmierer<br />

zwingen, sich über Struktur, Korrektheit und Robustheit Gedanken zu machen, bevor <strong>der</strong> Programmtext nie<strong>der</strong>geschrieben<br />

wird. Ein “Hacken” von Programmen, was von Sprachen wie C, Fortran, Basic (und z.T. auch<br />

Pascal) geradezu geför<strong>der</strong>t wird, wird zwar nicht unmöglich gemacht, aber doch erschwert.<br />

Darüber hinaus können stilistische Standards wesentlich zum Verständnis eines Programmtextes beitragen.<br />

Sinnvoll plazierte Kommentare, die das erfassen, was sich in Eiffel-Zusicherungen nicht formulieren läßt, ein<br />

übersichtlich gestaltetes Layout des Textes, eine konsistente Verwendung von Groß- und Kleinschreibung (Eiffel<br />

unterscheidet dies nicht) und eine sinnvolle Namenswahl bei Klassen und features sind von großer Bedeutung.<br />

Einige wertvolle Hinweise hierzu gibt [Meyer, 1988, Kapitel 8.1/2].<br />

Zu je<strong>der</strong> Anweisung gibt es Verifikationsregel, die besagt, wie mann die Korrektheit einer Anweisung beweist,<br />

wenn man die Korrektheit ihrer Bestandteile – soweit vorhanden – schon bewiesen hat (o<strong>der</strong> als bewiesen annimmt).<br />

Diese rein syntaktischen Regeln sind formal genug, um mit Rechnerunterstützung angewandt werden<br />

zu können. Dies erleichtert eine computerisierte Überprüfung eines fertigen Korrektheitsbeweises. Das Finden<br />

eines solchen Beweises kann jedoch noch nicht automatisiert werden, wenn Schleifen o<strong>der</strong> Rekursion im Anweisungsteil<br />

einer Routine vorkommen. Daher erfor<strong>der</strong>t ein Korrektheitsbeweis neben dem sturen Anwenden<br />

von Regeln immer ein gewisses Maß von Einfallsreichtum.<br />

4.3.12 Sprachbeschreibung<br />

Zur Präzisierung <strong>der</strong> bisher gegebene Beschreibung von Anweisungen wollen wir nun die Sprachbeschreibung<br />

aus Sektion 3.11 um die Syntax <strong>der</strong> Anweisungen ergänzen. 39 Diese wird dann in <strong>der</strong> nächsten Sektion durch<br />

die Syntax <strong>der</strong> Ausdrücke vervollständigt werden.<br />

4.3.12.1 Syntax<br />

Compound ::= [ Compounds ] Siehe Abschnitt 3.11.1<br />

Compounds ::= Instruction [ ; Compound ] Folgen von Anweisungen<br />

Instruction ::= Creation Initialisierung<br />

| Call Routinenaufruf<br />

| Entity := Expression Wertzuweisung<br />

| Entity ?= Expression Zuweisung<br />

| Conditional Bedingte Anweisung<br />

| Multi branch Fallunterscheidung<br />

| Loop Schleife<br />

| Debug Anweisung im DEBUG-mode<br />

| check [ Assertions ] end Prüfung einer Zusicherung<br />

| retry<br />

Entity ::= Identifier | Result<br />

Creation ::= ![ Type ]! Writable [ .Unqualified call ]<br />

39 Die präzise Beschreibung <strong>der</strong> Semantik wird in diesem Semester zugunsten von Systematik und Verifikation ausgelassen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!