If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Áttekintés: Logika és feltételes elágazás

Az alábbiakban áttekintjük mindazt, amit a logikai és if utasításokról szóló tananyagokban tanultunk.
Programjainkban sok esetben "feltételesen" szeretnénk végrehajtani valamit – szeretnénk azt mondani: "ha ez igaz, akkor hajtsd végre X-et, ha valami más igaz, hajtsd végre Y-t." Olyan mint amikor reggel felkelünk – "ha odakint esik, akkor esernyőt viszek, de ha süt a nap, akkor napszemüveget veszek fel." Feltételesen hajthatunk végre dolgokat programjainkban az if utasítások és az if/else utasítások feltételes kifejezésekkel való kombinálásának segítségével.
Az if utasítás azt jelzi a programnak, hogy akkor hajtson végre egy kódblokkot, ha egy feltétel teljesül. Az alábbi kódrészletben csak akkor írunk ki egy üzenetet, ha x nagyobb, mint 0:
var x = 5;

if (x > 0) {
  text('x egy pozitiv szam!', 200, 200);
}
Mivel x értéke 5, ami nagyobb, mint 0, látnánk az üzenetet a vásznon. Ha x-et -1-re változtatnánk, egyáltalán nem jelenne meg az üzenet, hiszen x nem lenne nagyobb, mint 0.
Az x > 0 kifejezést feltételes kifejezésnek hívjuk – ami azt jelenti, hogy ez egy olyan kifejezés, ami true-ra (igaz) vagy false-ra (hamis) értékelődik ki. Ha egy érték csak true vagy false értéket vesz fel, bool típusú/logikai értéknek hívjuk (szám vagy sztring helyett). Például egyszerűen meg is jeleníthetnénk a feltételes kifejezést:
text(x > 0, 200, 200); // "true"-t ír ki
El is tárolhatjuk egy változóban, és így is megjeleníthetjük:
var isPositive = x > 0;
text(isPositive, 200, 200);
Ekkor azt mondanánk, hogy az isPositive egy logikai értéket tárol, mert értéke vagy true vagy false, x értékének beállításától függően.
Sokféle módon hozhatunk létre feltételes kifejezéseket, amik true-ra vagy false-ra értékelődnek ki, mivel számos összehasonlító operátorunk van. Az alábbiakban láthatod a legnépszerűbbeket:
Az alábbi változót használva táblázatba szedtük a leggyakoribb összehasonlító operátorokat és velük képzett kifejezéseket, melyek igaz értékűek:
var myAge = 28;
OperátorJelentésIgaz kifejezések
===Szigorú egyenlőségmyAge === 28
!==Szigorú egyenlőtlenségmyAge !== 2928 !== 29
>Nagyobb, mintmyAge > 2528 > 25
>=Nagyobb vagy egyenlőmyAge >= 2828 >= 28
<Kisebb, mintmyAge < 3028 < 30
<=Kisebb vagy egyenlőmyAge <= 2828 <= 28
Nagyon gyakori hiba összekeverni az értékadó operátort (=) az egyenlőség operátorral (===), mivel mindkettő egyenlőségjelet használ, pedig elég különbözőek. Az értékadás operátor megváltoztatja a változó értékét, míg az egyenlőség operátor mindössze kiolvassa a változó értékét, és megnézi, hogy egyenlő-e valamivel. Például:
var x = 2 + 2; // 4-gyel teszi egyenlővé

if (x === 4) { // Felteszi a kérdést: "Egyenlő-e 4-gyel?"
   text("igen, 2 + 2 = 4!", 200, 200);
}
Néha szeretnénk több összehasonlítást egy feltételes kifejezésben kombinálni, erre használjuk a logikai operátorokat. Ezek az operátorok lehetővé teszik, hogy például azt mondjuk programjainkban, hogy "ha X és Y is igaz", vagy, hogy "ha X vagy Y igaz".
Ha azt szeretnénk vizsgálni, hogy mindkét feltétel igaz-e, használhatjuk az && operátort ("és"):
var kintiHomerseklet = 70;
var felhokSzama = 50;
if (kintiHomerseklet > 70 && felhokSzama < 5) {
  text("Hasznalj naptejet!", 200, 200);
}
Gyakran használjuk ezt programjainkban arra, hogy ellenőrizzük, hogy egy felhasználó kurzora egy téglalapon belül van-e (mint ahogy egy gomb tenné). Ebben az esetben több && operátorra is szükségünk van:
rect(100, 50, 100, 100); 

mousePressed = function() {
    if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
      text("Megnyomtad!", 80, 75);
    }
};
Ha csak az érdekel minket, hogy legalább az egyik feltétel igaz-e, használhatjuk a || operátort ("vagy"):
var kintiHomerseklet = 70;
var felhokSzama = 50;
if (kintiHomerseklet > 70 || felhokSzama < 5) {
  text("Hasznalj naptejet, ha forrosag van odakint vagy nincs sok felho!", 200, 200);
}
Használhatunk &&- t és ||- t ugyanabban a kifejezésben, ha egy nagyon összetett feltételt kell ellenőriznünk. Egyszerűen használj zárójelet a kifejezések csoportosítására, hogy a program ne keveredjen bele a kiértékelés sorrendjébe:
var eletKorom = 28;
if ((eletKorom >= 0 && eletKorom < 3)  || eletKorom > 90) {
  println('Ezen még lehetne javítani.');
}
Térjünk vissza az if utasításokhoz! Gyakran akkor szeretnénk végrehajtani egy kódblokkot, ha az if feltétel nem volt igaz – ebben az esetben az else utasítást használjuk.
var kor = 28;
if (kor > 16) {
  println('Hurra, vezethetsz!');
} else {
  println('Sajnalom, de meg ' + (16 - kor) + ' evet kell varnod, hogy vezethess.');
}
Néha több feltételt is szeretnénk ellenőrizni, és mindegyik teljesülése esetén valami mást szeretnénk csinálni. Ebben az esetben az else if-et használhatjuk:
var kor = 20;
if (kor >= 35) {
  println('Szavazhatsz ES barmilyen kormanyzati poziciot betolthetsz!');
} else if (kor >= 30) {
  println('Szavazhatsz ES indulhatsz szenatori pozicioert!');
} else if (kor >= 18) {
  println('Szavazhatsz!');
} else {
  println('Nincs szavad a kormanyzasban!');
}
Akárhány feltételt megvizsgálhatsz – csak arra figyelj, hogy minden egyes feltétel ténylegesen teljesülhessen. Teszteld a kódod úgy, hogy addig módosítgatod a változók értékét, míg minden kódblokkba el nem jutsz. Így tudni fogod, hogy mind működik.
Ahogy remélhetőleg már Te is látod, a feltételek fontos részét képezik a programozásnak, és sokkal hatékonyabb, rugalmasabb programok készítését teszik lehetővé számunkra.

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.