190 likes | 371 Views
Ústav automatizace inženýrských úloh a informatiky FAST VUT v Brně. 0U2 - Základy informatiky a výpočetní techniky 2. JavaScript - 4. část Strukturované příkazy: příkazy if, while, for. Příkazy pro větvení. –. +. podm. příkaz. Neúplný podmíněný příkaz if.
E N D
Ústav automatizace inženýrských úloh a informatiky FAST VUT v Brně 0U2 - Základy informatiky a výpočetní techniky 2 JavaScript - 4. část Strukturované příkazy: příkazy if, while,for
Příkazy pro větvení – + podm. příkaz Neúplný podmíněný příkaz if • umožňuje rozhodnout o provedení příkazu na základě splnění nějaké podmínky. if (podmínka) příkaz relační nebo logický výraz provede se, pokud má výraz v podmínce hodnotu true Příklad if (a>b) document.write(″a je větší″);
Příklady - neúplný if Příklad 1: Skript spočítá celkovou cenu za zboží při kliknutí na tlačítko „Výpočet ceny“. Celková cena je součinem hodnot zadaných do textových polí formuláře (cena * počet kusů). Je-li celková cena větší než 1000 Kč, vypíše se navíc text „Díky za nákup“. Výsledky se vypíší do připraveného odstavce. Příklad 2: Skript spočítá celkovou cenu za zboží, dopravu a balné při kliknutí na tlačítko „Výpočet ceny“. Je-li celková cena větší než 1000 Kč, vypíše se navíc text „Díky za nákup“. Výsledky se vypíší do připraveného odstavce. Dopravné a balné se připočítá k ceně zboží, pokud budou zaškrtnuta příslušná tlačítka. Pokud je zaškrtnuto „radio“ tlačítko (ANO), odpočítá se 10% z ceny za zboží.
<HTML><HEAD><TITLE>IF</TITLE> <SCRIPT> function Vyp() { c=document.f1.CENA.value; k=document.f1.KS.value; c=c*k; s="<B>Celková cena je: "+c+",- Kč</B>"; if (c>1000) s+=" Díky za nákup"; document.all.D.innerHTML=s; } </SCRIPT> </HEAD> <BODY bgcolor="lightblue"> <H1 align="center"><FONT color="darkblue">Výpočet celkové ceny zboží:</FONT></H1><HR> <FORM name ="f1"> Cena: <INPUT type="text" size="6" value="0" name="CENA"> Ks: <INPUT type="text" size="3" value="0" name="KS"> <BR><BR> <INPUT type="button" value="Výpočet ceny" onclick="Vyp()"> <INPUT type="reset" value="Vymazání" > </FORM> <DIV id="D"></DIV> <HR></BODY></HTML> Příklad 1
<HTML><HEAD><TITLE>IF</TITLE> <SCRIPT> function Vyp() {c=parseFloat(document.f.CENA.value); if (isNaN(c)) alert("CHYBA V ZADÁNÍ"); if (document.f.R[0].checked) c=c-0.1*c; if (document.f.C[0].checked) c=c+500; if (document.f.C[1].checked) c=c+95; s="<B>Celková cena je: "+c+",- Kč</B>"; if (c>1000) s+=" Díky za nákup"; document.all.D.innerHTML=s; } </SCRIPT> </HEAD> <BODY bgcolor="lightblue"><H1 align="center"> <FONT color="darkblue">Výpočet celkové ceny zboží:</FONT></H1><HR> <FORM name="f"> Cena: <INPUT type="text" size="6" value="0" name="CENA"> Clen klubu: Ano<INPUT type="radio" name="R"> Ne<INPUT type="radio" name="R" checked><BR> Doprava:<INPUT type="checkbox" name="C"> Zabalení: <INPUT type="checkbox" name="C"><BR> <INPUT type="button" value="Výpočet ceny" onclick="Vyp()"> <INPUT type="reset" value="Vymazání" > </FORM> <DIV id="D"></DIV> <HR></BODY></HTML> Příklad 2 if(document.f.R[0].checked==true) c=c-0.1*c; p=document.f.R[0].checked; if(p==true)c=c-0.1*c;
– + podm. příkaz2 příkaz1 provede se, jestliže má výraz hodnotu true provede se, jestliže má výraz hodnotu false Úplný podmíněný příkaz if else if (podmínka) příkaz1 else příkaz2 Příkladif (a>b) document.write(″a je větší″); elsedocument.write(″b je větší″);
<HTML><HEAD><TITLE>IF</TITLE> <SCRIPT> function Vyp() {c=parseFloat(document.f.CENA.value); if (isNaN(c)) alert("CHYBA V ZADÁNÍ"); else{ if (document.f.R[0].checked) c=c-0.1*c; if (document.f.C[0].checked) c=c+500; if (document.f.C[1].checked) c=c+95; s="<B>Celková cena je: "+c+",- Kč</B>"; if (c>1000) s+=" Díky za nákup"; document.all.D.innerHTML=s; } } </SCRIPT></HEAD> <BODY bgcolor="lightblue"><H1 align="center"> <FONT color="darkblue">Výpočet celkové ceny zboží:</FONT></H1><HR> <FORM name="f"> Cena: <INPUT type="text" size="6" value="0" name="CENA"> Clen klubu: Ano<INPUT type="radio" name="R"> Ne<INPUT type="radio" name="R" checked><BR> Doprava:<INPUT type="checkbox" name="C"> Zabalení: <INPUT type="checkbox" name="C"><BR> <INPUT type="button" value="Výpočet ceny" onclick="Vyp()"> <INPUT type="reset" value="Vymazání" > </FORM> <DIV id="D"></DIV> <HR></BODY></HTML> Příklad 2 (použit úplný if)
Složený příkaz • umožňuje provést více příkazů tam, kde syntaxe dovoluje provést pouze jeden příkaz • příkazy uzavřeme do složených závorek Příklad if (r>0) {S=Math.PI*r*r; document.write("Obsah kruhu je "); } else {document.write("Zadali jste záporný poloměr"); document.bgColor("gray"); }
<HTML><HEAD> <TITLE>Obsah kruhu</TITLE> <SCRIPT language="JavaScript"> function vypocet() { var r,S; r=document.f.R.value; if (r>0) {S=Math.round(100*Math.PI*r*r)/100; document.all.odst1.innerHTML="Obsah kruhu je"+S;} else {document.all.odst1.innerHTML="Zadali jste záporný poloměr"; document.bgColor="gray"} } </SCRIPT></HEAD> <BODY bgcolor="ivory"> <H2> Obsah kruhu</H2> <FORM name="f"><H3>Zadej poloměr:</H3> <P><INPUT type="text" name="R" > <INPUT type="button" value="odeslat" onclick="vypocet()"> <INPUT type="reset" value="Vymaž formulář"></P> <H3>Výsledky:</H3> <DIVid="odst1" ></DIV></FORM></BODY></HTML> Příklad 3 (výpočet obsahu kruhu)
Příkazy cyklu while,for Příkazy, které umožňují opakované provádění příkazu (příkazů)
- podm. + příkaz Příkaz while • umožňuje provádět určitý příkaz opakovaně v závislostina platnosti podmínky • příkaz cyklu s testem podmínky na začátku while (podmínka)příkaz Relační nebo logický výraz je prováděn tak dlouho, dokud má výraz v podmínce hodnotu true Příkladwhile (s<100) s=s+a;
Příklad - while Příklad 4: Skript spočítá, kolik bylo zadáno vstupních hodnot (čísel) a najde z nich největší. Zadávání hodnot končí jakoukoli neprázdnou nečíselnou odpovědí. • Na test, zda proměnná x neobsahuje číslo, použijeme funkci isNaN(x) - vrací hodnotu true, je-li testovaná hodnota nečíslo • Počáteční hodnotu proměnné pro maximum nastavíme buď na „hodně malé“ číslo (např. Number.MIN_VALUE) nebo do ní uložíme první načtené číslo.
<HTML><HEAD><TITLE>Statistika</TITLE></HEAD> <BODY> <SCRIPT language="JavaScript"> var i=0,max=Number.MIN_VALUE; document.write("<H2>Největší číslo</H2>"); document.write("Zadaná čísla:<BR>"); x=prompt("Zadej číslo:", ""); while (!(isNaN(x))) { x=parseFloat(x); i=i+1; if (x>max) max=x; document.write(x," "); x=prompt("Zadej číslo:", ""); } document.write("<BR>Počet zadaných čísel: ",i); document.write("<BR>Největší číslo: ",max); </SCRIPT></BODY></HTML> Příklad 4
Příkaz for • tzv. počítaný cyklus • typicky se používá, jestliže je znám počet opakování • opakování je řízeno tzv. řídící proměnnou změna hodnoty řídící proměnné na konci každého průchodu cyklem nastavení řídící proměnné na počáteční hodnotu for (inicializace;podmínka;aktualizace) příkaz testuje se vždy na začátku cyklu;určuje, jak dlouho se mají příkazy v cyklu opakovat
Jednoduché příklady Výpočet součtu 1 + 2 + 3 + ... + 10 • var k,s=0; for (k=1;k<=10;k=k+1) s=s+k; • s=0; for (k=1;k<=10;k++) s=s+k; • s=0; for (k=1;k<=10;k++) s+=k; • k=1;s=0; while (k<=10){s+=k; k=k+1} Výpočet součtu 2 + 4 + 6 + ... + 20 • var i,s=0; for (i=2;i<=20;i=i+2) s=s+i;
Jednoduché příklady Výpočet faktoriálu 1 * 2 * 3 * ... * n • var i,n,f; f=1; n=prompt(“zadej n“, ““);for (i=1;i<=n;i=i+1) f=f*i; • var i,n,f=1; n=prompt(“zadej n“, ““);for (i=1;i<=n;i=i+1) f*=i; • f=1; n=prompt(“zadej n“, ““);for (i=n;i>=1;i=i-1) f=f*i;
Příklad - for Příklad 5: Skript spočítá celkovou cenu za zboží při kliknutí na tlačítko „Cena celkem“. Součet cen se provede pouze pro zaškrtnuté položky. Výsledek se vypíše do připraveného textového pole formuláře. • Zde je uveden skript bez cyklu, na dalším slide je s cyklem for.
<HTML><HEAD><TITLE>caj</TITLE> <SCRIPT> function vypocet() { s=0;p=0; for (i=0;i<3;i++) {if (document.f.C[i].checked) s=s+parseFloat(document.f.C[i].value); } document.f.VYS.value=s+" Kč"; } </SCRIPT> </HEAD> <BODY bgcolor="lightblue"> <FORM name="f"> <H2>Objednávka</H2> <PRE><B> čaj cena</B><BR> <INPUT TYPE="checkbox" name= "C" value="32.5">MILFORD-malina 32.50 Kč<BR> <INPUT TYPE="checkbox" name= "C" value="33.5">MILFORD-borůvka 33.50 Kč<BR> <INPUT TYPE="checkbox" name= "C" value="34">MILFORD-citron 34.00 Kč<BR> <INPUT TYPE="button" VALUE="Cena celkem" onClick="vypocet()"> <INPUT TYPE="text" name= "VYS" size="8"> </PRE></FORM></BODY></HTML>
Další příkazy - pro cykly (nebudeme je používat ve cvičení) • příkaz break -slouží k násilnémuukončení cyklu bez ohledu na hodnotu podmínky cyklu • příkaz continue -způsobí vynechání následujících příkazů cyklu - u příkazu for se neprovedou příkazy za příkazem continue, provede se aktualizace a testování podmínky cyklu - u příkazu while se provede přímo testování podmínky cyklu (příkaz je opět přípustný pouze pro cykly)