In der ersten geforderten Programmieraufgabe (Aufgabe 4) der ersten Einsendeaufgabe geht es darum ein Programm zu schreiben, welches die Eingabe einer Temperatur in Fahrenheit erwartet und diese in Celsius umrechnet und den neuen Wert wieder ausgibt.
Meine Lösung sah wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
program FahrenheitCelsius (input, output); { liest Temperatur in Fahrenheit ein und gibt sie in Celsius wieder aus } var C, F : real; Test : string; begin writeln ('Bitte die Gradzahl in Fahrenheit eingeben: '); readln (F); { Berechnung des Celsius-Wertes } C := (5 * (F - 32)) / 9; writeln (C); readln (Test); end. { FahrenheitCelsius } |
Entgegen vielen Beispielcodes innerhalb des Kursbuches erfüllt mein Code die Anforderungen an die Kommentierung des Codes, die das Kursbuch witzigerweise selbst fordert 😀
Wenn ich mich korrekt erinnere sollte man immer angeben, dass das Programm sowohl eine Eingabe (input) erwartet wie auch eine Ausgabe (output) produziert. Hierzu gibt man dies so in Klammern hinter dem Programmnamen an:
1 2 |
program FahrenheitCelsius (input, output); { liest Temperatur in Fahrenheit ein und gibt sie in Celsius wieder aus } |
Eigentlich ist das nicht wirklich nötig und man könnte das auch einfach weglassen. Im Kursbuch wird es aber so vorgegeben. An sich vielleicht auch nicht ganz verkehrt, da man so immer sofort weiß dass das Programm Eingaben erfordert und eine Ausgabe produziert.
Benötigt werden für das eigentliche Programm maximal zwei Variablen des Datentyps „real“ um die Daten zu verarbeiten:
1 2 3 |
var C, F : real; Test : string; |
Der Datentyp real ist zu verwenden, da bei der Umrechnung von Fahrenheit in Celsius meistens Kommazahlen herauskommen werden und integer dafür unbrauchbar ist.
Die Variable Test habe ich nur für den ReadLine-Befehl am Ende des Programms genutzt, da das Programm nur auf eine Eingabe die nicht genutzt werden soll wartet, damit das Konsolenfenster nicht direkt wieder geschlossen wird. Das gleiche mussten wir in der Berufsschule sogar noch in C# machen, damit das Konsolenprogramm auch dort nicht direkt geschlossen wird.
Der Programmablauf zwischen „begin“ und „end.“ gibt nur die Anweisung aus, dass man die Gradzahl eingeben soll. Danach wird die Eingabe in die Variable F geschrieben und die Berechnung, wie sie auch in der Aufgabenstellung vorgegeben worden ist, durchgeführt und schlussendlich der errechnete Wert ausgegeben:
1 2 3 4 5 6 7 8 |
begin writeln ('Bitte die Gradzahl in Fahrenheit eingeben: '); readln (F); { Berechnung des Celsius-Wertes } C := (5 * (F - 32)) / 9; writeln (C); readln (Test); end. { FahrenheitCelsius } |
Zwar leidet die Übersichtlichkeit etwas darunter, aber man kann das Programm auch auf die Nutzung nur einer einzigen Variable reduzieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
program FahrenheitCelsius (input, output); { liest Temperatur in Fahrenheit ein und gibt sie in Celsius wieder aus } var Data : real; begin writeln ('Bitte die Gradzahl in Fahrenheit eingeben: '); readln (Data); { Berechnung des Celsius-Wertes } Data := (5 * (Data - 32)) / 9; writeln (Data); readln (Data); end. { FahrenheitCelsius } |
Die Ausgabe des Programms sieht dann, aufgrund der nicht begrenzten Kommastellen, wie folgt aus:
Ein kurzer Gegen-Check mit Google bestätigt das Ergebnis:
Hier sind beide Varianten als Lazarus-Projektdateien: