Příklad 5.1
Vytiskněte tabulku faktoriálů čísel od 1 do 10. Použijte příkaz cyklu for.
<B>Tabulka faktoriálů od 1 do 10</B><BR> <SCRIPT> var f=1; for (var i=1; i<=10; i++) { f*=i; // f=f*i document.write(i+"! = "+f+"<BR>"); } </SCRIPT>
Příklad 5.2
Vytiskněte tabulku faktoriálů čísel od 1 do 10. Použijte příkaz cyklu while.
<B>Tabulka faktoriálů od 1 do 10</B><BR> <SCRIPT> var f=1; var i=1; while (i<=10) { f*=i; // f=f*i document.write(i+"! = "+f+"<BR>"); i++; // i=i+1 } </SCRIPT>
Příklad 5.3
Vytiskněte tabulku faktoriálů čísel od 1 do 10. Použijte příkaz cyklu for. Výsledky zformátujte do dynamicky generované tabulky.
<TABLE border="1"> <TR><TH>Číslo<TH>Faktoriál <SCRIPT> var f=1; for (var i=1; i<=10; i++) { f*=i; // f=f*i document.write("<TR align='right'><TD>"+i+"<TD>"+f); } </SCRIPT> </TABLE>
Číslo | Faktoriál |
---|
Příklad 5.4
Vytiskněte tabulku faktoriálů čísel od 1 do n, kde n je číslo zadané uživatelem (použijte metodu prompt).
<SCRIPT> var pocet=parseInt(prompt("Zadejte počet čísel - max. 170",10)); document.write("<B>Tabulka faktoriálů od 1 do "+pocet+"</B><BR>"); var f=1; for (var i=1; i<=pocet; i++) { f*=i; // f=f*i document.write(i+"! = "+f+"<BR>"); } </SCRIPT>
Příklad 5.5
Vytiskněte tabulku faktoriálů čísel od m do n, kde m a n jsou čísla zadaná uživatelem (použijte metodu prompt).
<SCRIPT> var m=parseInt(prompt("Zadejte počáteční hodnotu",1)); var n=parseInt(prompt("Zadejte koncovou hodnotu",10)); document.write("<B>Tabulka faktoriálů od "+m+" do "+n+"</B><BR>"); var f=1; for (var i=1; i<=n; i++) { f*=i; // f=f*i if (i>=m) document.write(i+"! = "+f+"<BR>"); } </SCRIPT>
Příklad 5.6
Nadefinujte funkci pro výpočet faktoriálu čísla n. Tuto funkci potom použijte při tisku tabulky faktoriálů všech sudých čísel od 2 do 20.
<SCRIPT> function Faktorial(n) { var soucin=n; for (var i=n-1; i>0; i--) soucin*=i; // soucin=soucin*i; return soucin; } document.write("<B>Tabulka faktoriálů všech sudých čísel od 2 do 20</B><BR>"); for (var i=2; i<=20; i+=2) { document.write(i+"! = "+Faktorial(i)+"<BR>"); } </SCRIPT>
Příklad 5.7
Vytiskněte tabulku faktoriálů čísel od 1 do n, kde n je číslo zadané uživatelem (použijte metodu prompt). Výstup řešte užitím atributu innerHTML.
<SCRIPT> function Zobraz() { var pocet=parseInt(prompt("Zadejte počet čísel - max. 170",10)); if (isNaN(pocet) || (pocet<1) || (pocet>170)) { alert("Chybné zadání!"); return; } document.all.odst.innerHTML="<B>Faktoriály od 1 do "+pocet+"</B><BR>"; var f=1; for (var i=1; i<=pocet; i++) { f*=i; // f=f*i document.all.odst.innerHTML+=(i+"! = "+f+"<BR>"); } } </SCRIPT> <FORM> <INPUT type="button" value="Zobraz tabulku faktoriálů" onclick="Zobraz()"> </FORM> <DIV id="odst"> Zde se zobrazí tabulka faktoriálů. </DIV>
Příklad 5.8
Vytiskněte tabulku faktoriálů čísel od 1 do n, kde n je číslo zadané uživatelem (použijte metodu prompt). Výstup zobrazte do textové oblasti formuláře.
<SCRIPT> function Vypis1() { var pocet=parseInt(prompt("Zadejte počet čísel - max. 170",10)); if (isNaN(pocet) || (pocet<1) || (pocet>170)) { alert("Chybné zadání!"); return; } document.form1.textpole.value="Faktoriály od 1 do "+pocet+"\n"; document.form1.textpole.value+="------------------------------------\n"; var f=1; for (var i=1; i<=pocet; i++) { f*=i; // f=f*i document.form1.textpole.value+=(i+"! = "+f+"\n"); } } </SCRIPT> <FORM name="form1"> <INPUT type="button" value="Zobraz tabulku faktoriálů" onclick="Vypis1()"> <BR> <TEXTAREA name="textpole" rows="20" cols="40" readonly> </TEXTAREA> </FORM>
Příklad 5.9
Vytiskněte tabulku faktoriálů čísel od 1 do n, kde n je číslo zadané uživatelem (použijte vstup z textového pole formuláře). Výstup zobrazte do textové oblasti formuláře.
<SCRIPT> function Vypis2() { var pocet=parseInt(document.form2.pocet.value); if (isNaN(pocet) || (pocet<1) || (pocet>170)) { alert("Chybné zadání!"); return; } document.form2.textpole.value="Faktoriály od 1 do "+pocet+"\n"; document.form2.textpole.value+="------------------------------------\n"; var f=1; for (var i=1; i<=pocet; i++) { f*=i; // f=f*i document.form2.textpole.value+=(i+"! = "+f+"\n"); } } </SCRIPT> <FORM name="form2"> max.<INPUT type="text" name="pocet" size="4" maxlength="3"> <INPUT type="button" value="Zobraz tabulku faktoriálů" onclick="Vypis2()"> <BR> <TEXTAREA name="textpole" rows="20" cols="40" readonly> </TEXTAREA> </FORM>
Příklad 5.10
Zobrazte hodnoty funkce sinus(x) v intervalu od a do b s krokem h. Všechna čísla v tabulce zaokrouhlete na tři desetinná místa. Výstup řešte dynamicky generovanou tabulkou. Uživatel musí mít možnost určit, zda tabulka bude orámována či nikoliv.
<H1 align="center">Tabulka hodnot funkce sin(<I>x</I>)</H1> <SCRIPT> var a=parseFloat(prompt("Zadejte dolní mez",0)); var b=parseFloat(prompt("Zadejte horní mez",10)); var h=parseFloat(prompt("Zadejte krok",0.5)); var ramecek=confirm("Přejete si tabulku orámovat?"); if (ramecek) document.write("<TABLE border='1' align='center' width='400'>"); else document.write("<TABLE border='0' align='center' width='400'>"); document.write("<COLGROUP span='2' align='center'>"); document.write("<TR><TH width='200'><I>x</I><TH width='200'>sin(<I>x</I>)"); var x=a; var x1,y; while (x<=b) { x1=Math.round(x*1000)/1000; // zaokrouhlená hodnota pro tisk y=Math.round(Math.sin(x)*1000)/1000; document.write("<TR><TD>"+x1+"<TD>"+y); x+=h; } document.write("</TABLE>"); </SCRIPT>
Ukázka pro a = 0, b = 2, h = 0.2 a volbu orámované tabulky.
Příklad 5.11
Pro zadané n z intervalu 2 až 10 vytiskněte tabulku malé násobilky. Pro vstup čísla n použijte metodu prompt. Ošetřete zadání neplatných hodnot.
<SCRIPT> var n=0; while (isNaN(n) || (n<2) || (n>10)) n=parseInt(prompt("Zadejte číslo n",10)); document.write("<TABLE border='1' bordercolor='black' align='center'>"); document.write("<TR bgcolor='pink'><TD colspan='"+n+1+"' align='center'>"); document.write("<FONT size='5'>MALÁ NÁSOBILKA</FONT>"); document.write("<TR align='center'><TD bgcolor='silver'> "); var i,j; for (i=1; i<=n; i++) // záhlaví tabulky document.write("<TD bgcolor='lightblue'><B>"+i+"</B>"); for (i=1; i<=n; i++) { // řádky tabulky document.write("<TR align='center'><TD bgcolor='lightblue'><B>"+i+"</B>"); for (j=1; j<=n; j++) // buňky aktuálního řádku document.write("<TD>"+i*j); } document.write("</TABLE>"); </SCRIPT>
Ukázka pro n = 10
Příklad 5.12
<SCRIPT> function ObjednejCD() { var zprava="Počet objednaných CD: "; var cenaCelkem=0; var pocetCD=0; for (var i=0; i<=3; i++) if (document.cedecka.cd[i].checked) pocetCD++; cenaCelkem=pocetCD*500; if (pocetCD>=2) cenaCelkem*=0.9; // sleva 10 % zprava+=pocetCD+"\nCelková cena: "+cenaCelkem+" Kč"; document.cedecka.vystup.value=zprava; } </SCRIPT> Vyberte si kompaktní disky, které si chcete objednat. Cena jednoho CD je 500,- Kč. Pokud si objednáte minimálně dva kompaktní disky, získáváte automaticky slevu ve výši 10 % z celkové hodnoty objednávky. <FORM name="cedecka"> <INPUT type="checkbox" name="cd"> Hity 50. let<BR> <INPUT type="checkbox" name="cd"> Hity 60. let<BR> <INPUT type="checkbox" name="cd"> Hity 70. let<BR> <INPUT type="checkbox" name="cd"> Hity 80. let<BR> <INPUT type="button" value="Objednat" onclick="ObjednejCD()"> <INPUT type="reset" value="Smazat"><BR> <B>Vaše objednávka:</B><BR> <TEXTAREA name="vystup" rows="5" cols="60" readonly> </TEXTAREA> </FORM>
Příklad 5.13
<SCRIPT> function CelkovaCenaCD() { var suma=0; for (var i=0; i<=3; i++) if (document.formCD.cd[i].checked) suma+=parseInt(document.formCD.cd[i].value); document.formCD.celkem.value=suma+" Kč"; } </SCRIPT> Vyberte si kompaktní disky, které si chcete objednat. Cena každého CD je uvedena. <FORM name="formCD"> <INPUT type="checkbox" name="cd" value="420"> Hity 50. let (420,- Kč)<BR> <INPUT type="checkbox" name="cd" value="450"> Hity 60. let (450,- Kč)<BR> <INPUT type="checkbox" name="cd" value="480"> Hity 70. let (480,- Kč)<BR> <INPUT type="checkbox" name="cd" value="510"> Hity 80. let (510,- Kč)<BR> <INPUT type="text" name="celkem" size="10" readonly> <INPUT type="button" value="Celková cena" onclick="CelkovaCenaCD()"> <INPUT type="reset" value="Smazat"><BR> </FORM>
Příklad 5.14
Následující skript spočítá průměrnou hmotnost a výšku
pěti zadaných osob. Průměrné hodnoty se zaokrouhlí na jedno desetinné místo.
Současně se vypíše jméno nejvyšší osoby. Pokud má maximální výšku několik osob současně,
vypíše se jméno pouze první z nich. Předpokládejme, že ve složce
images
máme uložený obrázek se jménem fotbal.gif
.
<SCRIPT> function Zpracuj() { var maxVyska=0; var maxVyskaKdo=0; var soucHmotnosti=0; var soucVysek=0; for (var i=0; i<=4; i++) { soucHmotnosti+=parseFloat(document.osoby.hmotnost[i].value); soucVysek+=parseFloat(document.osoby.vyska[i].value); if (parseFloat(document.osoby.vyska[i].value)>maxVyska) { maxVyska=parseFloat(document.osoby.vyska[i].value); maxVyskaKdo=i; } } document.osoby.prumHmotnost.value=Math.round(soucHmotnosti/5*10)/10; document.osoby.prumVyska.value=Math.round(soucVysek/5*10)/10; document.osoby.nejvyssi.value=document.osoby.jmeno[maxVyskaKdo].value; } </SCRIPT> <FORM name="osoby"> <TABLE align="center" border="1" cellspacing="0" cellpadding="5"> <COLGROUP align="center" bgcolor="white"> <COLGROUP align="center" bgcolor="lightblue"> <COLGROUP align="center" bgcolor="antiquewhite"> <COLGROUP align="center" bgcolor="lightyellow"> <TR> <TD rowspan="6"><IMG src="images/fotbal.gif" width="216" height="275"> <TD>Jméno<TD>Hmotnost<TD>Výška <TR> <TD><INPUT type="text" name="jmeno" size="20"> <TD><INPUT type="text" name="hmotnost" size="5"> kg <TD><INPUT type="text" name="vyska" size="5"> cm <TR> <TD><INPUT type="text" name="jmeno" size="20"> <TD><INPUT type="text" name="hmotnost" size="5"> kg <TD><INPUT type="text" name="vyska" size="5"> cm <TR> <TD><INPUT type="text" name="jmeno" size="20"> <TD><INPUT type="text" name="hmotnost" size="5"> kg <TD><INPUT type="text" name="vyska" size="5"> cm <TR> <TD><INPUT type="text" name="jmeno" size="20"> <TD><INPUT type="text" name="hmotnost" size="5"> kg <TD><INPUT type="text" name="vyska" size="5"> cm <TR> <TD><INPUT type="text" name="jmeno" size="20"> <TD><INPUT type="text" name="hmotnost" size="5"> kg <TD><INPUT type="text" name="vyska" size="5"> cm <TR bgcolor="silver"> <TD rowspan="2"><INPUT type="button" value="Zpracuj" onclick="Zpracuj()"> <TD>Průměrné hodnoty <TD><INPUT type="text" name="prumHmotnost" size="5" readonly> kg <TD><INPUT type="text" name="prumVyska" size="5" readonly> cm <TR bgcolor="silver"> <TD>Nejvyšší osoba <TD colspan="2"><INPUT type="text" name="nejvyssi" size="20" readonly> </TABLE> </FORM>
Příklad 5.15
Pro zadaný počet čísel (metodou prompt) dynamicky vygenerujte
formulář, který bude sloužit ke vstupu zadávaných čísel, tedy
bude mít právě tolik vstupních prvků, kolik uživatel zadal celkový počet čísel.
Z čísel vložených do formuláře
pak vypočtěte jejich součet a průměrnou hodnotu a jejich
hodnoty zobrazte graficky formou jednoduchého grafu.
Při tvorbě grafu pro zjednodušení předpokládejte, že se budou obvykle zadávat
reálná čísla z intervalu 1 až 100 (záporná čísla neuvažujte) a že
počet zadávaných čísel nebude větší než 20. Výsledky zobrazujte s přesností na
tři desetinná místa. Pro zobrazení položek grafu použijeme obrázek
cerv_bod.gif
, který je uložen ve složce
images
a má rozměr 1 x 1 bod. Víme, že velikost obrázku
lze dynamicky měnit a toho právě můžeme výhodně využít při tvorbě grafu.
Nesmíme však zapomenout, že výška obrázku musí být celé číslo, a proto musíme
reálnou hodnotu čísla zaokrouhlit na celé číslo. Tedy např. pro
reálné číslo 21.235 nastavíme výšku obrázku na 21 bodů.
<SCRIPT> function Statistika() { var suma=0; var cisla=new Array(pocet); for (i=0; i<pocet; i++) { cisla[i]=parseFloat(document.stat.elements[i].value); // naplň pole suma+=cisla[i]; // a spočti sumu } document.stat.soucet.value=Math.round(suma*1000)/1000; var prumer=suma/pocet; // vypočti průměr document.stat.prumer.value=Math.round(prumer*1000)/1000; for (i=0; i<pocet; i++) // zobraz graf document.all.obr[i].height=Math.round(document.stat.elements[i].value); } // výška obrázku musí být celé číslo </SCRIPT> <H1 align="center">Statistické výpočty</H1> <FORM name="stat"> <TABLE border="1" bordercolor="black" align="center" cellspacing="0" cellpadding="3"> <COLGROUP align="right" bgcolor="antiquewhite" width="120"> <COLGROUP align="center" bgcolor="lightblue" width="150"> <TR> <TH>Poř. č.<TH>Zadaná čísla <SCRIPT> // dynamické generování formuláře var pocet=0; while (isNaN(pocet) || (pocet<2) || (pocet>20)) pocet=parseInt(prompt("Zadejte počet čísel (max.20)")); for (var i=1; i<=pocet; i++) document.write("<TR><TD>"+i+"<TD><INPUT type='text' size='10'>"); </SCRIPT> <TR bgcolor="silver"> <TD><B>Součet</B> <TD><INPUT type="text" name="soucet" size="10" readonly> <TR bgcolor="silver"> <TD><B>Průměr</B> <TD><INPUT type="text" name="prumer" size="10" readonly> <TR align="center" bgcolor="silver"> <TD><INPUT type="reset" value=" Smaž "> <TD><INPUT type="button" value=" Vypočti " onclick="Statistika()"> </TABLE> <BR><BR> <TABLE border="1" bordercolor="1" align="center" cellspacing="0" cellpadding="5"> <SCRIPT> // dynamické generování tabulky pro graf document.write("<TR><TD align='center' colspan='"+pocet+"'>"); document.write("<FONT size='5' color='blue'><B>GRAF</B></FONT>") document.write("<TR valign='bottom'>"); for (i=1; i<=pocet; i++) { // vložení obrázků document.write("<TD width='20'><IMG src='images/cerv_bod.gif' "); document.write("name='obr' width='15' height='1'>"); } document.write("<TR align='center' bgcolor='pink'>"); for (i=1; i<=pocet; i++) // popisky osy x document.write("<TD>"+i); </SCRIPT> </TABLE> </FORM>
Ukázka pro pocet = 5
Náhled: