|
|
|
C++ |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
In den bisher erstellten Programmen standen die einzelnen Anweisungen ausschließlich untereinander und wurden nacheinander abgearbeitet. Dies sind sog. lineare Ablaufstrukturen. Unter einer Ablaufstruktur versteht man die Form des Weges, den ein Prozessor beim Abarbeiten eines Programms beschreitet. In vielen Fällen sind jedoch Abarbeitungswege erforderlich, die Verzweigungen aufweisen.
Die beiden Programme der ersten Übungen "Bruttopreis" und "Nettopreis" sollen zu einem Programm verschmolzen werden. Der Benutzer soll aus zwei Möglichkeiten auswählen. Beginnen Sie dafür einen neuen Arbeitsbereich "bedingt"!
Bildschirmausgabe (kleines Menü):
1: Nettopreis -> Bruttopreis
2: Bruttopreis -> Nettopreis
Wenn der Benutzer eine 1 eingibt, soll ein Nettopreis eingelesen, dazu der Bruttopreis
berechnet und ausgegeben werden. Bei einer 2 soll der Bruttopreis eingelesen,
dazu der Nettopreis berechnet und ausgegeben werden.
Angenommen Sie schreiben die Sequenzen der beiden Programme aus den ersten Übungen hier einfach untereinander. Dann werden sowohl der Bruttopreis als auch der Nettopreis berechnet, was nicht im Interesse eines Benutzers wäre. Im Programmablauf darf also nur eine der beiden Sequenzen Eingabe, Berechnung und Ausgabe durchgeführt werden. Im Programm muss es mindestens eine Weiche geben, die der Benutzer mit Hilfe der Eingabe einer 1 oder 2 stellt. Am Ende einer Verzweigung vereinigen sich die beiden Ablaufpfade wieder miteinander.
| Jede der unten abgebildeten "Weichen" wird durch eine Bedingung gestellt. | ||||
| V e r z w e i g u n g e n |
Bruttopreis bedingt berechnen | Nettopreis bedingt berechnen | Entweder Bruttopreis oder Nettopreis berechnen |
|
|---|---|---|---|---|
![]() |
![]() |
![]() |
||
| Einseitig bedingte Anweisung | Einseitig bedingte Anweisung | Zweiseitig bedingte Anweisung | ||
| C/C++ | if(Eingabe==1) |
if(Eingabe==2) |
if(Eingabe==1) Bruttopreis
|
|
Die Bedingungen, unter denen ein Ablaufpfad abgearbeitet wird, sind zumeist Vergleiche.
Allgemein ausgedrückt sind solche Bedingungen Wahrheitsausdrücke (boolesche Ausdrücke).
Deren Werte sind zur Ablaufzeit immer entweder wahr (true) oder falsch(false).
Die hinter der runden Bedingungsklammer, z.B. (Eingabe==1), aufgeführte Anweisung wird
nur dann abgearbeitet, wenn der boolesche Ausdruck (Bedingung) zur Laufzeit true ergibt.
Der auf Gleichheit prüfende Operator ist ==. Ein einfaches
Gleichheitszeichen wäre eine Zuweisung - ein häufiger Anfängerfehler.
Sollen mehr als eine Anweisung bedingt ausgeführt werden, dann müssen diese in einem
Paar geschweifter Klammern gebündelt werden.
In einer zweiseitig bedingten Anweisung (Abb. oben rechts) wird der Pfad hinter
else dann abgearbeitet, wenn die Bedingung nicht erfüllt ist,
d.h. wenn der boolesche Ausdruck false ergibt. Auch hinter else sind mehrere Anweisungen in
geschweiften Klammern einzuschließen.
Skizzieren Sie die Zusammensetzung der beiden Verzweigungen (Abb. oben links und Mitte)! Schreiben Sie dazu das Programm (den Quelltext)! Die beiden bedingten Anweisungen müssen im Quelltext untereinander stehen, weil es nebeneinander angeordnete Quelltexte nicht gibt. Projekt: bruttonetto1
Die beiden einseitig bedingten Anweisungen kann man auch kürzer als zweiseitig bedingte Anweisung schreiben, weil die beiden Bedingungen komplementär (ergänzend, gegenteilig) sind. Erstellen Sie dazu das Programm! Projekt: bruttonetto2