===== JavaScript ===== A JavaScript egy magas szintű, dinamikusan típusos programozási nyelv, amelyet gyakran kliensoldali webfejlesztésre használnak. Lehetővé teszi az interaktív és dinamikus weboldalak készítését, például űrlapellenőrzést, animációkat vagy aszinkron kommunikációt (HTTP). A JavaScript a böngészőben fut, és a DOM (Document Object Model) manipulálásával képes módosítani a weboldal tartalmát és viselkedését a felhasználói interakciók alapján. Modern fejlesztés során gyakran kombinálják HTML-lel és CSS-sel, valamint különböző keretrendszerekkel (pl. Angular, React, Vue.js, Svelte) a hatékonyabb fejlesztés érdekében. ==== Beágyazás HTML dokumentumba ==== JavaScript kódok beágyazhatóak HTML dokumentumba, a '' Ezen kívül külső fájlból is importálhatók: JavaScript Demo

Hello World!

==== Fejlesztői konzol ==== A fejlesztői konzol (Developer Console) lehetővé teszi JavaScript kódok futtatását és hibakeresését a böngészőben. A leggyakrabban használt funkciók közé tartozik a ''console.log()'' függvény, amely segítségével üzeneteket (pl. változók tartalmát) tudunk kiírni a konzolra. A legtöbb böngészőben az F12 gomb lenyomásával érhetjük el. ==== Változók ==== A változók lehetőséget adnak az értékek tárolására és későbbi felhasználásra. A ''let'' kulcsszó használata esetén a változó a későbbiekben kaphat más értéket, míg ''const'' kulcsszó esetén az érték később nem változtatható. let x = 10; const pi = 3.14; ==== Primitív adattípusok ==== JavaScriptben különböző primitív adattípusok állnak rendelkezésre: * ''string'': szöveges adat * ''number'': szám (egész vagy lebegőpontos) * ''boolean'': logikai érték (igaz/hamis) * ''null'': üres érték * ''undefined'': a változó deklarált, de nem kapott még értéket let name = 'Béla'; // string let age = 15; // number let registered = true; // boolean let email = null; let phoneNumber = undefined; ==== Elágazások ==== Az elágazások segítségével a program különböző utakon haladhat előre, a megjelölt feltételek teljesülése esetén. let age = 20; if (age < 18) { console.log("Kiskorú"); } else if (age >= 18 && age < 65) { console.log("Felnőtt"); } else { console.log("Nyugdíjas"); } ==== Ciklusok ==== A ciklusok lehetővé teszik a kód ismételt végrehajtását, amíg egy adott feltétel teljesül. // for ciklus: számok kiíratása 0-4-ig for (let i = 0; i < 5; i++) { console.log(i); } // while ciklus: 5! kiszámítása let factorial = 1; let i = 1; while (i <= 5) { factorial *= i; i++; } console.log(factorial); ==== Tömbök ==== A tömbök olyan adatszerkezetek, amelyek több elemet képesek tárolni egyetlen változóban. Ezek típusa nem kötött, egy tömb akár többféle adattípussal rendelkező értéket is tárolhat. const values = [ "red", "green", "blue", 0, 5, true ]; === Tömb bejárása ciklusokkal === == for-in ciklus == A ''for-in'' ciklus a tömb indexeit járja be: for (const index in values) { console.log(`Index: ${index}, Érték: ${values[index]}`); } == for-of ciklus == A ''for-of'' ciklus közvetlenül a tömb elemeit járja be: for (const value of values) { console.log(`Érték: ${value}`); } === Transzformációs metódusok === == map metódus == A ''map'' metódus egy új tömböt hoz létre az eredeti tömb elemeinek módosításával: const values = [ 'red', 'green', 'blue' ]; const uppercasedValues = values.map(value => value.toUpperCase()); console.log(uppercasedValues); == filter metódus == A ''filter'' metódus egy új tömböt hoz létre az eredeti tömb azon elemeiből, amelyek megfelelnek egy feltételnek: const numbers = [1, 156, 1499, 142, 111, 42]; const evenNumbers = numbers.filter(value => value % 2 == 0); console.log(evenNumbers); ==== Függvények ==== A függvények valamilyen újrafelhasználható logikát tartalmaznak. Lehetnek olyan eljárások, amik csak végrehajtanak egy feladatot, vagy akár olyanok is, amik visszatérési értékkel is rendelkezhetnek. function greet(name) { console.log("Hello, " + name + "!"); } greet("World"); // Hello, World! function square(number) { return number * number; } console.log(square(2)); // 4 ==== Objektumok ==== Az objektumok kulcs-érték párokat tárolnak. A kulcsok szövegek (''name'', ''age'', ''male'', ''greet''), míg az értékek valamely primitív (pl. ''number'', ''string'', ''boolean'', ''null'', ''undefined'') vagy összetett (pl. ''Object'', ''Array'', ''Function'') adattípusba tartozhatnak. let person = { name: "John", age: 30, male: true, greet: function() { console.log(`Hi, my name is ${this.name}!`); } }; ==== Feladat ==== Készíts egy JavaScript programot, amely egy **számkitaláló játékot** valósít meg! A program véletlenszerűen generál egy számot 0 és 1 000 000 között, majd a játékos próbálja kitalálni azt. A tippek maximális száma 20. A program minden próbálkozás után visszajelzést ad: * **„XY. tipp nem talált: A megoldás kisebb.”**, ha a tipp nagyobb a keresett számnál. * **„XY. tipp nem talált: A megoldás nagyobb.”**, ha a tipp kisebb a keresett számnál. * **„Gratulálok, XY lépésből eltaláltad!”**, ha a tipp helyes. * **„Sajnos ez most nem sikerült!”**, ha a játékos elérte a maximális próbálkozások számát, de nem találta el a számot. A játék akkor ér véget, amikor a játékos eltalálja a számot vagy eléri a tippek maximális számát. * Véletlenszám generáláshoz használd a [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#getting_a_random_integer_between_two_values|Math.random()]] függvényt! * Az üzenetek kiírásához használd az [[https://developer.mozilla.org/en-US/docs/Web/API/Window/alert|alert()]], a tipp bekéréséhez a [[https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt|prompt()]] és [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt|parseInt()]] függvényeket. * Ellenőrizd, hogy a felhasználó által megadott érték valóban szám-e! Amennyiben nem, a parseInt() függvény ''NaN'' (Not a Number) értékkel tér vissza, melyet az [[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN|isNaN()]] függvénnyel szűrhetsz ki. Elkészült megoldásodat töltsd fel a GitHub repository-dba!