Adattípusok

// komment -> információ + archiválás

/* Többsoros komment

  • /

// Egyszerű adattípusok/Primitív adattípusok

// String -> szöveg (karakterfüzér)

console.log("Hello"); console.log('Hello');

// Number

console.log(5); console.log("5"); //nem Number

// Boolean (true/false)

console.log(true); console.log(3 < 4);

// undefined

let kutya; console.log(kutya);

// null -> üres

console.log(null);

// Összetett adattípusok

// Tömb -> Array<number> Array<type>/Array of something

console.log([1,2,3,4,5]); tomb1 = [1,2,3,4]; console.log(tomb1); let tomb2 = []; console.log(tomb2); console.log(tomb1[1]); tomb1.push(5); console.log(tomb1); tomb1[5] = 6; console.log(tomb1);

// Tömbök tömbje

tomb3 = [[1, 2], ["a", "b"], ["I", "II"]];

// logoljuk ki "b"-t console.log(tomb3[1][1]);

// Objektum (Object) -> Kulcs érték párok

tesiJegyek = [["Aladár",3],["Béla",2],"C",4,5,3,4];

tesiObjektum = {

   Aladár: 3,
   Béla: 2,
   Cecil: 4,

}

console.log(tesiObjektum.Aladár); tesiObjektum.Denes = 5; console.log(tesiObjektum);

osztaly = {

   Aladár: {
       tesi: 5,
       tori: 5,
       webprogramozas: 1
   },
   Béla: {
       tesi: 4,
       tori: 3,
       webprogramozas: 5
   },
   Cecil: {
       tesi: 3,
       tori: 5,
       webprogramozas: 4
   }

}

console.log(osztaly.Cecil.tesi);

// Set

letters = new Set(["a", "b", "c"]); console.log(letters); letters.add("d"); console.log(letters);

let numbers = new Set();

while(numbers.size<10) {

   numbers.add(Math.floor(Math.random()*10+1));
   console.log(numbers);

}

// Map

jegyek = new Map([["Aladár", 3], ["Béla", 4], ["Cecil", 5]]);

console.log(jegyek); console.log(jegyek.size); jegyek.set("Laci", 5); console.log(jegyek); jegyek.set("Béla", 5); console.log(jegyek);

script.js

Megnyitás ezzel…

script.js megjelenítése.

Órai anyag 01.24 - Adattípusok

Gábor Négyesi

jan. 24.

Kurzusmegjegyzések

Változók ,operátorok

// Változók

// var, let, const
// var = global scope, let, const = block scope

{
    var valtozo1;
    let valtozo2 = Number(2);
    const valtozo3 = 3;
    valtozo2 = 2.5;
    console.log(valtozo1,valtozo2, valtozo3);
    let valtozo4, valtozo5;
}

// pl. a = 1, b = a; log => a, b; b = 2; log => a, b
// a = [1, 2, 3] , b = a; log => a, b; b[3] = 4; log => a, b

// Konstans tömbök

const tomb = ["a", "b", "c"];
tomb[0] = "A"; // Ez lehetséges
//tomb = ["a", "b", "c"]; Ez nem
console.log(tomb);

// Operátorok (pl. +, -, %, ++, ?)

/*
Csoportosításuk:

Operandusok száma szerint:
- unary, 1 operandus (pl. a++, !a)
- binary, 2 operandus (pl. a + b)
- ternary, 3 operandus (pl. d = (a ? b : c) ) => Conditional operator

Operátor elhelyezkedése szerint
- prefix (előtte, pl. ++a, !a)
- postfix (utána, pl. a++)
- infix (középre, pl. a * b)

Hajt-e végre mellékhatást?
- Igen (pl. a++, a--, =)
- Nem (pl. ==, <, >, !, +, -, *, /)
*/

// Aritmetikai operátorok (number, number) => (number)
// +, -, *, /, %, **

let a = 2;
let b = 3;
console.log(a + b);
console.log(a - b);
console.log(a * b);
console.log(a / b);
console.log(a % b);
console.log(a**b);

// Értékadó operátor (any) => (any)

let c = "2";

// Összehasonlító operátorok (any, any) => (boolean)
// == (equality), === (identity), <, >, <=, >=
// Negálás
// !, !=, !==

