Kihagyás

Vezérlési szerkezetek

A vezérlési szerkezetek terén nagy szerencsénk van, ebben az esetben nincs különösebb eltérés a Pythonhoz képest, csak a blokkok jelölése az eltérő.

Matematikai kondíciók

Művelet Jelölés Operátor
(szigorúan) Nagyobb \(>\) >
Nagyobb egyenlő \(\geq\) >=
Kisebb \(<\) <
Kisebb egyenlő \(\leq\) <=
Pontosan egyenlő \(=\) <=
Nem egyenlő \(\neq\) !=

Matematikai kondíciók igazságértéke

A matematikai kondíciók az általánosságban vett matematikai műveleteket jelentik. Ezek a műveletek minden esetben kiértékelődnek és egy igazságértéket fognak felvenni.

Vegyünk pár példát:

Állítás Kiértékelés Eredmény
\(5 > 3\) Az 5 nagyobb mint a 3? Igen, ez igaz.
\(5 < 3\) Az 5 kisebb mint a 3? Nem, ez hamis.
\(3 \geq 3\) A 3 nagyobb vagy egyenlő mint 3? Igen, ez igaz.
\(3 > 3\) A 3 nagyobb mint a 3? Nem, ez hamis.

Feltételezes vezérlés

Ha állítás

Feltétel szabása az if szóval történik, amely egy logikailak kiértékelhető állítást tartalmaz. A matematikai kondíciók eredménye logikai igaz vagy logikai hamis lesz.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        byte homerseklet = 17;

        if (homerseklet > 20) {
            System.out.print("Nagy a forróság!");
        }
    }
}

A fenti példa esetében a print csak akkor fog lefutni ha az állítás értéke igaz, tehát b szigorúan nagyobb mint a.

Vagy ha állítás

A vagy ha állítás előtt mindenképpen szükséges egy ha állítás.

public class Main {
    public static void main(String[] args) {
        byte homerseklet = 17;

        if (homerseklet > 30) {
            System.out.print("Nagy a forróság!");
        }
        else if (homerseklet < 10) {
            System.out.print("Hideg van!");
        }
    }
}

Vagy ha minden más esetben

A vagy minden más esetben akkor fog lefutni ha a fenti feltételek közül egyetlen egy sem teljesült.

public class Main {
    public static void main(String[] args) {
        byte homerseklet = 17;

        if (homerseklet > 30) {
            System.out.print("Nagy a forróság!");
        }
        else if (homerseklet < 10) {
            System.out.print("Hideg van!");
        }
        else {
            System.out.print("Kellemes az idő!");
        }
    }
}

Konnektívák

A logikai feladatok megoldásához a Boole-algebrát használjuk, amely lehetőséget ad arra, hogy a logikai kapcsolatokat matematikai úton kezeljük.

Kételemű Boole-algebra felvehető értékek:

  • false (0)
  • true (1)

ÉS

Abban az esetben ha kettő vagy több feltételnek egyszerre kell teljesülnie, akkor ÉS kötöszót használunk. Az ÉS csak akkor teljesül ha a bal oldal és jobb oldal is igaz.

1
2
3
4
5
int a = 5

if (a < 10 && a > 0) {
    System.out.print("Pozitív szám ami kisebb mint tíz!")
}
1
2
3
4
a = 5

if a < 10 and a > 0:
    print("Pozitív szám ami kisebb mint tíz!")

VAGY

Abban az esetben, ha kettő vagy több feltétel közül legalább az egyiknek kell teljesülnie, akkor VAGY kötöszót használunk.

A vagy az alábbi esetekben értékelődik igazra: - a bal oldal igaz - a jobb oldal igaz - mindkét oldal igaz

1
2
3
4
5
int a = 5

if (a < 10 || a > 20) {
    System.out.print("Pozitív szám ami kisebb mint tíz vagy nagyobb mint húsz!")
}
1
2
3
4
a = 5

if a < 10 or a > 20:
    print("Pozitív szám ami kisebb mint tíz vagy nagyobb mint húsz!")

Igazságtábla

A B AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Igazságtábla programkóddal

1
2
3
4
5
6
7
8
boolean a = false; // 0
boolean b = true; // 1

boolean es = a && b;
boolean vagy = a || b;
boolean kizarovagy = a ^ b;

System.out.printf("%b %b %b %b %b",a , b , es, vagy, kizarovagy);
1
2
3
4
5
6
7
8
a = False # 0
b = True # 1

es = a and b
vagy = a or b
kizarovagy = a ^ b

print(a, b, es, vagy, kizarovagy)

Switch-Case

A switch-case lehetővé teszi, hogy egy kifejezés értékét összehasonlítsuk egy előre meghatározott értékkel, és a megfelelő kódblokkot futtassuk le. Leggyakrabban a sok if-else elkerülése miatt használjuk.

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

Példa

Az alábbi példában megvizsgáljuk a nap sorszámát és kiírjuk a hozzá tartozó nap nevét switch-case valamint if-else segítségével.

int day = 4;

switch (day) {
    case 1:
        System.out.println("Hétfő");
        break;
    case 2:
        System.out.println("Kedd");
        break;
    case 3:
        System.out.println("Szerda");
        break;
}
int day = 4;

if (day == 1) {
    System.out.println("Hétfő");
}
else if (day == 2) {
    System.out.println("Kedd");
}
else if (day == 3) {
    System.out.println("Szerda");
}

Tip

Általánosan elmondható, hogy ha 5-nél többször vizsgáljuk ugyan azt a változót, akkor érdemes switch-case szerkezetet használni.

Alapértelmezett érték

Kérdés

Felvetődhet a kérdés, hogy mit tegyünk abban az esetben ha szeretnénk egy alapértelmezett értéket is megadni, amennyiben egyik feltétel sem teljesül, hasonlóan az if-else esetében az else ághoz.

A megoldást a default kulcsszó jelenti, amelyet a switch-case szerkezet végére kell írni.

Módosítsuk az előzőekben elkészített programunkat! Adjuk meg például azt, hogy a mai nap a hét 8. napja! Ebben az esetben a default ág fog lefutni.

int day = 8;

switch (day) {
    case 1:
        System.out.println("Hétfő");
        break;
    case 2:
        System.out.println("Kedd");
        break;
    case 3:
        System.out.println("Szerda");
        break;
    default:
        System.out.println("Nem létező nap!");
        break;
}