Úloha 3 – Kombinace relačních a logických operátorů

Site: Moodle ZČU
Course: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Book: Úloha 3 – Kombinace relačních a logických operátorů
Printed by: Guest user
Date: Sunday, 18 October 2026, 9:59 AM

Úvod do úlohy

Relační a logické operátory tvoří základ všech podmínek a rozhodování v programu. Zatímco jednoduchý výraz jako a < b je snadný na čtení i vyhodnocení, složitější kombinace typu a < b && b <= c už v sobě zahrnuje více operátorů s různou precedencí a asociativitou. Abychom psali správné a čitelné podmínky, musíme rozumět tomu, v jakém pořadí JavaScript tyto výrazy vyhodnocuje, a kdy je nutné použít závorky k jednoznačnému určení.

Schopnost správně analyzovat složené výrazy je klíčová – jinak hrozí, že program bude fungovat jinak, než jsme zamýšleli, a chybu odhalíme až velmi pozdě.


Teorie a principy

  1. Precedence (priorita)

    • Relační operátory (<, <=, >, >=) mají vyšší prioritu než logické operátory (&&, ||).

    • Proto se nejprve vyhodnotí porovnání, a teprve pak spojky.

    • Příklad: a < b && b < c se čte jako (a < b) && (b < c).

  2. Asociativita

    • Většina relačních a logických operátorů má levou asociativitu – tedy vyhodnocují se zleva doprava.

    • Výjimkou je logický NOT (!), který je unární a vyhodnocuje se nejdříve.

  3. Operátory větší/menší než

    • a < b → true, pokud a je menší než b.

    • a <= b → true, pokud a je menší nebo rovno b.

    • Totéž platí analogicky pro > a >=.

  4. Výsledek složeného výrazu

    • Vždy jde o logickou hodnotu (true nebo false).

    • Operátor && (logické AND) vrací true jen tehdy, pokud jsou oba výrazy true.

    • Operátor || (logické OR) vrací true, pokud je alespoň jeden výraz true.

    • Operátor ! (NOT) neguje výsledek výrazu.


Praktické příklady kódu

Jednoduché porovnání v kombinaci s AND

Kombinace AND a OR

Nutnost závorek

Negace


Typické chyby / záludnosti

  • Zapomenutí na prioritu – studenti někdy myslí, že a < b && b < c se vyhodnocuje postupně zleva doprava bez závorek, ale ve skutečnosti se oba relační výrazy vyhodnotí před AND.

  • Nesprávné použití závorek – příliš mnoho závorek snižuje čitelnost, naopak jejich nedostatek může vést k jinému výsledku, než čekáme.

  • Záměna && a || – AND vyžaduje, aby byly obě podmínky pravdivé, zatímco OR stačí jedna.

  • Negace bez závorky – !a < b se vyhodnotí jako (!a) < b, což může vést k nelogickým výsledkům. Správně bychom měli psát !(a < b).


Shrnutí

  • Relační operátory (<, <=, >, >=) mají vyšší prioritu než logické operátory (&&, ||).

  • Asociativita většiny těchto operátorů je levostranná.

  • Operátor ! má vysokou prioritu a vyhodnocuje se jako první.

  • Výsledek složeného výrazu je vždy logická hodnota (true nebo false).

Úloha

Zadání (kontext úlohy)

Máš číslo a potřebuješ rozhodnout, jestli splňuje několik pravidel najednou.
Kombinací relačních a logických operátorů vytvoříš složený výraz, který to ověří.


Cíl úlohy

Procvičíš si použití relačních operátorů společně s logickými (&&, ||, !) a naučíš se správně pracovat se závorkami pro určení pořadí vyhodnocování.


Vstupní podmínky
  • Pracuješ pouze s nově vytvořeným souborem script.js.


Požadovaný výstup
  1. Ulož do proměnné libovolné celé číslo.

  2. Pomocí podmínky ověř, zda je číslo kladné a menší než 100 (number > 0 && number < 100).

    • Výsledek vypiš do konzole (console.log() → true nebo false).

  3. Přidej další podmínku, která vrátí true, pokud je číslo záporné nebo rovno nule (number < 0 || number === 0).

  4. Nakonec použij negaci ! a ověř, že číslo není větší než 50 (!(number > 50)).

    • Opět výsledek vypiš do konzole.


Doplňující pokyny
  • Používej závorky, pokud by mohlo dojít k nejednoznačnosti.

  • Každý výstup by měl být logická hodnota true nebo false.

Řešení úlohy

Co je zde splněno

  • Do proměnné je uloženo celé číslo.

  • Podmínka ověřuje, zda je číslo kladné a menší než 100 (kombinace > a < s &&).

  • Další podmínka ověřuje, zda je číslo záporné nebo rovno nule (< a === s ||).

  • Použita negace ! k ověření, že číslo není větší než 50.

  • Každý výsledek je vypsán do konzole jako true nebo false.

Poznámky

  • Závorky zajišťují jednoznačné vyhodnocení výrazů a zlepšují čitelnost kódu.

  • Je dobré si uvědomit, že !(cislo > 50) je logicky ekvivalentní k cislo <= 50.