# Pseudocode, PAP, Struktogramm #### Vorgehensweise - Aufgabenstellung lesen & verstehen - Was ist der Zweck des Programms? - Welche Eingaben, Verarbeitungen und Ausgaben gibt es? - Eingaben Identifizieren - Was bekommt die Funktion als Parameter oder von außen übergeben? - Verarbeitung logisch zerlegen - Rechenschritte, Bedingungen, Schleifen? Was passiert wann? - Gibt es Rechenvorschriften wie "abwechselnd mit 1 und 3 gewichten"? Notieren! - Ergebnis/Ausgabe festlegen - Was soll am Ende zurückgegeben oder angezeigt werden? #### Aufgaben Für den Onlineversand sollen die Weinflaschen mit Barcode-Aufkleber versehen werden, der nähere Informationen zum Wein enthält. Der Barcode besteht aus zehn Ziffern. 123-456-78-9-p - Ziffern 1 bis 3: Schlüssel für Region - Ziffern 4 bis 6: Schlüssel für Rebsorte - Ziffern 7 - 8: Jahrgang - Ziffer 9: Geschmacksangabe (lieblich, halbtrocken, trocken ...) - Dazu kommt an der 10. Stelle eine Prüfziffer p. Die Prüfziffer soll nach folgender Beschreibung errechnet werden: - Die einzelnen Ziffern werden alternierend gewichtet von Links nach Rechts mit 1 und 3: - Ziffer\_1 x 1, Ziffer\_2 x 3 .... Ziffer\_9 \* 1 - Die 9 gewichteten Produkte werden addiert. - Die Prüfziffer ist die Differenz der Summe zum nächstkleineren Vielfachen von 10 (modulo 10) ``` function ermittlePrüfziffer(int[] barcode) { int pruefziffer = 0 für i = 0; i < barcode.laenge; i++ { wenn (i % 2 = 0) { pruefziffer += barcode[i] * 3 } sonst { pruefziffer += barcode[i] * 1 } } pruefziffer = (10 - (pruefziffer % 10)) % 10 rueckgabe pruefziffer } ``` Alle aktuell vorhandenen Barcodes der Weine und deren Jahresabsatz sind in einer zweidimensionalen Tabelle "Absatz" in folgender Form gespeichert:
Region | Rebsorte | Jahrgang | Geschmacksrichtung | Absatz in Stk. |
123 | 456 | 78 | 9 | 46 |
333 | 125 | 20 | 4 | 998 |
... | ... | ... |
Datum | MitgliedID | LeistungID | AnzahlStunfrn |
01.04.2021 | 100062 | 100076 | 2 |
11.04.2021 | 100062 | 100076 | 3 |
10.04.2021 | 100062 | 500123 | 1 |
13.04.2021 | 201235 | 200234 | 1 |
14.04.2021 | 201235 | 200234 | 1 |
07.04.2021 | 201235 | 200356 | 1 |
Nr | MitgliedID | Name | Vorname | LeistungID | Leistung | AnzahlStunden | Stundensatz | Gesamt |
1 | 100062 | Clausen | Jens | 100076 | Gießen | 5 | 6,00 | 30,00 |
2 | 100062 | Clausen | Jens | 500123 | Umgraben | 1 | 6,00 | 6,00 |
Summe | 36,00 | |||||||
1 | 201235 | Rader | Sabrina | 200234 | Hausputz | 2 | 6,00 | 12,00 |
2 | 201235 | Rader | Sabrina | 200356 | Einkauf | 1 | 6,00 | 6,00 |
Summe | 18,00 | |||||||
Gesamtsumme | 54,00 |
hole\_satz() : String | Liest den nächsten Datensatz der Journal-Tabelle in eine Zeichenkette ein. Kann kein Satz mehr gelesen werden, liefert die Funktion den String "". |
lese\_m\_id(satz:string):Integer | Ermittelt die MitgliedID aus Satz |
lese\_l\_id(satz:string):Interger | Ermittelt die LeistungsID aus Satz |
lese\_anz\_std(satz: string):Integer | Ermittelt die Anzahl der Stunden aus Satz |
schreibe\_kopf() | Schreibt die Kopfzeile der Positionen-Tabelle |
schreibe\_daten ( nr: Integer, mitgliedid: Integer, leistungid: Integer, anzahlstunden: Integer, stundensatz: Double, summe: Double ) | Schreibt eine Datenzeile in der geforderten Darstellung. Name, Vorname und Leistung werden automatisch aus mitgliedid und leistungid ermittelt. |
schreibe\_summe(summe: Double) | Schreibt die (berechnete) Summe für ein Mitglied |
schreibe\_gsumme(gsumme: Double) | Schreibt die (berechnete) Gesamtsumme des Journals |