JavaScript/Kenjiro995/While

Z Wikiverzity

Online editor[editovat]

Není nutné cokoliv instalovat protože existují online editory.

  • https://replit.com/ - osvědčil se mi při ukládání vytvořených programů, při vytváření nové relace si lze vybrat z mnoha programovacích jazyků
  • https://jsfiddle.net/ - ideální pro počáteční experimentování (použít pro tuto hodinu)
    • okno HTML - použití scriptu v html
    • okno CSC - pro kaskádové styly
    • okno JavaScript + No-libray (pure JS) - pro psaní čistě v JavaScriptu

Konstrukce[editovat]

Cyklus se vykonává dokut platí podmínka. Jakmile podmínka přestane platit, cyklus se přeruší.

Konstrukce While s podmínkou na začátku. Proto nejdříve otestuje podmínku a pak provádí příkazy:

while (condition) {
  // code block to be executed
}


Konstrukce While s podmínkou na konci. Nejdříve se provedou příkazy a pak textuje podmínku, jestli má opakovat. Proto se blok příkazu uskuteční minimálně jednou:

do {
  // code block to be executed
}
while (condition);

Použití[editovat]

text = "";
i = 0;
while (i < 10) {
  text += " " + i;
  document.write(text, "<br>");
  i++;
}

Výstup:

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
0 1 2 3 4 5
0 1 2 3 4 5 6
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9


I když i = 25 je větší než 10, tak se příkazy provedou minimálně jednou, protože podmínku testuje až na konci:

text = "";
i = 25;
do {
  text += " " + i;
  document.write(text, "<br>");
  i++;
}
while (i < 10)

Výstup:

25

Pro mírně pokročilé[editovat]

Vypiš všechna sudá čísla[editovat]

Teorie[editovat]

Posouzení čísla zda je sudé nebo liché, lze uskutečnit pomocí podmínky if, kde podmínkou je (cislo % 2 == 0). Podmínka využívá "zbytku po dělení" což je symbol "%". Podmínka tak říká, že pokud je číslo vydělené dvěma a přesto jeho zbytek se rovná nule, tak je toto číslo sudé. Neboli dělitelné dvěma bezezbytku. Jinak (else) je číslo liché.

var cislo = 6;
if (cislo % 2 == 0) {
	document.write("cislo je sudé");
}
else {
	document.write("cislo je liché");
}

Výsledek:

cislo je sudé


var cislo = 5;
if (cislo % 2 == 0) {
	document.write("cislo je sudé");
}
else {
	document.write("cislo je liché");
}

Výsledek:

cislo je liché

Script s využitím While[editovat]

var max = prompt("Zadejte maximální číslo ");
var cislo = 0;
while (cislo <= max) {
	if (cislo % 2 == 0) {
		document.write("cislo " + cislo +" je sudé", "<br>");
	}
	else {
		document.write("cislo " + cislo +" je liché", "<br>");
	}
  cislo = cislo + 1;
}

Vstup:

6

Výstup:

cislo 0 je sudé
cislo 1 je liché
cislo 2 je sudé
cislo 3 je liché
cislo 4 je sudé
cislo 5 je liché
cislo 6 je sudé

Vypiš každý x-tý znak[editovat]

text = "Školství je součást vzdělávacího systému zajišťující výchovu a vzdělávání dětí a mládeže.";
for (var x = 1; x < 8; x++) {
  var i = 0;
  document.write("x : " + x + " ");
  while (i < text.length) {  
    document.write(text[i]);
    i+=x;
  }   
  document.write("<br>");
}

Výstup:

x : 1 Školství je součást vzdělávacího systému zajišťující výchovu a vzdělávání dětí a mládeže.
x : 2 Šosv esuátvdlvch ytm aiťjc ýhv zěááídt ldž.
x : 3 Šlvjsčtzlahstuašjíýo věvíě mde
x : 4 Šs sávlc t ij h záít d.
x : 5 Štečváhs šcc dáě e
x : 6 Švstlhtajý ěí d
x : 7 Šíuzcsaíhváíd

Pro pokročilé[editovat]

Vytvoří tabulku násobilky[editovat]

document.write('<table border="1">');
j = 1;
while (j <= 10)
{
    document.write("<tr>");
    i = 1;
    while (i <= 10) {
        document.write("<td>" + i * j + "</td>");
        i++
    }
    document.write("</tr>");
    j++
}
document.write("</table>");

Výstup:

1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

Výpis prvních 100 prvočísel[editovat]

var pocet=100;
var i, jePrvocislo;
var n=1;
var max=0;
var p=new Array(pocet);
p[0]=2;                           // první uložené prvočíslo bude 2
 while (max<pocet-1) {
   n+=2;
   jePrvocislo=true;               // předpokládáme, že n bude prvočíslo
   i=0;
   while ((i<=max) && jePrvocislo)
     if (n%p[i]==0)                // je n dělitelné p[i] beze zbytku?
       jePrvocislo=false;          // ano je, nemůže být tedy prvočíslo
     else
       i++;                        // není, zvýšíme i a zkoušíme dál
   if (jePrvocislo) {              // je testované číslo n prvočíslo?
     max++;                        // ano je, zvýšíme index zarážky max
     p[max]=n;                     // a uložíme sem číslo n
   }
 }
 for (i=0; i<max; i++)             // všechna čísla uložená v poli
   document.write(p[i]+", ");      // vytiskneme
 document.write(p[max]);           // za posledním číslem už nebude čárka

Výstup:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541