Úloha 4 – Formátovaný výstup z dat proměnných
| Site: | Moodle ZČU |
| Course: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Book: | Úloha 4 – Formátovaný výstup z dat proměnných |
| Printed by: | Nepřihlášený host |
| Date: | Sunday, 18 October 2026, 1:18 PM |
Úvod do úlohy
V reálném kódu se texty skládají neustále: od krátkých hlášek po vícerořádkové šablony e-mailů. Když se ale řetězce lepí „po kouscích“ pomocí + a přimíchají se náhodné mezery, \n a proměnné, kód rychle ztrácí čitelnost. Cílem této sady je naučit se rozpoznat zbytečné konkatenace, nahradit je šablonovými literály (`...${...}...`), a přidat komentáře, které vysvětlí záměr a použitou konstrukci. Výsledkem bude čitelnější, kratší a snáz udržovatelný kód – i u složitějších textových transformací.
Teorie a principy
-
Kdy je konkatenace (
+) zbytečná-
Pokud skládáš 3 a více částí nebo vytváříš vícerořádkové texty,
+výrazně zhoršuje čitelnost. -
Typický zápach kódu: spousta
+ " " +,+ "\n" +, opakované přetypování čísel na text.
-
-
Proč šablonové literály
-
Zápis pomocí backticků
`...`umožňuje interpolaci proměnných${promenna}a přirozený víceřádkový text bez\n. -
Často nahradí celou „zeď“ plusů jednou přehlednou šablonou.
-
-
Komentuj záměr, ne samozřejmost
-
U delších šablon přidej krátké komentáře nad blokem: co se vkládá a proč.
-
U složitějších řetězců rozděl text do logických sekcí (hlavička, tělo, poznámka).
-
-
Pořadí transformací a method chaining
-
Šablonový literál může vzniknout až po normalizaci vstupů (např.
trim(),toLowerCase()). -
Krátké řetězení metod je v pořádku:
vstup.trim().replace(/\s+/g, " ").
-
-
Testování a ošetření prázdných hodnot
-
Před skládáním šablony ošetři
null/undefined. -
Pro začátečníky: piš podmínky explicitně, např.
if (text == undefined) { ... }.
-
Praktické příklady kódu
1) „Před a po“ – zkrácení a zpřehlednění
2) Refaktoring – úklid zbytečných operací a srozumitelné komentáře
3) Mini aplikace (HTML + CSS + JS) – generování přehledu objednávky
Typické chyby / záludnosti
-
„Plusové“ salámy
-
Dlouhé řetězce poslepované
+jsou křehké: snadno chybí mezera,\nnebo se připojí špatná proměnná.
-
-
Míchání stylů
-
V jednom bloku nepoužívej napůl
+a napůl`...`bez důvodu. Zvol jeden styl a drž se ho.
-
-
Nevysvětlené bloky textu
-
Dlouhé šablony bez komentáře matou. Krátký komentář nad šablonou výrazně pomáhá čtenáři kódu.
-
-
Zbytečné transformace před interpolací
-
Nevolej opakovaně
trim()nebotoLowerCase()na stejné hodnotě. Proveď je jednou, ulož do proměnné a pak interpoluj.
-
-
Zapomenuté ošetření
undefined/null-
Před skládáním textu vždy zkontroluj, že data existují. Piš podmínky explicitně:
if (hodnota == undefined).
-
Shrnutí
-
Najdi a odstraň zbytečné konkatenace – nahraď je šablonovými literály pro přehlednost a méně chyb.
-
Interpolace
${...}zjednodušuje vkládání proměnných a snižuje riziko ztracených mezer či\n. -
Normalizuj vstupy (např.
trim(),replace()), až poté sestav finální šablonu. -
Komentuj záměr a strukturu delších textů (sekce, důvod volby konstrukcí).
-
Piš explicitní podmínky a ošetři chybějící data dříve, než začneš řetězec skládat.
Úloha
Zadání (kontext úlohy):
Máš poskládat krátké textové potvrzení rezervace do kina z několika proměnných. Původní kód je psaný „na plusy“. Tvým úkolem je nahradit zbytečné konkatenace šablonovým literálem, případně vstupy lehce očistit a přidat stručný komentář vysvětlující, co se skládá a proč.
Cíl úlohy:
Procvičit nahrazení konkatenace (+) šablonovým literálem (`...${...}...`), čitelný víceřádkový výstup a krátký komentář nad blokem s výslednou šablonou.
Vstupní podmínky:
Pracuj s proměnnými jmeno, film, sedadlo, cas. Hodnoty mohou obsahovat zbytečné mezery na okrajích. Pokud některá hodnota chybí (undefined), máš vrátit jednoduché chybové hlášení.
Požadovaný výstup:
-
Zkontroluj vstupy: pokud
jmeno == undefinednebofilm == undefinednebosedadlo == undefinednebocas == undefined, ulož do proměnnévystuptextNeúplná rezervace. -
Jinak (data jsou vyplněna) případně očisti
jmenoafilmpomocítrim()(a volitelně slouč více mezer na jednu). -
Sestav víceřádkový text do proměnné
vystupvýhradně pomocí šablonového literálu (žádné+). Text musí obsahovat:-
řádek s nadpisem (např. „Potvrzení rezervace“)
-
řádek se jménem a názvem filmu
-
řádek se sedadlem a časem
-
-
Před šablonou přidej jeden krátký komentář vysvětlující, co se do šablony vkládá.
-
Výsledek vypiš pomocí
console.log(vystup).
Doplňující pokyny:
-
Používej pouze
letneboconst(nikdyvar). -
V podmínkách porovnávej explicitně (např.
if (jmeno == undefined); ekvivalent jeif (!jmeno), ale ten teď nepoužívej). -
Nemíchej
+a šablonové literály v jednom výstupu. Zvol literály a drž se jich. -
Komentuj záměr nad blokem se šablonou, ne samozřejmosti uvnitř.
Řešení úlohy
Co je zde splněno
-
Ověření všech vstupů (
== undefined). -
Očištění hodnot pomocí
.trim(). -
Využití šablonového literálu pro vícřádkový a přehledný text.
-
Výsledek se vypíše do konzole pomocí
console.log(). -
V kódu je krátký komentář vysvětlující význam šablony.
Vylepšení oproti začátečnické verzi
-
Použita ternární podmínka pro kompaktní zápis.
-
Odstraněny nadbytečné mezery i uvnitř textu pomocí regulárního výrazu.
-
Použití
constmístoletpro neměnné hodnoty. -
Moderní a stručný styl bez ztráty čitelnosti.
Poznámky
Použití
trim()odstraní mezery pouze na začátku a konci textu.Pokud by bylo potřeba odstranit vícenásobné mezery uvnitř, lze přidat:
jmeno = jmeno.replace(/\s+/g, " ");