PÜ 5: Prämienberechnung
Zielstellung und Szenario:
In den vergangenen Jahren mutierte die Struktogrammdarstellung
oft zum Fetisch, indem die Schüler angehalten wurden, doch jede
auch noch so profane Problemlösung zunächst als Struktogramm
"aufzumalen".
Deren Gegenreaktion: Oft wurde der Algorithmus gleich in
Programmiersprache ausformuliert und erst im Nachgang ein
liebloses Struktogramm dazu hingezeichnet - eine den Algorithmiker
schmerzende Vorgehensweise.
Das nachfolgende Problem ist ausreichend einfach für den
Unterricht, aber kompliziert genug, um die meisten
"Sofortprogrammierer" an ihre Grenzen zu führen. Ergo
soll es die Zweckmäßigkeit von Struktogrammen bewusst machen und
gleichzeitig den sicheren Umgang mit ihnen festigen.
Problemformulierung:
Unter folgenden Bedingungen zahlt ein
Betrieb an seine Mitarbeiter eine Jahresendprämie:
Beträgt das Betriebszugehörigkeit weniger als ein Jahr, wird keine Prämie gezahlt;
beträgt sie mindestens ein Jahr aber weniger als 6 Jahre, erhält man 200 DM.
Bei einer Betriebszugehörigkeit von sechs oder mehr Jahren bekommt man 80 DM dazu und für jedes geleistete Dienstjahr 20 DM.
Beträgt im letzteren Falle das Lebensalter 50 oder mehr Jahre, so wird nochmals eine Zulage von DM 50 gezahlt. Problemanalyse (Vorbetrachtung)
Betriebszu-
gehörigkeit | Lebensalter | Prämie |
3 Jahre | 28 | ? |
7 Jahre | 38 | ? |
12 Jahre |
48 |
? |
20 Jahre |
58 |
? |
Zunächst wird diese Tabelle angeschrieben,
und nach vermutlichen Lösungen für die einzelnen Fälle
gefragt. Mit ziemlicher Sicherheit kommen für jeden Fall
verschiedene Antworten zustande, die mit Fragezeichen
versehen und notiert werden.
Nach Entwicklung des Struktogramms werden die Antworten
verifiziert und nach der Programmerstellung noch einmal.
Der Effekt ist meist verblüffend ... ;-)
Lösungsalgorithmus als Struktogramm:
Variablen:
bez.: Betriebszugehörigkeit,
la: Lebensalter,
p: Prämie.
Anmerkung:
Zur inhaltlich korrekten Darstellung der obigen Formulierungen in
Struktogrammform sind mehrere (vielleicht weitaus elegantere)
Lösungen denkbar.
Im vorliegenden Fall wurde bewusst eine abfolgegleiche grafische
Repräsentation des verbalen Algorithmus gewählt, um den Einsteiger
die inhaltliche Übereinstimmung beider Darstellungsformen besser
sichtbar zu machen.
Formular:
Um
sukzessive mit weiteren Komponenten vertraut zu machen,
wurden hier zwei RadioButtons, angeordnet in einer
GroupBox, zur "Eingabe" des Lebensalters gewählt.
Da der Algorithmus nicht das genaue Alter benötigt,
scheint diese Variante zur Erhöhung der
Nutzerfreundlichkeit recht sinnvoll, reicht doch nunmehr
ein Mausklick zur Eingabe der Altersstufe aus.
Bei der Programmierung der Ereignisbehandlungsroutine müssen
diese neuen Eingabekomponenten natürlich berücksichtigt
werden.
Prozedur zur Berechnung
procedure
TForm1.Button1Click(Sender: TObject);
var bez, p: integer;
begin
bez := StrToInt(Edit1.Text);
if bez < 1 then
p := 0
else begin
p := 200;
if bez
>= 6 then begin
p := p + 80 +
bez * 20;
{Falls Lebensalter >= 50}
if
RadioButton2.Checked then
p
:= p + 50;
end;{of
if}
end;{of
else}
Edit2.Text := IntToStr(p);
end;
|