Przejdź do głównej zawartości

Konwerter temperatur

Stworzysz Konwerter temperatur - aplikacje umozliwiajaca przeliczanie temperatury pomiedzy roznymi skalami (Celsjusza, Fahrenheita, Kelwina). Użytkownik wprowadza wartość temperatury, wybiera skale źródłowa i docelowa, a system automatycznie przelicza i wyświetla wynik. Historia konwersji jest zapisywana do pliku JSON.

Czego się nauczysz?

  • Obsługi formularzy HTML z listami wyboru
  • Implementacji wzorow matematycznych w PHP
  • Walidacji danych z ograniczeniami fizycznymi (zero bezwzgledne)
  • Zapisu i odczytu historii operacji z plikow JSON

W prawdziwej pracy...

Konwertery jednostek sa podstawa wielu aplikacji - od stacji meteorologicznych, przez aplikacje kulinarne, po systemy naukowe i przemysłowe. Umiejetnosc implementacji precyzyjnych przeliczen z walidacja zakresow (np. temperatura nie może być nizsza niz zero bezwzgledne) to ważna kompetencja programisty.

  1. Formularz wprowadzania danych Użytkownik podaje wartość temperatury oraz wybiera z list rozwijanych skale źródłowa (np. Celsjusz) i docelowa (np. Fahrenheit).

  2. Przeliczenie temperatury System stosuje odpowiedni wzor konwersji i wyświetla wynik z odpowiednia jednostka (np. “20°C = 68°F”).

  3. Zapis do historii Każda konwersja jest zapisywana do pliku JSON wraz z wartosciami, skalami i data wykonania.

Przykładowa struktura pliku JSON:

{
"conversions": [
{
"id": 1,
"from_scale": "C",
"to_scale": "F",
"input_value": 20,
"result": 68,
"created_at": "2026-02-13 10:30:00"
},
{
"id": 2,
"from_scale": "F",
"to_scale": "K",
"input_value": 32,
"result": 273.15,
"created_at": "2026-02-13 11:45:00"
},
{
"id": 3,
"from_scale": "K",
"to_scale": "C",
"input_value": 300,
"result": 26.85,
"created_at": "2026-02-13 12:00:00"
}
]
}

Wymagane funkcje:

  • Formularz z konwersja Celsjusz ↔ Fahrenheit
  • Walidacja danych w PHP (poprawna liczba)
  • Obliczenie i wyświetlenie wyniku z jednostka
  • Zapis każdej konwersji do pliku JSON
  • Prosty interfejs CSS (czytelny formularz)

Przykładowy scenariusz:

Użytkownik wchodzi na strone i widzi formularz. Wpisuje 20, wybiera “z Celsjusza na Fahrenheit”. Po kliknieciu “Przelicz” widzi wynik: “20°C = 68°F”. Konwersja zostaje zapisana do pliku JSON.

Ocena: 3.0

Wzory konwersji:

function convertTemperature($value, $from, $to) {
// Najpierw przelicz na Celsjusze
switch ($from) {
case 'C':
$celsius = $value;
break;
case 'F':
$celsius = ($value - 32) * 5 / 9;
break;
case 'K':
$celsius = $value - 273.15;
break;
default:
return null;
}
// Potem przelicz z Celsjuszy na docelowa skale
switch ($to) {
case 'C':
return $celsius;
case 'F':
return $celsius * 9 / 5 + 32;
case 'K':
return $celsius + 273.15;
default:
return null;
}
}

Walidacja zera bezwzglednego:

function validateTemperature($value, $scale) {
$min_values = [
'C' => -273.15, // Zero bezwzgledne w Celsjuszach
'F' => -459.67, // Zero bezwzgledne w Fahrenheitach
'K' => 0 // Zero bezwzgledne w Kelwinach
];
if ($value < $min_values[$scale]) {
return "Temperatura nie może być nizsza niz zero bezwzgledne ("
. $min_values[$scale] . "°" . $scale . ")";
}
return null; // brak błędu
}

Zapis do JSON:

$data = json_decode(file_get_contents('history.json'), true) ?? ['conversions' => []];
$data['conversions'][] = [
'id' => count($data['conversions']) + 1,
'from_scale' => $from,
'to_scale' => $to,
'input_value' => $value,
'result' => round($result, 2),
'created_at' => date('Y-m-d H:i:s')
];
file_put_contents('history.json', json_encode($data, JSON_PRETTY_PRINT));

Formatowanie wyniku z jednostka:

function formatTemperature($value, $scale) {
$symbols = ['C' => '°C', 'F' => '°F', 'K' => ' K'];
return number_format($value, 2, ',', ' ') . $symbols[$scale];
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!