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...;)

Werbung

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 😉)

  1. <h2>Temparatur umrechnen</h2>
  2. <form action="" method="post">
  3. 	Anfangswert (in Celsius)
  4. <input type="text" name="anfang" />
  5. 	Endwert (in Celsius)
  6. <input type="text" name="ende" />
  7. 	Schritte (in Celsius)
  8. <input type="text" name="schritte" />
  9. <input type="submit" name="submit" value="Umrechnen" />
  10. </form>
  11.  
  12. <?php
  13.  
  14. // Standardschritte, falls Schritte nicht angegeben werden
  15. $schritte = 5;
  16.  
  17. // Die Funktion
  18. function temperatur($anfang, $ende, $schritte){
  19.  
  20. 	echo "
  21. <hr />
  22. <h2>Ausgabe: Anfang = ".$anfang."°C Ende = ".$ende."°C Schritte = ".$schritte."°C</h2>
  23.  
  24. 	<span style=\"font-family: Courier;\">";
  25.  
  26. 	// While-Schleife - wird ausgeführt, solange Anfangswert + Schritte kleiner als Endwert ist (-2, damit Anfangs- und Endwert auch ausgegeben werden)
  27. 	while($anfang + $schritte - 2 < $ende){
  28.  
  29. 		$k = $anfang + 273.15; // Kelvin berechnen
  30. 		$f = ($anfang*1.8)+32; // Fahrenheit berechnen
  31.  
  32. 		echo $anfang." °C | "; // Celsius ausgeben
  33. 		echo $k." K | "; // Kelvin ausgeben
  34. 		echo $f." °F"; // Fahrenheit ausgeben
  35.  
  36. 		$anfang = $anfang + $schritte; // Anfang um Schritte erhöhen
  37.  
  38. 	}
  39.  
  40. 	echo "</span>";
  41.  
  42. }
  43.  
  44. // Falls der Senden-Button geklickt wurde...
  45. if(isset($_POST['submit'])){
  46.  
  47. 	// Falls das Formular leer ist...
  48. 	if($_POST['anfang'] != "" && $_POST['ende'] != ""){
  49.  
  50. 		// Falls der Anfangs- und der Endwert zu nah beieinander liegen
  51. 		if($_POST['anfang'] + $_POST['schritte'] < $_POST['ende']){
  52.  
  53. 			// Wenn Schritte nicht angegeben sind, Standartwert setzen (5)
  54. 			if($_POST['schritte'] != "") $schritte = $_POST['schritte'];
  55.  
  56. 			// Funktion aufrufen
  57. 			temperatur($_POST['anfang'], $_POST['ende'], $schritte);
  58.  
  59. 		// Fehlermeldung, falls Angaben fehlerhaft sind
  60. 		} else echo "Fehler: Wählen Sie einen kleineren Anfangs- oder einen größeren Endwert oder verkleinern Sie die Schritte.";
  61.  
  62. 	// Fehlermeldung, falls keine Eingabe vorhanden
  63. 	} else echo "Fehler: Keine Eingabe.";
  64.  
  65. }
  66.  
  67. ?>
Über den Autor:

Grafikdesigner, Webentwickler und Schreiberling. Außerdem Art Direktor und Redakteur beim Spongo. Liebt angebissene Äpfel!

Deine Meinung zu diesem Artikel?