Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Beispiel 8 aus den Vorlesungsbeispielen (2) Struktogrammentwurf schrittweise.

Ähnliche Präsentationen


Präsentation zum Thema: "Beispiel 8 aus den Vorlesungsbeispielen (2) Struktogrammentwurf schrittweise."—  Präsentation transkript:

1 Beispiel 8 aus den Vorlesungsbeispielen (2) Struktogrammentwurf schrittweise

2 Laut Aufgabenstellung ist kein Rückgabewert gefordert, es muss also keine Funktion sein Laut Aufgabenstellung gibt es keine Argumente (leeres Klammernpaar) Deklarieren heißt, der Prozedur die Variablen bekanntzugeben, die verwendet werden sollen. In diesem Beispiel werden das vermutlich sein: –eine Variable für die Entgegennahme der einzugebenden Namen –eine Variable für das Datenfeld zur Erfassung der eingegebenen Namen –eine Variable als Schleifenzähler für die Eingabeschleife –eine Variable als Schleifenzähler für die Ausgabeschleife Deklarationen: lassen wir erstmal leer, ergibt sich im weiteren Entwurfsprozess Prozedur NamenErfassen ()

3 Initialisieren heißt, den betreffenden Variablen einen definierten Anfangswert zu geben Näheres wird sich im weiteren Entwurfsprozess ergeben Deklarationen: lassen wir erstmal leer Platz für Initialisierung Prozedur NamenErfassen ()

4 Die Anzahl der einzugebenden Namen und damit der Schleifendurchläufe ist unbekannt Die Eingabemöglichkeit (Inputbox) muss mindestens einmal erscheinen Deshalb verwenden wir als Eingabeschleife eine fußgesteuerte Bedingungsschleife Wir lassen ausreichend Platz für –Eingabe –Verzweigung zur Erkennung der beendenden Leereingabe –Erweiterung und Wertzuweisung Datenfeld Deklarationen: lassen wir erstmal leer Platz für Initialisierung Prozedur NamenErfassen ()

5 Die fußgesteuerte Bedingungsschleife soll solange laufen, bis die Eingabe eine Leereingabe ist (zwei aufeinanderfolgende Anführungszeichen) Wir haben damit unsere erste Variable, die der Erfassung der eingegebenen Namen pro Schleifendurchlauf dienen soll Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" Platz für Initialisierung Prozedur NamenErfassen ()

6 Die eingegebenen Namen werden in VBA mittels einer Inputbox erfasst und der Variablen eingabe zugewiesen In VBA: InputBox ("Bitte Namen eingeben") Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung Prozedur NamenErfassen ()

7 Um festzustellen, ob die Eingabe abgebrochen werden soll, benötigen wir eine Verzweigung WENN eingabe = "" DANN Meldung anzeigen und Prozedur verlassen Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung Prozedur NamenErfassen ()

8 WENN eingabe = "" DANN Meldung anzeigen und Prozedur verlassen Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung eingabe = "" ? WahrFalsch Prozedur NamenErfassen ()

9 WENN eingabe = "" DANN Meldung anzeigen und Prozedur verlassen Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" Prozedur NamenErfassen ()

10 WENN eingabe = "" DANN Meldung anzeigen und Prozedur verlassen Deklarationen: eingabe - zur Erfassung der Namen Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" Exit Do Prozedur NamenErfassen ()

11 Bei jedem Schleifendurchlauf wird eine neue Zeile an das Datefeld a() angehängt In VBA (einzeilig): ReDim Preserve a(1 to i) Preserve ist erforderlich, um bisherige Inhalte des Datenfeldes nicht zu löschen Wir brauchen also zwei weitere Variablen: –für das Datenfeld zum Speichern der eingegebenen Namen –einen Schleifenzähler, um die Namen an die korrekte Position/Zeile zu schreiben Exit Do ist erforderlich, damit die Folgeschritte nicht ausgeführt werden Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung Bis eingabe = "" eingabe = Wert der Input-Box Platz für Initialisierung eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" Datenfeld erweitern (ReDim Preserve) Exit Do Prozedur NamenErfassen ()

12 i wir vor der Schleife mit 1 initialisiert, um im Datenfeld mit Zeile 1 zu beginnen Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung Bis eingabe = "" eingabe = Wert der Input-Box i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" Datenfeld erweitern (ReDim Preserve) Exit Do Prozedur NamenErfassen ()

13 Inhalt der Variablen eingabe an Position/Zeile i des Datenfeldes schreiben Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung Bis eingabe = "" eingabe = Wert der Input-Box eingabe in Datenfeld übernehmen a(i) = eingabe i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" Datenfeld erweitern (ReDim Preserve) Exit Do Prozedur NamenErfassen ()

14 Ganz wichtig: Inhalt des Schleifenzählers i um 1 erhöhen, um den nächsten Schleifendurchlauf vorzubereiten Nach einer Leereingabe in die Inputbox ( eingabe="" ) wird die Eingabeschleife verlassen. Die eingegebenen Namen befinden sich in der Eingabereihenfolge im Datenfeld a() und können nach der Eingabeschleife weiterverwendet werden (s. Folgeschritte). Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung Bis eingabe = "" eingabe = Wert der Input-Box eingabe in Datenfeld übernehmen a(i) = eingabe i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" i = i + 1 Datenfeld erweitern (ReDim Preserve) Exit Do Prozedur NamenErfassen ()

15 Die Ausgabe der eingegebenen Namen erfolgt mittels einer Schleife Die Anzahl der eingegebenen Namen und damit der Schleifendurchläufe ist bekannt bzw. kann durch Anwendung der VBA- Funktion UBound() leicht festgestellt werden Daher verwenden wir zur Ausgabe eine Zählschleife Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung Bis eingabe = "" eingabe = Wert der Input-Box eingabe in Datenfeld übernehmen a(i) = eingabe i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" i = i + 1 Datenfeld erweitern (ReDim Preserve) Exit Do Prozedur NamenErfassen ()

16 Die Zählschleife läuft von 1 bis zur Obergrenze des Datenfeldes a() Damit habe wir mit j eine weitere Variable zum Deklarieren j muss nicht explizit initialisiert werden. Das erledigt der Ausdruck j=1 in der Laufbedingung der Zählschleife Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung j - Schleifenzähler für Ausgabe Bis eingabe = "" eingabe = Wert der Input-Box eingabe in Datenfeld übernehmen a(i) = eingabe i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" i = i + 1 Datenfeld erweitern (ReDim Preserve) Exit Do Für j = 1 bis Obergrenze von a() Prozedur NamenErfassen ()

17 In VBA: Ausgabe der einzelnen Datenfeldelemente = eingegebene Namen in das Direktfenster mit Debug.Print FERTIG Deklarationen: eingabe - zur Erfassung der Namen a () - Datenfeld der erfassten Namen i - Schleifenzähler für Erfassung j - Schleifenzähler für Ausgabe Bis eingabe = "" eingabe = Wert der Input-Box eingabe in Datenfeld übernehmen a(i) = eingabe i = 1 eingabe = "" ? WahrFalsch Meldung "Eingabe wird beendet" i = i + 1 Datenfeld erweitern (ReDim Preserve) Exit Do Für j = 1 bis Obergrenze von a() Ausgabe der Datenfeld-Elemente a (j) Prozedur NamenErfassen ()


Herunterladen ppt "Beispiel 8 aus den Vorlesungsbeispielen (2) Struktogrammentwurf schrittweise."

Ähnliche Präsentationen


Google-Anzeigen