console.log(a == c);
console.log(a === c);
console.log(a > b);
let d = true;
console.log(!d);
console.log(a != c);
console.log(a !== c);

// || => VAGY, && => ÉS (boolean, boolean) => (boolean)

console.log(3 < a && a < 4);

// Increment, decrement (number) => (number)
// ++, --, *=, /= +=, -=

//a = a + 1;
a++;
console.log(a);

//a = a + 3;
a += 3;
console.log(a);

// b = 3
console.log(b++); // b = 4, de a kiírás hamarabb van
console.log(b); // itt már kiírja a 4-et
console.log(++b); // b = 5, és UTÁNA írja ki

// Összefűzés/konkaktenálás (string, string) => (string)
// +

let x = "2";
let y = "3";
console.log(x + y);
console.log("Az x változó tartalma: " + x);

// Conditional operator (boolean, any, any) => (any)

let igazE = false;
console.log(igazE ? "elso" : "masodik");

// alert, prompt, confirm

alert("Hello");
confirm("Hello???");
let valasz = prompt("Hello?");
console.log(valasz);

// Feladat: Kérd be egy téglalap 2 oldalát!
// Írd ki a területet, kerületet
// a*b, 2*(a+b)

const elso = Number(prompt("Add meg az a oldalt:")); // String
const masodik = Number(prompt("Add meg a b oldalt:"));
const terulet = elso*masodik;
const kerulet = 2*(elso+masodik);
alert(terulet);
alert(kerulet);


Elágazások

/* 5)
 * Kérj be egy számot a felhasználótól és írd ki neki az abszolút értékét. Használj beépített függvényt!
 */

 /*const num = Number(prompt("Adj meg egy számot!"));
 let abs;
 abs = (num < 0) ? num*(-1) : num;

 alert(`A bekért szám abszolút értéke: ${abs}`);*/

// Case-sensitive = Különbséget tesz a nagy és kisbetűk között
// Compiler = Fordító, lefordítja egyben a teljes fájlt (C nyelv)
// Interpreter = Soronként fordít (JavaScript)

// Elágazások

// if/else

/*const age = prompt("Add meg a korod!");

if (age < 18)
    alert("Kicsi vagy");
else if(18 <= age && age < 30)
    alert("Közepes vagy :/");
else
    alert("Nagy vagy ;)");*/

// Kérj be egy számot, írd ki, ha 2-vel, 3-al,
// vagy mindkettővel osztható, vagy egyikkel sem

/*const szam = Number(prompt("Adj meg egy számot!"));

if (szam % 6 == 0) {
    alert("A szám 2-vel és 3-al is osztható");
} else if (szam % 3 == 0) {
    alert("A 3-al osztható");
} else if (szam % 2 == 0) {
    alert("A 2-vel osztható");
} else {
    alert("A szám sem 2-vel, sem 3-al nem osztható");
}*/

// switch/case

/*switch (age) { //string
    case "18":
        alert("18 vagy");
        break;
    case "17":
        alert("17 vagy");
        break;
    case "16":
        alert("16 vagy");
        break;
    default:
        alert("Nem 16 és 18 között van");
}

switch(true)  {
    case age < 18: //true
        alert("Igaz");
        break;
    case age > 18: //false
        alert("Hamis");
        break;
}

switch(true)  {
    case szam % 6 == 0:
        alert("Osztható 2-vel és 3-al is");
        break;
    case szam % 2 == 0:
        alert("Osztható 2-vel");
        break;
    case szam % 3 == 0:
        alert("Osztható 3-al");
        break;
    default:
        alert("Nem osztható egyikkel sem");
}*/

/* Mozijegy vásárló alkalmazás
 - Felnőtt: 1600 Ft
 - Diák: 1400 Ft
 - Nyugdíjas: 1000 Ft
 [1600,1400,1000]
 Be kell kérni, hogy hány jegyet szeretne és milyet?
 Írjuk ki neki, hogy mennyit kell fizetnie 
 Legalább 10 jegy vásárlása esetén 10% kedvezményt kap!
 */

const tipus = prompt("Milyen típusú jegyeket szeretne? (diák/felnőtt nyugdíjas)");
const db = Number(prompt("Hány darab jegyet szeretne?"));

