Przejdź do treści

Temat 03 · 2 × 45 minINF.03

Liczby, operatory i konwersja typów

Prawie każde zadanie praktyczne INF.03 ze skryptem JavaScript coś liczy: koszt paliwa, cenę zabiegów, liczbę puszek farby, ratę kredytu. Dane przychodzą z formularza jako napisy, więc zanim policzysz, musisz je zamienić na liczby – a potem wynik zaokrąglić i wypisać w dokładnie takim formacie, jakiego żąda arkusz. W tej lekcji poznasz operatory arytmetyczne, ich skrócone wersje (ulubiony temat części pisemnej), obiekt Math i trzy sposoby konwersji napisu na liczbę.

Operatory arytmetyczne

OperatorDziałaniePrzykładWynik
+dodawanie (dla napisów: sklejanie!)7 + 29
-odejmowanie7 - 25
*mnożenie7 * 214
/dzielenie – zawsze z ułamkiem7 / 23.5
%reszta z dzielenia (modulo)7 % 21
**potęgowanie2 ** 101024

Kolejność jak w matematyce: najpierw **, potem *, /, %, na końcu + i -. Nawiasy zmieniają kolejność. Gdy masz wątpliwości, dodaj nawiasy – to nic nie kosztuje, a kod łatwiej czytać.

Sprawdź się

Co wypisze ten kod?

console.log(2 + 3 * 4);
console.log((2 + 3) * 4);
console.log(10 % 3);
arytmetyka.js
console.log(2 + 3 * 4);        // 14 – mnożenie najpierw
console.log((2 + 3) * 4);      // 20
console.log(7 / 2);            // 3.5 – nie ma dzielenia całkowitego
console.log(7 % 2);            // 1 – reszta
console.log(10 % 5);           // 0 – dzieli się bez reszty
console.log(2 ** 3);           // 8
console.log(1 / 0);            // Infinity – dzielenie przez zero nie rzuca błędu
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Reszta z dzielenia % – do czego służy

Operator % wraca na egzaminie częściej, niż się wydaje. Trzy zastosowania:

  • parzystość: n % 2 === 0 oznacza liczbę parzystą (pętla sumująca „liczby parzyste” to typowe pytanie z arkuszy EE.09),
  • cykliczne liczenie: (indeks + 1) % 7 daje 1, 2, …, 6, 0 – zawijanie galerii zdjęć (lekcja Stan aplikacji),
  • rozkład na jednostki: sekundy % 60 to sekundy „po minucie”, liczba % 2 to ostatnia cyfra binarna (konwersja na system dwójkowy z arkusza ze stycznia 2025, lekcja Pętle).

Dzielenie całkowite

