Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 40<br />
Anm1 Eine 99 Bedingung kann jeder Boolesche (logische) Ausdruck sein; zusätzliche Möglichkeit s.<br />
(4.51).<br />
Anm2 Als 50 Anweisung kann wiederum jede Anweisung genommen werden: beliebige Schachtelung<br />
– vgl. Kapitel 2.5! Zur Auflösung von Mehrdeutigkeiten s. a. (b).<br />
Anm3 Bitte beachten: Anweisung steht im Singular, d. h. es muss (jeweils) genau ein Anweisung<br />
stehen.<br />
• Falls mehrere Anweisungen benötigt werden, werden sie zu einem Block (4.11) umschlossen;<br />
dieser Block wirkt syntaktisch als eine Anweisung.<br />
• Falls keine Anweisung benötigt wird, ist eine <strong>Leer</strong>anweisung zu nehmen, z. B.:<br />
; // Ausdrucksanweisung ohne Ausdruck (3.32a)<br />
{ } // Block mit null Anweisungen (4.11)<br />
(b) Schachtelt man ein- und zweiseitige Auswahl, so wird in der textuellen Form die Zugehörigkeit<br />
des SONST-Zweiges durch Einrückung unterschieden: bei Version A gehört der SONST-<br />
Zweig zum äußeren WENN, bei Version B zum inneren WENN:<br />
// Version A<br />
WENN Bedingung-Außen DANN<br />
WENN Bedingung-Innen DANN<br />
Dann-Anweisung-Innen<br />
SONST<br />
Sonst-Anweisung-Außen<br />
// Version B<br />
WENN Bedingung-Außen DANN<br />
WENN Bedingung-Innen DANN<br />
Dann-Anweisung-Innen<br />
SONST<br />
Sonst-Anweisung-Innen<br />
Da der C ++-Compiler jedoch unabhängig vom Lay-out arbeitet, wird die Mehrdeutigkeit<br />
durch folgende Regel aufgelöst:<br />
Ein else gehört immer zum letzten if, welches selbst noch kein else hatte.<br />
△! Daher wird – durch den C ++-Compiler – Version A genauso interpretiert wie Version<br />
B: der SONST-Zweig gehört zum inneren WENN. Um dem C ++-Compiler die Interpretation<br />
entsprechend dem Lay-out von Version A aufzuzwingen, muss die innere einseitige Auswahl<br />
maskiert werden, so dass sie formal nach außen nicht wie eine Auswahl wirkt:<br />
// Version C – nötig für C ++-Compiler<br />
WENN Bedingung-Außen DANN<br />
ANWEISUNGSKLAMMER<br />
WENN Bedingung-Innen DANN<br />
Dann-Anweisung-Innen<br />
ENDE ANWEISUNGSKLAMMER<br />
SONST<br />
Sonst-Anweisung-Außen<br />
Diese Klammerung von Anweisungen geschieht in C ++ durch die ZusammengesetzteAnweisung<br />
(4.11), d. h. durch Einschließen in ein Paar geschweifter Klammern { }.<br />
(c) △! Als Bedingung ist hier wegen seines Haupteffektes (3.32b) auch ein Zuweisungsausdruck<br />
erlaubt; davon wird für Anfänger dringend abgeraten. Meist wird unabsichtlich eine<br />
Zuweisung statt eines Vergleichs ( ” =“ statt ” ==“) geschrieben.<br />
Bsp int i; cin >> i;<br />
if (i = -1) cout