// 1-es megoldás
if (tipus === "diák") {
    alert(`Fizess ${1400*db} Ft-ot!`);
} else if(tipus === "felnőtt") {
    alert(`Fizess ${1600*db} Ft-ot!`);
} else if (tipus === "nyugdíjas") {
    alert(`Fizess ${1000*db} Ft-ot!`);
} else {
    alert("Rossz adatot adtál meg!");
}

// 2-es megoldás
switch (tipus) {
    case "diák":
        alert(`Fizess ${1400*db} Ft-ot!`);
        break;
    case "felnőtt":
        alert(`Fizess ${1600*db} Ft-ot!`);
        break;
    case "nyugdíjas":
        alert(`Fizess ${1000*db} Ft-ot!`);
        break;
    default:
        alert("Rossz adatot adtál meg!");  
    }

// 3. megoldás
// tipusok.diak, ha tipuis =/ diák
const jegyek = {
    kedvezmeny: 0.9,
    tipusok: {
        felnőtt: 1600,
        diák: 1400,
        nyugdíjas: 1000
    }
}

if (db >= 10) {
    alert(`Fizess ${jegyek.tipusok[tipus]*db*jegyek.kedvezmeny} Ft-ot!`);
} else {
    alert(`Fizess ${jegyek.tipusok[tipus]*db} Ft-ot!`);
}

//alert(`Fizess ${jegyek.tipusok[tipus]*db*((db >= 10) ? jegyek.kedvezmeny : 1)} Ft-ot!`);

Ciklusok

// Ciklusok

// While -> while (feltétel) { }, elöltesztelő

let x = 1;
while (x < 5) {
    x++;
    console.log(x);
}

alert(x);

// do while -> do { } while (feltétel), hátultesztelő

do {
    x++;
    console.log(x);
} while (x < 5);

alert(x);

let tipus, db;
/*do {
    tipus = prompt("Adj meg egy típust:");
    db = prompt("Add meg a darabszámot:");
} while (!((tipus === "diák" || tipus === "felnőtt" || tipus === "nyugdíjas") && (db > 0)));*/

// for -> for (mettől; meddig; hogyan) hányszor fusson vmi

for (let i = 0; i < 10; i++) {
    console.log("Növekszik");
}

// for ciklus do while-al
let index = 0;
 do {
    console.log("Növekszik");
    index++;
 } while(index < 10)

for (let i = 10; i > 0; i--) {
    console.log("Csökken");
}

// Töltsünk fel egy tömböt 1-100-ig

//const tomb = new Array(100);
const tomb = [];

// 1. megoldás -> push
for (let index = 1; index <= 100; index++) {
    tomb.push(index);
}

console.log(tomb);

// 2. megoldás -> indexelés
for (let index = 0; index < 100; index++) {
    tomb[index] = index + 1;
}

console.log(tomb);

// tomb2-be kerüljenek 100-1-ig csökkenő sorrendben
// tomb3-ba kerüljenek a páros számok 1-100-ig

const tomb2 = [];
const tomb3 = [];

for (let i = 100; i > 0; i--) {
    tomb2.push(i);
}

console.log(tomb2);

for (let i = 1; i <= 100; i++) {
    if (i % 2 === 0) {
        tomb3.push(i);
    }
}

console.log(tomb3);

// Tároljuk el egy tömbben a primszámokat 1-100 között
const tomb4 = [];
let prim;
for (let index = 2; index <= 100; index++) {
    prim = true;
    for (let index2 = 2; index2 < index-1; index2++) {
        if (index % index2 == 0) {
            prim = false;
            break;
        }
    }
    
    if (prim) {
        tomb4.push(index);
    }
}

console.log(tomb4);


Ciklus gyakorlatifeladat 1

// 1) Set
// 1-100-ig számok véletlen sorrendben, Set-tel
let randomameddig = new Set();
while(randomameddig.size != 100){
    helpinghand = Math.floor((Math.random() * 100) + 1);
    randomameddig.add(helpinghand);
}

console.log(randomameddig)

// 2) Tartalmaz-e? (includes)
// Töltsünk fel egy 10 elemű tömböt 1-10 közötti random számokkal
// Vizsgáljuk meg ciklussal, hogy van-e benne 5-ös?
let tomb1 = [];
for (let i = 0; i < 10; i++) {
    tomb1[i] = Math.floor(Math.random()*10+1);
}

console.log(tomb1);
if (tomb1.includes(5)) {
    alert("Van benne 5-ös!");
} else {
    alert("Nincs benne 5-ös :(")
}

// 3) Számláló
// Töltsünk fel egy 10 elemű tömböt 1-10 közötti random számokkal
// Vizsgáljuk meg ciklussal, HÁNY 5-ös van benne?

let tomb2 = [];
let szamlalo = 0;
for (let i = 0; i < 10; i++) {
    tomb2[i] = Math.floor(Math.random()*10+1);
    if (tomb2[i] === 5) {
        szamlalo++;
    }
}

console.log(tomb2);
alert("Ennyi 5-ös volt: " + szamlalo);

// 4) Break, flag
// Töltsünk fel egy 10 elemű tömböt 1-10 közötti random számokkal
// Vizsgáljuk meg ciklussal, hogy van-e benne 5-ös? (includes nélkül)

let tomb3 = [];
let vanE = false;
for (let i = 0; i < 10; i++) {
    tomb3[i] = Math.floor(Math.random()*10+1);
}

console.log(tomb3);

for (let i = 0; i < tomb1.length; i++) {
    if (tomb3[i] === 5) {
        vanE = true; // Flag
        break;
    }
}

alert(vanE ? "Volt 5-ös" : "Nem volt 5-ös");

// for of ciklus -> létező tömbön megy végig

let tomb4 = [];
let vanE2 = false;

for (let i = 0; i < 10; i++) {
    tomb4[i] = Math.floor(Math.random()*10+1);
}

console.log(tomb4);

for (let szam of tomb4) {
    // A szam változó felveszi egyesével a tömb elemeit
    console.log(szam);
    if (szam === 5) {
        vanE2 = true;
        break;
    }
}

alert(vanE2 ? "Volt 5-ös" : "Nem volt 5-ös");

// 4) Doktorálás (tömb szerkesztés)
// Fűzd hozzá a tömb elemeihez a "Dr. " titulust!
const emberek = ["Béla", "Doolitle", "Doom", "House", "Octopus", "Who"];

for (let index = 0; index < emberek.length; index++) {
    emberek[index] = "Dr. " + emberek[index];
}

console.log(emberek);

Ciklus gyakorlatifeladat 2

// 5) 10 db páros összege
// Írjon programot, mely kiírja az első 10 db páros szám összegét a képernyőre!

{
let db = 0;
let sum = 0;
let num = 1;

while (db < 10) {
    if (num % 2 == 0) {
        sum += num;
        db++;
    }
    num++;
}

alert("Az első 10 db páros szám összege: " + sum);
}

// 6) 10 db prim összege
// Írjuk ki az első 10 db prim szám összegét a képernyőre!

// Prim vizsgáló függvény
function primVizsgalo(szam) {
    let prim = true;
    for (let i = 2; i < szam; i++) {
        if (szam % i == 0) {
            prim = false;
            break;
        }
    }

    return prim;
}

// Ciklus
{
let db = 0;
let sum = 0;
let num = 2;

while (db < 10) {
    if (primVizsgalo(num)) {
        console.log(num);
        sum += num;
        db++;
    }
    num++;
}
alert("Az első 10 db prim szám összege: " + sum);
}

// 7) Primszámláló
// Hány db prim szám van 100-ig?

// I.
let szamlalo = 0;
for (let i = 2; i <= 100; i++) {
    if (primVizsgalo(i)) {
        szamlalo++;
    }
}

alert(`100-ig ${szamlalo} primszám van.`);

// II.
const primek = [];
for (let i = 2; i <= 100; i++) {
    if (primVizsgalo(i)) {
        primek.push(i);
    }
}

alert(`100-ig ${primek.length} primszám van.`);

// 8) Maximum keresés
// Véletlen számokkal (1-100) feltöltött 10 elemű tömbben melyik a legnagyobb elem?

function randomSzam(min, max) {
    return Math.floor(Math.random()*(max-min+1)+min);
}

const kisHalak = [];
for (let index = 0; index < 10; index++) {
    kisHalak[index] = randomSzam(1, 100);
}

console.log(kisHalak);

// I.
console.log(Math.max(...kisHalak));

// II.
let max = kisHalak[0]; // max = 0;
for (hal of kisHalak) {
    if (hal > max) {
        max = hal;
    }
}

alert("A legnagyobb hal: " + max);