JavaScript nie ma osobnego operatora dzielenia całkowitego (jak // w Pythonie czy div). Używasz Math.floor(a / b) dla liczb dodatnich albo Math.trunc(a / b), które ucina część ułamkową także dla ujemnych.

dzielenie-calkowite.js
const sekundy = 3725;
console.log(Math.floor(sekundy / 60), "min", sekundy % 60, "s");   // 62 min 5 s
console.log(Math.floor(sekundy / 3600), "h");                       // 1 h
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Operatory skrócone i inkrementacja

Zapis suma = suma + 5 skraca się do suma += 5. Każdy operator arytmetyczny ma wersję z =:

SkrótZnaczyx po wykonaniu (dla x = 10)
x += 5x = x + 515
x -= 5x = x - 55
x *= 2x = x * 220
x /= 2x = x / 25
x %= 3x = x % 31
x++x = x + 1 (inkrementacja)11
x--x = x - 1 (dekrementacja)9
skrocone.js
let licznik = 0;
licznik++;             // 1
licznik += 10;         // 11
licznik *= 2;          // 22
licznik -= 2;          // 20
licznik /= 4;          // 5
console.log(licznik);
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

x++ i ++x oba zwiększają x o 1. Różnica pojawia się tylko, gdy użyjesz ich wewnątrz większego wyrażenia: x++ najpierw zwraca starą wartość, potem zwiększa; ++x najpierw zwiększa. W samodzielnej linii (licznik++;) nie ma różnicy – i tak najczęściej będziesz tego używać.

pre-post.js
let a = 5;
let b = a++;           // b dostaje 5, potem a staje się 6
let c = ++a;           // a staje się 7, c dostaje 7
console.log(a, b, c);  // 7 5 7
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Równoważność zapisów – pytanie egzaminacyjne

Część pisemna lubi pytać: „który kod jest funkcjonalnie równoważny?”. Metoda: policz wartość końcową w każdym wariancie. Nie czytaj „na oko”.

Sprawdź się

Który kod jest równoważny poniższemu?

x = 0;
x += 10;
rownowaznosc.js
let x = 0; x += 10;                    console.log("oryginał:", x);
let a = 0; a--; a *= 9;                console.log("A:", a);
let b = 0; b++; b = b + 9;             console.log("B:", b);
let c = 10; c = c + 10;                console.log("C:", c);
let d = 0; d = d + 1; d *= 9;          console.log("D:", d);
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Liczby ułamkowe nie są dokładne

Komputer zapisuje liczby binarnie, a 0.1 w systemie dwójkowym jest ułamkiem okresowym – jak 1/3 w dziesiętnym. Stąd słynny wynik:

Sprawdź się

Co wypisze console.log(0.1 + 0.2)?

ulamki.js
console.log(0.1 + 0.2);             // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3);     // false!
console.log(19.99 * 3);             // 59.97 – tu akurat dobrze
console.log(1.1 * 3);               // 3.3000000000000003
console.log((1.1 * 3).toFixed(2));  // "3.30" – napis, zaokrąglony do 2 miejsc
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

liczba.toFixed(n) zaokrągla do n miejsc po przecinku i zwraca napis (żeby zachować zera na końcu, np. "5.00"). To idealne do wyświetlania cen. Jeżeli chcesz dalej liczyć, zamień wynik z powrotem na liczbę: Number(cena.toFixed(2)).

Obiekt Math

Math to wbudowany zbiór funkcji matematycznych. Wywołujesz je z kropką: Math.round(2.5).

FunkcjaCo robiPrzykładWynik
Math.round(x)zaokrągla do najbliższej całkowitej (.5 w górę)Math.round(2.5)3
Math.ceil(x)zaokrągla w górę (ang. ceiling – sufit)Math.ceil(2.1)3
Math.floor(x)zaokrągla w dół (ang. floor – podłoga)Math.floor(2.9)2
Math.trunc(x)ucina część ułamkowąMath.trunc(-2.9)-2
Math.abs(x)wartość bezwzględnaMath.abs(-7)7
Math.max(a, b, …)największa z podanychMath.max(3, 9, 4)9
Math.min(a, b, …)najmniejsza z podanychMath.min(3, 9, 4)3
Math.sqrt(x)pierwiastek kwadratowyMath.sqrt(16)4
Math.pow(a, b)potęga (to samo co a ** b)Math.pow(2, 3)8
Math.random()pseudolosowa liczba z przedziału [0, 1)Math.random()np. 0.7312…
Math.PIstała πMath.PI3.14159…
Sprawdź się

Co wypisze ten kod?

console.log(Math.round(2.5), Math.ceil(2.1), Math.floor(2.9));
zaokraglanie.js
console.log(Math.round(2.5), Math.round(2.4), Math.round(-2.5));   // 3 2 -2
console.log(Math.ceil(2.1), Math.ceil(2.0), Math.ceil(-2.1));      // 3 2 -2
console.log(Math.floor(2.9), Math.floor(-2.1));                     // 2 -3
console.log(Math.trunc(-2.9), Math.abs(-7));                        // -2 7
console.log(Math.max(3, 9, 4), Math.min(3, 9, 4));                  // 9 3
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

„Zaokrąglona w górę” to zawsze Math.ceil

Arkusz ze stycznia 2023 (INF.03-01-23.01) kazał obliczyć liczbę puszek farby: powierzchnia podzielona przez 4 m², „zaokrąglona w górę do liczby naturalnej”. Dla 37 m² potrzebujesz 9,25 puszki, czyli 10 – Math.round dałoby 9 i kryterium przepada. Słowa-klucze w arkuszu: „w górę”, „co najmniej” → ceil; „w dół”, „pełnych” → floor; „do najbliższej” → round.

puszki.js
const powierzchnia = 37;
const puszki = Math.ceil(powierzchnia / 4);
console.log("Liczba potrzebnych puszek:", puszki);   // 10
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Losowanie

Math.random() zwraca liczbę od 0 (włącznie) do 1 (wyłącznie), np. 0.4213. Żeby dostać liczbę całkowitą z zakresu, mnożysz, ucinasz w dół i przesuwasz. Zapamiętaj wzór – wraca w zadaniach z losowym tekstem czatu (czerwiec 2024) i w grach:

losowanie.js
// liczba całkowita od 0 do 8 (9 możliwości – jak indeksy tablicy 9 napisów)
const indeks = Math.floor(Math.random() * 9);
console.log("Indeks:", indeks);

// rzut kostką: od 1 do 6
const kostka = Math.floor(Math.random() * 6) + 1;
console.log("Kostka:", kostka);

// ogólnie: od min do max włącznie
const min = 10, max = 20;
const los = Math.floor(Math.random() * (max - min + 1)) + min;
console.log("Od 10 do 20:", los);
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik
Sprawdź się

Funkcja Math.random() w języku JavaScript

Konwersja napisu na liczbę

Z pola formularza, z prompt() i z atrybutów HTML dostajesz napisy. "120" to nie 120. Masz trzy narzędzia:

FunkcjaDziałanie"42""42.5""42px""3,5""""abc"
Number(x)cały napis musi być liczbą4242.5NaNNaN0NaN
parseInt(x)czyta cyfry od początku, ucina ułamek4242423NaNNaN
parseFloat(x)czyta liczbę od początku, z ułamkiem4242.5423NaNNaN
konwersja.js
console.log(Number("42"), Number("42.5"), Number("42px"), Number(""));
console.log(parseInt("42.9"), parseInt("42px"), parseInt("abc"));
console.log(parseFloat("42.9"), parseFloat("19.99 zł"), parseFloat("3,5"));
console.log(+"7", typeof +"7");          // skrót: jednoargumentowy plus = Number()
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Który wybrać?

  • parseFloat – domyślnie w zadaniach egzaminacyjnych: toleruje spacje i śmieci na końcu, zachowuje ułamek. parseFloat("19.99") → 19.99.
  • parseInt – gdy wartość ma być całkowita (liczba sztuk, rat). Uwaga: parseInt("3.9") daje 3 bez zaokrąglania.
  • Number – najściślejszy; pusty napis daje 0, a cokolwiek nieliczbowego – NaN. Dobry do walidacji.
  • Dla pól type="number" i type="range" istnieje też właściwość pole.valueAsNumber, która od razu zwraca liczbę (lub NaN dla pustego pola) – lekcja Odczyt kontrolek formularza.

Dlaczego "5" + 3 to "53", a "5" - 3 to 2

Operator + ma dwa znaczenia. Jeśli którakolwiek strona jest napisem, + skleja (a liczbę zamienia na napis). Pozostałe operatory (-, *, /, %) działają tylko na liczbach, więc same zamieniają napisy na liczby. To najczęstsza przyczyna złych wyników na egzaminie: dwie wartości z formularza dodane bez konwersji dają sklejony napis.

Sprawdź się

Co wypisze ten kod?

console.log("5" + 3);
console.log("5" - 3);
console.log("5" * "2");

Przewidź wynik każdej linii, zapisz, a dopiero potem uruchom:

przewidz-zanim-uruchomisz.js
console.log("5" + 3);        // "53"  – sklejenie
console.log("5" - 3);        // 2     – konwersja na liczbę
console.log("5" * "2");      // 10
console.log("10" / "4");     // 2.5
console.log(true + 1);       // 2     – true to 1 w arytmetyce
console.log(7 % 2);          // 1
console.log(1 + 2 + "3");    // "33"  – od lewej: 3, potem 3 + "3"
console.log("1" + 2 + 3);    // "123" – od lewej: "12", potem "123"
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Ostatnie dwie linie pokazują regułę: wyrażenie jest liczone od lewej do prawej, a + zmienia znaczenie w momencie, gdy napotka napis.

NaN – nieudane obliczenie

NaN („Not a Number”) to wartość typu number, która oznacza „to nie jest poprawna liczba”. Powstaje, gdy konwersja się nie uda (Number("abc")) albo działanie nie ma sensu (0 / 0, "abc" * 2). Dwie własności, które zaskakują:

  • NaN zaraża: każde działanie z NaN daje NaN – NaN + 5 to NaN,
  • NaN nie jest równe niczemu, nawet sobie: NaN === NaN to false. Do sprawdzania służy Number.isNaN(x) (ścisłe) albo starsze isNaN(x), które najpierw konwertuje argument.
nan.js
const zle = Number("abc");
console.log(zle, typeof zle);            // NaN number
console.log(zle + 5);                    // NaN – zaraża dalsze obliczenia
console.log(zle === NaN);                // false – tak NIE sprawdzaj
console.log(Number.isNaN(zle));          // true – tak sprawdzaj
console.log(isNaN("abc"), isNaN("12"));  // true false – isNaN najpierw konwertuje
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

W zadaniu praktycznym NaN w wyniku („Koszt: NaN zł”) oznacza zwykle puste pole albo literówkę w id. Walidacja „Wprowadź poprawne dane.” (styczeń 2025) to właśnie sprawdzenie isNaN lub pustego pola – lekcja Walidacja formularzy.

Liczba na napis

Czasem potrzebujesz odwrotnej konwersji – np. żeby policzyć cyfry albo sformatować wynik:

na-napis.js
const cena = 1234.5;
console.log(String(cena), typeof String(cena));   // "1234.5" string
console.log(cena.toString());                      // to samo
console.log(cena + "");                            // skrót: sklejenie z pustym napisem
console.log(cena.toFixed(2));                      // "1234.50" – zawsze 2 miejsca
console.log((10).toString(2));                     // "1010" – zapis dwójkowy
console.log(parseInt("1010", 2));                  // 10 – z dwójkowego na dziesiętny
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Na egzaminie

Ściąga

SkładniaCo robiPrzykład → wynik
+ - * /arytmetyka; / zawsze z ułamkiem7 / 2 → 3.5
%reszta z dzielenia7 % 2 → 1
**potęga2 ** 10 → 1024
x += n, x -= n, x *= n, x /= nx = x + n itd.x = 10; x += 5 → 15
x++, x--zwiększ / zmniejsz o 1x = 10; x++ → 11
Number(s)cały napis → liczba, inaczej NaN; "" → 0Number("42.5") → 42.5
parseInt(s)cyfry od początku, bez ułamkaparseInt("42.9px") → 42
parseFloat(s)liczba od początku, z ułamkiemparseFloat("19.99 zł") → 19.99
Math.round(x)do najbliższej całkowitejMath.round(2.5) → 3
Math.ceil(x)w górę („zaokrąglona do góry”)Math.ceil(9.25) → 10
Math.floor(x)w dół (dzielenie całkowite: Math.floor(a / b))Math.floor(2.9) → 2
Math.random()losowa z [0, 1)Math.floor(Math.random() * 6) + 1 → 1–6
Math.max(a, b), Math.min(a, b)większa / mniejszaMath.max(3, 9) → 9
Math.abs(x), Math.sqrt(x)wartość bezwzględna, pierwiastekMath.sqrt(16) → 4
x.toFixed(n)napis z n miejscami po kropce(2.5).toFixed(2) → "2.50"
String(x), x.toString(), x + ""liczba → napisString(12) → "12"
NaN, Number.isNaN(x)nieudane obliczenie i jego testNumber("abc") → NaN
"5" + 3 vs "5" - 3+ z napisem skleja, reszta liczy"53" vs 2

Zadania

Zadanie 1
łatwe

Przewidź dziesięć wyników

Zapisz na kartce wynik każdej linii i jego typ. Dopiero potem uruchom. Za każdą pomyłkę znajdź regułę w tej lekcji.

dziesiec.js
console.log(10 / 4);
console.log(10 % 4);
console.log(2 ** 4);
console.log("10" + 4);
console.log("10" - 4);
console.log("10" * "2");
console.log(true + true);
console.log(Number("12abc"));
console.log(parseInt("12abc"));
console.log(1 + "1" - 1);
Pokaż rozwiązanie
dziesiec.js
console.log(10 / 4);            // 2.5   (number)
console.log(10 % 4);            // 2     (number)
console.log(2 ** 4);            // 16    (number)
console.log("10" + 4);          // "104" (string) – sklejenie
console.log("10" - 4);          // 6     (number) – minus konwertuje
console.log("10" * "2");        // 20    (number)
console.log(true + true);       // 2     (number) – true liczy się jako 1
console.log(Number("12abc"));   // NaN   (number) – Number wymaga całego napisu
console.log(parseInt("12abc")); // 12    (number) – parseInt czyta od początku
console.log(1 + "1" - 1);       // 10    (number) – "11" po sklejeniu, potem 11 - 1
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik
Zadanie 2
średnie

Konwerter walut

Napisz skrypt, który dla kwoty w złotych (na razie stała, np. 250) i kursu euro (np. 4.32) wypisze w konsoli: 250 zł = 57.87 EUR. Wynik ma być zaokrąglony do dwóch miejsc po przecinku. Następnie zasymuluj dane z formularza: zamień obie stałe na napisy ("250", "4.32") i spraw, by wynik był nadal poprawny. Sprawdź dla drugiego zestawu danych: "1000" i "4.5".

Pokaż rozwiązanie
konwerter.js
// Zestaw 1 – napisy jak z pola formularza
const kwotaTekst = "250";
const kursTekst = "4.32";

const kwotaPln = parseFloat(kwotaTekst);   // konwersja OD RAZU przy odczycie
const kurs = parseFloat(kursTekst);
const kwotaEur = kwotaPln / kurs;          // 57.87037…

console.log(kwotaPln + " zł = " + kwotaEur.toFixed(2) + " EUR");

// Zestaw 2
const kwotaPln2 = parseFloat("1000");
const kurs2 = parseFloat("4.5");
console.log(kwotaPln2 + " zł = " + (kwotaPln2 / kurs2).toFixed(2) + " EUR");
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Gdybyś pominął parseFloat, dzielenie "250" / "4.32" i tak by zadziałało (operator / konwertuje), ale każde dodawanie (np. kwota + prowizja) już nie – dlatego konwertuj zawsze, nie licz na to, że operator „sam sobie poradzi”.

Zadanie 3
średnie

Kostka i losowy indeks

  1. Wylosuj wynik rzutu dwiema kostkami (każda 1–6) i wypisz: Kostki: 3 i 5, suma: 8.
  2. Masz tablicę 9 odpowiedzi czatu (indeksy 0–8). Wylosuj indeks i wypisz go. Uruchom kilka razy i upewnij się, że nigdy nie pojawia się 9 ani liczba ujemna.
  3. Wylosuj temperaturę z zakresu od −10 do 30 stopni włącznie.

Dla każdego punktu zapisz w komentarzu, dlaczego mnożnik i przesunięcie są takie, a nie inne.

Pokaż rozwiązanie
losowanie.js
// 1. kostka: random * 6 daje [0, 6), floor daje 0–5, +1 daje 1–6
const kostka1 = Math.floor(Math.random() * 6) + 1;
const kostka2 = Math.floor(Math.random() * 6) + 1;
console.log("Kostki: " + kostka1 + " i " + kostka2 + ", suma: " + (kostka1 + kostka2));

// 2. indeks 0–8: 9 możliwości, więc mnożnik 9, bez przesunięcia
const indeksOdpowiedzi = Math.floor(Math.random() * 9);
console.log("Indeks odpowiedzi:", indeksOdpowiedzi);

// 3. od -10 do 30 włącznie: 41 możliwości (30 - (-10) + 1), przesunięcie o -10
const temperatura = Math.floor(Math.random() * 41) - 10;
console.log("Temperatura:", temperatura);
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Nawiasy wokół kostka1 + kostka2 w pierwszym console.log są konieczne: bez nich + sklejałby od lewej i wyszłoby "…suma: 35" zamiast 8.

Zadanie 4
średniejak na INF.03

Kalkulator puszek farby

Fragment zadania w stylu arkusza ze stycznia 2023 (INF.03-01-23.01), bez formularza. Wartość z pola jest symulowana napisem. Napisz skrypt, który:

  • przechowuje powierzchnię do pomalowania jako napis "37" (tak przyjdzie z pole.value),
  • zamienia ją na liczbę,
  • oblicza liczbę puszek, wiedząc, że jedna puszka (1 l) wystarcza na 4 m², a liczba puszek ma być całkowita, zaokrąglona w górę,
  • wypisuje w konsoli dokładnie: Liczba potrzebnych puszek: 10,
  • działa poprawnie także dla drugiego zestawu: "40" → 10 oraz "41" → 11.

Kryteria oceny (zero-jedynkowe, w stylu zasad oceniania CKE):

  1. Skrypt w języku JavaScript, co najmniej jedna poprawna składniowo instrukcja.
  2. Wartość powierzchni jest konwertowana na liczbę (parseFloat, parseInt lub Number).
  3. Wykonywane jest dzielenie powierzchni przez 4.
  4. Wynik jest liczbą całkowitą zawsze zaokrągloną w górę – sprawdzane dla danych, które nie dzielą się przez 4.
  5. Tekst wyniku ma dokładnie postać Liczba potrzebnych puszek: <wynik> (dwukropek, spacja).
  6. Znaczące nazwy zmiennych.
Pokaż rozwiązanie
puszki.js
// Kalkulator puszek farby – 1 puszka = 4 m², zaokrąglenie w górę
const powierzchniaTekst = "37";                 // tak przyjdzie z pola formularza
const powierzchnia = parseFloat(powierzchniaTekst);   // kryterium 2
const metrowNaPuszke = 4;
const liczbaPuszek = Math.ceil(powierzchnia / metrowNaPuszke);   // kryteria 3 i 4

console.log("Liczba potrzebnych puszek: " + liczbaPuszek);       // kryterium 5

// Test na dwóch kolejnych zestawach danych – tak robi egzaminator
console.log("Liczba potrzebnych puszek: " + Math.ceil(parseFloat("40") / 4));   // 10
console.log("Liczba potrzebnych puszek: " + Math.ceil(parseFloat("41") / 4));   // 11
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Najczęstsze błędy w tym zadaniu: Math.round (dla 37 daje 9 – kryterium 4 przepada), brak konwersji (dla dzielenia akurat nie szkodzi, ale egzaminator widzi brak w kodzie), tekst Liczba puszek: zamiast pełnego brzmienia z arkusza (kryterium 5).

Zadanie 5
trudne

Sekundy na godziny, minuty i sekundy

Dla liczby sekund (np. 3725) wypisz: 1 h 2 min 5 s. Użyj wyłącznie %, / i Math.floor. Następnie sprawdź dla 59, 3600 i 86399. Dodatkowo: wypisz tę samą wartość w formacie 01:02:05 – minuty i sekundy zawsze dwucyfrowe (podpowiedź: dopisz "0", gdy liczba jest mniejsza niż 10, albo użyj padStart, który poznasz w następnej lekcji).

Pokaż rozwiązanie
czas.js
const sekundyRazem = 3725;

const godziny = Math.floor(sekundyRazem / 3600);          // 1
const minuty = Math.floor((sekundyRazem % 3600) / 60);    // reszta po godzinach, w minutach: 2
const sekundy = sekundyRazem % 60;                        // 5

console.log(godziny + " h " + minuty + " min " + sekundy + " s");

// Format 01:02:05 – String(n).padStart(2, "0") dopisuje zero z przodu do długości 2
const hh = String(godziny).padStart(2, "0");
const mm = String(minuty).padStart(2, "0");
const ss = String(sekundy).padStart(2, "0");
console.log(hh + ":" + mm + ":" + ss);

// Testy
console.log(Math.floor(59 / 3600), Math.floor((59 % 3600) / 60), 59 % 60);           // 0 0 59
console.log(Math.floor(3600 / 3600), Math.floor((3600 % 3600) / 60), 3600 % 60);     // 1 0 0
console.log(Math.floor(86399 / 3600), Math.floor((86399 % 3600) / 60), 86399 % 60);  // 23 59 59
Konsola
Kliknij „Uruchom”, aby zobaczyć wynik

Kluczowy krok to sekundyRazem % 3600 – reszta po odjęciu pełnych godzin, z której dopiero liczysz minuty. Bez tego Math.floor(3725 / 60) dałoby 62 minuty. Ten sam schemat „podziel całkowicie, weź resztę” to konwersja na system dwójkowy w lekcji Pętle.

Test powtórkowy

Test powtórkowy

Format jak w części pisemnej INF.03: 4 odpowiedzi, 1 poprawna. Kod w dialekcie egzaminacyjnym (var).

0/0poprawnych
Sprawdź się

Jaką wartość będzie miała zmienna x po wykonaniu kodu?

var x = 7;
x += 3;
x *= 2;
Sprawdź się

Który zapis jest równoważny instrukcji zmienna1 -= 1;?

Sprawdź się

Co wypisze poniższy kod?

var a = "4";
var b = 2;
document.write(a + b);
Sprawdź się

Które wywołanie zwróci liczbę 12 z napisu '12.75 zł'?

Sprawdź się

Fragment zadania: „liczba puszek ma być liczbą całkowitą, zaokrągloną w górę”. Której funkcji należy użyć?

Sprawdź się

Co wypisze console.log(0.1 + 0.2 === 0.3)?

Sprawdź się

Jaki typ i wartość ma x po wykonaniu var x = Number('abc');?

Sprawdź się

Instrukcja Math.floor(Math.random() * 10) zwraca

Sprawdź się

Co wypisze poniższy kod?

var cena = 2.5;
console.log(cena.toFixed(2) + 1);
Sprawdź się

Pętla sprawdza warunek liczba % 2 == 0. Które liczby go spełniają?