zurück weiter

C++

G.Eichelsdörfer - Staatliche Technikerschule Weilburg

Ablaufstrukturen: Schleifen für Wiederholungen (Iterationen) (3)

Alternativen zur Realisierung von "bruttoiter"

Wertinitialisierung vor der Schleifenbedingung Im Programm "bruttoiter" wird an zwei Stellen ein Wert für die Variable "Netto" eingelesen. Dies ist nicht servicefreundlich. Wenn das Einlesen für "Netto" aus irgendeinem Grund anders gestaltet werden soll (Kunde wünscht das vielleicht), dann muss diese Änderung an zwei Stellen durchgeführt werden. In einem umfangreicheren Programm kann eine dieser Stellen leicht übersehen (vergessen) werden.

Wie kann bei Beibehaltung der Schleife das Einlesen an nur einer Stelle erfolgen?
Das Einlesen vor der Schleife ist deshalb erforderlich, weil der Wert von "Netto" beim Eintritt in die Schleife definiert (nicht zufällig) sein soll. Es gibt aber noch eine andere Möglichkeit, den Wert von "Netto" vor der Schleife zu definieren - per Wertzuweisung. Wenn die Variable "Netto" vor der Schleife beispielsweise den Wert 1 erhält, ist die Schleifenbedingung erfüllt.

Auftrag 4

Vervollständigen Sie das obige unvollständige Struktogramm!
Überdenken Sie dazu die zweckmäßige Reihenfolge der Anweisungen im Schleifenrumpf!
Erstellen und testen Sie das Programm!
Projekt: bruttoiter2

Frage 4:
Worin besteht der wesentliche Unterschied im Ablauf zwischen dem vorherigen Programm "bruttoiter" und diesem Programm "bruttoiter2"?
Hinweis: Anzahl an Schleifendurchläufen

Fußgesteuerte (nichtabweisende) Schleife

Die Wirkungsweise des Programms gemäß Auftrag 4 lässt sich geeigneter durch eine fußgesteuerte Schleife realisieren. Vergegenwärtigen Sie sich dazu den Ablauf des Programms.

Der Schleifenrumpf kann ohne Kontrolle betreten, der Nettowert eingelesen, verarbeitet und der Bruttowert ausgegeben werden. Hierzu ist die Wiederholkontrolle am Schleifenende (Schleifenfuß) anzuordnen.

Strukturblock einer fußgesteuerten Schleife Der entsprechende C++-Quellcode
Strukturblock einer fußgesteuerten Schleife do
{
 <erste Anweisung>
  ...
 <letzte Anweisung>
} while(<boolescher Ausdruck>);
Der boolesche Ausdruck am Schleifenende ist die Wiederholungsbedingung und nicht etwa die Abbruchbedingung (wie dies beispielsweise in der Programmiersprache Pascal der Fall ist).

Auftrag 5

Erstellen Sie zur Bruttowert-Berechnung ein Struktogramm und den C++-Quelltext mit einer fußgesteuerten Schleife!
Projekt "bruttoiter3"

Was ist zu tun, damit sich "bruttoiter2" bzw. "bruttoiter3" genau so verhält wie "bruttoiter"?
Zu diesem Zweck darf kein Bruttowert berechnet und ausgegeben werden, wenn der Anwender einen nicht positiven Wert für Netto eingibt. Die Verarbeitung und Ausgabe darf also nur bedingt erfolgen.

Auftrag 6

Erstellen Sie dazu das entsprechende Programm mit einer fußgesteuerten Schleife und einer bedingten Anweisung (Struktogramm und C++-Quelltext)! Sie mögen die Erweiterungen von Auftrag 3 mit einfließen lassen.
Projekt: bruttoiter4