Úloha 5 – Refaktoring aritmetiky a cyklů – zkrácené zápisy
| Stránky: | Moodle ZČU |
| Kurz: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Kniha: | Úloha 5 – Refaktoring aritmetiky a cyklů – zkrácené zápisy |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | neděle, 18. října 2026, 07.34 |
Úvod do úlohy
Posledním krokem v procvičování práce s aritmetickými operátory bývá refaktoring kódu – tedy jeho úprava tak, aby byl kratší, přehlednější a efektivnější. Programátor totiž nemusí vždy psát složité podmínky, když stejný výsledek lze dosáhnout jediným aritmetickým výrazem. Stejně tak místo „ručního“ sčítání v cyklech můžeme využít inkrementační operátory (++, +=). Znalost precedence a správné práce s operátory nám pak pomůže vyhnout se nejednoznačným nebo chybovým zápisům – zejména u typové konverze v JavaScriptu, kde operátor + může znamenat jak sčítání čísel, tak spojování řetězců.
Schopnost zjednodušovat kód pomocí operátorů je důležitá nejen z hlediska čitelnosti, ale i výkonu a údržby programu.
Teorie a principy
-
Nahrazení podmínek aritmetikou
-
Místo
if/elsemůžeme využít aritmetiku nebo logické operátory. -
Například
if (x % 2 === 0) a = 1; else a = 0;lze nahradit výrazema = (x % 2 === 0) ? 1 : 0;nebo dokoncea = 1 - (x % 2);.
-
-
Inkrementace a dekrementace
-
Operátor
++zvyšuje hodnotu proměnné o1. -
Operátor
+= nzvyšuje hodnotu on. -
To nám šetří zápisy typu
i = i + 1;.
-
-
Jednoznačnost zápisu
-
Operátor
+je dvojího druhu: číselné sčítání a spojování řetězců. -
Pokud sčítáme proměnné neznámého typu, je vhodné použít
Number(x)neboString(x)pro jasnou konverzi. -
Př.:
alert("Součet: " + (a + b));– závorky jsou nutné, jinak by JavaScript spojoval řetězec s číslem postupně a mohl by vyjít neočekávaný výsledek.
-
Praktické příklady kódu
Původní neefektivní fragment
Refaktorovaná verze
Oprava nejednoznačného +
Typické chyby / záludnosti
-
Zbytečné podmínky – studenti často používají
if/elsei tam, kde by stačil aritmetický trik. -
Zapomenutí na inkrementaci – zápis
i = i + 1;je funkční, alei++je stručnější a srozumitelnější. -
Chybná precedence
+– bez závorek se snadno stane, že JavaScript nejdříve spojí řetězec a až pak provede sčítání. -
Implicitní konverze typů – kombinace čísel a řetězců může vést k neočekávaným výsledkům.
Shrnutí
-
Aritmetické operátory mohou nahradit složité podmínky a zjednodušit kód.
-
Inkrementační (
++,+=) a dekrementační (--,-=) operátory šetří zápis a zvyšují čitelnost. -
Operátor
+má dvojí význam – vždy hlídejte typy operandů a používejte závorky či konverze. -
Refaktoring je důležitý krok k psaní kódu, který je kratší, jasnější a méně náchylný k chybám.
Úloha
Zadání (kontext úlohy)
Máš krátký program, který vypisuje součet dvou čísel a současně používá cyklus k výpisu proměnné.
Tvým úkolem je kód zjednodušit – využít aritmetické a inkrementační operátory, aby byl kratší a jasnější.
Cíl úlohy
Procvičíš si refaktoring kódu – nahrazení zbytečných podmínek a dlouhých zápisů úspornějšími operátory (++, +=, závorky u +).
Vstupní podmínky
-
Pracuješ pouze s nově vytvořeným souborem
script.js.
Požadovaný výstup
-
Ulož do dvou proměnných dvě libovolná čísla.
-
Vypiš jejich součet do konzole tak, aby se nespojily do řetězce – musí vyjít číselný součet.
-
Vytvoř cyklus, který proběhne od 0 do 5.
-
Použij inkrementační operátor
++místo zápisui = i + 1.
-
Doplňující pokyny
-
Otestuj rozdíl mezi:
a vysvětli, proč první varianta vede ke spojení textu a čísel, zatímco druhá dává správný číselný součet.
-
Pokud si nejsi jistý, použij závorky pro jednoznačný výsledek.
Řešení úlohy
Co je zde splněno
-
Do dvou proměnných jsou uložena libovolná čísla.
-
Ukázán rozdíl mezi spojením řetězců a číselným součtem (
"Součet: " + a + bvs."Součet: " + (a + b)). -
Výsledek součtu je správně vypisován do konzole.
-
Použit cyklus
forod 0 do 5 s inkrementačním operátoremi++.
Poznámky
Vždy když kombinujeme text a čísla, je dobré obalit číselný výpočet závorkami, aby se neprovedlo nechtěné řetězcové spojení.
Operátor
++je kratší a přehlednější neži = i + 1.