Kihagyás

Vezérlési szerkezetek

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.

Matematikai kondíciók folyamatábrája

    graph TD;
        subgraph Általános kondíció
            A1[Kondíció vizsgálata] --> B1{Igaz?};
            B1 -->|Igen| C1[Kiértékelés: True];
            B1 -->|Nem| D1[Kiértékelés: False];
        end

        subgraph Konkrét példa
            A2[5 > 3] --> B2{Igaz?};
            B2 -->|Igen| C2[Kiértékelés: True];
            B2 -->|Nem| D2[Kiértékelés: False];
        end

        style C2 fill:#8f8,stroke:#333,stroke-width:2px;

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
x = 33

if (x > 30):
    print("x nagyobb mint 30")

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

Folyamatábra

    graph LR;
        Start([Start]) --> A["x = 30"];
        A --> B{"x > 30"};
        B -->|Igaz| C["print(x nagyobb mint 30)"];
        B -->|Hamis| D["print nem fut le"];
        C --> End([End]);
        D --> End([End]);
    graph TD;
        Start([Start]) --> A["x = 30"];
        A --> B{"x > 30"};
        B -->|Igaz| C["print(x nagyobb mint 30)"];
        B -->|Hamis| D["print nem fut le"];
        C --> End([End]);
        D --> End([End]);

Vagy ha állítás

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

1
2
3
4
5
6
x = 33

if (x > 30):
    print("x nagyobb mint 30")
elif (x == 30):
    print("x egyenlő 30-cal")

Folyamatábra

    graph LR;
        Start([Start]) --> A["x = 33"];
        A --> B{"x > 30?"};
        B -->|Igen| C["print('x nagyobb mint 30')"] --> End([End]);
        B -->|Nem| D{"x == 30?"};
        D -->|Igen| E["print('x egyenlő 30-cal')"] --> End;
        D -->|Nem| F["nem fut le semmi"] --> End;
    graph TD;
        Start([Start]) --> A["x = 33"];
        A --> B{"x > 30?"};
        B -->|Igen| C["print('x nagyobb mint 30')"] --> End([End]);
        B -->|Nem| D{"x == 30?"};
        D -->|Igen| E["print('x egyenlő 30-cal')"] --> End;
        D -->|Nem| F["nem fut le semmi"] --> End;

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.

1
2
3
4
5
6
7
8
x = 33

if (x > 30):
    print("x nagyobb mint 30")
elif (x == 30):
    print("x egyenlő 30-cal")
else:
    print("minden más: x nem nagyobb mint 30 és x nem egyenlő 30-cal")

Folyamatábra

    graph LR;
        Start([Start]) --> A["x = 33"];
        A --> B{"x > 30?"};
        B -->|Igen| C["print('x nagyobb mint 30')"] --> End([End]);
        B -->|Nem| D{"x == 30?"};
        D -->|Igen| E["print('x egyenlő 30-cal')"] --> End;
        D -->|Nem| F["print('minden más: x nem nagyobb mint 30 és x nem egyenlő 30-cal')"] --> End;
    graph TD;
        Start([Start]) --> A["x = 33"];
        A --> B{"x > 30?"};
        B -->|Igen| C["print('x nagyobb mint 30')"] --> End([End]);
        B -->|Nem| D{"x == 30?"};
        D -->|Igen| E["print('x egyenlő 30-cal')"] --> End;
        D -->|Nem| F["print('minden más: x nem nagyobb mint 30 és x nem egyenlő 30-cal')"] --> End;

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:
0 = False
1 = True

Ítéletkalkulus Halmazelmélet
és ^ metszet
vagy v unió
nem not komplementer

ÉS konnektíva

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
a = 5

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

Magyarázat

A következő kifejezést vizsgáljuk meg: \(a < 10 \quad \text{and} \quad a > 0\)

Ez egy logikai kifejezés, amely két feltételből áll.


Bal oldal: \(a < 10\): Az \(a\) értéke kisebb, mint \(10\).

Behelyettesítve az \(a\) változó értékével, azaz \(5\)-tel: \(a < 10 = 5 < 10 \Rightarrow \text{True}\).


Jobb oldal: \(a > 0\): Az \(a\) értéke nagyobb, mint \(0\).

Behelyettesítve az \(a\) változó értékével, azaz \(5\)-tel: \(a > 0 = 5 > 0 \Rightarrow \text{True}\).


Kiértékelés:

\(\text{True} \quad \text{and} \quad \text{True} \quad = \quad \text{True}\)

VAGY konnektíva

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. Az VAGY csak teljesül ha a bal oldal vagy a jobb oldal bármely tagja igaz.

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!")

Magyarázat

A következő kifejezést vizsgáljuk meg: \(a < 10 \quad \text{or} \quad a > 20\)

Ez egy logikai kifejezés, amely két feltételből áll.


Bal oldal: \(a < 10\): Az \(a\) értéke kisebb, mint \(10\).

Behelyettesítve az \(a\) változó értékével, azaz \(5\)-tel: \(5 < 10 \Rightarrow \text{True}\).


Jobb oldal: \(a > 20\): Az \(a\) értéke nagyobb, mint \(20\).

Behelyettesítve az \(a\) változó értékével, azaz \(5\)-tel: \(5 > 20 \Rightarrow \text{False}\).


Kiértékelés:

\(\text{True} \quad \text{or} \quad \text{False} \quad = \quad \text{True}\)

Igazságtábla

Az igazságtábla egy táblázat, amelyben a logikai műveletek eredményeit mutatja be. Ezekben az esetekben az A szerepét egy konkrét állítás veszi fel (pl. a < 10), míg a B szerepét egy másik állítás (pl. a > 20).

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
A B AND OR XOR
False False False False False
False True False True True
True False False True True
True True True True False

Igazságtábla Pythonban

A fentiekben bemutatott táblázatot bármikor leellenőrizhetjük Pythonban is. Ehhez válasszu ki az A és B értékeit, majd próbáljuk ki az alábbi kóddal!

Példa

Ebben a példában a táblázat második sorát fogjuk leellenőrizni.

1
2
3
4
5
6
7
8
a = 0 # False
b = 1 # True

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

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