13. března 2004
.:Přidat k oblíbeným
.:Napsat e-mail





Články
Lekce
Příklady

Podmíněné příkazy (příkazy, které se spustí pouze za určitých okolností, např. příznivá konstelace hvězd) jsou základem, alespoň primitivně uvažujících skriptů.

Příkaz if

Základní formulka je: Když něco tak udělej to, co ti říkám, tedy...

if (a == 1) {
   alert("a je 1")
}

V tomto případě: když hodnota nějaké proměnné a je 1, potom vypal varovnou hlášku: a je 1! Obecně: musíte vždy napsat if (když), potom v kulatých závorkách podmínku a nakonec ve složených závorkách to, co se má provést, je-li podmínka splněna.

Příkaz else

V této souvislosti by bylo záhodno říci si, jak přimět skript udělat něco, pokud to a prostě 1 není. K tomu slouží příkaz else:

if (a == 1) {
   alert("a je 1")
}
else {
   alert("a není 1")
}

Příkazu else musí vždy předcházet podmínka. Podmínka vrací jednu z booleovských hodnot (true nebo false). Pokud je výraz v závorkách true (pravda), provede se sekvence příkazů u if, pokud je tento výraz false (nepravda - a není 1), provede se sekvence příkazů po else.

Logické operátory

Samozřejmě se nemusíte spokojit pouze s jednoduchou podmínkou. Můžete třeba provést nějakou operaci pouze, pokud a je 1 a zároveň b je 2. Toho docílíte zápisem:

if (a == 1) && (b == 2)

Právě k tomuto účelu se používají logické operátory. Opět za sebe raději nechám mluvit tabulku.

==Rovnost. Testuje, zda se dva výrazy rovnají. (a == 1)
!=Nerovnost. Nevlastní sestra rovnosti. Testuje, zda se dva výrazy nerovnají. (a != 2)
<Menší než. Testuje, zda je výraz vlevo menší než výraz vpravo. (4 < 5)
>Větší než. Testuje, zda je výraz vlevo větší než výraz vpravo. (5 > 4)
<=Menší nebo rovno. Už mě nebaví to vypisovat - prostě jako v matematice.
>=Větší nebo rovno. Pozor = musí být až za >. Nelze psát =>!
!Negace. Jednoduše, když je a true, potom !a je false. Takže !(1 == 1) je false.
&&Logické a (and), logický součin. Je true pouze pokud oba výrazy jsou true. (4 == 4) && (4 == 5) má hodnotu false.
||Logické nebo (or), logický součet. Je true pokud alespoň jeden výraz je true. (4 == 4) || (4 == 5) má tentokrát hodnotu true.
===Identita. Podobně jako == porovnává dva výrazy, ale tentokrát porovnává i jejich typy. Takže (1 == "1") je true, ale (1 === "1") je false, protože 1 je číslo a "1" je řetězec.
!==Neidentita - opak identity. Už nemám sílu psát víc.

Příkaz switch

Může nastat situace, že očekáváte hodně různých hodnot určité proměnné a pro každou hodnotu se má spustit jiný příkaz. Určitě lze vypisovat neustále if a potom else if a ještě else if..., ale mnohem efektivnější je vyřešit to pomocí switch:

switch (promenna) {
case "1" : alert("promenna je 1"); break;
case "2" : alert("promenna je 2"); break;
case "3" : {
  alert("promenna je 3 ");
  alert("to je škoda, to číslo nesnáším");
  break;
}
default : {
  alert("Promenna není ani 1, ani 2, ani 3.");
  break;
}


A jak už se stalo dobrým zvykem, vysvětlíme si některá kouzelná slovíčka. Po příkazu switch následuje v kulatých závorkách název proměnné, kterou chcete porovnávat - u nás se jmenuje promenna. Všechny podmínky dohromady musí být ohraničeny složenými závorkami {} viz. příklad. Každá podmínka je reprezentována zaříkadlem case, mezera, hodnota proměnné, při které se spustí příkaz (u nás 1, 2, 3) a potom : dvojtečka. Po dvojtečce následují vaše příkazy.

Pokud příkazy píšete do jednoho řádku oddělujte je ; středníkem (to platí všeobecně, kdekoliv ve skriptu, nejen v podmínkách). Máte-li více požadavků, více příkazů, a píšete je každý na svou řádku (to doporučuji spíš), musí být blok příkazů opět uzavřen ve složených závorkách {}.

Možná se ptáte, proč je všude nutné psát break. Pokud by každou podmínku neukončoval příkaz break, provedly by se i všechny příkazy po dalších podmínkách. Např. kdyby byla v našem příkladu promenna 1 a nebyly by tam příkazy break, vyskákaly by popořadě všechny alerty (promenna je 1, promenna je 2 atd.). Příkaz break zaručí, že se provedou jen příkazy, které se opravdu provést mají. Neboli, tam kde ho napíšete přeruší provádění bloku kódu.

A na závěr default. Supluje funkci příkazu else, takže když promenna nemá žádnou z vámi určených hodnot, provedou se příkazy po default.

Ještě malá poznámka k našemu příkladu. Porovnávaná čísla uvádíme v uvozovkách, tedy porovnáváme je jako řetězce. Pokud budete jako vstupní parametr funkce zadávat číslo bez uvozovek musíte jej také porovnávat bez uvozovek (v příkladu vstupuje např. jedna jako "1" ne jako 1). Lidově řečeno, příkaz case testuje identitu ne rovnost!

Závěr

Jestli začínáte programovat u těchto lekcí, upřímně vás lituji. Ti zkušenější asi spíš vědí odkud vítr fouká. Je pravda, že na podmínkách si spousta lidí vyláme zuby. Vřele doporučuji vše si pořádně vyzkoušet, změnit hodnoty proměnných z našich příkladů a pozorovat, co to vlastně udělá. Narazíte-li na nějaký problém, který bude nad vaše síly, podělte se o něj s námi a my se pokusíme pomoct.

Mort




<< Předchozí lekce


Další lekce >>
_
^
Back to top

Valid XHTML 1.0!   Valid CSS!
TOPlist