JavaScript/Kenjiro995/Bankomat

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

Bankomat v1.0

editovat
var bankovky = [5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1];
var castka = prompt("Jakou částku chceš vybrat? ");
var i = 0;
while (castka > 0) {
	while (castka > bankovky[i]) {
  	document.write(bankovky[i], "Kč", "<br>");
    castka -= bankovky[i];
    }
    i++;
}

Vstup:

Jakou částku chceš vybrat? 25000

Výstup:

5000Kč
5000Kč
5000Kč
5000Kč
2000Kč
2000Kč
500Kč
200Kč
200Kč
50Kč
20Kč
20Kč
5Kč
2Kč
2Kč

Ve výstupu je ovšem drobná chyba, bankomat vybral o jednu korunu méně. Zkuste opravit a najít chybu:

Problém spočívá ve spatně zvolené podmínce. Místo castka > bankovky[i] je správné napsat castka >= bankovky[i]. Jinak bude vždy chybět jedna koruna. Bankomat bude vypisovat tak dlouho dokud zarážka nenarazí na částku větší než koruna a dál nevypíše. Ale pokud částka větší nebo rovno bankovce, tak vypíše i poslední korunu.

while (castka >= bankovky[i]) {

Vstup:

25000

Výstup:

5000Kč
5000Kč
5000Kč
5000Kč
5000Kč


Ve formátování zobrazování částky je chyba vypisuje 5000Kč, lepší by bylo aby vypisoval 5000 Kč (s mezerou mezi částkou a měnou):

Místo špatného kódu:

document.write(bankovky[i], "Kč", "<br>");

Je lepší před Kč vložit mezeru:

document.write(bankovky[i]," Kč", "<br>");

Výstup:

5000 Kč
5000 Kč
5000 Kč
5000 Kč
5000 Kč


Vysvětlete co znamená zjednodušený zápis i++ a castka -= bankovky[i]. Jaký je jejich úplný matematický tvar?:

  • i++ je i = i + 1
  • castka -= bankovky[i] je castka = castka - bankovky[i]