Dnes si zopakujeme znalosti z minulých lekcí a seznámíme se s podmínkami...
Podmínky
Podmínka je příkaz, pomocí něhož lze vyhodnotit výraz a na základě toho vykonat další akce, které se ohraničují složenými závorkami.
Výraz v programování je
podobný výrazu v matematice a může být pouze pravdivý (true), nebo nepravdivý (false) - to jsou hodnoty typu Boolean (viz předešlá
lekce). Pokud je pravdivý,
vykonají se příkazy v následujícím bloku kódu (ohraničeném složenými závorkami).
Obecný kód podmíny je tento:
if(výraz){
příkazy
}
První příkaz je již zmiňované if, které značí podmínku, v závorce za ním je výraz, pokud je pravdivý vykoná se následující akce (příkazy).
Výrazy
Ve výraze můžeme porovnávat dvě čísla:
6 > 1
5 < 2
Jak jistě víte první výraz je pravdivý - 6 je větší než 1, ale druhý ne. K porovnávání nám slouží operátory porovnání, mezi ně také patří
větší než (>) a
menší než (<) z příkladu. V tabulce jsou uvedeny všechny základní operátory porovnávání:
if(výraz){
příkazy
}
6 > 1
5 < 2
Jak jistě víte první výraz je pravdivý - 6 je větší než 1, ale druhý ne. K porovnávání nám slouží operátory porovnání, mezi ně také patří větší než (>) a menší než (<) z příkladu. V tabulce jsou uvedeny všechny základní operátory porovnávání:
< | Menší než |
<= | Menší nebo rovno |
> | Větší než |
>= | Větší nebo rovno |
== | Rovná se |
!= | Nerovná se |
Pro lepší pochopení podmínek je dobré si uvědomit, co se vlastně děje uvnitř. Když napíšete 6>2, co se stane? Program vyhodnotí zda je to pravda nebo není. Pokud je výraz pravdivý, místo výrazu dosadí hodnotu true, jestliže je hodnotu false - to si můžete ověřit tímto:
trace(6>2); //vytiskne true
trace(6<2); //vytiskne false
Podmínky jenom s porovnáváním čísel nekončí. Lze porovnávat také například řetězce, u kterých se počítá číselná hodnota znaků. Větší
hodnotu mají znaky, které jsou později v abecedě.
trace("ABC" < "DEF" ); //true
trace("To stejné" == "To stejné") //true
trace("6" == 6) //true
else
Příkazem else můžeme určit akci, která se vykoná, pokud podmínka pravdivá není.
if(5>10){
trace("Pět je větší než deset!")
}else{
trace("To není pravda")
}
V tomto případě program první akci přeskočí, protože výraz není pravdivý a vykoná kód za else - vytiskne text "To není pravda".
Proměnné
Podmínky s čísly jsou ale docela zbytečné, protože pokaždé dopadnou stejně, jsou užitečné až tehdy, když použijeme proměnné:
a = 6;
b = 5;
if(a>b){
trace("a je větší než b"); //Vykoná se tato možnost
}else{
trace("a je menší nebo rovno b");
}
Vnořené podmínky
Podmínky mohou obsahovat další podmínky, říká se tomu větvení. Nejlépe si to vysvětlíme na tomto příkladě, který je rozšířením toho
předešlého:
a = 6;
b = 6;
if (a>b){
trace("a je větší než b");
}else{
if (a<b){
trace("a je menší než b");
}else{
trace("a se rovná b"); //Vykoná se tato možnost
}
}
Tento příklad je to trochu složitější. Nejprve se porovná, jestli je a>b, pokud ne, program skočí na 6. řádku, zbývají 2 možnosti -
a<b a a==b, další podmínka porovná první možnost a pokud není pravdivá, zbývá poslední varianta a program skočí
na 9. řádku.
Ve vnořených podmínkách se pro zjednodušení může používat příkaz else if :
if (a>b) {
trace("a je větší než b");
} else if (a<b) {
trace("a je menší než b");
} else {
trace("a se rovná b"); //Vykoná se tato možnost
}
Logické operátory
Logické operátory se používají v podmínkách, pokud chceme použít ve výrazech logickéch vztahy. Tady jsou:
if(5>10){
trace("Pět je větší než deset!")
}else{
trace("To není pravda")
}
a = 6;
b = 5;
if(a>b){
trace("a je větší než b"); //Vykoná se tato možnost
}else{
trace("a je menší nebo rovno b");
}
Vnořené podmínky
Podmínky mohou obsahovat další podmínky, říká se tomu větvení. Nejlépe si to vysvětlíme na tomto příkladě, který je rozšířením toho
předešlého:
a = 6;
b = 6;
if (a>b){
trace("a je větší než b");
}else{
if (a<b){
trace("a je menší než b");
}else{
trace("a se rovná b"); //Vykoná se tato možnost
}
}
Tento příklad je to trochu složitější. Nejprve se porovná, jestli je a>b, pokud ne, program skočí na 6. řádku, zbývají 2 možnosti -
a<b a a==b, další podmínka porovná první možnost a pokud není pravdivá, zbývá poslední varianta a program skočí
na 9. řádku.Ve vnořených podmínkách se pro zjednodušení může používat příkaz else if :
if (a>b) {
trace("a je větší než b");
} else if (a<b) {
trace("a je menší než b");
} else {
trace("a se rovná b"); //Vykoná se tato možnost
}
Logické operátory Logické operátory se používají v podmínkách, pokud chceme použít ve výrazech logickéch vztahy. Tady jsou:
Operátor | Slovem | Popis |
&& | a zároveň | Logické AND: Vrací true, pouze pokud je levá i pravá strana pravdivá. |
|| | nebo | Logické OR: Vrací true, pokud je alespoň jedna strana pravdivá. |
!Výraz | Logické NOT: Vrací logický opak - boolean. |
Co to znamená v praxi? Pojďme si ukázat několik příkladů.
x = 5;
y = 8;
//pravdivá podmínka, příkazy v složených závorkách se vykonají.
if(x>3 && y>6){
...
}
//nepravdivá podmínka - jedna strana není pravdivá,
// vykonají se příkazy v else
if(x>3 && y>9){
...
}else{
...
}
Operátor ! obrátí návratovou hodnotu (jak jsem psal výše - true, nebo false).
x = 1;
if (!(x == 1)) {
...
}
//Normálně by se podmínka vyhodnotila kladně,
//ale protože je před výrazem !, výsledek se převrátí,
//takže místo true vrátí false => výraz je nepravdivý.
POZOR: pokud byste napsali !x == 1, nebude to fungovat protože ! má větší prioritu než ==.
Můžeme samozřejmě použít i více operátorů najednou, taktéž lze použít závorky (platí to samé co u aritmetických operací - závorky mají přednost před operátory):
a = 1;
b = 2;
c = 3;
if(a==1 && b==2 && (c==2 || c==3)){ //pravdivá podmínka
...
}
Tato podmínka je pravdivá, pokud se a == 1 a zároveň b==2 a zároveň se c==2 nebo se c==3.
Ukázka
Tady je malá ukázka pro ilustraci, ve scéně se nachází input text s proměnnou vek, dynamic text s proměnnou
odpoved a tlačítko, které má tento kód:
on(release){
if(_root.vek >= 18){
_root.odpoved = "Přístup povolen.";
}else{
_root.odpoved = "Přístup odepřen.";
}
}
Po dnešní lekci byste měli vědět, jak tento jednoduchý příklad funguje.
Úkol:
Vytvořte program, ve kterém uživatel zadá do 2 input textů 2 čísla,
do jiného dynamic textu se vypíše větší hodnota z obou čísel
a do 2. dynamic textu se jako opakování vypíše součin (násobení) obou čísel.
Hodně zdaru při plnění úkolu.
on(release){
if(_root.vek >= 18){
_root.odpoved = "Přístup povolen.";
}else{
_root.odpoved = "Přístup odepřen.";
}
}