Úloha 3 – Normalizace textu před porovnáním

Stránky: Moodle ZČU
Kurz: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Kniha: Úloha 3 – Normalizace textu před porovnáním
Vytiskl(a): Nepřihlášený host
Datum: neděle, 18. října 2026, 17.29

Úvod do úlohy

V mnoha situacích při práci s textem potřebujeme zajistit, aby se řetězce porovnávaly spravedlivě a bez ohledu na to, jak velká nebo malá písmena uživatel zadá. Typickým příkladem je přihlášení: uživatelské jméno Admin by mělo být chápáno stejně jako admin nebo ADMIN. V opačném případě by aplikace mohla nesprávně vyhodnotit vstup jako chybný. V JavaScriptu nám k řešení těchto problémů slouží metody toLowerCase() a toUpperCase(), které dokážou převést celý řetězec na malá nebo na velká písmena.


Teorie a principy

  1. Citlivost na velikost písmen (case-sensitivity)

    • V JavaScriptu se řetězce porovnávají znak po znaku.

    • Velké a malé písmeno jsou odlišné znaky ("A" není stejné jako "a").

  2. toLowerCase()

    • Vrací nový řetězec, kde jsou všechna písmena převedena na malá.

    • Hodí se pro sjednocení textu před porovnáním.

  3. toUpperCase()

    • Vrací nový řetězec s písmeny převedenými na velká.

    • Používá se méně často, ale je funkčně rovnocenná.

  4. Neměnnost řetězců

    • Ani jedna metoda nemění původní text, vždy vrací nový řetězec.

    • Pokud chceme výsledek použít, musíme ho uložit do proměnné.


Praktické příklady kódu


Typické chyby / záludnosti

  • Zapomenutí sjednotit obě strany porovnání

    • Pokud použijeme toLowerCase() jen na jednu hodnotu, může porovnání selhat.

  • Očekávání, že se změní původní proměnná

  • Nevhodný výběr metody

    • Není důležité, zda použijeme toLowerCase() nebo toUpperCase().

    • Důležité je, aby byla volba konzistentní pro obě porovnávané hodnoty.


Shrnutí

  • Porovnávání řetězců v JavaScriptu je case-sensitive – "A" není "a".

  • toLowerCase() převede řetězec na malá písmena.

  • toUpperCase() převede řetězec na velká písmena.

  • Řetězce jsou neměnné – je nutné výsledek uložit do proměnné nebo použít přímo v porovnání.

  • Před porovnáváním textů (např. hesla, uživatelského jména, domény) je vhodné sjednotit formát.

Úloha

Zadání (kontext úlohy):

Představ si, že máš jednoduchý systém, který kontroluje, zda uživatel zadal správné heslo. Chceme, aby se heslo vyhodnocovalo správně, i když uživatel použije velká nebo malá písmena jinak než v uložené verzi.


Cíl úlohy:

Procvičit si použití metod .toLowerCase() nebo .toUpperCase() pro sjednocení textu před porovnáním.


Vstupní podmínky:
  • Student pracuje pouze s nově vytvořeným souborem script.js.

  • V souboru budou dvě proměnné: ulozeneHeslo a vstupUzivatele.


Požadovaný výstup:
  1. Pokud se hesla shodují bez ohledu na velikost písmen, do konzole se vypíše „Přístup povolen“.

  2. Pokud se hesla neshodují, do konzole se vypíše „Přístup zamítnut“.


Doplňující pokyny:
  • Pamatuj, že je nutné sjednotit obě hodnoty, jinak porovnání nemusí fungovat.

  • Můžeš zvolit buď .toLowerCase(), nebo .toUpperCase(), ale vždy je použij na obě strany.

  • Původní proměnná se metodou nezmění, metoda vždy vrací nový řetězec.

Řešení úlohy

Co je zde splněno:

  • vytvořeny dvě proměnné: uložené heslo a vstup uživatele,

  • použití metody .toLowerCase() pro sjednocení textu,

  • porovnání probíhá správně bez ohledu na velikost písmen,

  • vypsání výsledku do konzole podle zadání.

Vylepšení oproti začátečnické verzi:

  • využití .toUpperCase() místo .toLowerCase() (je to jedno, hlavní je použít na obě strany),

  • ternární operátor zkracuje podmínku do jediné řádky, což je přehledné u jednoduchých rozhodnutí.

Poznámky:

  • .toLowerCase() ani .toUpperCase() nemění původní proměnnou, vždy vrátí nový řetězec.

  • Pokud by se použila jen jedna strana, porovnání by nefungovalo.