Gestern hat ein Freund von mir mich verzweifelt um Hilfe gefragt. Es ging um eine Aufgabe in Informatik, die mittels PHP gelöst werden soll:
Der Benutzer muss zwei Zahlen eingeben: Anfangstemperatur und Endtemperatur (in °C).
Plausibilitätsprüfung: Keine Eingabe darf leer sein; Endtemperatur muss größer als die Anfangstemperatur sein. Das Programm erzeugt dann eine Ausgabe in Tabellenform, wo in 10er-Schritten die Temperatur in °C, °Farenheit und Kelvin angegeben werden. Anfangswert (°C) ist die eingegebene Anfangstemperatur, Endwert ist höchstens die Endtemperatur (°C).
Beispiel: Anfangstemperatur: 3, Endtemperatur: 30;
Ausgabe:
Temperatur in °C Temperatur in °F Temperatur in K
3 37,4 276,15
13 55,4 286,15
23 73,4 296,15
Bei dieser Aufgabe kam er nun nicht weiter, und da habe ich mich bereit erklärt ihm zu helfen. Was schließlich darin endete, das ich das Script für ihn geschrieben habe...;)
Werbeblocker aktiv?
Vermutlich aufgrund eines Werbeblockers kann an dieser Stelle leider keine Werbung angezeigt werden. Als Blog ist diese Website jedoch darauf angewiesen, um diverse Kosten abdecken zu können. Vielleicht möchtest du Servaholics ja in deinem Werbeblocker als Ausnahme hinzufügen und so unterstützen? 🙂
Jedenfalls habe ich es noch um eine Funktion erweitert: Es ist nun auch möglich, nicht nur die Anfangs- und die Endtemperatur anzugeben, sondern auch die Temperaturschritte, in denen die nächste Temperatur jeweils angezeigt wird - falls diese leer ist, wird der Standardwert von 5°C genommen. Leider habe ich keine Demo zur Hand, aber ich denke das Script und dessen Aufgabe sind relativ einfach zu verstehen. Funktionieren tut das ganze natürlich auch 🙂 Das ganze ist nicht weiter schwer, aber das ist ja nicht schlimm, oder? Der Code ist voll auskommentiert, es daher folgen jetzt keine weiteren Erklärungen von mir. Viel Spaß beim Benutzen 😉
(Wenn jemand Fehler findet, eine bessere Lösung hat als meine oder sonstiges zu meinem Code zu sagen hat - bitte tut das, ich habe ehrlich gesagt dazu noch nie eine Rückmeldung bekommen... würde mich einfach interessieren, ob ich grundsätzlich was falsch mache oder ob das alles so passt 😉)
<h2>Temparatur umrechnen</h2>
<form action="" method="post">
Anfangswert (in Celsius)
<input type="text" name="anfang" />
Endwert (in Celsius)
<input type="text" name="ende" />
Schritte (in Celsius)
<input type="text" name="schritte" />
<input type="submit" name="submit" value="Umrechnen" />
</form>
<?php
// Standardschritte, falls Schritte nicht angegeben werden
$schritte = 5;
// Die Funktion
function temperatur($anfang, $ende, $schritte){
echo "
<hr />
<h2>Ausgabe: Anfang = ".$anfang."°C Ende = ".$ende."°C Schritte = ".$schritte."°C</h2>
<span style=\"font-family: Courier;\">";
// While-Schleife - wird ausgeführt, solange Anfangswert + Schritte kleiner als Endwert ist (-2, damit Anfangs- und Endwert auch ausgegeben werden)
while($anfang + $schritte - 2 < $ende){
$k = $anfang + 273.15; // Kelvin berechnen
$f = ($anfang*1.8)+32; // Fahrenheit berechnen
echo $anfang." °C | "; // Celsius ausgeben
echo $k." K | "; // Kelvin ausgeben
echo $f." °F"; // Fahrenheit ausgeben
$anfang = $anfang + $schritte; // Anfang um Schritte erhöhen
}
echo "</span>";
}
// Falls der Senden-Button geklickt wurde...
if(isset($_POST['submit'])){
// Falls das Formular leer ist...
if($_POST['anfang'] != "" && $_POST['ende'] != ""){
// Falls der Anfangs- und der Endwert zu nah beieinander liegen
if($_POST['anfang'] + $_POST['schritte'] < $_POST['ende']){
// Wenn Schritte nicht angegeben sind, Standartwert setzen (5)
if($_POST['schritte'] != "") $schritte = $_POST['schritte'];
// Funktion aufrufen
temperatur($_POST['anfang'], $_POST['ende'], $schritte);
// Fehlermeldung, falls Angaben fehlerhaft sind
} else echo "Fehler: Wählen Sie einen kleineren Anfangs- oder einen größeren Endwert oder verkleinern Sie die Schritte.";
// Fehlermeldung, falls keine Eingabe vorhanden
} else echo "Fehler: Keine Eingabe.";
}
?>