JavaScript — Čísla, reťazce, logické hodnoty a polia

Obsah lekcie

Úvod

Krátke zopakovanie dátových typov v JavaScripte: number, string, boolean, array.

// príklad
let vek = 17; //number - čísla
let meno = "Ján"; //string - reťazce
let dospely = false; //boolean - logické hodnoty
let znamky = [1, 2, 3, 1]; // polia - array
console.log(vek, meno, dospely, znamky);

Čísla

Základné aritmetické operácie a často používané metódy z objektu Math.

Operátory

+  -  *  /  %(modulo)

let prve = Number(prompt("Zadaj prvé číslo:")); //Number prekonvertuje text na číslo (inak by sa reťazce spájali, napr. "5" + "3" = "53")
let druhe = Number(prompt("Zadaj druhé číslo:"));
let operator = prompt("Zadaj operátor (+, -, *, /)");

switch (operator) {
  case "+":
    vysledok = prve + druhe;
    break;
  case "-":
    vysledok = prve - druhe;
    break;
  case "*":
    vysledok = prve * druhe;
    break;
  case "/":
    vysledok = prve / druhe;
    break;
  default:
    vysledok = "Zlý operátor";
}

// Výpis na stránku
document.write(`Výsledok ${prve} ${operator} ${druhe} = ${vysledok}`);

Dorobiť:
console.log(a % b); // 1 (zvyšok po delení)

`${...}` – šablónový reťazec (template literal)
Tento zápis umožňuje vložiť premenné alebo výrazy priamo do textu.
Všetko, čo je medzi ${...}, sa vyhodnotí a výsledok sa vloží do textu.

Užitočné funkcie (Math)

Math.round(3.7);   // 4 – zaokrúhlenie
Math.floor(3.7);   // 3 – nadol
Math.ceil(3.2);    // 4 – nahor
Math.abs(-5);      // 5 – absolútna hodnota
Math.pow(2, 3);    // 8 – mocnina
Math.sqrt(16);     // 4 – druhá odmocnina
Math.max(5, 9, 2); // 9 – najväčšie číslo
Math.min(5, 9, 2); // 2 – najmenšie číslo
Math.random();     // náhodné číslo medzi 0–1

//výpis
console.log(Math.random());
Cvičenie: Vygenerujte náhodné celé číslo medzi 1 a 10 a vypíšte ho.
let nahodne = Math.floor(Math.random() * 10) + 1;
console.log(nahodne);

Reťazce

Práca s textom — metódy a tipy.

Základné operácie

let meno = "Eva";
let mesto = "Bratislava";
console.log(`Ahoj, volám sa ${meno} a bývam v ${mesto}.`);

Užitočné metódy

let text = "JavaScript je super!";

text.length;                 // počet znakov
text.toUpperCase();          // veľké písmená
text.toLowerCase();          // malé písmená
text.includes("super");      // true – obsahuje slovo
text.startsWith("Java");     // true
text.endsWith("!");          // true
text.indexOf("Script");      // 4 – pozícia
text.replace("super", "úžasný"); // nahradí text
text.substring(0, 10);       // "JavaScript"
text.slice(-6);              // "super!"
text.trim();                 // odstráni medzery na začiatku a konci
text.repeat(3);              // zopakuje text 3×

//výpis
console.log(text.length);
Cvičenie: Spojte meno a priezvisko do jedného reťazca, prekonvertujte na veľké písmená a vypíšte dĺžku.
let meno = "Anna";
let priezvisko = "Nováková";
let celeMeno = (meno + " " + priezvisko).toUpperCase();
console.log(celeMeno, celeMeno.length);

Logické hodnoty

Typ boolean a najčastejšie porovnania a logické operátory.

Porovnávacie operátory

let pravda = true;
let nepravda = false;

===  // striktne porovnanie (hodnota + typ)
==   // laické porovnanie (konverzia typov)
!==  // nerovné (striktné)
> < >= <=

príklady:
5 > 3       // true
5 < 3       // false
5 == "5"    // true  (porovnáva len hodnotu)
5 === "5"   // false (porovnáva aj typ)
5 !== 4     // true

Logické operátory

&&  // AND
||  // OR
!   // NOT

príklady:
true && false   // AND → false
true || false   // OR → true
!true           // NOT → false
Cvičenie: Skontrolujte, či je číslo párne.
let cislo = 8;
let parne = (cislo % 2 === 0);
console.log("Párne?", parne); // true or false

/*Používateľ má prístup len vtedy, ak:
***má viac ako 18 rokov a je člen klubu alebo má VIP status.*/

let vek = 20;
let clen = false;
let vip = true;

if (vek > 18 && (clen || vip)) {
  console.log("Prístup udelený.");
} else {
  console.log("Prístup zamietnutý.");
}

Funkcie

Klasická funkcia:

Štandardný spôsob definovania funkcie v JavaScripte pomocou kľúčového slova function.

function nazovFunkcie(parametre) {
  // telo funkcie
  return vysledok;
}

Príklad 1:

function sucet(a, b) {
  return a + b;
}
console.log(sucet(5,10));

Príklad 2:

function pozdrav(meno) {
  return "Ahoj " + meno + "!";
}
console.log(pozdrav("Vlado")); // 👉 vypíše: Ahoj Vlado!

Arrow funkcia (šípková funkcia):

Skrátený zápis funkcie. Je vhodná pre jednoduché výrazy a callbacky.

const nazovFunkcie = (parametre) => {
  // telo funkcie
  return vysledok;
}

Skrátený zápis (ak má len jeden príkaz)
const nazovFunkcie = (parametre) => príkaz;

