Podmínky a jejich využití

Sekvence
Blok kódu, který se vykonává postupně.

Podmínky a jejich využití
Velmi jednoduchý způsob, jak ovládat děj pomocí actioncriptu. Vykoná nějakou funkci, jen pokud je splněná určitá podmínka.

Podmínky slouží k větvení programu.

Jednoduchá podmínka

Podmínka (if) je nejednodušší z podmínek. Pokud je splněná podmínka, něco se vykoná. (Pokud podmínka splněna není, nevykoná se nic.)

podminky_1

syntaxe:

if (podminka) {
 //provedou se příkazy, které se provedou když platí podmínka
 prikazy;
}

další možný způsob zápisu:

if (podminka)  prikazy; //provedou se příkazy, které se provedou když platí podmínka

Podmínka s alternativou

Pokud je splněná podmínka, něco se vykoná. Pokud není splněna, vykoná se něco jiného.

podminky_2

syntaxe:

if (podminka) {
        //provedou se příkazy, které se provedou když platí podmínka
	prikazy;
} else {
        //provedou se alternativní příkazy, které se provedou když neplatí podmínka
	alternativniPrikazy;
}

Podmínka s více alternativami

podminky_3

syntaxe:

if (Podmínka1) {
// co se má vykonat pokud je podmínka 1 splněna
}
else if (Podmínka2) {
// co se má vykonat pokud je podmínka 2 splněna
}
else {
// co se má vykonat pokud podmínka 1 ani podmínka 2 neplatí
 
}

další příklad:

if (podmínka1) {
        //provedou se příkazy, které se provedou když platí podmínka1
	prikazy1;
} else if (podmínka2) {
        //provedou se alternativní příkazy, které se provedou když neplatí podmínka2
	alternativniPrikazy2;
} else if (podmínka3) {
        //provedou se alternativní příkazy, které se provedou když neplatí podmínka3
	alternativniPrikazy3;
}
else {
        //provedou se alternativní příkazy, které se provedou když neplatí žádnáí z předchozích podmínek
	alternativniPrikazy3;
}

Co může být podmínka?

Jakýkoliv logický výraz. Můžeme porovnávat, hodnoty proměnné.

Operátory v podmínkách

> //je větší než
=> //je rovno nebo větší než
< //je menší než
=< //je rovno nebo menší než
== //je rovno
!= //je různé, nerovná se

Vždy je definovaná levá a pravá strana

Operátory při práci s dvěma a více podmínkami

|| //nebo - je-li splněna podmínka 1 nebo podmínka 2, funkce se vykoná
&& //zároveň - jsou-li splněny obě podmínky, funkce se vykoná
 
Např:
//jestliže  je splněna podmínka 1 a zároveň podmínka 2 
if (Podmínka 1) && (Podmínka 2){ 
        // co se má vykonat pokud je podmínka splněna
        }
else {
        // co se má vykonat pokud podmínka neplatí
        }
//jestliže  je splněna podmínka 1 a zároveň podmínka 2 
 
//jestliže  je splněna podmínka 1 nebo podmínka 2 
if (Podmínka 1) || (Podmínka 2){ 
        // co se má vykonat pokud je podmínka splněna
        }
else {
        // co se má vykonat pokud podmínka neplatí
        }
//jestliže  je splněna podmínka 1 a zároveň podmínka 2

Vnořené podmínky

Podmínka v sobě může mít jakýkoliv kód, i další podmínku. Podmínky mohou být takto hieraticky vložené.

podminky_4

Např.

if (Podmínka) {
      if (Podmínka) {
            // co se má vykonat pokud je podmínka splněna
            }
      else {
            // co se má vykonat pokud podmínka neplatí
            }
      }
else {
      // co se má vykonat pokud podmínka neplatí
      }

Příklad podmínky

Movie clip „kostka“ má metodu „nastavBarvu(jakou), která přepíná zobrazení kostky podle hodnoty předávané parametrem jakou. Když je hodnota nulová, zobrazí se červená kostička, když se jakou rovná jedné, zobrazí se modrá, když je parametrem jakou předávaná hodnmota 2, zobrazí se zelená kostička, když je předávaná hodnota 3, zobrazí se žlutá a když bude jakékoli jiné číslo, zobrazí se červená kostka:

 

V movie clipu Kostka je naprogramována funkce nastavBarvu, která nastavuje snímací hlavu v MovieClipu na snímky označené „Cervená“, „Modra“ Zelena“ a „Cervena“ podle hodnoty předávané v parametru jakou.

	function nastavBarvu(jakou:Number) {
		if (jakou == 0) {
			this.gotoAndStop("Cervena");
		} else if (jakou == 1) {
			this.gotoAndStop("Modra");
		} else if (jakou == 2) {
			this.gotoAndStop("Zelena");
		} else if (jakou == 3) {
			this.gotoAndStop("Zluta");
		} else {
			this.gotoAndStop("Cervena");
		}
 
	}

