Fő tartalom
Programozás
Tantárgy/kurzus: Programozás > 1. témakör
11. lecke: Logika és feltételes elágazás- Feltételes elágazás
- Feladat: Pattogó labda
- További interakciók az egérrel
- Feladat: Az első festő applikációd
- Logikai értékek
- Feladat: Számelemző
- Logikai operátorok
- Feladat: Az első gombod
- Feladat: Okosgomb
- If/Else - 1. rész
- Feladat: Cifra villámkártya
- If/Else - 2. rész
- Áttekintés: Logika és feltételes elágazás
- Véletlen számok
- Projekt: Bűvös 8-as golyó
© 2023 Khan AcademyFelhasználási feltételekAdatkezelési tájékoztatóSüti figyelmeztetés
Á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átor | Jelentés | Igaz kifejezések | |
---|---|---|---|
=== | Szigorú egyenlőség | myAge === 28 | |
!== | Szigorú egyenlőtlenség | myAge !== 29 | 28 !== 29 |
> | Nagyobb, mint | myAge > 25 | 28 > 25 |
>= | Nagyobb vagy egyenlő | myAge >= 28 | 28 >= 28 |
< | Kisebb, mint | myAge < 30 | 28 < 30 |
<= | Kisebb vagy egyenlő | myAge <= 28 | 28 <= 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.