Úvod do JavaScriptu

Úvod do JavaScriptu

1. Výplata

  1. Spočítejte svůj měsíční příjem víte-li, že pracujete 7 hodin denně se mzdou 265 Kč na hodinu. Řekněme, že měsíc má 21 pracovních dní.
  2. Pokud pracujete na živnostenský list, můžete si odečíst 60% příjmů jako paušál a ze zbytku zaplatíte 15% daň. Spočítejte jak velkou daň zaplatíte ze své výplaty. Pomocí funkce Math.floor zaokrouhlete výsledek dolů na celé koruny.

Řešení

//první část
>  7 * 21 * 265
<· 38955

//druhá část
>  Math.floor((7 * 21 * 265) * (1 - 0.6) * 0.15)
<· 2337

2. Délka filmu

V programu kin se často uvádí délka filmu v minutách. Například rozšířená verze filmu Pán prstenů: Dvě věže trvá 223 minut. My bychom ovšem délku filmu raději věděli v hodinách a minutách. Za použití funkcí a operátorů z této lekce spočítejte, kolik hodin a minut trvá film Pán prstenů: Dvě věže.

Řešení

//hodin
>  Math.floor(223 / 60)
<· 3

// minut
>  223 % 60
<· 43

3. E-mail

  1. Vytvořte řetězec obsahující vaši e-mailovou adresu.
  2. Sestavte emailovou adresu tak, že sečtete dohromady vaše křestní jméno, znak tečka, vaše příjmení a koncovku @mujmail.com.

Řešení

>  'standa' + '.' + 'kosacek' + '@mujmail.com';
<· "standa.kosacek@mujmail.com"

4. Bonus | Úrok

Fíha banka a.s. nabízí na svých stránkách spořící účet s úrokem 2,4%. Když si na takový účet uložíte 1 000 000 kč, kolik peněz nastřádáte za 10 let?

Řešení

>  1000000 * (1.024 ** 10);
<· 1267650.6002282298

5. Bonus | Nový koberec

Do pokoje o tvaru čtverce a rozloze 30m2 potřebujeme koupit nový koberec. Jakou délku má mít strana koberce? Vejde se nám srolovaný do dodávky s nákladovým prostorem dlouhým 5m?

Řešení

>  Math.sqrt(30);
<· 5.477225575051661

6. Náhodná čísla

  1. Založte si JavaScriptový program a pomocí funkcí console.log a Math.random vypište do konzole pět náhodných čísel.
  2. Využijte toho, že do funkce console.log můžete poslat více vstupů a zařiďte, aby výstup programu vypadal následovně.
1: 0.8543991725137559
2: 0.3668845200214361
3: 0.4259711930234611
4: 0.9319442904382422
5: 0.3040681205859323

Řešení

console.log('1:', Math.random());
console.log('2:', Math.random());
console.log('3:', Math.random());
console.log('4:', Math.random());
console.log('5:', Math.random());
<!DOCTYPE html>
<html lang="cs">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Náhodná čísla</title>
  </head>
  <body>
    <h1>Náhodná čísla</h1>
    <script src="index.js"></script>
  </body>
</html>

7. Převod měny

  1. Dejme tomu, že si jako programátoři vyděláváte 20 euro na hodinu. Uložte tuto hodnotu do proměnné wageInEur.
  2. Spočítejte, kolik je vaše hodinová mzda v českých korunách, jestliže kurz eura je 26.58 kč. Výsledek zaokrouhlete na celé koruny a uložte do proměnné wageInCzk.
  3. Vypište obsah proměnné wageInCzk do webové stránky tak, aby na stránce byl nadpis h1 s obsahem:

    Mzda v korunách: 532 kč

Řešení

const wageInEur = 20;
const wageInCzk = wageInEur * 26.58;

document.write('<h1>Mzda v korunách: ' + Math.round(wageInCzk) + ' kč</h1>');
<!DOCTYPE html>
<html lang="cs">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Převod měny</title>
  </head>
  <body>
    <script src="index.js"></script>
  </body>
</html>

8. Ultramaraton

Představme si, že jste pořadatelé ultramaratonského závodu. Závod začiná ve tři hodiny odpoledne, což ve 24-hodinovém formátu zapíšeme jako 15. Nejlepší běžec zvládne vaši brutální trasu za 10 hodin. Doběhne tedy v jednu hodinu ráno, v našem formátu zapsáno jako 1.

Založte si JavaScriptový program a uložte čas startu závodu do proměnné start. Do proměnné delka uložte délku závodu pro nějakého běžce. Klidně může být pomalejší než náš šampion. Do proměnné konec spočítejte, v kolik hodin závod pro našeho běžce skončí a vypište její obsah do stránky. Vyzkoušejte různé délky a ověřte, že váš postup funguje.