Zdrojový kód příkladu Kosticky001

časté chyby: nezapomeňte, že při testování rovnosti (zda hodnota v jakou se rovná zadané hodnotě) musíte napsat dvěma rovnítkami ==.Pokud například napíšete if (jakou=2) editor vás neupozorní na chybu – výsledek přiřazení bude hodnota která se přiřazuje, takže v případě if (jakou=2) to bude stejné jako kdybyste napsali if (2). V podmínce se nula vyhodnocuje jako false a jakákoliv nenulová hodnota se vyhodnocuje jako true, podmínka if (jakou=2) se vyhodnotí jako pravdivá, provedou se proto vložené příkazy a program se bude chovat „podivně“.

Přepínač

Pokud se rozhodujeme mezi podmínkami na základě toho, že nějaká řídíácí proměnná může nabývat hodnot nějakých konstant, pak můžeme zapsat podmínku jako přepínač:

switch (řídící_proměnná) {
		case konstanta1 :
			//provede se když řídící_proměnná==konstanta1;
                        příkazy1;
			break;
		case konstanta2 :
			//provede se když řídící_proměnná==konstanta2;
                        příkazy2;
			break;
		case konstanta3 :
			//provede se když řídící_proměnná==konstanta3;
                        příkazy3;
			break;		
                }

V přepínači se testuje hodnota obsažená v řísící proměnné, pokud se tato hodnota rovná některé z nabízených konstant, pak se provedou příkazy uvedené v přepínači za case konstanta:. Na konci nezapomeňte vždy napsat break.

Pokud chceme, aby se proivedly nějaké příkazy v případě, že hodnota přepínače se nebude rovnat žádné z uvedených konstant, zapíšeme blokdefault:

switch (řídící_proměnná) {
		case konstanta1 :
			//provede se když řídící_proměnná==konstanta1;
                        příkazy1;
			break;
		case konstanta2 :
			//provede se když řídící_proměnná==konstanta1;
                        příkazy2;
			break;
		case konstanta3 :
			//provede se když řídící_proměnná==konstanta1;
                        příkazy3;
			break;
		default :
			//provede se když řídící_proměnná 
                        //nerovná žádné z nabízených možností;
                        příkazyImplicitní;		
                }

příklad:

Ptorože v předchozím příkladu je ve funkci nastavBarvu(jakou) hodnota parametru předávána jako konstanta, můžeme v této funkci místi alternativních bloků if..then..else využít přepínač:

Zdrojový kód přikladu kosticky002

function nastavBarvu(jakou:Number) {
		// přepínač	
		switch (jakou) {
		case 0 :
			this.gotoAndStop("Cervena");
			break;
		case 1 :
			this.gotoAndStop("Modra");
			break;
		case 2 :
			this.gotoAndStop("Zelena");
			break;
		case 3 :
			this.gotoAndStop("Zluta");
			break;
		default :
			this.gotoAndStop("Cervena");
		}
	}

příklady na podmínky z prvního ročníku

Jednoduchý příklad Tomáše Kripnera: Test dělitelnosti

Vytvořte test, který na stisk tlačítka ze vstupního textového pole (/in_txt/) přečte číslo a otestuje, zda je dělitelné třemi, výsledek pak napíše do výstupního textového pole /text_out/.

Zíkladem je funkce jeDelitelne3(_in):Boolean která ze vstupního parametru _in načte číslo a otestuje zda výsledek dělení (_in/3) je beze zbytku, tj. zda se rovná výsledku, který zaokrouhlíme dolů (pomocí funkce Math.floor). Funkce vrací logickou hodnotu (true nebo false).

Tlačítko test_btn reaguje na stisk obslužnou funkcí, která přečte hodnotu ve vstupním textovém poli in_txt a předhodí ho funkci jeDelitel. Na základě toho, co funkce vrátí (pravdivostní hodnotu true nebo false) se do výstupního textového pole zapíše výsledek:

test_btn.onRelease = function() {
	if (jeDelitelne3(in_txt.text)) {
		out_txt.text = "je dělitelné 3";
	} else {
		out_txt.text = "není dělitelné 3";
	}
}
 
function jeDelitelne3(_in):Boolean {
	if ((_in/3) == Math.floor(_in/3)) {
		return true
	} else {
		return false
	}
}

zdrojový text příkladu


Posted

in

by

Tags: