<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>else - Kama Kaczmarek</title>
	<atom:link href="https://kamakaczmarek.net/tag/else/feed/" rel="self" type="application/rss+xml" />
	<link>https://kamakaczmarek.net/tag/else/</link>
	<description>Strona z materiałami dla uczniów i nauczycieli</description>
	<lastBuildDate>Mon, 12 Oct 2026 13:12:14 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>9. Python &#8211; instrukcje warunkowe if&#8230;elif&#8230;else</title>
		<link>https://kamakaczmarek.net/9-python-instrukcje-warunkowe-if-elif-else/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Fri, 29 May 2026 09:25:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[elif]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=2964</guid>

					<description><![CDATA[<p>Szybki quiz – przypomnienie poprzedniej lekcji Temat poprzedniej lekcji: stos i kolejka. Pytanie 1. Co zostanie wyświetlone? Pytanie 2. Co zostanie wyświetlone? Pytanie 3. Uczeń chce zdjąć z kolejki pierwszą osobę (&#8222;Ania&#8221;), ale program zwraca &#8222;Bartek&#8221;. Znajdź błąd. Pytanie 4. Który z modeli to LIFO, a który FIFO (stos czy kolejka)? Dlaczego do kolejki zaleca [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/9-python-instrukcje-warunkowe-if-elif-else/">9. Python &#8211; instrukcje warunkowe if&#8230;elif&#8230;else</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Szybki quiz – przypomnienie poprzedniej lekcji</h2>



<p class="wp-block-paragraph">Temat poprzedniej lekcji: stos i kolejka.</p>



<p class="wp-block-paragraph"><strong>Pytanie 1.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">stack = &#91;]
stack.append(1)
stack.append(2)
stack.append(3)
print(stack&#91;-1])
print(stack.pop())
print(stack)</code></pre>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedź</strong></summary>
<p class="wp-block-paragraph"><strong>Odpowiedź:</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">3
3
&#91;1, 2]</code></pre>



<p class="wp-block-paragraph"><code class="prettyprint lang-sql" style="font-size: 0.85em;">stack[-1]</code> tylko pokazuje szczyt stosu (nic nie usuwa), <code class="prettyprint lang-sql" style="font-size: 0.85em;">pop()</code> zdejmuje ten element ze stosu.</p>
</details>



<p class="wp-block-paragraph"><strong>Pytanie 2.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">from collections import deque

queue = deque(&#91;"A", "B", "C"])
queue.append("D")
print(queue.popleft())
print(queue)</code></pre>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedź</strong></summary>
<p class="wp-block-paragraph"><strong>Odpowiedź:</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">A
deque(&#91;'B', 'C', 'D'])</code></pre>



<p class="wp-block-paragraph">Kolejka działa w modelu FIFO: <code class="prettyprint lang-sql" style="font-size: 0.85em;">append</code> dodaje na koniec, <code class="prettyprint lang-sql" style="font-size: 0.85em;">popleft</code> zdejmuje z początku.</p>
</details>



<p class="wp-block-paragraph"><strong>Pytanie 3.</strong> Uczeń chce zdjąć z kolejki pierwszą osobę (&#8222;Ania&#8221;), ale program zwraca &#8222;Bartek&#8221;. Znajdź błąd.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">from collections import deque

queue = deque(&#91;"Ania", "Bartek"])
first = queue.pop()
print(first)</code></pre>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedź</strong></summary>
<p class="wp-block-paragraph"><strong>Odpowiedź:</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">pop()</code> zdejmuje element z <strong>końca</strong> (jak w stosie). Do zdjęcia elementu z początku kolejki trzeba użyć <code class="prettyprint lang-sql" style="font-size: 0.85em;">queue.popleft()</code>.</p>
</details>



<p class="wp-block-paragraph"><strong>Pytanie 4.</strong> Który z modeli to LIFO, a który FIFO (stos czy kolejka)? Dlaczego do kolejki zaleca się <code class="prettyprint lang-sql" style="font-size: 0.85em;">deque</code>, a nie listę z <code class="prettyprint lang-sql" style="font-size: 0.85em;">pop(0)</code>?</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedź</strong></summary>
<p class="wp-block-paragraph"><strong>Odpowiedź:</strong> Stos to LIFO (ostatni dodany jest pierwszy zdjęty), kolejka to FIFO (pierwszy dodany jest pierwszy zdjęty). <code class="prettyprint lang-sql" style="font-size: 0.85em;">pop(0)</code> na liście jest nieefektywne, bo po usunięciu pierwszego elementu trzeba przesunąć wszystkie pozostałe. <code class="prettyprint lang-sql" style="font-size: 0.85em;">deque</code> szybko dodaje i usuwa elementy na obu końcach.</p>
</details>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>Instrukcje warunkowe</strong>&nbsp;to mechanizm pozwalający programowi podejmować decyzje i wykonywać różny kod w zależności od spełnienia określonych warunków. Są fundamentem logiki programowania &#8211; pozwalają odpowiadać na pytanie &#8222;co jeżeli?&#8221;.</p>



<p class="wp-block-paragraph">Wyobraź sobie instrukcje warunkowe jak rozdroże:</p>



<ul class="wp-block-list">
<li><strong>if</strong>&nbsp;&#8211; &#8222;jeżeli warunek jest prawdziwy, idź tą drogą&#8221;</li>



<li><strong>elif</strong>&nbsp;&#8211; &#8222;a jeżeli to nie działa, sprawdź następny warunek&#8221;</li>



<li><strong>else</strong>&nbsp;&#8211; &#8222;w każdym innym przypadku, idź tą drogą&#8221;</li>
</ul>



<h2 class="wp-block-heading">Instrukcja if</h2>



<p class="wp-block-paragraph"><span style="font-size: 12pt;"><strong>UWAGA!!! PAMIĘTAJCIE O WCIĘCIACH!!!</strong></span></p>



<h3 class="wp-block-heading">Podstawowa składnia</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if warunek:
    # kod wykonywany gdy warunek jest True
    instrukcja1
    instrukcja2</code></pre>



<p class="wp-block-paragraph"><span style="font-size: 12pt;"><strong>Kluczowe elementy:</strong></span></p>



<ul class="wp-block-list">
<li>Słowo kluczowe&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code></li>



<li>Warunek (wyrażenie zwracające True lub False)</li>



<li>Dwukropek&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">:</code></li>



<li><strong>Wcięcie 4 spacji</strong>&nbsp;(bardzo ważne!)</li>
</ul>



<p class="wp-block-paragraph">Najprostszy przykład:</p>



<pre class="wp-block-preformatted">liczba = 10<br /><br />if liczba &gt; 0:<br />    print("Liczba jest dodatnia")<br /><br />#wynik:<br />#Liczba jest dodatnia</pre>



<p class="wp-block-paragraph"><span style="font-size: 12pt;">Jak to działa:</span></p>



<ul class="wp-block-list">
<li>Python sprawdza warunek&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba &gt; 0</code></li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">10 &gt; 0</code>&nbsp;to&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">True</code></li>



<li>Wykonuje kod w bloku (z wcięciem)</li>
</ul>



<p class="wp-block-paragraph">Przykład bez spełnionego warunku</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba = -5<br /><br />if liczba &gt; 0:<br />    print("Liczba jest dodatnia")<br /><br />print("Koniec programu")<br /><br />#wynik:<br />#Koniec programu</code></pre>



<p class="wp-block-paragraph">Blok if został pominięty, ponieważ warunek był False.</p>



<h2 class="wp-block-heading">Instrukcja else</h2>



<p class="wp-block-paragraph">Gdy potrzebujesz reakcji na &#8222;w przeciwnym wypadku&#8221;, używasz&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code>.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if warunek:
# kod gdy warunek True
else:
# kod gdy warunek False</code></pre>



<p class="wp-block-paragraph">Przykład</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba = -5

if liczba &gt; 0:
    print("Liczba jest dodatnia")
else:
    print("Liczba nie jest dodatnia")

#wynik
#Liczba nie jest dodatnia</code></pre>



<p class="wp-block-paragraph"><strong>Jak to działa:</strong></p>



<ul class="wp-block-list">
<li>Warunek&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba &gt; 0</code>&nbsp;to False</li>



<li>Python pomija blok if</li>



<li>Wykonuje blok else</li>
</ul>



<h2 class="wp-block-heading">Instrukcja elif</h2>



<p class="wp-block-paragraph">Gdy masz więcej niż dwa scenariusze, używasz&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code>&nbsp;(else if).</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if warunek1:
    # kod gdy warunek1 True
elif warunek2:
    # kod gdy warunek1 False, ale warunek2 True
else:
    # kod gdy wszystkie warunki False</code></pre>



<h3 class="wp-block-heading">Przykład &#8211; klasyfikacja liczby</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba = 0

if liczba &gt; 0:
    print("Liczba jest dodatnia")
elif liczba == 0:
    print("Podano zero")
else:
    print("Liczba jest ujemna")

#wynik
#Podano zero</code></pre>



<p class="wp-block-paragraph"><strong>Jak to działa:</strong></p>



<ul class="wp-block-list">
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba &gt; 0</code>&nbsp;to False &#8211; pomijamy</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba == 0</code>&nbsp;to True &#8211; wykonujemy ten blok</li>



<li>Pomijamy resztę (else nie będzie wykonane)</li>
</ul>



<h3 class="wp-block-heading">Wiele warunków elif</h3>



<p class="wp-block-paragraph">Możesz mieć dowolną liczbę&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code>:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">ocena = 85

if ocena &gt;= 90:
    print("Ocena: 5")
elif ocena &gt;= 80:
    print("Ocena: 4")
elif ocena &gt;= 70:
    print("Ocena: 3")
elif ocena &gt;= 60:
    print("Ocena: 2")
else:
    print("Ocena: 1")

#wynik
#Ocena: 4</code></pre>



<h2 class="wp-block-heading">Zagnieżdżanie instrukcji warunkowych</h2>



<p class="wp-block-paragraph">Możesz umieszczać instrukcje if wewnątrz innych instrukcji if.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = 20
ma_prawo_jazdy = True

if wiek &gt;= 18:
    print("Jesteś pełnoletni")
    
    if ma_prawo_jazdy:
        print("Możesz prowadzić samochód")
    else:
        print("Musisz zrobić prawo jazdy")
else:
    print("Jesteś niepełnoletni")

#wynik
#Jesteś pełnoletni
#Możesz prowadzić samochód</code></pre>



<h2 class="wp-block-heading">Operatory porównania w warunkach</h2>



<p class="wp-block-paragraph"><strong>UWAGA</strong>: w warunkach nie stosujemy pojedynczego znaku &#8222;=&#8221;</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = 10
b = 5

# Równość
if a == b:
    print("Równe")

# Nierówność
if a != b:
    print("Różne")

# Większe
if a &gt; b:
    print("a jest większe od b")

# Mniejsze
if a &lt; b:
    print("a jest mniejsze od b")

# Większe lub równe
if a &gt;= b:
    print("a jest większe lub równe b")

# Mniejsze lub równe
if a &lt;= b:
    print("a jest mniejsze lub równe b")</code></pre>



<h2 class="wp-block-heading">Operatory logiczne</h2>



<h3 class="wp-block-heading">and &#8211; i (oba warunki muszą być True)</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = 25
ma_prawo_jazdy = True

if wiek &gt;= 18 and ma_prawo_jazdy:
    print("Możesz wypożyczyć samochód")</code></pre>



<h3 class="wp-block-heading">or &#8211; lub (przynajmniej jeden warunek True)</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">dzien = "sobota"

if dzien == "sobota" or dzien == "niedziela":
    print("Weekend!")</code></pre>



<h3 class="wp-block-heading">not &#8211; negacja</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">jest_deszcz = False

if not jest_deszcz:
    print("Nie potrzebujesz parasola")</code></pre>



<h3 class="wp-block-heading">Łączenie operatorów</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = 25
wzrost = 180
waga = 75

if (wiek &gt;= 18 and wiek &lt;= 40) and (wzrost &gt;= 170 and waga &lt;= 90):
    print("Spełniasz wymagania")</code></pre>



<h2 class="wp-block-heading">Operator in</h2>



<p class="wp-block-paragraph">Operator&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code>&nbsp;sprawdza czy element znajduje się w kolekcji.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># Sprawdzanie w liście
owoce = &#91;"jabłko", "banan", "gruszka"]

if "jabłko" in owoce:
    print("Jabłko jest na liście")</code></pre>



<h3 class="wp-block-heading">Przykład &#8211; walidacja wyboru</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">odpowiedz = input("Wybierz: papier, kamień lub nożyce: ")
odpowiedz = odpowiedz.lower()

opcje = &#91;"papier", "kamień", "nożyce"]

if odpowiedz in opcje:
    print(f"Wybrałeś: {odpowiedz}")
else:
    print("Podałeś niepoprawną wartość")

#wynik
#Wybierz: papier, kamień lub nożyce: Papier
#Wybrałeś: papier</code></pre>



<h3 class="wp-block-heading">in z różnymi kolekcjami</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># Lista
if "a" in &#91;"a", "b", "c"]:
    print("Jest w liście")

# Krotka
if 5 in (1, 2, 3, 4, 5):
    print("Jest w krotce")

# Zestaw
if "Python" in {"Python", "Java", "C++"}:
    print("Jest w zestawie")

# Słownik (sprawdza klucze)
slownik = {"name": "Jan", "age": 25}
if "name" in slownik:
    print("Klucz 'name' istnieje")

# String (sprawdza podciąg)
if "Py" in "Python":
    print("'Py' jest w 'Python'")</code></pre>



<h2 class="wp-block-heading">Operator not in</h2>



<p class="wp-block-paragraph">Sprawdza czy elementu&nbsp;<strong>NIE MA</strong>&nbsp;w kolekcji.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">name = "Kama"

if name not in &#91;"Ania", "Kasia", "Zosia"]:
    print("Nie ma na liście")

#wynik
#Nie ma na liście</code></pre>



<h2 class="wp-block-heading">Operator not</h2>



<h3 class="wp-block-heading">Negacja wartości logicznej</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">cos = False

if not cos:
    print("Zmienna 'cos' jest False")</code></pre>



<h3 class="wp-block-heading"><strong>Różnica między not i !=</strong></h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># != używamy do porównania dwóch wartości
a = 5
b = 10

if a != b:
    print("a nie równa się b")

# not używamy do negacji wartości logicznej
is_logged_in = False

if not is_logged_in:
    print("Użytkownik nie jest zalogowany")</code></pre>



<h2 class="wp-block-heading">Operator is vs ==</h2>



<h3 class="wp-block-heading">== sprawdza równość wartości</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = &#91;1, 2, 3]
b = &#91;1, 2, 3]

if a == b:
    print("Wartości są równe")  # To się wyświetli</code></pre>



<h3 class="wp-block-heading">is sprawdza tożsamość (ten sam obiekt w pamięci)</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = &#91;1, 2, 3]
b = &#91;1, 2, 3]
c = a

if a is b:
    print("To ten sam obiekt")  # To się NIE wyświetli

if a is c:
    print("To ten sam obiekt")  # To się wyświetli</code></pre>



<p class="wp-block-paragraph"><strong>Kiedy używać is:</strong></p>



<ul class="wp-block-list">
<li>Głównie do porównań z&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">None</code></li>



<li>Porównań z&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">True</code>&nbsp;i&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">False</code></li>
</ul>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">x = None

# DOBRZE
if x is None:
    print("x jest None")

# ŹLE (działa, ale niezgodne z konwencją)
if x == None:
    print("x jest None")</code></pre>



<h2 class="wp-block-heading">Python nie ma switch/case</h2>



<p class="wp-block-paragraph"><strong>Uwaga:</strong>&nbsp;Python&nbsp;<strong>nie posiada</strong>&nbsp;konstrukcji&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>&nbsp;znanej z C++, Java, JavaScript.</p>



<h3 class="wp-block-heading">Zamiast switch używamy if-elif-else</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wybor = 2

# W innych językach byłby switch
if wybor == 1:
    print("Opcja 1")
elif wybor == 2:
    print("Opcja 2")
elif wybor == 3:
    print("Opcja 3")
else:
    print("Nieznana opcja")</code></pre>



<h3 class="wp-block-heading">Alternatywa &#8211; słownik (od Python 3.10 jest match-case)</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># Eleganckie rozwiązanie ze słownikiem
opcje = {
    1: "Opcja 1",
    2: "Opcja 2",
    3: "Opcja 3"
}

wybor = 2
print(opcje.get(wybor, "Nieznana opcja"))</code></pre>



<h2 class="wp-block-heading">Skrócony zapis (inline if)</h2>



<h3 class="wp-block-heading">Operator warunkowy (ternary)</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># Pełny zapis
wiek = 20
if wiek &gt;= 18:
    status = "Pełnoletni"
else:
    status = "Niepełnoletni"

# Skrócony zapis
wiek = 20
status = "Pełnoletni" if wiek &gt;= 18 else "Niepełnoletni"

print(status)  # Pełnoletni</code></pre>



<p class="wp-block-paragraph"><strong>Składnia:</strong>&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">wartość_gdy_true if warunek else wartość_gdy_false</code></p>



<p class="wp-block-paragraph">Przykład praktyczny</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"># Określanie znaku liczby
liczba = -5
znak = "dodatnia" if liczba &gt; 0 else "ujemna"

# Rabat
cena = 100
ile_sztuk = 5
rabat = 0.1 if ile_sztuk &gt;= 10 else 0
cena_koncowa = cena * (1 - rabat)

# Przywitanie
pora_dnia = "rano"
powitanie = "Dzień dobry" if pora_dnia == "rano" else "Dobry wieczór"</code></pre>



<h2 class="wp-block-heading">Przykłady praktyczne</h2>



<h3 class="wp-block-heading">Przykład 1: Sprawdzanie parzystości</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba = 8

if liczba == 0:
    print("Podano zero")
elif liczba % 2 == 0:
    print("Liczba jest parzysta")
else:
    print("Liczba jest nieparzysta")</code></pre>



<h3 class="wp-block-heading">Przykład 2: Porównywanie dwóch liczb</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = 10
b = 5

print(f"Porównujemy liczby {a} i {b}")

if a &gt; b:
    print(f"Większa jest liczba a = {a}")
elif b &gt; a:
    print(f"Większa jest liczba b = {b}")
else:
    print("Liczby są równe")</code></pre>



<h3 class="wp-block-heading">Przykład 3: Znajdowanie największej z czterech liczb</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a, b, c, d = 10, 5, 18, 1

# Zakładamy że pierwsza jest największa
najwieksza = a

# Sprawdzamy pozostałe
if b &gt; najwieksza:
    najwieksza = b

if c &gt; najwieksza:
    najwieksza = c

if d &gt; najwieksza:
    najwieksza = d

print(f"Największa liczba to: {najwieksza}")</code></pre>



<h3 class="wp-block-heading">Przykład 4: Prosty kalkulator</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba1 = 10
liczba2 = 5
wybor = "+"

if wybor == "+":
    print(f"{liczba1} + {liczba2} = {liczba1 + liczba2}")
elif wybor == "-":
    print(f"{liczba1} - {liczba2} = {liczba1 - liczba2}")
elif wybor == "*":
    print(f"{liczba1} * {liczba2} = {liczba1 * liczba2}")
elif wybor == "/":
    if liczba2 != 0:
        print(f"{liczba1} / {liczba2} = {liczba1 / liczba2}")
    else:
        print("Nie można dzielić przez zero!")
else:
    print("Niepoprawny operator")</code></pre>



<h3 class="wp-block-heading">Przykład 5: Miesiące roku</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">nr = 3

if nr == 1:
    print("Styczeń")
elif nr == 2:
    print("Luty")
elif nr == 3:
    print("Marzec")
elif nr == 4:
    print("Kwiecień")
elif nr == 5:
    print("Maj")
elif nr == 6:
    print("Czerwiec")
elif nr == 7:
    print("Lipiec")
elif nr == 8:
    print("Sierpień")
elif nr == 9:
    print("Wrzesień")
elif nr == 10:
    print("Październik")
elif nr == 11:
    print("Listopad")
elif nr == 12:
    print("Grudzień")
else:
    print("Nieprawidłowy numer miesiąca")</code></pre>



<h3 class="wp-block-heading">Przykład 6: Sprawdzanie rozszerzenia pliku</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">filename = "01012020_sales.xlsx"

if filename.endswith(".xlsx"):
    print("TAK")
else:
    print("NIE")</code></pre>



<h3 class="wp-block-heading">Przykład 7: Sprawdzanie wielkich liter</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">code = "DSVNDOICSN"

if code.isupper():
    print("TAK")
else:
    print("NIE")</code></pre>



<h3 class="wp-block-heading">Przykład 8: Sprawdzanie typu zmiennej</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">number = 0

if isinstance(number, int):
    print("TAK")
else:
    print("NIE")</code></pre>



<h3 class="wp-block-heading">Przykład 9: Walidacja długości hasła</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">password = "cskdnjcasa#!"

if len(password) >= 11:
    print("Hasło poprawne")
else:
    print("Hasło zbyt krótkie")</code></pre>



<h3 class="wp-block-heading">Przykład 10: Złożona walidacja hasła</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">password = "cskdnjcasa#!"

if len(password) >= 11 and "!" in password:
    print("Hasło poprawne")
else:
    print("Hasło niepoprawne")</code></pre>



<h3 class="wp-block-heading">Przykład 11: Sprawdzanie i dodawanie do listy</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">project_ids = &#91;"02134", "24253"]
project_id = "02135"

if project_id not in project_ids:
    project_ids.append(project_id)

print(project_ids)</code></pre>



<h3 class="wp-block-heading">Przykład 12: Modyfikacja słownika</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">project_ids = {
    "01": "open",
    "02": "new",
    "03": "in progress",
    "04": "completed"
}

if project_ids&#91;"02"] == "new":
    project_ids&#91;"02"] = "open"

print(project_ids)</code></pre>



<h3 class="wp-block-heading">Przykład 13: Usuwanie z listy</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">items = &#91;"001", "000", "003", "005", "006"]
item = "001"

if item in items:
    items.remove(item)

print(items)</code></pre>



<h2 class="wp-block-heading">Zadania</h2>



<h3 class="wp-block-heading">Podstawy instrukcji warunkowych</h3>



<ol class="wp-block-list">
<li>Stwórz&nbsp;zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">temperatura</code>&nbsp;z&nbsp;wartością&nbsp;22.&nbsp;Jeśli&nbsp;temperatura&nbsp;jest&nbsp;większa&nbsp;niż&nbsp;20,&nbsp;wyświetl&nbsp;&#8222;Ciepło&#8221;,&nbsp;w&nbsp;przeciwnym&nbsp;razie&nbsp;wyświetl&nbsp;&#8222;Zimno&#8221;.</li>



<li>Pobierz&nbsp;od&nbsp;użytkownika&nbsp;liczbę.&nbsp;Sprawdź&nbsp;czy&nbsp;jest&nbsp;większa&nbsp;od&nbsp;100&nbsp;i&nbsp;wyświetl&nbsp;odpowiedni&nbsp;komunikat.</li>



<li>Stwórz&nbsp;zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek</code>&nbsp;z&nbsp;wartością&nbsp;16.&nbsp;Sprawdź&nbsp;czy&nbsp;osoba&nbsp;jest&nbsp;pełnoletnia&nbsp;(wiek&nbsp;&gt;=&nbsp;18)&nbsp;i&nbsp;wyświetl&nbsp;odpowiednią&nbsp;informację.</li>



<li>Pobierz&nbsp;od&nbsp;użytkownika&nbsp;jego&nbsp;imię.&nbsp;Jeśli&nbsp;imię&nbsp;to&nbsp;&#8222;Admin&#8221;,&nbsp;wyświetl&nbsp;&#8222;Witaj&nbsp;Administratorze!&#8221;,&nbsp;w&nbsp;przeciwnym&nbsp;razie&nbsp;wyświetl&nbsp;&#8222;Witaj&nbsp;użytkowniku!&#8221;.</li>



<li>Stwórz&nbsp;zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">haslo</code>&nbsp;z&nbsp;jakąś&nbsp;wartością.&nbsp;Sprawdź&nbsp;czy&nbsp;hasło&nbsp;ma&nbsp;długość&nbsp;co&nbsp;najmniej&nbsp;8&nbsp;znaków.&nbsp;Wyświetl&nbsp;&#8222;Hasło&nbsp;akceptowalne&#8221;&nbsp;lub&nbsp;&#8222;Hasło&nbsp;za&nbsp;krótkie&#8221;.</li>
</ol>



<h3 class="wp-block-heading">Instrukcja elif</h3>



<ol class="wp-block-list">
<li>Pobierz&nbsp;od&nbsp;użytkownika&nbsp;liczbę.&nbsp;Sprawdź&nbsp;czy&nbsp;jest&nbsp;dodatnia,&nbsp;ujemna&nbsp;czy&nbsp;równa&nbsp;zero.&nbsp;Wyświetl&nbsp;odpowiedni&nbsp;komunikat&nbsp;dla&nbsp;każdego&nbsp;przypadku.</li>



<li>Stwórz&nbsp;zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">ocena</code>&nbsp;z&nbsp;wartością&nbsp;od&nbsp;1&nbsp;do&nbsp;6.&nbsp;Wyświetl&nbsp;słowną&nbsp;interpretację&nbsp;oceny&nbsp;(1-ndst,&nbsp;2-dop,&nbsp;3-dst,&nbsp;4-db,&nbsp;5-bdb,&nbsp;6-cel).</li>



<li>Pobierz&nbsp;od&nbsp;użytkownika&nbsp;wiek.&nbsp;Sklasyfikuj&nbsp;osobę&nbsp;jako:&nbsp;dziecko&nbsp;(0-12),&nbsp;nastolatek&nbsp;(13-17),&nbsp;dorosły&nbsp;(18-64),&nbsp;senior&nbsp;(65+).</li>



<li>Stwórz&nbsp;zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">miesiąc</code>&nbsp;z&nbsp;numerem&nbsp;miesiąca&nbsp;(1-12).&nbsp;Wyświetl&nbsp;do&nbsp;jakiej&nbsp;pory&nbsp;roku&nbsp;należy&nbsp;ten&nbsp;miesiąc&nbsp;(wiosna,&nbsp;lato,&nbsp;jesień,&nbsp;zima).</li>



<li>Pobierz&nbsp;od&nbsp;użytkownika&nbsp;ocenę&nbsp;procentową&nbsp;(0-100).&nbsp;Przypisz&nbsp;ocenę&nbsp;literową&nbsp;według&nbsp;skali:&nbsp;A&nbsp;(90-100),&nbsp;B&nbsp;(80-89),&nbsp;C&nbsp;(70-79),&nbsp;D&nbsp;(60-69),&nbsp;F&nbsp;(0-59).</li>
</ol>



<h3 class="wp-block-heading">Operatory logiczne (and, or, not)</h3>



<ol class="wp-block-list">
<li>Pobierz od użytkownika wiek i sprawdź czy ma prawo jazdy (zmienną bool). Jeśli ma co najmniej 18 lat I ma prawo jazdy, wyświetl &#8222;Możesz prowadzić samochód&#8221;.</li>



<li>Stwórz zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">dzien</code>&nbsp;z nazwą dnia tygodnia. Sprawdź czy to sobota LUB niedziela i wyświetl &#8222;Weekend!&#8221; lub &#8222;Dzień roboczy&#8221;.</li>



<li>Pobierz od użytkownika temperaturę. Sprawdź czy jest między 18 a 24 stopniami (włącznie). Jeśli tak, wyświetl &#8222;Komfortowa temperatura&#8221;.</li>



<li>Stwórz zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">jest_slonecznie</code>&nbsp;(bool). Jeśli NIE jest słonecznie, wyświetl &#8222;Weź parasol&#8221;.</li>



<li>Pobierz od użytkownika wzrost (w cm) i wagę (w kg). Jeśli wzrost jest powyżej 180 cm I waga poniżej 80 kg, wyświetl &#8222;Spełniasz wymogi&#8221;.</li>



<li>Stwórz program sprawdzający czy rok jest przestępny. Rok jest przestępny jeśli: jest podzielny przez 4 I (nie jest podzielny przez 100 LUB jest podzielny przez 400).</li>



<li>Pobierz od użytkownika dwie liczby. Sprawdź czy przynajmniej jedna z nich jest większa od 50.</li>



<li>Stwórz zmienną&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">pogoda</code>&nbsp;(string) i&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">temperatura</code>&nbsp;(int). Jeśli pogoda to &#8222;deszcz&#8221; LUB temperatura jest poniżej 10, wyświetl &#8222;Zostań w domu&#8221;.</li>
</ol>



<h3 class="wp-block-heading">Operator in i not in</h3>



<ol class="wp-block-list">
<li>Stwórz listę ulubionych kolorów. Pobierz od użytkownika kolor i sprawdź czy jest na liście. Wyświetl odpowiedni komunikat.</li>



<li>Stwórz listę dostępnych rozmiarów ubrań [&#8222;S&#8221;, &#8222;M&#8221;, &#8222;L&#8221;, &#8222;XL&#8221;]. Pobierz od użytkownika rozmiar i sprawdź czy jest dostępny.</li>



<li>Pobierz od użytkownika nazwę owocu. Sprawdź czy NIE znajduje się w liście owoców cytrusowych [&#8222;pomarańcza&#8221;, &#8222;cytryna&#8221;, &#8222;grejpfrut&#8221;, &#8222;mandarynka&#8221;].</li>



<li>Stwórz krotkę z nazwami miesięcy letnich. Pobierz nazwę miesiąca i sprawdź czy jest to miesiąc letni.</li>



<li>Stwórz słownik z kodami krajów (np. {&#8222;PL&#8221;: &#8222;Polska&#8221;, &#8222;DE&#8221;: &#8222;Niemcy&#8221;}). Pobierz kod kraju i sprawdź czy istnieje w słowniku.</li>



<li>Pobierz od użytkownika adres email. Sprawdź czy zawiera znak &#8222;@&#8221;. Jeśli nie, wyświetl &#8222;Nieprawidłowy email&#8221;.</li>



<li>Stwórz zestaw zabronionych słów. Pobierz od użytkownika komentarz i sprawdź czy zawiera któreś z zabronionych słów.</li>
</ol>



<h3 class="wp-block-heading">Zagnieżdżone instrukcje warunkowe</h3>



<ol class="wp-block-list">
<li>Pobierz od użytkownika wiek i czy jest studentem. Jeśli ma co najmniej 18 lat, sprawdź czy jest studentem. Jeśli tak, wyświetl &#8222;Zniżka studencka 50%&#8221;, jeśli nie &#8222;Bilet normalny&#8221;.</li>



<li>Pobierz trzy liczby. Sprawdź czy pierwsza jest największa. Jeśli tak, sprawdź czy druga jest większa od trzeciej.</li>



<li>Pobierz temperaturę i czy pada deszcz (bool). Jeśli temperatura jest powyżej 20 stopni, sprawdź czy pada. Jeśli nie pada, wyświetl &#8222;Idealna pogoda na spacer&#8221;.</li>



<li>Pobierz wzrost i wagę. Oblicz BMI (waga / wzrost²). Jeśli BMI jest poniżej 25, sprawdź czy jest powyżej 18.5 (zdrowy zakres).</li>



<li>Pobierz liczbę. Sprawdź czy jest dodatnia. Jeśli tak, sprawdź czy jest parzysta czy nieparzysta.</li>
</ol>



<h3 class="wp-block-heading">Operator is i isinstance</h3>



<ol class="wp-block-list">
<li>Stwórz zmienną z wartością None. Sprawdź czy jest None używając operatora is.</li>



<li>Pobierz od użytkownika wartość. Sprawdź czy jest typu int używając isinstance().</li>



<li>Stwórz dwie listy z takimi samymi wartościami. Porównaj je używając == i is. Wyjaśnij różnicę w komentarzu.</li>



<li>Stwórz zmienną typu float. Sprawdź czy jest instancją klasy (int, float) używając isinstance() z krotką typów.</li>



<li>Pobierz wartość od użytkownika. Sprawdź czy NIE jest None przed wykonaniem na niej operacji.</li>
</ol>



<h3 class="wp-block-heading">Zadania z matematyką</h3>



<ol class="wp-block-list">
<li>Pobierz trzy długości boków. Sprawdź czy można z nich zbudować trójkąt (suma dwóch krótszych boków musi być większa od najdłuższego).</li>



<li>Pobierz współrzędne punktu (x, y). Określ w której ćwiartce układu współrzędnych się znajduje (I, II, III, IV) lub czy leży na osi.</li>



<li>Pobierz liczbę. Sprawdź czy jest liczbą pierwszą (podzielna tylko przez 1 i siebie).</li>



<li>Pobierz rok. Sprawdź czy jest rokiem przestępnym i wyświetl ile dni ma luty w tym roku.</li>



<li>Pobierz trzy liczby. Sprawdź czy tworzą ciąg arytmetyczny (różnica między kolejnymi liczbami jest stała).</li>
</ol>



<h3 class="wp-block-heading">Walidacja danych</h3>



<ol class="wp-block-list">
<li>Pobierz numer telefonu. Sprawdź czy ma dokładnie 9 cyfr i zaczyna się od cyfry (nie zawiera liter).</li>



<li>Pobierz adres email. Sprawdź czy zawiera &#8222;@&#8221; i &#8222;.&#8221; oraz czy &#8222;@&#8221; znajduje się przed &#8222;.&#8221;.</li>



<li>Pobierz hasło. Sprawdź czy spełnia wymagania: minimum 8 znaków, zawiera wielką literę, małą literę i cyfrę.</li>



<li>Pobierz kod pocztowy. Sprawdź czy ma format XX-XXX (dwie cyfry, myślnik, trzy cyfry).</li>



<li>Pobierz numer PESEL (jako string). Sprawdź czy ma dokładnie 11 cyfr.</li>



<li>Pobierz datę w formacie DD-MM-YYYY. Sprawdź czy miesiąc jest w zakresie 1-12 i dzień w zakresie 1-31.</li>



<li>Pobierz login. Sprawdź czy ma od 3 do 20 znaków i zawiera tylko litery i cyfry.</li>
</ol>



<h3 class="wp-block-heading">Zadania ze stringami</h3>



<ol class="wp-block-list">
<li>Pobierz nazwę pliku. Sprawdź rozszerzenie i określ typ pliku (obraz: jpg, png; dokument: pdf, docx; kod: py, js).</li>



<li>Pobierz zdanie. Sprawdź czy zaczyna się wielką literą i kończy kropką.</li>



<li>Pobierz tekst. Sprawdź czy składa się tylko z małych liter używając metody islower().</li>



<li>Pobierz kod produktu. Sprawdź czy jest w formacie: trzy wielkie litery, myślnik, trzy cyfry (np. ABC-123).</li>



<li>Pobierz imię. Sprawdź czy pierwsza litera jest wielka, a pozostałe małe.</li>
</ol>



<h3 class="wp-block-heading">Zadania z listami i kolekcjami</h3>



<ol class="wp-block-list">
<li>Pobierz liczbę. Sprawdź czy znajduje się w liście liczb pierwszych [2, 3, 5, 7, 11, 13, 17, 19].</li>



<li>Stwórz listę zakupów. Pobierz produkt i sprawdź czy jest na liście. Jeśli jest, usuń go. Jeśli nie ma, dodaj.</li>



<li>Stwórz dwie listy z imionami. Pobierz imię i sprawdź w której liście się znajduje (lub w obu, lub w żadnej).</li>



<li>Stwórz listę numerów kont bankowych. Pobierz numer konta i sprawdź czy jest na liście (jeśli nie, wyświetl &#8222;Konto nie istnieje&#8221;).</li>



<li>Pobierz element. Sprawdź czy występuje jednocześnie w liście i w zestawie (dwie różne kolekcje).</li>
</ol>



<h3 class="wp-block-heading">Zadania ze słownikami</h3>



<ol class="wp-block-list">
<li>Stwórz słownik z cenami produktów. Pobierz nazwę produktu i wyświetl cenę lub &#8222;Produkt niedostępny&#8221;.</li>



<li>Stwórz słownik z danymi logowania (login: hasło). Pobierz login i hasło, sprawdź czy są poprawne.</li>



<li>Stwórz słownik ze statusami zamówień. Pobierz numer zamówienia i wyświetl jego status lub &#8222;Zamówienie nie znalezione&#8221;.</li>



<li>Stwórz słownik z tłumaczeniami (polskie: angielskie). Pobierz słowo polskie i wyświetl tłumaczenie.</li>



<li>Stwórz słownik z punktacją graczy. Pobierz imię gracza i sprawdź czy przekroczył 100 punktów.</li>
</ol>



<h3 class="wp-block-heading">Zadania z wieloma warunkami</h3>



<ol class="wp-block-list">
<li>Stwórz prosty system logowania: pobierz login i hasło. Sprawdź kilka warunków (czy pola nie są puste, czy login istnieje, czy hasło jest poprawne).</li>



<li>Stwórz kalkulator rabatów: pobierz cenę i ilość. Zastosuj rabat: 5% dla 10-19 sztuk, 10% dla 20-49 sztuk, 15% dla 50+ sztuk.</li>



<li>Stwórz system oceny ryzyka kredytowego: pobierz dochód, wiek i historię kredytową (bool). Określ poziom ryzyka: niskie, średnie, wysokie.</li>



<li>Pobierz wagę przesyłki i odległość. Oblicz koszt dostawy według zasad: waga do 1kg: 10zł, 1-5kg: 15zł, 5kg+: 20zł. Odległość powyżej 100km dodaje 5zł.</li>



<li>Stwórz system rezerwacji biletów: pobierz wiek, czy student, dzień tygodnia. Zastosuj odpowiednie zniżki (dzieci 50%, studenci 30%, senior 40%, weekend +20%).</li>
</ol>



<h3 class="wp-block-heading">Zadania z operatorem warunkowym (ternary)</h3>



<ol class="wp-block-list">
<li>Pobierz liczbę. Używając operatora warunkowego przypisz do zmiennej &#8222;parzysta&#8221; lub &#8222;nieparzysta&#8221;.</li>



<li>Pobierz temperaturę. Używając operatora warunkowego przypisz do zmiennej &#8222;ciepło&#8221; jeśli &gt;20, w przeciwnym razie &#8222;zimno&#8221;.</li>



<li>Pobierz dwie liczby. Używając operatora warunkowego przypisz większą z nich do zmiennej.</li>



<li>Pobierz wiek. Używając operatora warunkowego przypisz &#8222;TAK&#8221; lub &#8222;NIE&#8221; do zmiennej oznaczającej pełnoletność.</li>



<li>Pobierz ocenę (1-6). Używając operatora warunkowego przypisz &#8222;Zaliczone&#8221; dla ocen 3-6 lub &#8222;Niezaliczone&#8221; dla 1-2.</li>
</ol>



<h3 class="wp-block-heading">Zadania kompleksowe</h3>



<ol class="wp-block-list">
<li>Stwórz quiz z 5 pytaniami. Dla każdej odpowiedzi sprawdź czy jest poprawna. Na końcu wyświetl wynik i ocenę (5 pkt &#8211; celujący, 4 pkt &#8211; bardzo dobry, itd.).</li>



<li>Stwórz symulator bankomatu: pobierz PIN (sprawdź poprawność), wybierz operację (wypłata/wpłata/sprawdź saldo), wykonaj operację z walidacją.</li>



<li>Stwórz kalkulator podatku: pobierz dochód roczny, oblicz podatek według progów podatkowych (17% do 120k, 32% powyżej), uwzględnij ulgę podatkową.</li>



<li>Stwórz system parkingowego: pobierz typ pojazdu (samochód/motocykl/ciężarówka) i czas parkowania (w godzinach). Oblicz koszt według stawek: samochód 4zł/h, motocykl 2zł/h, ciężarówka 8zł/h. Pierwsze 15 minut gratis.</li>



<li>Stwórz walidator daty: pobierz dzień, miesiąc, rok. Sprawdź czy data jest poprawna (uwzględnij różną liczbę dni w miesiącach i lata przestępne).</li>



<li>Stwórz konwerter jednostek: pobierz wartość i jednostkę źródłową (km/m/cm), pobierz jednostkę docelową, wykonaj konwersję.</li>



<li>Stwórz system rekomendacji filmów: pobierz wiek, gatunek filmowy (akcja/komedia/dramat/horror), czy lubi filmy zagraniczne (bool). Na podstawie kryteriów zaproponuj konkretny film.</li>
</ol>



<h1 class="wp-block-heading">PODSUMOWANIE</h1>



<ul class="wp-block-list">
<li><strong>Instrukcja warunkowa</strong> wykonuje blok kodu tylko wtedy, gdy warunek ma wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">True</code>.</li>



<li>Składnia <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code>: słowo kluczowe, warunek, <strong>dwukropek <code class="prettyprint lang-sql" style="font-size: 0.85em;">:</code></strong>, a pod spodem blok z <strong>wcięciem 4 spacji</strong>. Wcięcie decyduje, co należy do bloku.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code> nie ma warunku. Wykonuje się, gdy żaden wcześniejszy warunek nie był prawdziwy. Występuje najwyżej raz i zawsze na końcu.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code> to kolejne warunki sprawdzane <strong>od góry do dołu</strong>. Wykonuje się tylko <strong>pierwszy</strong> blok, którego warunek jest prawdziwy, a reszta jest pomijana. Dlatego <strong>kolejność warunków ma znaczenie</strong>.</li>



<li>Kilka osobnych <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> pod rząd to <strong>niezależne</strong> sprawdzenia (każdy jest oceniany osobno), a <code class="prettyprint lang-sql" style="font-size: 0.85em;">if-elif-else</code> to <strong>jeden wybór</strong> z kilku opcji (jak w przykładzie szukania największej liczby).</li>



<li><strong>Zagnieżdżanie</strong>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> wewnątrz <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code>. Każdy poziom ma własne wcięcie.</li>



<li>W warunkach porównujemy przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>. Pojedynczy <code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code> to przypisanie i w warunku jest błędem.</li>



<li>Operatory porównania: <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">!=</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">></code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">>=</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;=</code>.</li>



<li>Operatory logiczne: <code class="prettyprint lang-sql" style="font-size: 0.85em;">and</code> (oba warunki prawdziwe), <code class="prettyprint lang-sql" style="font-size: 0.85em;">or</code> (przynajmniej jeden prawdziwy), <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code> (negacja). Kolejność: <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">and</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">or</code>. Gdy masz wątpliwości, użyj nawiasów.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> / <code class="prettyprint lang-sql" style="font-size: 0.85em;">not in</code> sprawdzają, czy element jest w kolekcji: w liście, krotce i zestawie sprawdzają elementy, w słowniku <strong>klucze</strong>, w stringu <strong>podciąg</strong>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code> służy do negacji wartości logicznej (np. <code class="prettyprint lang-sql" style="font-size: 0.85em;">if not zalogowany:</code>), a <code class="prettyprint lang-sql" style="font-size: 0.85em;">!=</code> do porównania dwóch wartości.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> porównuje <strong>wartości</strong>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">is</code> sprawdza, czy to <strong>ten sam obiekt</strong>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">is</code> stosujemy głównie z <code class="prettyprint lang-sql" style="font-size: 0.85em;">None</code>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">x is None</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">x is not None</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">input()</code> zawsze zwraca string, więc przed porównaniem liczbowym trzeba użyć <code class="prettyprint lang-sql" style="font-size: 0.85em;">int()</code> lub <code class="prettyprint lang-sql" style="font-size: 0.85em;">float()</code>.</li>



<li>Python nie ma <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>. Zamiast niego używamy <code class="prettyprint lang-sql" style="font-size: 0.85em;">if-elif-else</code> albo słownika z <code class="prettyprint lang-sql" style="font-size: 0.85em;">.get()</code>.</li>



<li>Operator warunkowy (ternary): <code class="prettyprint lang-sql" style="font-size: 0.85em;">wartość_gdy_True if warunek else wartość_gdy_False</code>.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Minimum, które powinno wejść w pamięć</h2>



<p class="wp-block-paragraph">Jeżeli masz zapamiętać tylko kilka rzeczy z tej lekcji, zapamiętaj te:</p>



<ol class="wp-block-list">
<li>Po <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code> <strong>zawsze dwukropek</strong>, a blok pod spodem ma <strong>wcięcie 4 spacji</strong>.</li>



<li>W warunku piszemy <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>, nie <code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">if-elif-else</code> wykonuje <strong>tylko jeden</strong> blok, pierwszy z prawdziwym warunkiem. Warunki ustawiaj w sensownej kolejności.</li>



<li>Kilka osobnych <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> to niezależne sprawdzenia, więc może wykonać się więcej niż jeden blok.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">input()</code> zwraca tekst. Do porównań liczbowych użyj <code class="prettyprint lang-sql" style="font-size: 0.85em;">int(input(...))</code> albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">float(input(...))</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">and</code> – oba prawdziwe, <code class="prettyprint lang-sql" style="font-size: 0.85em;">or</code> – przynajmniej jeden prawdziwy, <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code> – odwrócenie. Kolejność: <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">and</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">or</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> w słowniku sprawdza <strong>klucze</strong>, w stringu <strong>podciąg</strong>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">is None</code> / <code class="prettyprint lang-sql" style="font-size: 0.85em;">is not None</code> do sprawdzania <code class="prettyprint lang-sql" style="font-size: 0.85em;">None</code>. Do porównywania wartości służy <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>.</li>



<li>Podzielność i parzystość: <code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba % 2 == 0</code>.</li>



<li>Python nie ma <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>. Używamy <code class="prettyprint lang-sql" style="font-size: 0.85em;">if-elif-else</code> albo słownika.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Ściągawka – najważniejsze polecenia i składnia</h2>



<p class="wp-block-paragraph"><strong>Schemat instrukcji warunkowej</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if warunek1:
    instrukcje
elif warunek2:
    instrukcje
else:
    instrukcje</code></pre>



<p class="wp-block-paragraph"><strong>Operatory</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Rodzaj</th><th>Operatory</th><th>Znaczenie</th></tr></thead><tbody><tr><td>Porównania</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">!=</code></td><td>równe / różne</td></tr><tr><td>&nbsp;</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;=</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;=</code></td><td>większe, mniejsze, większe lub równe, mniejsze lub równe</td></tr><tr><td>Logiczne</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">and</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">or</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code></td><td>i / lub / negacja</td></tr><tr><td>Przynależność</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">not in</code></td><td>jest / nie ma w kolekcji</td></tr><tr><td>Tożsamość</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">is</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">is not</code></td><td>ten sam obiekt / inny obiekt</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong><code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> w różnych kolekcjach</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Kolekcja</th><th>Co sprawdza</th><th>Przykład</th></tr></thead><tbody><tr><td>lista, krotka, zestaw</td><td>elementy</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">"a" in ["a", "b"]</code></td></tr><tr><td>słownik</td><td>klucze</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">"name" in slownik</code></td></tr><tr><td>string</td><td>podciąg</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">"Py" in "Python"</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Operator warunkowy (ternary)</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">status = "Pełnoletni" if wiek >= 18 else "Niepełnoletni"</code></pre>



<p class="wp-block-paragraph"><strong>Zamiast <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>: słownik</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">print(opcje.get(wybor, "Nieznana opcja"))</code></pre>



<p class="wp-block-paragraph"><strong>Najczęściej używane wzorce</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba % 2 == 0                 # parzysta
najwieksza = a                  # zakładamy, że pierwsza jest największa,
if b > najwieksza:              # a potem sprawdzamy pozostałe
    najwieksza = b
if x is None: ...               # sprawdzenie None
if odpowiedz.lower() in opcje:  # odporne na wielkość liter
if element not in lista:        # dodaj, jeśli jeszcze go nie ma
    lista.append(element)</code></pre>



<p class="wp-block-paragraph"><strong>Metody i funkcje przydatne w warunkach (z lekcji)</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Zapis</th><th>Co sprawdza</th></tr></thead><tbody><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">len(tekst) == 11</code></td><td>długość</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">nazwa.endswith(".xlsx")</code></td><td>zakończenie tekstu</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">kod.isupper()</code></td><td>czy same wielkie litery</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">isinstance(x, int)</code></td><td>typ zmiennej</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Typowe błędy</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Błąd</th><th>Poprawnie</th></tr></thead><tbody><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x = 5:</code></td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x == 5:</code></td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x == 5</code> (brak <code class="prettyprint lang-sql" style="font-size: 0.85em;">:</code>)</td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x == 5:</code></td></tr><tr><td>brak wcięcia pod <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code></td><td>4 spacje wcięcia</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if wiek &gt;= 18:</code> gdzie <code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = input()</code></td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = int(input())</code></td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x == None:</code></td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if x is None:</code></td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code> bez wcześniejszego <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code></td><td>zawsze zaczynamy od <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code></td></tr><tr><td>warunki ułożone od najszerszego (<code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 60</code> przed <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 80</code>)</td><td>od najbardziej szczegółowego</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Quiz – sprawdź się</h2>



<p class="wp-block-paragraph"><strong>Pytanie 1.</strong> Python nie ma instrukcji <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>. Podaj dwa sposoby z lekcji, którymi można ją zastąpić.</p>



<p class="wp-block-paragraph"><strong>Pytanie 2.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">x = 7

if x > 5:
    print("A")
if x > 6:
    print("B")
elif x > 3:
    print("C")
else:
    print("D")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 3.</strong> Co zostanie wyświetlone? Jaki jest tu błąd w logice i jak go naprawić?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">punkty = 85

if punkty >= 60:
    print("dst")
elif punkty >= 80:
    print("db")
elif punkty >= 90:
    print("bdb")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 4.</strong> Dlaczego ten program zgłosi błąd (<code class="prettyprint lang-sql" style="font-size: 0.85em;">TypeError</code>) i jak go poprawić?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = input("Podaj wiek: ")

if wiek >= 18:
    print("Pełnoletni")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 5.</strong> Znajdź 4 błędy w kodzie.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">temp = 15

if temp = 20
print("Ciepło")
else
    print("Zimno")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 6.</strong> Co zostanie wyświetlone (cztery linie)?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = 4
b = 9

print(a > 3 and b &lt; 5)
print(a > 3 or b &lt; 5)
print(not a == 4)
print(a > 3 and not b &lt; 5)</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 7.</strong> Uzupełnij puste miejsca tak, aby program wyświetlił „Wejście dozwolone”.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">dozwolone = &#91;"admin", "ola", "kuba"]
login = "Ola".____()

if login ____ dozwolone:
    print("Wejście dozwolone")
else:
    print("Brak dostępu")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 8.</strong> Co zostanie wyświetlone (cztery linie)?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">dane = {"imie": "Jan", "wiek": 25}

print("Jan" in dane)
print("imie" in dane)
print("an" in "Jan")
print(25 not in (10, 20, 30))</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 9.</strong> Co zostanie wyświetlone? Wyjaśnij różnicę między <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> a <code class="prettyprint lang-sql" style="font-size: 0.85em;">is</code>. Jak poprawnie sprawdzić, czy zmienna <code class="prettyprint lang-sql" style="font-size: 0.85em;">x</code> ma wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">None</code>?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">a = &#91;1, 2]
b = &#91;1, 2]
c = a

print(a == b, a is b, a is c)</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 10.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = 20
ma_bilet = False

if wiek >= 18:
    if ma_bilet:
        print("Wejście")
    else:
        print("Kup bilet")
else:
    print("Za młody")</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 11.</strong> Zapisz w jednej linii, używając operatora warunkowego (ternary):</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if punkty >= 50:
    wynik = "zaliczone"
else:
    wynik = "niezaliczone"</code></pre>



<p class="wp-block-paragraph"><strong>Pytanie 12 (zadanie praktyczne).</strong> Napisz program, który pobiera od użytkownika liczbę całkowitą i wyświetla: „zero”, „parzysta” albo „nieparzysta”.</p>



<p class="wp-block-paragraph"><strong>Pytanie 13 (zadanie praktyczne).</strong> Napisz program, który pobiera od użytkownika cenę produktu i liczbę sztuk. Jeśli sztuk jest co najmniej 10, naliczany jest rabat 10%. Wyświetl cenę końcową za jedną sztukę.</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedzi</strong></summary>
<p class="wp-block-paragraph"><strong>1.</strong> Łańcuch <code class="prettyprint lang-sql" style="font-size: 0.85em;">if-elif-else</code> oraz słownik z metodą <code class="prettyprint lang-sql" style="font-size: 0.85em;">.get()</code>, np. <code class="prettyprint lang-sql" style="font-size: 0.85em;">opcje.get(wybor, "Nieznana opcja")</code>. (Lekcja wspomina też <code class="prettyprint lang-sql" style="font-size: 0.85em;">match-case</code> od Pythona 3.10, ale go nie omawia.)</p>



<p class="wp-block-paragraph"><strong>2.</strong> Wynik:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">A
B</code></pre>



<p class="wp-block-paragraph">Pierwszy <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> jest niezależny i wypisuje „A”. Drugi blok to osobny łańcuch: <code class="prettyprint lang-sql" style="font-size: 0.85em;">x &gt; 6</code> jest prawdziwe, więc wypisuje „B”, a <code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code> są pomijane.</p>



<p class="wp-block-paragraph"><strong>3.</strong> Wynik: <code class="prettyprint lang-sql" style="font-size: 0.85em;">dst</code>. Warunek <code class="prettyprint lang-sql" style="font-size: 0.85em;">punkty &gt;= 60</code> jest prawdziwy już dla 85, więc pozostałe <code class="prettyprint lang-sql" style="font-size: 0.85em;">elif</code> nie są sprawdzane. Naprawa: ustawić warunki od najwyższego progu (<code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 90</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 80</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 60</code>).</p>



<p class="wp-block-paragraph"><strong>4.</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">input()</code> zwraca string, a porównanie napisu z liczbą <code class="prettyprint lang-sql" style="font-size: 0.85em;">18</code> powoduje <code class="prettyprint lang-sql" style="font-size: 0.85em;">TypeError</code>. Poprawnie: <code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek = int(input("Podaj wiek: "))</code>.</p>



<p class="wp-block-paragraph"><strong>5.</strong> Błędy:</p>



<ul class="wp-block-list">
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code> zamiast <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> w warunku (<code class="prettyprint lang-sql" style="font-size: 0.85em;">temp = 20</code>),</li>



<li>brak dwukropka po <code class="prettyprint lang-sql" style="font-size: 0.85em;">if temp == 20</code>,</li>



<li>brak wcięcia przy pierwszym <code class="prettyprint lang-sql" style="font-size: 0.85em;">print</code>,</li>



<li>brak dwukropka po <code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code>.</li>
</ul>



<p class="wp-block-paragraph">Poprawnie:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">temp = 15

if temp == 20:
    print("Ciepło")
else:
    print("Zimno")</code></pre>



<p class="wp-block-paragraph"><strong>6.</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">False
True
False
True</code></pre>



<ul class="wp-block-list">
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">a > 3 and b &lt; 5</code>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">True and False</code>, więc <code class="prettyprint lang-sql" style="font-size: 0.85em;">False</code>,</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">a > 3 or b &lt; 5</code>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">True or False</code>, więc <code class="prettyprint lang-sql" style="font-size: 0.85em;">True</code>,</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">not a == 4</code>: porównanie wykonuje się przed <code class="prettyprint lang-sql" style="font-size: 0.85em;">not</code>, czyli <code class="prettyprint lang-sql" style="font-size: 0.85em;">not True</code>, więc <code class="prettyprint lang-sql" style="font-size: 0.85em;">False</code>,</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">a > 3 and not b &lt; 5</code>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">True and not False</code>, więc <code class="prettyprint lang-sql" style="font-size: 0.85em;">True</code>.</li>
</ul>



<p class="wp-block-paragraph"><strong>7.</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">lower</code> oraz <code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code>:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">login = "Ola".lower()

if login in dozwolone:</code></pre>



<p class="wp-block-paragraph"><strong>8.</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">False
True
True
True</code></pre>



<p class="wp-block-paragraph">W słowniku <code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> sprawdza klucze, a nie wartości, więc „Jan” (wartość) daje <code class="prettyprint lang-sql" style="font-size: 0.85em;">False</code>. W stringu <code class="prettyprint lang-sql" style="font-size: 0.85em;">in</code> sprawdza podciąg.</p>



<p class="wp-block-paragraph"><strong>9.</strong> Wynik: <code class="prettyprint lang-sql" style="font-size: 0.85em;">True False True</code>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">a == b</code> jest prawdziwe, bo listy mają takie same wartości. <code class="prettyprint lang-sql" style="font-size: 0.85em;">a is b</code> jest fałszywe, bo to dwa różne obiekty. <code class="prettyprint lang-sql" style="font-size: 0.85em;">a is c</code> jest prawdziwe, bo <code class="prettyprint lang-sql" style="font-size: 0.85em;">c</code> wskazuje na ten sam obiekt co <code class="prettyprint lang-sql" style="font-size: 0.85em;">a</code>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> porównuje wartości, a <code class="prettyprint lang-sql" style="font-size: 0.85em;">is</code> sprawdza tożsamość obiektu. Sprawdzenie <code class="prettyprint lang-sql" style="font-size: 0.85em;">None</code>: <code class="prettyprint lang-sql" style="font-size: 0.85em;">if x is None:</code>.</p>



<p class="wp-block-paragraph"><strong>10.</strong> Wynik: <code class="prettyprint lang-sql" style="font-size: 0.85em;">Kup bilet</code>. Zewnętrzny warunek (<code class="prettyprint lang-sql" style="font-size: 0.85em;">wiek &gt;= 18</code>) jest prawdziwy, a <code class="prettyprint lang-sql" style="font-size: 0.85em;">ma_bilet</code> ma wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">False</code>, więc wykonuje się wewnętrzny <code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code>.</p>



<p class="wp-block-paragraph"><strong>11.</strong></p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">wynik = "zaliczone" if punkty >= 50 else "niezaliczone"</code></pre>



<p class="wp-block-paragraph"><strong>12.</strong> Przykładowe rozwiązanie:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">liczba = int(input("Podaj liczbę: "))

if liczba == 0:
    print("zero")
elif liczba % 2 == 0:
    print("parzysta")
else:
    print("nieparzysta")</code></pre>



<p class="wp-block-paragraph">Warunek dla zera musi być pierwszy, bo <code class="prettyprint lang-sql" style="font-size: 0.85em;">0 % 2 == 0</code> też jest prawdziwe.</p>



<p class="wp-block-paragraph"><strong>13.</strong> Przykładowe rozwiązanie:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">cena = float(input("Podaj cenę: "))
ile_sztuk = int(input("Podaj liczbę sztuk: "))

if ile_sztuk >= 10:
    cena_koncowa = cena * 0.9
else:
    cena_koncowa = cena

print(f"Cena końcowa za sztukę: {cena_koncowa}")</code></pre>



<p class="wp-block-paragraph">Test: cena 100 i 5 sztuk daje 100.0, cena 100 i 10 sztuk daje 90.0.</p>
</details>
<p>Artykuł <a href="https://kamakaczmarek.net/9-python-instrukcje-warunkowe-if-elif-else/">9. Python &#8211; instrukcje warunkowe if&#8230;elif&#8230;else</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>4. PHP &#8211; instrukcje sterujące &#8211; instrukcje warunkowe, wyboru oraz operator warunkowy</title>
		<link>https://kamakaczmarek.net/php-instrukcje-sterujace-instrukcje-warunkowe-wyboru-oraz-operator-warunkowy/</link>
		
		<dc:creator><![CDATA[Kama]]></dc:creator>
		<pubDate>Thu, 18 Oct 2018 18:35:06 +0000</pubDate>
				<category><![CDATA[aplikacje]]></category>
		<category><![CDATA[dla ucznia]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[else]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[instrukcja warunkowe]]></category>
		<category><![CDATA[instrukcje sterujące]]></category>
		<category><![CDATA[instrukcje wyboru]]></category>
		<category><![CDATA[operator warunkowy]]></category>
		<category><![CDATA[switch]]></category>
		<guid isPermaLink="false">https://kamakaczmarek.net/?p=2294</guid>

					<description><![CDATA[<p>Instrukcje warunkowe TaskQuest Dodatek Szybki quiz – przypomnienie poprzedniej lekcji 1. Które nazwy zmiennych są poprawne w PHP? a) $2liczba b) $_licznik c) $moja zmienna d) $imieUzytkownika e) $xp-max 2. Co zostanie wyświetlone? 3. Co zostanie wyświetlone? 4. Jaki będzie wynik? 5. Co zostanie wyświetlone? 6. Jaki będzie wynik każdego var_dump()? 7. Ile wynosi $a [&#8230;]</p>
<p>Artykuł <a href="https://kamakaczmarek.net/php-instrukcje-sterujace-instrukcje-warunkowe-wyboru-oraz-operator-warunkowy/">4. PHP &#8211; instrukcje sterujące &#8211; instrukcje warunkowe, wyboru oraz operator warunkowy</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Instrukcje warunkowe</h1>



<p><a href="#TaskQuest">TaskQuest</a></p>
<p><a href="#dodatek">Dodatek</a></p>



<h2 class="wp-block-heading">Szybki quiz – przypomnienie poprzedniej lekcji</h2>



<p class="wp-block-paragraph"><strong>1.</strong> Które nazwy zmiennych są poprawne w PHP?</p>



<p class="wp-block-paragraph">a) <code class="prettyprint lang-sql" style="font-size: 0.85em;">$2liczba</code> b) <code class="prettyprint lang-sql" style="font-size: 0.85em;">$_licznik</code> c) <code class="prettyprint lang-sql" style="font-size: 0.85em;">$moja zmienna</code> d) <code class="prettyprint lang-sql" style="font-size: 0.85em;">$imieUzytkownika</code> e) <code class="prettyprint lang-sql" style="font-size: 0.85em;">$xp-max</code></p>



<p class="wp-block-paragraph"><strong>2.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$a = 7;
$b = 2;
echo $a % $b . "&lt;br&gt;";
echo $a ** $b . "&lt;br&gt;";
echo $a / $b;
</code></pre>



<p class="wp-block-paragraph"><strong>3.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$e = 5;
echo $e++;
echo $e;
echo ++$e;
</code></pre>



<p class="wp-block-paragraph"><strong>4.</strong> Jaki będzie wynik?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">var_dump(10 == "10");
var_dump(10 === "10");
</code></pre>



<p class="wp-block-paragraph"><strong>5.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$x = 10;
$y = 3;
echo $x . $y . "&lt;br&gt;";
echo $x + $y;
</code></pre>



<p class="wp-block-paragraph"><strong>6.</strong> Jaki będzie wynik każdego <code class="prettyprint lang-sql" style="font-size: 0.85em;">var_dump()</code>?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$a = 10;
$b = 2;
var_dump($a &gt; 5 &amp;&amp; $b &gt; 5);
var_dump($a &gt; 5 || $b &gt; 5);
var_dump($a &gt; 5 xor $b &lt; 5);
</code></pre>



<p class="wp-block-paragraph"><strong>7.</strong> Ile wynosi <code class="prettyprint lang-sql" style="font-size: 0.85em;">$a</code> po wykonaniu kodu?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$a = 5;
$b = &amp;$a;
$b = 9;
</code></pre>



<p class="wp-block-paragraph"><strong>8.</strong> Co się stanie po uruchomieniu tego kodu?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">const XP_NA_POZIOM = 100;
XP_NA_POZIOM = 200;
</code></pre>



<p class="wp-block-paragraph"><strong>9. (TaskQuest)</strong> Co wyświetli ten kod i dlaczego w projekcie jest to problem?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$poziom = 1;
echo "Do poziomu " . ++$poziom . "&lt;br&gt;";
echo "Twój poziom: $poziom";
</code></pre>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedzi</strong></summary>
<h4 class="wp-block-heading">Szybki quiz – poprzednia lekcja</h4>



<ol class="wp-block-list">
<li>Poprawne: <strong>b</strong> i <strong>d</strong>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">$2liczba</code> – zaczyna się od cyfry, <code class="prettyprint lang-sql" style="font-size: 0.85em;">$moja zmienna</code> – spacja, <code class="prettyprint lang-sql" style="font-size: 0.85em;">$xp-max</code> – minus jest operatorem, nie częścią nazwy.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">1</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">49</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">3.5</code> (reszta z dzielenia, potęgowanie, dzielenie zwraca ułamek).</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">567</code> – <code class="prettyprint lang-sql" style="font-size: 0.85em;">$e++</code> najpierw zwraca 5, potem zwiększa; <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo $e</code> daje 6; <code class="prettyprint lang-sql" style="font-size: 0.85em;">++$e</code> najpierw zwiększa do 7, potem zwraca.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">bool(true)</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">bool(false)</code> – wartości równe, ale typy różne (int i string).</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">103</code> (łączenie tekstów kropką), <code class="prettyprint lang-sql" style="font-size: 0.85em;">13</code> (dodawanie).</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">bool(false)</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">bool(true)</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">bool(false)</code> – przy <code class="prettyprint lang-sql" style="font-size: 0.85em;">xor</code> oba warunki są prawdziwe, więc wynik to <code class="prettyprint lang-sql" style="font-size: 0.85em;">false</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">9</code> – <code class="prettyprint lang-sql" style="font-size: 0.85em;">$b</code> jest referencją do <code class="prettyprint lang-sql" style="font-size: 0.85em;">$a</code>, więc zmiana <code class="prettyprint lang-sql" style="font-size: 0.85em;">$b</code> zmienia <code class="prettyprint lang-sql" style="font-size: 0.85em;">$a</code>.</li>



<li>Błąd składni (parse error) – stałej nie można przypisać nowej wartości.</li>



<li>„Do poziomu 2” i „Twój poziom: 2”. <code class="prettyprint lang-sql" style="font-size: 0.85em;">++$poziom</code> trwale zmienia zmienną, więc od tej linii użytkownik „ma” poziom 2, choć nie awansował. Zamiast tego: <code class="prettyprint lang-sql" style="font-size: 0.85em;">($poziom + 1)</code>. Ważne w tej lekcji – jeśli taki zapis został w projekcie, zepsuje logikę awansu.</li>
</ol>
</details>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">if, else, elseif</h2>



<p class="wp-block-paragraph">Instrukcje warunkowe (if, else, elseif), instrukcje wyboru (switch, match) oraz operatory warunkowe pozwalają programowi podejmować decyzje i wykonywać różne fragmenty kodu w zależności od spełnienia określonych warunków. Najprościej mówiąc – odpowiadają na pytania &#8222;co jeżeli?&#8221;.</p>



<p class="wp-block-paragraph">Podam wam teraz prosty przykład:</p>



<p class="wp-block-paragraph"><em>Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia</em></p>



<p class="wp-block-paragraph">zapis tego stwierdzenia za pomocą instrukcji <strong>if</strong> będzie wyglądał następująco:</p>



<pre class="wp-block-preformatted prettyprint">if($liczba&gt;0) echo "jest dodatnia";</pre>



<p class="wp-block-paragraph">Jeżeli potrzebujemy rozwinąć naszą myśl o zapytanie &#8222;a co gdy warunek nie jest spełniony?&#8221; &#8211; używamy <strong>else.</strong></p>



<p class="wp-block-paragraph"><em>Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia</em> &#8211; <em>w przeciwnym wypadku napisz, że nie jest dodatnia</em></p>



<pre class="wp-block-preformatted prettyprint">if($liczba&gt;0) {<br />    echo "jest dodatnia";<br />} <br />else {<br />    echo "nie jest dodatnia";<br />}</pre>



<p class="wp-block-paragraph">Oczywiście instrukcje możemy zagnieżdżać jedna w drugiej.</p>



<p class="wp-block-paragraph">Może zajść sytuacja, że przed użyciem <strong>else </strong>chcemy sprawdzić jeszcze jakieś inne warunki, wtedy przychodzi nam z pomocą instrukcja <strong>elseif.</strong></p>



<pre class="wp-block-preformatted prettyprint">if($liczba&gt;0) <br />{<br />    echo "jest dodatnia";<br />} <br />elseif($liczba==0)<br />{<br />    echo "liczba jest zerem";<br />}<br />else <br />{<br />    echo "jest ujemna";<br />}</pre>



<p><strong>Ważne:</strong>&nbsp;Instrukcje można zagnieżdżać jedna w drugiej.</p>
<p><span style="color: #ff0000;"><strong><span style="font-size: 18pt;">UWAGA!</span>&nbsp;<span style="color: #000000;">w instrukcji warunkowej nie używamy operatora &#8222;=&#8221; (operator przypisania). Używamy &#8222;==&#8221; (dwa znaki =) lub &#8222;===&#8221; (trzy znaki =)</span></strong></span></p>



<h2 class="wp-block-heading">switch</h2>



<p class="wp-block-paragraph">Gdy wiemy, że nasza zmienna będzie przyjmowała jakieś konkretne wartości, możemy użyć wtedy instrukcji <strong>switch.</strong></p>



<pre class="wp-block-preformatted prettyprint">switch ($plec) {<br />    case "K":<br />        echo "Kobieta";<br />        break;<br />    case "M":<br />        echo "Mężczyzna";<br />        break;<br />    default:<br />        echo "Nierozpoznany wybór";<br />        break;<br />}</pre>



<p class="wp-block-paragraph"><strong>break;</strong> używamy by przerwać działanie instrukcji, gdy warunek zostanie spełniony.</p>



<p class="wp-block-paragraph"><strong>default;</strong> oznacza akcję domyślą, gdy żaden z warunków nie zostanie spełniony.</p>



<p><span style="color: #ff0000;"><strong><span style="font-size: 18pt;">UWAGA!</span> &nbsp;</strong></span><strong>Switch używa luźnego porównania (==), co może prowadzić do niespodziewanych rezultatów przy porównywaniu typów.</strong></p>



<h2 class="wp-block-heading">&nbsp;Wyrażenie match (PHP 8.0+)</h2>



<p><strong>Match</strong>&nbsp;to nowoczesna alternatywa dla switch, wprowadzona w PHP 8.0. Jest bezpieczniejsza i bardziej zwięzła:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$kolor = match ($status) {
    'draft' =&gt; 'gray',
    'published' =&gt; 'green',
    'archived' =&gt; 'red',
    default =&gt; 'black',
};</code></pre>



<h3 class="wp-block-heading">Różnice między switch a match:</h3>



<table style="width: 100%; height: 140px;">
<thead>
<tr style="height: 28px;">
<th style="height: 28px;">Cecha</th>
<th style="height: 28px;">switch</th>
<th style="height: 28px;">match</th>
</tr>
</thead>
<tbody>
<tr style="height: 28px;">
<td style="height: 28px;">Porównanie</td>
<td style="height: 28px;">Luźne (==)</td>
<td style="height: 28px;">Ścisłe (===)</td>
</tr>
<tr style="height: 28px;">
<td style="height: 28px;">Zwraca wartość</td>
<td style="height: 28px;">Nie</td>
<td style="height: 28px;">Tak</td>
</tr>
<tr style="height: 28px;">
<td style="height: 28px;">Wymaga break</td>
<td style="height: 28px;">Tak</td>
<td style="height: 28px;">Nie</td>
</tr>
<tr style="height: 28px;">
<td style="height: 28px;">Fall-through</td>
<td style="height: 28px;">Tak</td>
<td style="height: 28px;">Nie</td>
</tr>
</tbody>
</table>



<h3>Przykład z wieloma warunkami:</h3>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$statusCode = 404;
$komunikat = match($statusCode) {
    200, 201, 204 =&gt; "Sukces",
    400, 404 =&gt; "Błąd klienta",
    500, 502, 503 =&gt; "Błąd serwera",
    default =&gt; "Nieznany status"
};
echo $komunikat;</code></pre>



<h3>Match z wyrażeniami:</h3>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$wiek = 25;
$kategoria = match(true) {
    $wiek &lt; 13 =&gt; "dziecko",
    $wiek &lt; 18 =&gt; "nastolatek",
    $wiek &lt; 65 =&gt; "dorosły",
    default =&gt; "senior"
};
echo $kategoria;</code></pre>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIEBAA" data-hveid="CAIIAAgACBAQAA" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<h3 class="otQkpb" role="heading" aria-level="3" data-wiz-attrbind="aria-level=kE7J3b_2j/fLk2Md" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none; border-bottom: 0px rgb(238, 240, 255);">Dlaczego <code class="prettyprint lang-sql" style="font-size: 0.85em;">match<!--TgQPHd|||[]--></code> jest lepsze?<!--TgQPHd|||[]--></h3>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIERAB" data-hveid="CAIIAAgACBEQAQ" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<ul>
<li class="Z1qcYe" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBEQAg" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><span class="iNqyIf" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Zwraca wartość:<!--TgQPHd|||[]--></strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">match<!--TgQPHd|||[]--></code> jest wyrażeniem (expression), co oznacza, że możesz przypisać jego wynik bezpośrednio do zmiennej lub użyć go w instrukcji <code class="prettyprint lang-sql" style="font-size: 0.85em;">return<!--TgQPHd|||[]--></code>.<!--TgQPHd|||[]--></span><!--TgQPHd|||[]--></li>
</ul>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIERAF" data-hveid="CAIIAAgACBEQBQ" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<ul>
<li class="Z1qcYe" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBEQBg" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><span class="iNqyIf" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Brak potrzebny <code class="prettyprint lang-sql" style="font-size: 0.85em;">break<!--TgQPHd|||[]--></code>:<!--TgQPHd|||[]--></strong> Nie musisz pisać <code class="prettyprint lang-sql" style="font-size: 0.85em;">break<!--TgQPHd|||[]--></code> przy każdym przypadku. Kod nie &#8222;wpada&#8221; automatycznie w kolejne bloki (brak efektu <em class="zhvwWe" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">fall-through<!--TgQPHd|||[]--></em>), co eliminuje częste błędy.<!--TgQPHd|||[]--></span><!--TgQPHd|||[]--></li>
</ul>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIERAJ" data-hveid="CAIIAAgACBEQCQ" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<ul>
<li class="Z1qcYe" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBEQCg" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><span class="iNqyIf" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Ścisłe porównanie (<code class="prettyprint lang-sql" style="font-size: 0.85em;">===<!--TgQPHd|||[]--></code>):<!--TgQPHd|||[]--></strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch<!--TgQPHd|||[]--></code> używa luźnego porównania (<code class="prettyprint lang-sql" style="font-size: 0.85em;">==<!--TgQPHd|||[]--></code>), co może prowadzić do niespodzianek (np. <code class="prettyprint lang-sql" style="font-size: 0.85em;">0 == 'tekst'<!--TgQPHd|||[]--></code> w starych wersjach PHP zwracało <code class="prettyprint lang-sql" style="font-size: 0.85em;">true<!--TgQPHd|||[]--></code>). <code class="prettyprint lang-sql" style="font-size: 0.85em;">match<!--TgQPHd|||[]--></code> porównuje rygorystycznie – sprawdza zarówno wartość, jak i typ.<!--TgQPHd|||[]--></span><!--TgQPHd|||[]--></li>
</ul>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIERAN" data-hveid="CAIIAAgACBEQDQ" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<ul>
<li class="Z1qcYe" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBEQDg" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><span class="iNqyIf" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Wymóg obsłużenia wszystkich opcji:<!--TgQPHd|||[]--></strong> Jeśli <code class="prettyprint lang-sql" style="font-size: 0.85em;">match<!--TgQPHd|||[]--></code> nie dopasuje żadnej wartości i nie zdefiniujesz bloku <code class="prettyprint lang-sql" style="font-size: 0.85em;">default<!--TgQPHd|||[]--></code>, PHP wyrzuci błąd (<code class="prettyprint lang-sql" style="font-size: 0.85em;">UnhandledMatchError<!--TgQPHd|||[]--></code>). Dzięki temu trudniej przeoczyć błąd w kodzie.<!--TgQPHd|||[]--></span><!--TgQPHd|||[]--></li>
</ul>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIERAR" data-hveid="CAIIAAgACBEQEQ" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<ul>
<li class="Z1qcYe" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBEQEg" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><span class="iNqyIf" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"><strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Łączenie warunków:<!--TgQPHd|||[]--></strong><span data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);"> Możesz łatwo połączyć kilka warunków po przecinku:</span></span>
<div class="r1PmQe" data-sfc-cp="" data-sfc-root="ep" data-wiz-uids="kE7J3b_4c,kE7J3b_4b" data-hveid="CAIIAAgACBUQAA" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 4px 0px 0px; text-decoration: none; border-bottom: 0px rgb(238, 240, 255);">
<div data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(238, 240, 255);">
<div class="LIBz9e" data-animation-atomic="" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 3px 0px 0px; text-decoration: none; border-bottom: 0.8px solid rgb(44, 46, 53);"> </div>
</div>
</div>
</li>
</ul>
</div>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$wynik = match ($rola) { 
    'admin', 'editor' =&gt; 'ma dostęp', 
    'guest' =&gt; 'brak dostępu', 
};</code></pre>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIFhAA" data-hveid="CAIIAAgACBYQAA" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<h3 class="otQkpb" role="heading" aria-level="3" data-wiz-attrbind="aria-level=kE7J3b_4n/fLk2Md" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none; border-bottom: 0px rgb(238, 240, 255);">Kiedy nadal warto używać <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch<!--TgQPHd|||[]--></code>?<br /><!--TgQPHd|||[]--></h3>
</div>



<div class="" data-bfc="" data-ved="2ahUKEwil6fmQ3u2WAxWOFxAIHcmzGScQi4wTegoIAggACAAIFxAA" data-hveid="CAIIAAgACBcQAA" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">
<div class="n6owBd awi2gc" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBcQAQ" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Użyj <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch<!--TgQPHd|||[]--></code>, jeśli w danym bloku <code class="prettyprint lang-sql" style="font-size: 0.85em;">case<!--TgQPHd|||[]--></code> musisz wykonać <strong class="rQesXe MPyX" data-sfc-cp="" data-sfc-root="ep" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">złożoną logikę wielolinijkową<!--TgQPHd|||[]--></strong> (kilka operacji, pętli itp.).</div>
<div class="n6owBd awi2gc" data-sfc-cp="" data-sfc-root="ep" data-hveid="CAIIAAgACBcQAQ" data-complete="true" data-copy-service-computed-style="font-family: &quot;Google Sans&quot;, Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none; border-bottom: 0px rgb(230, 232, 240);">Wyrażenie <code class="prettyprint lang-sql" style="font-size: 0.85em;">match<!--TgQPHd|||[]--></code> pozwala na wykonanie tylko jednego wyrażenia po strzałce <code class="prettyprint lang-sql" style="font-size: 0.85em;">=&gt;</code></div>
</div>



<h3 class="wp-block-heading"><em><strong>Alternatywna składnia if i switch</strong></em></h3>



<p class="wp-block-paragraph">Można zastąpić nawias&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">{</code>&nbsp;znakiem&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">:</code>&nbsp;i zamiast zamykającego&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">}</code>&nbsp;użyć odpowiednio&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">endif;</code>&nbsp;lub&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">endswitch;</code></p>



<h4 class="wp-block-heading">Przykład dla if:</h4>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($a == 5):
    echo "a jest równe 5";
    echo "...";
elseif ($a == 6):
    echo "a jest równe 6";
    echo "!!!";
else:
    echo "a nie jest 5 ani 6";
endif;</code></pre>



<h4 class="wp-block-heading">Przykład dla switch:</h4>



<pre class="wp-block-preformatted prettyprint">switch ($plec):<br />    case "K":<br />    echo "Kobieta";<br />    break;<br />case "M":<br />    echo "Mężczyzna";<br />    break;<br />default:<br />    echo "Nierozpoznany wybór";<br />    break;<br />endswitch;</pre>



<p class="wp-block-paragraph"><strong>Ta forma zapisu jest bardzo rzadko spotykana</strong>&nbsp;i używana głównie w szablonach mieszających PHP z HTML.</p>



<h2 class="wp-block-heading">Operator warunkowy (ternary)</h2>



<p>Operator warunkowy to skrócona forma instrukcji if&#8230;else, która zwraca wartość:</p>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$wiek = 20;
$status = ($wiek &gt;= 18) ? "pełnoletni" : "niepełnoletni";
echo $status; // wypisze: pełnoletni</code></pre>



<p>Składnia:&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">(warunek) ? wartość_jeśli_prawda : wartość_jeśli_fałsz</code></p>



<h3>Zagnieżdżone operatory:</h3>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$ocena = 85;
$wynik = ($ocena &gt;= 90) ? "celujący" 
       : ($ocena &gt;= 75) ? "bardzo dobry"
       : ($ocena &gt;= 60) ? "dobry"
       : "dostateczny";</code></pre>



<h2 class="wp-block-heading">Null Coalescing Operator (PHP 7.0+)</h2>



<p>Operator&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">??</code>&nbsp;sprawdza, czy zmienna istnieje i nie jest null:</p>



<pre class="wp-block-code prettyprint"><code class="prettyprint lang-sql" style="font-size: 0.85em;">// Stary sposób:
$nazwa = isset($_GET&#91;'nazwa']) ? $_GET&#91;'nazwa'] : 'Gość';

// Nowy sposób (PHP 7.0+):
$nazwa = $_GET&#91;'nazwa'] ?? 'Gość';

// Łańcuchowe sprawdzanie (PHP 7.0+):
$config = $userConfig ?? $defaultConfig ?? 'brak';</code></pre>



<h2 class="wp-block-heading">Spaceship Operator (PHP 7.0+)</h2>



<p>Operator&nbsp;<code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;=&gt;</code>&nbsp;służy do porównywania wartości:</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$a = 10;
$b = 5;

echo $a &lt;=&gt; $b; // zwraca 1 (gdy a &gt; b)
echo $b &lt;=&gt; $a; // zwraca -1 (gdy b &lt; a)
echo $a &lt;=&gt; $a; // zwraca 0 (gdy a == b)

// Przydatny przy sortowaniu:
usort($array, fn($a, $b) =&gt; $a &lt;=&gt; $b);</code></pre>



<h2 class="wp-block-heading">Zadania do wykonania:</h2>



<p class="wp-block-paragraph"><strong>Zadanie 1:</strong> Napisz program sprawdzający czy liczba jest parzysta.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">$a = 5;	<br />if ($a == 0) {<br />    echo 'podałeś 0';<br />} elseif ($a % 2 == 0) {<br />    echo 'parzysta';<br />} else {<br />    echo 'nieparzysta'; <br />}</pre>



<p class="wp-block-paragraph"><strong>Zadanie 2:</strong> Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 2: Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.&lt;/u&gt;&lt;br&gt;&lt;br&gt;";<br />$a = 10;<br />$b = 5;<br /><br />echo "Porównujemy liczby $a i $b&lt;br&gt;";<br />if ($a &gt; $b) {<br />    echo "większa jest liczba a = $a";<br />} elseif ($b &gt; $a) {<br />    echo "większa jest liczba b = $b"; <br />} else {<br />    echo "liczby są równe";<br />}<br /><br />//rozwiązanie z match<br />$wynik = match(true) {<br />    $a &gt; $b =&gt; "większa jest liczba a = $a",<br />    $b &gt; $a =&gt; "większa jest liczba b = $b",<br />    default =&gt; "liczby są równe"<br />};<br />echo $wynik;</pre>



<p class="wp-block-paragraph"><strong>Zadanie 3:</strong> Porównaj ze sobą 4 nie równe sobie liczby i wypisz największą.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 3: Porównaj ze sobą 4 nierówne sobie liczby i wypisz największą.&lt;/u&gt;&lt;br&gt;&lt;br&gt;";<br />$a = 10;<br />$b = 5;<br />$c = 18;<br />$d = 1;	<br />$max = $a;<br /><br />echo "Porównujemy liczby: $a, $b, $c, $d&lt;br&gt;";	<br /><br />if ($b &gt; $max) { $max = $b; }<br />if ($c &gt; $max) { $max = $c; }<br />if ($d &gt; $max) { $max = $d; } 	<br /><br />echo "największa z liczb to $max";</pre>



<p class="wp-block-paragraph"><strong>Zadanie 4:</strong> Porównaj ze sobą 3 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 4: Porównaj ze sobą 3 nierówne sobie liczby i wypisz je w kolejności od największej do najmniejszej.&lt;/u&gt;&lt;br&gt;&lt;br&gt;";<br />$a = 10;<br />$b = 5;<br />$c = 18;	<br /><br />echo "Porównujemy liczby: $a, $b, $c&lt;br&gt;";	<br /><br />// Szukamy najmniejszej<br />$min = $a;<br />if ($b &lt; $min) { $min = $b; }			<br />if ($c &lt; $min) { $min = $c; }	 <br /><br />// Szukamy największej<br />$max = $a;<br />if ($b &gt; $max) { $max = $b; }  <br />if ($c &gt; $max) { $max = $c; }  <br /><br />// Środkowa to ta, która nie jest ani min ani max<br />if ($a != $min &amp;&amp; $a != $max) { $mid = $a; }<br />if ($b != $min &amp;&amp; $b != $max) { $mid = $b; }<br />if ($c != $min &amp;&amp; $c != $max) { $mid = $c; }    	<br /><br />echo "Liczby posortowane: $max, $mid, $min";</pre>



<p class="wp-block-paragraph"><strong>Zadanie 5:</strong> Porównaj ze sobą 4 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 5: Porównaj ze sobą 4 nierówne sobie liczby i wypisz je w kolejności od największej do najmniejszej.&lt;/u&gt;&lt;br&gt;&lt;br&gt;";<br />$a = 10;	<br />$b = 5;	<br />$c = 18;	<br />$d = 1;	<br /><br />echo "Porównujemy liczby: $a, $b, $c, $d&lt;br&gt;";	<br /><br />// Szukamy najmniejszej<br />if ($a &lt; $b &amp;&amp; $a &lt; $c &amp;&amp; $a &lt; $d) { <br />    $l1 = $a;<br />} elseif ($b &lt; $a &amp;&amp; $b &lt; $c &amp;&amp; $b &lt; $d) { <br />    $l1 = $b;<br />} elseif ($c &lt; $a &amp;&amp; $c &lt; $b &amp;&amp; $c &lt; $d) { <br />    $l1 = $c;<br />} else { <br />    $l1 = $d;<br />}<br /><br />// Szukamy największej<br />$l4 = $a;<br />if ($b &gt; $l4) { $l4 = $b; }  <br />if ($c &gt; $l4) { $l4 = $c; }  <br />if ($d &gt; $l4) { $l4 = $d; }	 <br /><br />// Szukamy dwóch środkowych<br />$m2 = null;<br />if ($a != $l1 &amp;&amp; $a != $l4) {<br />    $m1 = $a;	<br />    $m2 = empty($m2) ? $a : $m2;<br />}<br />if ($b != $l1 &amp;&amp; $b != $l4) {<br />    $m1 = $b;	<br />    $m2 = empty($m2) ? $b : $m2;<br />}<br />if ($c != $l1 &amp;&amp; $c != $l4) {<br />    $m1 = $c;	<br />    $m2 = empty($m2) ? $c : $m2;<br />}<br />if ($d != $l1 &amp;&amp; $d != $l4) { <br />    $m1 = $d;<br />}<br /><br />$l2 = ($m1 &gt; $m2) ? $m2 : $m1;<br />$l3 = ($m1 &lt; $m2) ? $m2 : $m1;<br /><br />echo "Liczby posortowane: $l4, $l3, $l2, $l1";</pre>



<p class="wp-block-paragraph"><strong>Zadanie 6:</strong> Napisz program potrafiący rozwiązywać równanie kwadratowe: y = ax<sup>2</sup> + bx + c. Przypominamy, że ilość rozwiązań zależy od wartości tzw. współczynnika Δ (Δ = b<sup>2</sup> − 4ac).</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 6: Napisz skrypt, obliczający pierwiastki trójmianu kwadratowego ax&lt;sup&gt;2&lt;/sup&gt; + bx + c = 0.	Za obliczanie pierwiastka kwadratowego odpowiada funkcja sqrt(\$zmienna)&lt;/u&gt;&lt;/br&gt;&lt;/br&gt;";	<br />$a = 1; <br />$b = 2;<br />$c = 1;<br />$delta = $b * $b - 4 * $a * $c; //obliczamy wg wzoru<br />if ($delta &gt; 0)<br />{<br />	$x1 = (-$b - sqrt($delta)) / (2 * $a); //sqrt() pierwiastek kwadratowy<br />	$x2 = (-$b + sqrt($delta)) / (2 * $a);<br />	echo ' posiada dwa pierwiastki x1 = '.$x1.', x2 = '.$x2;<br />}<br />else if ($delta == 0)<br />{<br />	$x = -$b / 2 * $a;<br />	echo ' posiada jeden pierwiastek x = '.$x;<br />}<br />else echo ' nie posiada pierwiastków';<br /></pre>



<p class="wp-block-paragraph"><strong>Zadanie 7:</strong> Zrealizuj kalkulator, który dla zadanych liczb w zależności od wartości zmiennej $wybor wykonuje: mnożenie, dzielenie, odejmowanie, dodawanie. Użyj instrukcji &#8222;switch&#8221;.</p>



<h5 class="wp-block-heading">Rozwiązanie:</h5>



<pre class="wp-block-preformatted prettyprint">echo "&lt;u&gt;Zadanie 7: Kalkulator&lt;/u&gt;&lt;br&gt;&lt;br&gt;"; <br />$liczba1 = 4;<br />$liczba2 = 2;<br />$wybor = '/';<br /><br />switch ($wybor) {<br />    case "+":<br />        echo $liczba1 + $liczba2;<br />        break;<br />    case "-":<br />        echo $liczba1 - $liczba2;<br />        break;<br />    case "*":<br />        echo $liczba1 * $liczba2;<br />        break;<br />    case "/":<br />        if ($liczba2 != 0) {<br />            echo $liczba1 / $liczba2;<br />        } else {<br />            echo "Błąd: dzielenie przez zero!";<br />        }<br />        break;<br />    default:<br />        echo "Nieznana operacja";<br />        break;<br />}<br /><br />//rozwiązanie z match<br />$wynik = match($wybor) {<br />    "+" =&gt; $liczba1 + $liczba2,<br />    "-" =&gt; $liczba1 - $liczba2,<br />    "*" =&gt; $liczba1 * $liczba2,<br />    "/" =&gt; $liczba2 != 0 ? $liczba1 / $liczba2 : "Błąd: dzielenie przez zero!",<br />    default =&gt; "Nieznana operacja"<br />};<br />echo $wynik;</pre>



<p class="wp-block-paragraph"><strong>Zadanie 8:</strong> Napisz program, który dla danego punktu na płaszczyźnie sprawdzi, w której ćwiartce układu współrzędnych się on znajduje. Może jednak być tak, że punkt nie znajduje się w żadnej ćwiartce – leży na jednej z osi lub w środku układu współrzędnych. Wówczas program powinien to stwierdzić. Na wejściu znajdują się dwie liczby całkowite oddzielone spacją, x i y(−1 000 000 000≤x, y≤1 000 000 000), oznaczające współrzędne danego punktu. Jeżeli podany punkt nie leży na żadnej z osi, Twój program powinien wypisać: I, II, III lub IV, w przypadku gdy punkt należy do, odpowiednio, pierwszej, drugiej, trzeciej lub czwartej ćwiartki układu współrzędnych. Jeżeli punkt leży w środku układu współrzędnych, program powinien wypisać liczbę 0. W przeciwnym razie, program powinien wypisać OX (duże O i duże X), jeśli punkt leży na osi X, a OY – jeśli punkt leży na osi Y.<br />Przykład<br />Dla danych wejściowych:<br />5 7<br />poprawnym wynikiem jest:<br />I<br />a dla danych wejściowych:<br />0 -1000000000<br />poprawnym wynikiem jest:<br />OY<br />natomiast dla danych wejściowych:<br />0 0</p>



<p class="wp-block-paragraph"><strong>Zadanie 9:</strong> Twoim zadaniem jest stwierdzić, czy z trzech odcinków o podanych długościach można zbudować trójkąt o dodatnim polu. Pierwszy i jedyny wiersz wejścia zawiera trzy liczby naturalne a,b,c(1≤a, b, c≤1 000 000 000), oddzielone spacjami. Liczby te oznaczają długości trzech odcinków. Twój program powinien wypisać jedno słowo TAK lub NIE, w zależności od tego, czy z odcinków o długościach takich jak na wejściu można zbudować niezdegenerowany trójkąt, czyli trójkąt o dodatnim polu.<br />Przykład<br />Dla danych wejściowych:<br />8 7 5<br />poprawnym wynikiem jest:<br />TAK<br />a dla danych wejściowych:<br />1 10 2<br />poprawnym wynikiem jest:<br />NIE<br />oraz dla danych wejściowych:<br />4 4 8<br />poprawnym wynikiem jest:<br />NIE</p>



<div><strong>Zadanie 10:</strong> Napisz instrukcję switch wyświetlającą na podstawie zmiennej całkowitej &#8222;nr&#8221; nazwę miesiąca słownie.</div>



<div>
<div><strong>Zadanie 11:</strong> Napisz instrukcje która na podstawie zmiennej całkowitej ocena wyświetla jedna z informacji: brak promocji do następnej klasy, promocja do następnej klasy, promocja z oceną celującą.</div>
</div>



<div>
<div><strong>Zadanie 12:</strong> Napisz instrukcję switch, która dla przekazanej jako parametr całkowity oceny wyświetli ją słownie.</div>
</div>



<div>
<div><strong>Zadanie 13:</strong> Napisz instrukcję switch, która wczytuje kwotę w złotych, a następnie przelicza ją na taka walutę jaką wybierze użytkownik: funty, dolary, euro&#8230;.</div>
</div>



<div><strong>Zadanie 14:</strong> Napisz instrukcję switch, która przelicza metry na inne jednostki miary.</div>
<div> </div>
<div><strong style="font-size: revert; color: initial;">Zadanie 15:</strong><span style="font-size: revert; color: initial;"> Napisz skrypt, który sprawdzi, czy zmienna $x jest większa od liczby 20 (użyj instrukcji warunkowej if)</span></div>
<div>
<p><strong>Zadanie 16:</strong> Napisz skrypt, który sprawdzi, czy zmienna $z jest liczbą trzycyfrową (użyj instrukcji warunkowej if)</p>
<p><strong>Zadanie 17:</strong> Napisz skrypt, który w zależności od wartości zmiennej $age umieszcza odpowiedni napis na stronie:</p>
<p>• jeżeli $wiek mniejszy od 18, wyświetl: &#8222;Jeszcze nie możesz głosować&#8221;<br />• jeżeli $wiek większy lub równy 18, wyświetl: &#8222;Możesz tylko głosować&#8221;<br />• jeżeli $wiek większy lub równy 21, wyświetl: &#8222;Możesz głosować i kandydować do Sejmu&#8221;<br />• jeżeli $wiek większy lub równy 30, wyświetl: &#8222;Możesz głosować i kandydować do Sejmu i Senatu&#8221;<br />• jeżeli $wiek większy lub równy 35, wyświetl: &#8222;Możesz głosować, kandydować do Sejmu i Senatu oraz<br />na Prezydenta&#8221;<br />Zadanie zrealizuj za pomocą instrukcji warunkowej if oraz Switch</p>
<p><strong>Zadanie 18:</strong> Napisz skrypt, używając instrukcji switch, który umieszcza na stronie odpowiednią liczbę znaków + (plus) w zależności od wartości zmiennej $ile:</p>
<ul>
<li>jeżeli $ile równe 1: wyświetl: +</li>
<li>jeżeli $ile równe 2: wyświetl: ++</li>
<li>jeżeli $ile równe 3: wyświetl: +++</li>
<li>&#8230;</li>
<li>jeżeli $ile równe 9: wyświetl: +++++++++</li>
<li>jeżeli $ile mniejsze od 1 lub większe od 9: wyświetl: &#8222;Wartość poza zakresem&#8221;</li>
</ul>
<p><strong>Zadanie 19:</strong> Napisz skrypt, używając instrukcji switch, który umieszcza na stronie napis z numerem kwartału roku w od zmiennej $miesiac:</p>
<ul>
<li>jeżeli $miesiac równe 1,2, lub 3: wyświetl: &#8222;Kwartał I&#8221;</li>
<li>jeżeli $miesiac równe 4,5, lub 6: wyświetl: &#8222;Kwartał II&#8221;</li>
<li>jeżeli $miesiac równe 7,8, lub 9: wyświetl: &#8222;Kwartał III&#8221;</li>
<li>jeżeli $miesiac równe 10,11, lub 12: wyświetl: &#8222;Kwartał IV&#8221;</li>
<li>jeżeli $miesiac mniejsze od 1 lub większe od 12: wyświetl: &#8222;Błędny numer miesiąca&#8221;</li>
</ul>
</div>


<p>


<h1 id="TaskQuest" class="wp-block-heading">TaskQuest — Twój projekt na cały semestr</h1>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>KARTA PRACY</strong></summary>
<h1 class="wp-block-heading">Karta pracy</h1>



</details></p><p><strong>Projekt: TaskQuest</strong> — grywalizowana aplikacja do zarządzania zadaniami. Użytkownik loguje się, dodaje zadania, za ich wykonanie zdobywa punkty XP, awansuje na poziomy, zdobywa odznaki i widzi swoją pozycję w rankingu klasy. Każda lekcja rozbudowuje tę samą aplikację o nową funkcję.</p>



<h2 class="wp-block-heading">PHP — instrukcje warunkowe, wybór, operator warunkowy</h2>



<h3 class="wp-block-heading">Cel lekcji</h3>



<p class="wp-block-paragraph">Nauczyć aplikację podejmować decyzje na podstawie danych.</p>



<h3 class="wp-block-heading">Co dziś budujesz</h3>



<p class="wp-block-paragraph">Logikę awansu na poziom oraz tytuły zależne od poziomu.</p>



<h3 class="wp-block-heading">Ważna uwaga o progu poziomu</h3>



<p class="wp-block-paragraph">Skoro $xp cały czas rośnie i się nie resetuje, to próg potrzebny do <strong>kolejnego</strong> poziomu też musi rosnąć — inaczej po awansie na poziom 2 użytkownik z 100 XP awansowałby na poziom 3 już przy 101 XP, co byłoby za łatwe. Dlatego próg do następnego poziomu liczymy jako $poziom * XP_NA_POZIOM (poziom 1→2 potrzeba 100 XP, poziom 2→3 potrzeba 200 XP, itd.).</p>



<p class="wp-block-paragraph"><strong>Ograniczenie tej wersji:</strong> pojedynczy if sprawdza próg i awansuje tylko o <strong>jeden</strong> poziom na raz. Jeśli ktoś zdobędzie od razu bardzo dużo XP i „przeskoczy” dwa progi naraz, ten kod tego nie złapie w jednym uruchomieniu. To celowe uproszczenie — w lekcji 5 (pętle) zamienimy ten if na while, żeby awansować użytkownika o tyle poziomów, ile faktycznie mu się należy, za jednym razem.</p>



<h3 class="wp-block-heading">Kroki do wykonania</h3>



<ol class="wp-block-list">
<li>Oblicz próg kolejnego poziomu: $progNastepnegoPoziomu = $poziom * XP_NA_POZIOM;.</li>



<li>Napisz warunek if: jeśli $xp &gt;= $progNastepnegoPoziomu, zwiększ $poziom o 1 i wyświetl komunikat „Awansowałeś!”.</li>



<li>Za pomocą switch przypisz użytkownikowi tytuł zależny od poziomu, np. 1 = Nowicjusz, 2 = Wojownik, 3 i więcej = Mistrz. Wyświetl tytuł użytkownika &#8211; od Ciebie zależy gdzie go umieścisz.</li>



<li>Zdefiniuj zmienną $wykonalDzisiajZadanie — na razie ustaw ją ręcznie na true albo false, tylko po to, żeby przetestować działanie operatora warunkowego (prawdziwe sprawdzanie, czy użytkownik był dziś aktywny, zrobimy dopiero w lekcji 7, gdy poznamy obsługę dat).</li>



<li>Za pomocą operatora warunkowego (?: lub ??) wyświetl na podstawie $wykonalDzisiajZadanie krótką etykietę statusu: „Aktywny” albo „Nieaktywny”.</li>



<li><strong>Zaktualizuj</strong> <strong>$procentPostepu</strong> <strong>z lekcji 3</strong> — dotychczasowy wzór działał tylko dla poziomu 1. Teraz, gdy próg jest dynamiczny, policz procent postępu <em>w obrębie aktualnego poziomu</em>: $procentPostepu = (($xp &#8211; ($poziom &#8211; 1) * XP_NA_POZIOM) / XP_NA_POZIOM) * 100;. Od teraz w całym projekcie używamy tylko tej, uogólnionej wersji.</li>



<li>Przetestuj różne wartości $xp (w tym taką, która przeskakuje próg) oraz obie wartości $wykonalDzisiajZadanie, żeby zobaczyć różne komunikaty.</li>
</ol>



<h3 class="wp-block-heading">Podpowiedzi / fragmenty kodu</h3>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;"></code><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;?php</code>$progNastepnegoPoziomu = $poziom * XP_NA_POZIOM;
if ($xp &gt;= $progNastepnegoPoziomu) {
    $poziom++;
    echo "Awansowałeś na poziom $poziom!";
}
switch ($poziom) {
    case 1:
        $tytul = "Nowicjusz";
        break;
    case 2:
        $tytul = "Wojownik";
        break;
    default:
        $tytul = "Mistrz";
}
// Tymczasowo ustawiane ręcznie - w lekcji 7 zastąpimy to sprawdzeniem daty
$wykonalDzisiajZadanie = true;
$status = $wykonalDzisiajZadanie ? "Aktywny" : "Nieaktywny";
echo "Status: $status";
// Uogólniona wersja procentu postępu - zastępuje wzór z lekcji 3
$procentPostepu = (($xp - ($poziom - 1) * XP_NA_POZIOM) / XP_NA_POZIOM) * 100;

<code class="prettyprint lang-sql" style="font-size: 0.85em;">?&gt;</code></pre>



<h3 class="wp-block-heading">Do samodzielnego sprawdzenia</h3>



<ul class="wp-block-list">
<li>☐ Próg kolejnego poziomu jest liczony wzorem ($poziom * XP_NA_POZIOM), a nie sztywną liczbą.</li>



<li>☐ Zmiana wartości $xp faktycznie zmienia poziom i tytuł na stronie.</li>



<li>☐ Rozumiem i potrafię wyjaśnić, dlaczego pojedynczy if nie obsłuży awansu o dwa poziomy naraz.</li>



<li>☐ switch obsługuje co najmniej 3 przypadki plus default.</li>



<li>☐ Etykieta statusu poprawnie zmienia się w zależności od $wykonalDzisiajZadanie.</li>
</ul>



<h3 class="wp-block-heading">Pytania kontrolne</h3>



<ol class="wp-block-list">
<li>Dlaczego próg kolejnego poziomu musi rosnąć wraz z poziomem, a nie może być stałą liczbą?</li>



<li>Co się stanie w powyższym kodzie, jeśli użytkownik z poziomu 1 (próg 100) zdobędzie od razu 250 XP? Ile poziomów awansuje po jednym uruchomieniu skryptu i dlaczego?</li>



<li>Kiedy lepiej użyć switch zamiast wielu if/elseif?</li>



<li>Co robi operator ?? i czym różni się od ?:?</li>
</ol>




<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">PODSUMOWANIE LEKCJI</h1>



<h1 id="dodatek" class="wp-block-heading">W skrócie</h1>



<ul class="wp-block-list">
<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> sprawdza warunki <strong>po kolei, od góry</strong>. Wykonuje się <strong>tylko pierwszy</strong> spełniony blok – kolejne <code class="prettyprint lang-sql" style="font-size: 0.85em;">elseif</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">else</code> są pomijane. Dlatego przy przedziałach (punkty, wiek, XP) kolejność warunków ma znaczenie.</li>



<li>W warunku porównujemy przez <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> lub <code class="prettyprint lang-sql" style="font-size: 0.85em;">===</code>. Pojedyncze <code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code> to <strong>przypisanie</strong> – kod się uruchomi, ale zrobi coś innego, niż chcesz.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> porównuje luźno (<code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>) i bez <code class="prettyprint lang-sql" style="font-size: 0.85em;">break</code> „przelatuje” do kolejnych <code class="prettyprint lang-sql" style="font-size: 0.85em;">case</code> (fall-through). <code class="prettyprint lang-sql" style="font-size: 0.85em;">default</code> wykonuje się, gdy nic nie pasuje.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> porównuje ściśle (<code class="prettyprint lang-sql" style="font-size: 0.85em;">===</code>) – <code class="prettyprint lang-sql" style="font-size: 0.85em;">"5"</code> (tekst) to nie to samo co <code class="prettyprint lang-sql" style="font-size: 0.85em;">5</code> (liczba). Nie potrzebuje <code class="prettyprint lang-sql" style="font-size: 0.85em;">break</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> <strong>zwraca wartość</strong> – zapisujesz ją do zmiennej albo od razu wyświetlasz. Po <code class="prettyprint lang-sql" style="font-size: 0.85em;">=&gt;</code> może być tylko <strong>jedno wyrażenie</strong>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> bez <code class="prettyprint lang-sql" style="font-size: 0.85em;">default</code>, który nie znajdzie dopasowania, kończy skrypt błędem <code class="prettyprint lang-sql" style="font-size: 0.85em;">UnhandledMatchError</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match(true)</code> pozwala sprawdzać przedziały (<code class="prettyprint lang-sql" style="font-size: 0.85em;">$wiek &lt; 18 =&gt; ...</code>) – wygrywa pierwszy prawdziwy warunek.</li>



<li>Operator warunkowy <code class="prettyprint lang-sql" style="font-size: 0.85em;">warunek ? A : B</code> to skrócone <code class="prettyprint lang-sql" style="font-size: 0.85em;">if…else</code>, które <strong>zwraca wartość</strong>. Stosuj go do prostych decyzji, a nie do rozbudowanej logiki.</li>



<li>Zagnieżdżony operator warunkowy w PHP 8 <strong>musi mieć nawiasy</strong> wokół wewnętrznego wyrażenia. Zapis <code class="prettyprint lang-sql" style="font-size: 0.85em;">a ? b : c ? d : e</code> bez nawiasów kończy się błędem krytycznym. Przy wielu przedziałach czytelniejsze jest <code class="prettyprint lang-sql" style="font-size: 0.85em;">if/elseif</code> albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">match(true)</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">??</code> zwraca lewą stronę, jeśli zmienna <strong>istnieje i nie jest <code class="prettyprint lang-sql" style="font-size: 0.85em;">null</code></strong>, w przeciwnym razie prawą. Nie reaguje na <code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">""</code> czy <code class="prettyprint lang-sql" style="font-size: 0.85em;">false</code> – dla nich zwraca lewą stronę.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">&lt;=&gt;</code> zwraca <code class="prettyprint lang-sql" style="font-size: 0.85em;">-1</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code> lub <code class="prettyprint lang-sql" style="font-size: 0.85em;">1</code> – nie <code class="prettyprint lang-sql" style="font-size: 0.85em;">true</code>/<code class="prettyprint lang-sql" style="font-size: 0.85em;">false</code>.</li>



<li>Składnia alternatywna (<code class="prettyprint lang-sql" style="font-size: 0.85em;">:</code> + <code class="prettyprint lang-sql" style="font-size: 0.85em;">endif;</code> / <code class="prettyprint lang-sql" style="font-size: 0.85em;">endswitch;</code>) działa tak samo jak klamry – różni się tylko zapisem.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Co trzeba umieć na INF.03?</h2>



<ul class="wp-block-list">
<li>napisać instrukcję <code class="prettyprint lang-sql" style="font-size: 0.85em;">if / elseif / else</code> dla podanego opisu słownego („jeżeli…, w przeciwnym razie…”),</li>



<li>ustawić warunki w poprawnej kolejności przy sprawdzaniu przedziałów,</li>



<li>połączyć kilka warunków operatorami <code class="prettyprint lang-sql" style="font-size: 0.85em;">&amp;&amp;</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">||</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">!</code>,</li>



<li>użyć wartości domyślnej, gdy dane nie zostały przesłane: <code class="prettyprint lang-sql" style="font-size: 0.85em;">$_GET['klucz'] ?? wartość</code> lub zapis z <code class="prettyprint lang-sql" style="font-size: 0.85em;">isset()</code> i operatorem warunkowym (oba zapisy są pokazane w lekcji),</li>



<li>rozpoznać błąd <code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code> zamiast <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> w warunku,</li>



<li>czytać cudzy kod z <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> i przewidzieć jego wynik.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Minimum, które powinno wejść w pamięć</h2>



<p class="wp-block-paragraph">Jeżeli masz zapamiętać tylko kilka rzeczy z tej lekcji, zapamiętaj te:</p>



<ol class="wp-block-list">
<li>W warunku <code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code> albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">===</code>, <strong>nigdy</strong> <code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">if/elseif</code> – wykonuje się tylko pierwszy spełniony warunek. Przedziały sprawdzaj od najbardziej szczegółowego (np. od największego progu).</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> – każdy <code class="prettyprint lang-sql" style="font-size: 0.85em;">case</code> kończ <code class="prettyprint lang-sql" style="font-size: 0.85em;">break;</code>, na końcu <code class="prettyprint lang-sql" style="font-size: 0.85em;">default</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> – ścisłe porównanie, zwraca wartość, kończy się średnikiem <code class="prettyprint lang-sql" style="font-size: 0.85em;">};</code>, dodawaj <code class="prettyprint lang-sql" style="font-size: 0.85em;">default</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">$x = warunek ? "tak" : "nie";</code> – jedna decyzja, jedna linia.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">$id = $_GET['id'] ?? 6;</code> – wartość domyślna, gdy brak danych.</li>



<li>Zagnieżdżony operator warunkowy tylko z nawiasami – albo zamień go na <code class="prettyprint lang-sql" style="font-size: 0.85em;">if/elseif</code>.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Ściągawka – najważniejsze polecenia i składnia</h2>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">// if / elseif / else
if ($xp &gt;= 200) {
    // ...
} elseif ($xp &gt;= 100) {
    // ...
} else {
    // ...
}

// switch – luźne porównanie (==), potrzebny break
switch ($poziom) {
    case 1:
        $tytul = "Nowicjusz";
        break;
    case 2:
        $tytul = "Wojownik";
        break;
    default:
        $tytul = "Mistrz";
}

// match – ścisłe porównanie (===), zwraca wartość
$tytul = match ($poziom) {
    1 =&gt; "Nowicjusz",
    2 =&gt; "Wojownik",
    3, 4, 5 =&gt; "Mistrz",      // kilka wartości po przecinku
    default =&gt; "Legenda",
};

// match(true) – przedziały
$kategoria = match (true) {
    $wiek &lt; 18 =&gt; "niepełnoletni",
    default =&gt; "pełnoletni",
};

// operator warunkowy
$status = $aktywny ? "Aktywny" : "Nieaktywny";

// zagnieżdżony – tylko z nawiasami (PHP 8)
$opis = $xp &gt;= 200 ? "dużo" : ($xp &gt;= 100 ? "średnio" : "mało");

// ?? – wartość domyślna, gdy brak / null
$id = $_GET&#91;'id'] ?? 6;

// &lt;=&gt; – zwraca -1, 0 lub 1
echo 3 &lt;=&gt; 7;   // -1

// składnia alternatywna
if ($a == 5):
    echo "pięć";
else:
    echo "nie pięć";
endif;</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Konstrukcja</th><th>Porównanie</th><th>Zwraca wartość</th><th><code class="prettyprint lang-sql" style="font-size: 0.85em;">break</code></th><th>Kiedy</th></tr></thead><tbody><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">if/elseif/else</code></td><td>dowolny warunek</td><td>nie</td><td>–</td><td>przedziały, złożone warunki, kilka instrukcji w bloku</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code></td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code></td><td>nie</td><td>tak</td><td>wiele konkretnych wartości, kilka instrukcji w <code class="prettyprint lang-sql" style="font-size: 0.85em;">case</code></td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code></td><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">===</code></td><td>tak</td><td>nie</td><td>przypisanie wartości zależnej od konkretnej wartości</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">? :</code></td><td>dowolny warunek</td><td>tak</td><td>–</td><td>prosta decyzja „albo–albo”</td></tr><tr><td><code class="prettyprint lang-sql" style="font-size: 0.85em;">??</code></td><td>czy istnieje i nie <code class="prettyprint lang-sql" style="font-size: 0.85em;">null</code></td><td>tak</td><td>–</td><td>wartość domyślna</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Quiz – sprawdź się</h2>



<p class="wp-block-paragraph"><strong>1.</strong> Uczeń ma 95 punktów. Co wyświetli kod? Jak go poprawić, żeby wyświetlił „bardzo dobry”?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$punkty = 95;
if ($punkty &gt;= 50) echo "dostateczny";
elseif ($punkty &gt;= 75) echo "dobry";
elseif ($punkty &gt;= 90) echo "bardzo dobry";</code></pre>



<p class="wp-block-paragraph"><strong>2.</strong> Dlaczego ten kod zawsze wyświetla „Admin”, niezależnie od wartości <code class="prettyprint lang-sql" style="font-size: 0.85em;">$rola</code>? Jaka będzie wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">$rola</code> po wykonaniu kodu?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$rola = "gość";
if ($rola = "admin") {
    echo "Admin";
}</code></pre>



<p class="wp-block-paragraph"><strong>3.</strong> Co zostanie wyświetlone? Co należy dopisać, aby wyświetlało się tylko „Wojownik”?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$poziom = 2;
switch ($poziom) {
    case 1: echo "Nowicjusz ";
    case 2: echo "Wojownik ";
    case 3: echo "Mistrz ";
    default: echo "Nieznany";
}</code></pre>



<p class="wp-block-paragraph"><strong>4.</strong> Co wyświetli <code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code>, a co wyświetliłby <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> z tym samym <code class="prettyprint lang-sql" style="font-size: 0.85em;">case 5</code>? Z czego wynika różnica?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$ocena = "5";
echo match ($ocena) {
    5 =&gt; "bardzo dobry",
    default =&gt; "inna",
};</code></pre>



<p class="wp-block-paragraph"><strong>5.</strong> Co się stanie po uruchomieniu tego kodu? Jak to naprawić?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$dzien = 8;
$nazwa = match ($dzien) {
    1 =&gt; "poniedziałek",
    2 =&gt; "wtorek",
    // ... pozostałe dni ...
    7 =&gt; "niedziela",
};</code></pre>



<p class="wp-block-paragraph"><strong>6.</strong> Uzupełnij lukę, aby dla soboty i niedzieli wynikiem było „weekend”.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$typ = match ($dzien) {
    __________ =&gt; "weekend",
    default =&gt; "dzień roboczy",
};</code></pre>



<p class="wp-block-paragraph"><strong>7.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$temp = 18;
echo match (true) {
    $temp &lt; 0 =&gt; "mróz",
    $temp &lt; 15 =&gt; "zimno",
    $temp &lt; 25 =&gt; "ciepło",
    default =&gt; "upał",
};</code></pre>



<p class="wp-block-paragraph"><strong>8.</strong> Zapisz ten kod w jednej linii za pomocą operatora warunkowego.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($xp &gt;= 100) {
    $info = "awans";
} else {
    $info = "brak awansu";
}</code></pre>



<p class="wp-block-paragraph"><strong>9.</strong> Co zostanie wyświetlone?</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$imie = null;
echo $imie ?? "Gość";
echo "&lt;br&gt;";
$wiek = 0;
echo $wiek ?? 18;</code></pre>



<p class="wp-block-paragraph"><strong>10.</strong> Napisz jedną linię kodu, która zapisze do zmiennej <code class="prettyprint lang-sql" style="font-size: 0.85em;">$idKontynentu</code> wartość przesłaną metodą GET w parametrze <code class="prettyprint lang-sql" style="font-size: 0.85em;">kontynent</code>, a jeżeli parametr nie został przesłany – wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">6</code>. Podaj dwa sposoby.</p>



<p class="wp-block-paragraph"><strong>11.</strong> Ten kod w PHP 8 kończy się błędem krytycznym. Dlaczego? Popraw go.</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">$opis = $xp &gt;= 200 ? "dużo" : $xp &gt;= 100 ? "średnio" : "mało";</code></pre>



<p class="wp-block-paragraph"><strong>12.</strong> Która wersja jest poprawna?</p>



<p class="wp-block-paragraph">a)</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($a == 5):
    echo "pięć";
end if;</code></pre>



<p class="wp-block-paragraph">b)</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($a == 5):
    echo "pięć";
endif;</code></pre>



<p class="wp-block-paragraph">c)</p>



<pre class="wp-block-code prettyprint lang-sql has-small-font-size" style="font-size: 0.85em;"><code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($a == 5):
    echo "pięć";
}</code></pre>



<p class="wp-block-paragraph"><strong>13.</strong> Co wyświetli <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo 3 &lt;=&gt; 7;</code>?</p>



<p class="wp-block-paragraph"><strong>14.</strong> Kiedy lepiej użyć <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> zamiast <code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code>? Odpowiedz jednym zdaniem.</p>



<p class="wp-block-paragraph"><strong>15. (TaskQuest)</strong> Użytkownik ma <code class="prettyprint lang-sql" style="font-size: 0.85em;">$poziom = 1</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">XP_NA_POZIOM = 100</code> i zdobył od razu <code class="prettyprint lang-sql" style="font-size: 0.85em;">$xp = 250</code>. Uruchamiasz kod z karty pracy (próg, <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code>, nowy wzór na <code class="prettyprint lang-sql" style="font-size: 0.85em;">$procentPostepu</code>). Jakie wartości będą miały <code class="prettyprint lang-sql" style="font-size: 0.85em;">$poziom</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">$tytul</code> i <code class="prettyprint lang-sql" style="font-size: 0.85em;">$procentPostepu</code>? Co ten wynik mówi o ograniczeniu pojedynczego <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code>?</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><strong>Odpowiedzi</strong></summary>
<ol class="wp-block-list">
<li>Wyświetli „dostateczny”, bo pierwszy warunek (<code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 50</code>) jest już spełniony i reszta jest pomijana. Poprawka: sprawdzać od największego progu – <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 90</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 75</code>, potem <code class="prettyprint lang-sql" style="font-size: 0.85em;">&gt;= 50</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">=</code> to przypisanie, nie porównanie. Do <code class="prettyprint lang-sql" style="font-size: 0.85em;">$rola</code> trafia <code class="prettyprint lang-sql" style="font-size: 0.85em;">"admin"</code>, a niepusty tekst w warunku jest traktowany jako prawda. Po wykonaniu <code class="prettyprint lang-sql" style="font-size: 0.85em;">$rola</code> ma wartość <code class="prettyprint lang-sql" style="font-size: 0.85em;">"admin"</code>. Poprawnie: <code class="prettyprint lang-sql" style="font-size: 0.85em;">if ($rola == "admin")</code>.</li>



<li>„Wojownik Mistrz Nieznany” – brak <code class="prettyprint lang-sql" style="font-size: 0.85em;">break</code>, więc po dopasowaniu <code class="prettyprint lang-sql" style="font-size: 0.85em;">case 2</code> wykonują się wszystkie kolejne bloki. Należy dopisać <code class="prettyprint lang-sql" style="font-size: 0.85em;">break;</code> po każdym <code class="prettyprint lang-sql" style="font-size: 0.85em;">echo</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> wyświetli „inna”, bo <code class="prettyprint lang-sql" style="font-size: 0.85em;">"5"</code> (string) <code class="prettyprint lang-sql" style="font-size: 0.85em;">!==</code> <code class="prettyprint lang-sql" style="font-size: 0.85em;">5</code> (int). <code class="prettyprint lang-sql" style="font-size: 0.85em;">switch</code> wyświetliłby „bardzo dobry”, bo porównuje luźno (<code class="prettyprint lang-sql" style="font-size: 0.85em;">==</code>).</li>



<li>Błąd krytyczny <code class="prettyprint lang-sql" style="font-size: 0.85em;">UnhandledMatchError</code> – żadna gałąź nie pasuje do 8, a nie ma <code class="prettyprint lang-sql" style="font-size: 0.85em;">default</code>. Naprawa: dodać np. <code class="prettyprint lang-sql" style="font-size: 0.85em;">default =&gt; "błędny numer dnia",</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">"sobota", "niedziela"</code></li>



<li>„ciepło” – pierwszy prawdziwy warunek to <code class="prettyprint lang-sql" style="font-size: 0.85em;">$temp &lt; 25</code>.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">$info = ($xp &gt;= 100) ? "awans" : "brak awansu";</code></li>



<li>„Gość” oraz <code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code>. <code class="prettyprint lang-sql" style="font-size: 0.85em;">??</code> reaguje tylko na <code class="prettyprint lang-sql" style="font-size: 0.85em;">null</code> lub nieistniejącą zmienną – <code class="prettyprint lang-sql" style="font-size: 0.85em;">0</code> to poprawna wartość, więc zostaje wyświetlona.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">$idKontynentu = $_GET['kontynent'] ?? 6;</code><br />albo <code class="prettyprint lang-sql" style="font-size: 0.85em;">$idKontynentu = isset($_GET['kontynent']) ? $_GET['kontynent'] : 6;</code></li>



<li>PHP 8 nie pozwala zagnieżdżać operatora warunkowego bez nawiasów, bo kolejność wykonania byłaby niejednoznaczna. Poprawnie:<br /><code class="prettyprint lang-sql" style="font-size: 0.85em;">$opis = $xp &gt;= 200 ? "dużo" : ($xp &gt;= 100 ? "średnio" : "mało");</code></li>



<li><strong>b</strong> – składnia alternatywna kończy się <code class="prettyprint lang-sql" style="font-size: 0.85em;">endif;</code> (jedno słowo, ze średnikiem).</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">-1</code> (lewa wartość jest mniejsza).</li>



<li>Gdy w danym przypadku trzeba wykonać kilka instrukcji (złożoną logikę), bo po <code class="prettyprint lang-sql" style="font-size: 0.85em;">=&gt;</code> w <code class="prettyprint lang-sql" style="font-size: 0.85em;">match</code> może być tylko jedno wyrażenie.</li>



<li><code class="prettyprint lang-sql" style="font-size: 0.85em;">$poziom = 2</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">$tytul = "Wojownik"</code>, <code class="prettyprint lang-sql" style="font-size: 0.85em;">$procentPostepu = 150</code>. Pojedynczy <code class="prettyprint lang-sql" style="font-size: 0.85em;">if</code> awansuje tylko o jeden poziom, chociaż 250 XP wystarcza na poziom 3 (próg 200). Procent większy niż 100 pokazuje, że użytkownik „utknął” poniżej należnego poziomu – naprawimy to pętlą <code class="prettyprint lang-sql" style="font-size: 0.85em;">while</code> w lekcji 5.</li>
</ol>
</details>
<p>Artykuł <a href="https://kamakaczmarek.net/php-instrukcje-sterujace-instrukcje-warunkowe-wyboru-oraz-operator-warunkowy/">4. PHP &#8211; instrukcje sterujące &#8211; instrukcje warunkowe, wyboru oraz operator warunkowy</a> pochodzi z serwisu <a href="https://kamakaczmarek.net">Kama Kaczmarek</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
