Einführung in die Programmierung mit C++

Werbung
Einführung in die Programmierung mit C++
Florian Painke
Lehrstuhl für Technische Informatik
Kirchhoff-Institut für Physik
Universität Heidelberg
29. September – 2. Oktober 2008
Lektion 5
Kontrollstrukturen
Programmverlauf und Anweisungen
I
Bisher streng monotoner Verlauf
I
Ermöglicht nur feste Anzahl von
Berechnungen
A
Definition
B
Ein strukturiertes Programm besteht aus einer
Menge von Anweisungen
C
I
Weitere Anweisungen nötig um
Programme flexibler zu gestalten
Anweisungen
I
Leere Anweisung
;
I
Einfache Anweisungen (was wir bisher kennen)
I
I
I
Definition von Variablen
Einfache Anweisungen mit Operatoren
Beenden von main()
I
Zusammengesetzte Anweisungen (Anweisungsblock)
{ Anweisung A; Anweisung B; ... }
I
Kontrollstrukturen (brechen Monotonie auf)
I
I
Bedingungen ermöglichen Alternativen
Schleifen ermöglichen Wiederholungen
Bedingte Anweisung
i f ( A u s d r u c k x ) Anweisung A ;
I
Ausführung von Anweisung A, wenn
Ausdruck x wahr
I
C++ interpretiert jeden Wert ungleich 0
als „wahr“
x
A
Bedingte Anweisung mit Alternative
i f ( A u s d r u c k x ) Anweisung A ;
e l s e Anweisung B ;
B
I
Ausführung von Anweisung A, wenn
Ausdruck x wahr
I
Ausführung von Anweisung B, wenn
Ausdruck x falsch
x
A
Schachtelung bedingter Anweisungen
i f ( Ausdruck x )
i f ( Ausdruck y )
Anweisung A ;
else
Anweisung B ;
Anweisung C ;
i f ( Ausdruck x )
i f ( Ausdruck y )
Anweisung A ;
else
Anweisung B ;
Anweisung C ;
I
Gefahr von Mißverständnissen der Zugehörigkeit von else
I
Verwendung von geschweiften Klammern schafft Klarheit
Mehrfachverzweigung
switch ( Ausdruck x ) {
case K o n s t a n t e 1 :
Anweisung A−1; . . .
break ;
case K o n s t a n t e 2 :
Anweisung B−1; . . .
break ;
default :
Anweisung X−1; . . .
}
x
1
A
2
B
*
X
Mehrfachverzweigung
I
Auswertung von Ausdruck x
I
Ergibt sich Ausdruck x zu einer der Konstanten eines
case-Zweiges, dann Abarbeitung der darauf folgenden
Anweisungen bis zur nächsten break-Anweisung
I
Steht zwischen zwei case-Zweigen kein break, dann wird
Abarbeitung einfach fortgesetzt!
case-Zweige immer mit break beenden!
I
Wird kein passender case-Zweig gefunden, dann wird
default-Zweig gewählt falls vorhanden
I
default-Zweig ist optional
Einfache kopfgesteuerte Schleife
while ( Ausdruck x )
Anweisung A ;
I
So lange Ausdruck x wahr ist, wird
Anweisung A ausgeführt
I
Wenn Anweisung A nicht dazu führt, dass
Ausdruck x irgendwann falsch wird,
klassische Endlosschleife
x
A
Einfache fußgesteuerte Schleife
do Anweisung A
while ( Ausdruck x ) ;
A
I
Anweisung A wird mindestens einmal
ausgeführt
I
So lange Ausdruck x wahr ist, wird
Anweisung A wiederholt ausgeführt
x
Flexible Schleife
f o r ( Anweisung I ;
Ausdruck x ;
Anweisung E )
Anweisung A ;
I
x
I
Zunächst wird Anweisung I
(Initialisierung) ausgeführt
I
So lange Ausdruck x wahr ist,
werdenAnweisung A und Anweisung E
(Inkrement) ausgeführt
A
E
Frühzeitiges Fortsetzen
while ( Ausdruck x ) {
Anweisung A ;
i f ( Ausdruck y ) continue ;
Anweisung B ;
}
x
A
I
Anweisung A wird in jedem
Schleifendurchlauf ausgeführt
y
I
Falls Ausdruck y wahr ist, wird Schleife
frühzeitig fortgesetzt
B
I
Anweisung B wird nur ausgeführt, wenn
Ausdruck y falsch ist
I
Bei for-Schleife wird Inkrement in jedem
Fall ausgeführt
Frühzeitiges Beenden
while ( Ausdruck x ) {
Anweisung A ;
i f ( A u s d r u c k y ) break ;
Anweisung B ;
}
x
A
I
Anweisung A wird in jedem
Schleifendurchlauf ausgeführt
y
I
Falls Ausdruck y wahr ist wird, Schleife
frühzeitig beendet
B
I
Anweisung B wird nur ausgeführt, wenn
Ausdruck y falsch ist
Herunterladen