- 1 - Martin Kastner Versuch einer Kategorisierung der „einfachen“ Beispielsammlung Bekanntlich kann beinahe jedes Beispiel in beliebig vielen Programmiersprachen umgesetzt werden – wobei sich manche besser oder auch weniger gut dafür eignen. Für diese Lehrveranstaltung sollten wir uns auf die Programmiersprachen Excel mit VBA, Java Script, PHP und Java „beschränken“ und uns mit der „einfachen“ Beispielsammlung beschäftigen. Bei jedem der zwanzig Beispiele könnte man beliebig ausschweifen und unzählige Varianten gegenüberstellen – was freilich einen großen Einfluss auf die Daten- und Ablaufstruktur und den Schwierigkeitsgrad hätte. Aus diesem Grund habe ich mich entschlossen, mich (vorerst) nicht auf die praktische Umsetzung zu stürzen, sondern für jedes Beispiel eine der vier Programmiersprachen vorzuschlagen und diese (mögliche) Umsetzung zu kategorisieren. Ich habe mich jeweils für die Variante entschieden, mit der das Beispiel möglichst einfach und effizient zu lösen ist – meine Meinung ist allerdings sehr subjektiv, da meine persönlichen Erfahrungen mit diesen vier Sprachen kaum über „Hello world!“-Programme hinausgehen. Ad (01) Benzinverbrauch, Euro-Umrechnung: Hier bietet sich Excel an – eine Unterstützung durch VBA ist nicht nötig. Ich gehe davon aus, dass die Daten in Spalten – und nicht einzeln – eingegeben werden. Bei dieser Umsetzung stehen die Arithmetik und die Datenmanipulation (Genauigkeit, Runden) im Vordergrund. Ad (02) BMI: Dieses Beispiel würde ich mit Java lösen, geschachtelte Alternativen können damit recht einfach realisiert werden. Für die Ein- und Ausgabe genügt die Eingabeaufforderung bzw. Shell. Als Datenstruktur kann Integer oder Float verwendet werden. Ad (03) Skelettfund: Die geschachtelten Alternativen können in Java einfach umgesetzt werden. Interessant ist hier die Mischung zwischen verschiedenen Datenstrukturen, z.B. könnte das Geschlecht als Zeichen oder numerisch codiert eingelesen werden. Ad (04) Berechnung des Ostersonntagstermines: Mit den Excel-Funktionen lässt sich das Beispiel ohne komplizierte Syntax umsetzen. Die Alternative WENN() ist nicht geschachtelt und damit auch noch in Excel übersichtlich. Die Aufteilung eines Algorithmus in Einzelschritte kann hier einer „Megaformel“ gegenübergestellt werden. Für die Berechnung werden die ExcelFunktionen REST() und QUOTIENT() verwendet. Ad (05) Kleinste von 3 Zahlen: Für geschachtelte Alternativen scheint mir wieder Java die ideale Sprache zu sein. Eine Verwendung von Arrays ist für drei Zahlen noch nicht notwendig bzw. hilfreich. Ganzzahlige Zufallszahlen können hier verwendet werden. - 2 - Martin Kastner Ad (06) Zeichenerkennungsprogramm: Obwohl geschachtelte Alternativen in Excel nicht gerade übersichtlich sind, würde ich für dieses Beispiel Excel verwenden – einfacher kann es nirgends gehen. Die ASCIINummer kann durch die Excel-Funktion CODE() ermittelt werden. Ad (07) Kleines Einmaleins: In Excel lässt sich die zugrunde liegende Spaltenstruktur schnell und einfach nutzen – man braucht nur noch relative und absolute Zellbezüge. Ad (08) Turmrechnung: Auch hier ist Excel wieder unschlagbar. Ad (09) Lohnsteuer: Um das Ergebnis anschaulich darstellen zu können, würde ich Excel verwenden. Die einzelnen Stufentarife können (und sollten auch) tabellarisch ausgegeben werden – nicht einfach nur das Endergebnis ausgeben. Damit könnte auch ein Beitrag zum besseren Verständnis der Angabe geleistet werden. Ad (10) Zahlenraten: Das ist ein „klassisches“ Beispiel für ein Programmierbeispiel mit einer Schleife und Alternativen. Die Ausgabe kann zeilenweise in einer Eingabeaufforderung bzw. Shell erfolgen. Somit würde ich die Verwendung von Java empfehlen. Zufallszahlen müssen hier verwendet werden (im Gegensatz zu Beispiel 5). Ad (11) Rekorde in einem Jahrhundert: In Excel kann man hundert Werte (pro Jahrhundert) leicht durch Zufallszahlen erstellen und diese Jahrhunderte durch Statistikfunktionen auswerten. Die Niederschlagsobergrenze sollte aber zuvor festgesetzt werden. Ad (12) Irrfahrt in der Ebene: Für dieses Beispiel scheint mir ein Java Applet sinnvoll – wenngleich ich keine Ahnung habe, wie man so etwas realisiert. / Ad (13) Ein Reaktionsspiel: Ich vermute, dass die zufälligen Stellen, an denen die Zahlen ausgegeben werden sollen, mittels VBA am einfachsten angesprochen werden können – hier kann man die Tabellenstruktur von Excel ausnutzen. Die Rückmeldung kann mit einer Alternative realisiert werden. Ad (14) Zahlenfolgen: Wenn das Bildungsgesetz gegeben bzw. ersichtlich ist, kann eine beliebig lange Zahlenfolge in Excel mittels Zellreferenzen durch kopieren (ziehen) erstellt werden. Ad (15) Prüfziffer: Für dieses Beispiel würde ich Java heranziehen und die ISBN-Nummer in einem Array abspeichern. Die Alternativen und die Berechnung des Rests sind hier einfach – die größere Herausforderung ist die korrekte Abfolge der einzelnen Schritte und Speichern eventueller Zwischenergebnisse. - 3 - Martin Kastner Ad (16) Prämiensparen: Wenn die Formeln zur Berechnung des Kapitals aus der Mathematik bekannt sind, können diese direkt in Excel übertragen werden. Ad (17) Das Abkühlungsproblem: Mittels Java kann die Temperatur in einer Schleife berechnet und ausgegeben werden. Als Datenstruktur sind hier sowohl ganze als auch Dezimalzahlen denkbar – die Abbruchbedingung muss darauf abgestimmt sein. Ad (18) Algorithmus zur Bestimmung des ggT: Eine Schleife mit einer Abbruchbedingung kann auch bei diesem Beispiel mit Java gut realisiert werden. Die Ganzzahldivision und der Rest werden dazu benötigt. Ad (19) Ulam-Folge: Die Alternative kann in Excel problemlos realisiert werden (wie wir schon gesehen haben). Auch hier wird die Excel-Funktion REST() benötigt. Ad (20) Zahlenumwandlung: Eine Schleife mit einer Abbruchbedingung kann auch bei diesem Beispiel mit Java gut realisiert werden. Die Ganzzahldivision und der Rest werden dazu benötigt. Eine Umsetzung mit Java Script wäre dann zweckmäßig, wenn die HTML-Formularstruktur gewinnbringend eingesetzt werden könnte – und das ist (aus meiner Sicht) in keinem Beispiel der Fall. Ähnliches ist auch für PHP der Fall, außerdem gibt es keinen Nutzen, den man aus der Server-Client-Beziehung schöpfen könnte. Im Sinne einer möglichst einfachen Lösung, habe ich auf diese beiden Sprachen verzichtet.