Rozhodovací struktury - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



JavaScript

Rozhodovací struktury

8. srpna 2001, 00.00 | Je jen velmi málo programů, ve kterých se vykonají všechny příkazy v programu a postupuje se z řádku na řádek. Často potřebujeme, aby se určité věci staly jen za určitých předpokladů. K tomu právě slouží rozhodovací struktury, které si dnes popíšeme.

Je jen velmi málo programů, ve kterých se vykonají všechny příkazy v programu a postupuje se z řádku na řádek, tzv. že pořadí vykonávaných příkazů je určeno programátorem. Často budete potřebovat, aby se určité věci staly jen za určitých předpokladů. K tomu právě slouží rozhodovací struktury, které si dnes popíšeme.

Podmínkový operátor

Podmínkový operátor je nejjednodušší rozhodovací konstrukcí s pevně určenou jednoduchou podmínkou. Vyhodnocuje se, jestli je logický výraz pravdivý nebo nepravdivý, na základě toho přiřadí hodnotu do proměnné. Obecný zápis tohoto příkazu:

promenna = (vyraz) ? h1 : h2
// h1 a h2 jsou vyrazy

Když výraz je pravdivý, proměnná bude mít hodnotu h1. Pokud není příkaz pravdivý, proměnná bude mít hodnotu h2.

Příklad ukazuje, jak lze jednoduše naprogramovat skript, který pomocí podmínkového operátoru zjistí absolutní hodnotu proměnné prom:

<HTML>
<HEAD>
<TITLE>Hlavni stranka</TITLE>
</HEAD>
<BODY>
<H1>Obsah promenne prom:</H1>
<s c r i p t language="javas c r i p t"><br> <!--
var prom = -10;
document.write("Pred pouziti prikazu : ",prom,"<br>");
prom = (prom>0) ? prom : -prom;
document.write("Po jeho pouzit:",prom);
//-->
</s c r i p t><br> </BODY>
</HTML>

Podmíněné příkazy

Trochu složitější je to s příkazem if. Tento příkaz je součástí snad všech vyšších jazyků a všude má stejnou funkci. Ta se dá zapsat takto:

if (podmínka)
{
příkazy, které se mají vykonat, pokud platí podmínka
}
else
{
příkazy, které se provedou, pokud neni splněna podmínka
}

Tento zápis vše dostatečně vysvětluje: pokud podmínka platí, vykonají se určité příkazy, pokud neplatí, vykonají se jiné příkazy. Myslím, že to nemusím popisovat podrobně, protože tento příkaz každý zná.

Každému je také jistě jasné k čemu takový příkaz použít. Nic nebudu zdlouhavě a zbytečně vysvětlovat a ukáži vám rovnou skript používající příkaz if. Skript zjistí, jaký prohlížeč používáte a podle toho se zachová (vypíše hlášku na dokument).

<s c r i p t language="javas c r i p t"><br> <!--
if (navigator.appName == "Microsoft Internet Explorer")
{
document.write("Pouzivate produk Microsoftu !<br>");
document.write("Zkusil(a) jste jiz neco jineho?");
}
if (navigator.appName == "Netscape")
{
document.write("Pouzivate Netscape !<br>");
document.write("Asi je to dobra volba .");
}
//-->
</s c r i p t>

Vnořené podmínky

Podmínkový příkaz if je určitě užitečný, ale časem by jste bez jeho vnořování těžko programovali (neříkám, že to nejde). Proto lze v těle podmínky vložit další příkaz if. Je nutné dát pozor, aby se však příkazy (jejich těla) vzájemně nepřekrývaly. To znamená, že musíme dodržet správné pořadí složených závorek. Pokud jste se s tím nikdy nesetkali, vše pochopíte z příkladu:

<s c r i p t language="javas c r i p t"><br> <!--
pravda = prompt("Pouzivate Microsoft Internet Explorer (ano/ne) ? ","ne");
if (navigator.appName == "Microsoft Internet Explorer")
{
document.write("Pouzivate produk Microsoftu !<br>");
document.write("Zkusil(a) jste jiz neco jineho?<br>");
if (pravda == "ne") {
document.write("<hr>Vy jste neodpovedel spravne !<br> ");
document.write("Budu rad, pokud priste budete mluvit pravdu");
}
}

if (navigator.appName == "Netscape")
{
document.write("Pouzivate Netscape !<br>");
document.write("Asi je to dobra volba .");
}

//-->
</s c r i p t>

Příklad je obdobou toho minulého, jen se vás skript na začátku zeptá, jestli používáte Microsoft Internet Explorer. Můžete zadat ano/ne (pro jednoduchost není ošetřena situace, kdy bude zadáno něco jiného, případně budou některá písmenka velká). Pokud odpovíte pravdivě, skript bude pokračovat jako v předešlém případě. Pokud budete "lhát", začne platit vnořená podmínka a skript ohlásí, že mu "lžete".

Vícenásobné větvení programů

Příkaz if by jistě stačil pro rozčlenění vašeho programu, ale v některých případech je jeho použití zbytečně zdlouhavé (příkaz porovnává pouze mezi dvěma podmínkami). proto javas c r i p t obsahuje ještě příkaz <b>switch</b> (podobný příkaz jistě znáte ze svého oblíbeného jazyka).

Příkaz je označován jako přepínač a skutečně přepíná mezi příkazy, které se mají stát pokud platí podmínka a podmínkami. Pomocí tohoto příkazu lze program rozdělit na vámi požadovaný počet částí. Každé větvi pak přísluší jedna podmínka, která pokud je splněna, provedou se příkazy ve větvi. Obecná struktura příkazu:

switch (promenna) {
case hodnota1: prikazy, ktere se maji vykonat;
break;
case hodnota2: prikazy, ktere se maji vykonat;
break;
...
case hodnotaN: prikazy, ktere se maji vykonat;
break;
}

Pozn: na příkaz break nesmíte zapomenout, program by neskočil na konec těla příkazu a pokračoval by v jeho vykonávání.

No, a protože to není těžké pochopit, ukážeme si skript, který se vás nejdříve zeptá, jaký programovací jazyk používáte a podle toho vypíše na dokument text.

<s c r i p t language="javas c r i p t"><br> <!--
var progjazyk = prompt("Vas oblibeny jazyk pro internet:","javas c r i p t");<br>
switch (progjazyk){
case "javas c r i p t" : document.write("jo, to je to prave.");<br> break;
case "vbs c r i p t" : document.write("take se da pouzit.");<br> break;
case "Java" : document.write("Tak tu pouzivam take.");
break;
case "PHP" : document.write("Co jineho ze ?");
break;
case "ASP" : document.write("Hmmm....");
break;
case "HTML": document.write("Klasika.");
default : document.write("tak to bude neco jineho nez: javas c r i p t, vbs c r i p t, java, PHP, ASP, HTML.")
}

//-->
</s c r i p t>

Reference

navigator.appName - název prohlížeče stránek
podporuje: NN 2.0, IE 3.0

navigator.appVersion - verze prohlížeče stránek
podporuje: NN 2.0, IE 3.0

navigator.onLine - true = online režim, false = offline režim
podporuje: IE 4.0

navigator.platform - operační systém, na kterém běží prohlížeč
podporuje: NN 4.0, IE 4.0

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » JavaScript  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: