Szerkesztő:Weknsfl1
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);