Príklad 1:
    const suceta = (a, b) => a + b;
console.log(suceta(5,10));

Príklad 2:
const pozdrava = (meno) => {
  return "Dobrý deň " + meno + "!";
};
console.log(pozdrava("Vlado")); // 👉 vypíše: Dobrý deň Vlado!

Príklad 3:
const pozdravar = meno => "Dobrý deň " + meno + "!";

console.log(pozdravar("Vlado")); // 👉 Dobrý deň Vlado!

Polia

Vytvorenie poľa, základné úpravy, iterácia a pokročilejšie metódy.

Vytvorenie a prístup

let cisla = [1, 2, 3, 4];
console.log(cisla[0]); // prvý prvok
console.log(cisla.length);

Užitočné metódy

let pole = [1, 2, 3, 4, 5];

pole.push(6);         // pridá na koniec
pole.pop();           // odstráni posledný
pole.unshift(0);      // pridá na začiatok
pole.shift();         // odstráni prvý
pole.includes(3);     // true – obsahuje 3
pole.indexOf(4);      // 3 – pozícia prvku
pole.reverse();       // otočí poradie
pole.sort();          // zoradí (pozor, ako text!)
pole.join(", ");      // spojí prvky do textu
pole.slice(1, 3);     // vráti [2, 3]
pole.splice(2, 1);    // vymaže 1 prvok od indexu 2

//výpis
console.log(pole.push(6));

Funkcionálne metódy

arr.forEach(fn)         // pre každý prvok
arr.map(fn)             // vráti nové pole (transformácia)
arr.filter(fn)          // vráti len prvky, kde fn true
arr.reduce(fn, start)   // zredukuje do jednej hodnoty
arr.find(fn)            // nájde prvý prvok podľa podmienky
arr.some(fn)            // či aspoň jeden prvok spĺňa podmienku true/false
arr.every(fn)           // či všetky prvky spĺňajú podmienku

Príklad:
//let pole = [1, 2, 3, 4, 5]; - zadefinované vyššie

pole.forEach(function(prvok) {
    console.log(prvok);
});

let dvojnasobky = pole.map(x => x * 2);  // vráti nové pole
console.log(`dvojnasobky: ${dvojnasobky}`);

let parne = pole.filter(x => x % 2 === 0); // vyfiltruje párne čísla
console.log("parne: ", parne);

let sucet = pole.reduce((a, b) => a + b, 0); // spočíta všetky
console.log("sucet: ", sucet);

let hladaj = pole.find(f => f > 3); // najde prvy vasci ako 2
console.log("hladaj: ", hladaj);

const maVelkeCislo = cisla.some(c => c > 4);
console.log(maVelkeCislo); // true

const maCislo = cisla.every(e => e > 5);
console.log(maCislo); // false

let mena = ["anna", "peter", "lucia"];
let velkeMena = mena.map(meno => meno.toUpperCase());
console.log("mena: ", velkeMena); // ["ANNA", "PETER", "LUCIA"]

Cvičenie:
  1. Vytvorte pole [5,10,15,20,25].
  2. Spočítajte súčet (reduce) a priemer.
  3. Vyfiltrujte čísla väčšie ako 10. Použi zápis arrow funkcie.
let cisla = [5, 10, 15, 20, 25];
let sucet = cisla.reduce((a,b) => a + b, 0);
let priemer = sucet / cisla.length;
let vacsieAko10 = cisla.filter(x => x > 10);
console.log(sucet, priemer, vacsieAko10);

Zhrnutie a otázky

  • Čo robí .map() vs .forEach()?
  • Kedy použiť === namiesto ==?
  • Ako zistíme dĺžku poľa a dĺžku reťazca?

Domáca úloha

Implementujte program, ktorý:

  1. Má pole čísel [1.5, 3.2, 4.8, 7.1, 2.9].
  2. Spočíta súčet zaokrúhlených hodnôt (Math.round() pre každý prvok) a vypíše ho.
  3. Nájde najväčšie a najmenšie číslo (použite Math.max(...arr) / Math.min(...arr)).
  4. Vypíše, či je priemer väčší ako 5 (boolean true/false).
// vzorové riešenie
let arr = [1.5, 3.2, 4.8, 7.1, 2.9];
let zaokruhlene = arr.map(x => Math.round(x));
let sucet = zaokruhlene.reduce((a,b) => a + b, 0);
let max = Math.max(...arr);
let min = Math.min(...arr);
let priemer = arr.reduce((a,b)=>a+b,0)/arr.length;
console.log({zaokruhlene, sucet, max, min, priemer, priemerVacsieAko5: priemer > 5});

Úlohy na precvičenie

  1. Vytvor pole [2, 4, 6, 8, 10] a pomocou map() vytvor pole, kde bude každé číslo zvýšené o 5.
  2. Pomocou filter() vypíš len tie čísla, ktoré sú menšie ako 8.
  3. Použi reduce() na spočítanie všetkých čísel v poli.
  4. Pomocou find() nájdi prvé číslo, ktoré je deliteľné 3.
  5. Vytvor pole mien a pomocou map() vypíš ich dĺžku (["Eva", "Ján", "Alexandra"] → [3, 3, 9]).
  6. let slova = ["jablko", "pes", "dvere", "strom", "auto"]; Pomocou sort zoraď pole vzostupne podľa dĺžky slov.
  7. let slova = ["pes", "autobus", "dom", "strom", "programovanie", "hra"]; Pomocou arrow funkcie spojte do jedného reťazca iba tie slová, ktoré majú viac ako 4 písmená