Řešení

const start = 15;
const delka = 10;

const konec = (start + delka) % 24;

document.write('Závod pro našeho běžce skončí v ' + konec + ':00.');
<!DOCTYPE html>
<html lang="cs">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Ultramaraton</title>
  </head>
  <body>
    <h1>Ultramaraton</h1>
    <script src="index.js"></script>
  </body>
</html>

9. Na doma | Příjem divadla

  1. Jeden lístek do divadla Pěst na oko stojí 12 euro. Spočítejte měsíční příjem divadla ze vstupného přichází-li průměrně 174 návštěvníků na jedno představení a divadlo hraje 15 představení měsíčně. Uložte výsledek do proměnné prijem.
  2. Divadlo se rozhodlo prodávat studentské vstupné ve výši 65% plného vstupného. Jak se změní měsíční příjem divadla pokud víme, že 40% návštěvníků jsou studenti?

Řešení

'use strict';

const cenaVstupenky = 12;
const pocetNavstednikuNaPredstaveni = 174;
const pocetPredstaveni = 15;

// první část
const prijem = cenaVstupenky * pocetNavstednikuNaPredstaveni * pocetPredstaveni;

console.log(prijem); // 31320

// druhá část
const studentskeVstupne = cenaVstupenky * 0.65;
const pocetNavstevZaMesic = pocetNavstednikuNaPredstaveni * pocetPredstaveni;
const pocetStudentuZaMesic = pocetNavstevZaMesic * 0.4;

const prijemPoZavedeniStudentskychSlev =
  (pocetNavstevZaMesic - pocetStudentuZaMesic) * cenaVstupenky +
  pocetStudentuZaMesic * studentskeVstupne;

console.log(prijemPoZavedeniStudentskychSlev); //26935.2

console.log(`Příjem divadla se změní o ${prijem - prijemPoZavedeniStudentskychSlev}`); // 4384.79

10. Na doma | Schopnější zaokrouhlování

Mějme v proměnné x uloženo nějaké desetinné číslo. Pomocí funkce Math.round jej můžeme zaokrouhlit na celá čísla takto.

> Math.round(x)

Co kdybychom však chtěli zaokrouhlit na desetiny, setiny nebo třeba celé stovky? Napište program, který pomocí funkce Math.round

  1. zaokrouhlí číslo x s přesností na desetiny,
  2. zaokrouhlí číslo x s přesností na setiny,
  3. zaokrouhlí číslo x s přesností na celé stovky.

Řešení

'use strict';

const x = 3567.467828092;

const naDesetiny = Math.round(x * 10) / 10;
console.log(naDesetiny); // 3567.5

const naSetiny = Math.round(x * 100) / 100;
console.log(naSetiny); // 3567.47

const naCeleStovky = Math.round(x * 0.01) / 0.01;
console.log(naCeleStovky); // 3600

11. Na doma | Házení kostkou

Vymyslete jak použít funkci Math.random a různé zaokrouhlovací funkce probírané v této lekci k simulování hodu klasickou šestistěnnou kostkou. S použitím vhodných funkcí sestavte výraz, který vygeneruje náhodné celé číslo mezi 1 a 6.

Zamyslete se nad tím, zda vámi vytvořený výraz generuje všechna čísla skutečně se stejnou pravděpodobností. Vemte v úvahu, že funkce Math.random generuje náhodná čísla mezi 0 (včetně) a 1 (vyjma). Je tedy malinká pravěpodobnost, že občas padne přesně číslo 0. Naopak číslo 1 padnout nemůže.

Řešení

'use strict';

const hodKostkou = Math.floor(Math.random() * 6) + 1;
console.log(hodKostkou);

12. Na doma | Schopnější zaokrouhlování 2

Představte si, že máme v proměnné se jménem x uloženo nějaké desetinné číslo a v proměnné k údaj na kolik cifer chceme zaokrouhlovat. Například k=3 znamená, že chceme zaokrouhlit na tisíciny. Naopak k=-2 znamená, že zaokrouhlujeme na celé stovky. Hodnota k=0 tedy znamená běžné zaokrouhlování na jednotky.

Sestavte s pomocí funkce Math.round program, který zaokrouhlí číslo x na zadaný počet cifer k.

Řešení

'use strict';

const x = 3567.467828092;
const k = -2;
const nasobitel = 10 ** k;

const zaokrouhleni = Math.round(x * nasobitel) / nasobitel;

console.log(zaokrouhleni);