07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

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.

c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 37<br />

(3.31) In C ++/C ist ein Ausdruck definiert durch (Definition nicht vollständig, vgl. (2.61b)):<br />

(3.32) Bsp<br />

Ausdruck <br />

Konstante<br />

|<br />

| Variable<br />

( Ausdruck ) |<br />

|<br />

|<br />

FunktionsAufruf (7.12) |<br />

UnärPräfixOperator Ausdruck<br />

Ausdruck BinärOperator Ausdruck<br />

|<br />

|<br />

|<br />

| Ausdruck UnärPostfixOperator<br />

Bei Ausdrücken sind (häufig) zwei verschiedene Wirkungen zu unterscheiden:<br />

• Haupteffekt – als anderes Wort für Wert des Ausdrucks (fast immer vorhanden).<br />

Bsp Ausdrücke mit Haupteffekt (Wert), aber ohne Seiteneffekt (i sei eine initialisierte Variable):<br />

34<br />

i<br />

(i-17)/5<br />

• Seiteneffekt, Nebeneffekt – sonstige Wirkung(en) des Ausdrucks (nicht immer vorh.),<br />

z. B. Wertänderung Variable, Ausgabe Bildschirm, Einlesen, Aufruf Funktion.<br />

Der Begriff ” Seiten. . .“ bedeutet nicht, dass es sich hierbei um unwichtige, nicht gewollte<br />

Wirkungen handelt; nein, wenn Ausdrücke Seiteneffekte haben, sind diese gewollt!<br />

Bsp Ausdrücke mit Seiteneffekt (die durch ein nachgestelltes Semikolon zu einer Ausdrucksanweisung<br />

(3.32a) gemacht werden können):<br />

cout > i (Eingabe)<br />

(a) 51 AusdrucksAnweisung Ausdruckopt ;<br />

• Haupteffekt unwichtig (wird verworfen),<br />

daher Ausdrucksanweisung i. a. nur sinnvoll, wenn Seiteneffekt vorhanden (häufig: Zuweisungsausdruck,<br />

Funktionsaufruf),<br />

andere Benutzung: als <strong>Leer</strong>anweisung (Ausdruck fehlend), wenn Anweisung syntaktisch gefordert,<br />

aber nichts zu tun ist.<br />

(b) ZuweisungsAusdruck Variable = Ausdruck ( = Op16a )<br />

• Haupteffekt: Wert (und Typ) der Variablen nach der Zuweisung,<br />

• Seiteneffekt: Variable erhält Wert des Ausdrucks.<br />

(c) ZuweisungsAnweisung Variable = Ausdruck ;<br />

(Spezialfall der 51 AusdrucksAnweisung)<br />

• Haupteffekt (der gesamten Zuweisung) unwichtig,<br />

• Seiteneffekt wichtig: Wertzuweisung.<br />

(d) Zuweisungskette: Var1 = Var2 = Var3 = 25 ;<br />

Assoziativität von rechts nach links (Op16), daher Interpretation:<br />

Var1 = (Var2 = (Var3 = 25)) ;<br />

Beim inneren Zuweisungsausdruck Var3 = 25 ist auch der Haupteffekt wichtig, da er den Ausdruck-<br />

Wert für die Zuweisung an Var2 darstellt; der Haupteffekt des Zuweisungsausdrucks Var2 = (. . . )<br />

ist der Ausdruck-Wert für die Zuweisung an Var1. Nur der Haupteffekt des Zuweisungsausdrucks<br />

Var1 = (. . . ) ist unwichtig, er wird verworfen.<br />

(e) Inkrement-, Dekrementoperator (unär präfix Op3ab und postfix Op2fg): ++ --<br />

• Seiteneffekt: Wertänderung des Operanden um +1 bzw. -1 – unabhängig, ob präfix oder<br />

postfix!!<br />

• Haupteffekt (hierbei streng Präfix- und Postfixstellung zu unterscheiden!!):<br />

◦ postfix: alter Wert des Operanden,<br />

◦ präfix: neuer Wert des Operanden.<br />

(3.33) △! Der Zeitpunkt der Ausführung von Seiteneffekten ist nicht festgelegt (implementationsabhängig)!!<br />

Sicher sind alle Seiteneffekte abgearbeitet, wenn Anweisung beendet<br />

ist.<br />

△! Keine Ausdrücke formulieren, deren Wert vom Zeitpunkt bzw. der Reihenfolge der<br />

Ausführung von Seiteneffekten abhängt!<br />

|<br />

|

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!