Úloha 1 – Relační operátory: porovnávání čísel a textu
Úvod do úlohy
Relační operátory patří k úplným základům programování – umožňují nám porovnávat hodnoty a rozhodovat, zda jsou si rovné, nerovné, větší nebo menší. Bez nich bychom nedokázali psát podmínky, cykly ani větvení programu. Ať už kontrolujeme, jestli je číslo větší než 100, nebo jestli uživatel zadal správné heslo, relační operátory jsou vždy u toho. Proto je důležité nejen znát jejich zápis, ale také chápat, co přesně vracejí (vždy true nebo false) a jak fungují při práci s různými datovými typy.
Teorie a principy
-
Základní relační operátory v JavaScriptu
-
Rovnost:
-
==(porovnává hodnotu, provádí typovou konverzi) -
===(porovnává hodnotu i typ, tzv. „strict equality“)
-
-
Nerovnost:
-
!=(nerovnost s konverzí) -
!==(nerovnost bez konverze)
-
-
Porovnání velikosti:
-
>větší než -
>=větší nebo rovno -
<menší než -
<=menší nebo rovno
-
-
-
Výsledek porovnání
-
Každý relační operátor vrací logickou hodnotu (
truenebofalse). -
To je klíčové – výraz lze přímo použít v
if,while, apod.
-
-
Porovnávání čísel a řetězců
-
U čísel probíhá porovnání přirozeně (např.
10 > 7jetrue). -
U řetězců se používá lexikografické uspořádání, tedy podle „slovníkového pořadí“.
-
Porovnává se znak po znaku podle Unicode hodnot.
-
Např.
"apple" < "banana"→true. -
Velká písmena mají jiné hodnoty než malá (
"Zebra" < "apple"→true, protožeZmá menší kód neža).
-
-
Praktické příklady kódu
Číselné porovnání
Rovnost a typy
Lexikografické porovnání
Typické chyby / záludnosti
-
Záměna
==a===–==provádí typovou konverzi, což často vede k neočekávaným výsledkům. Proto se v praxi doporučuje používat vždy===a!==. -
Lexikografické porovnání řetězců – studenti někdy očekávají „délkové“ porovnání (že delší řetězec je větší), ale rozhodující je pořadí znaků, ne délka.
-
Porovnání různých typů – např.
0 == falsejetrue, ale0 === falsejefalse. -
Velká vs. malá písmena –
"A" < "a"jetrue, protože velké písmeno má nižší Unicode kód než malé.
Shrnutí
-
Relační operátory (
==,===,!=,!==,<,<=,>,>=) vracejí vždy true nebo false. -
Rozdíl mezi
==a===je v tom, zda dochází k typové konverzi. -
U čísel se porovnává hodnota, u řetězců lexikografické pořadí znaků.
-
Nejčastější pasti: typová konverze (
==), lexikografické vs. délkové porovnávání a rozdíly mezi velkými a malými písmeny.