KWALIFIKACJA INF3 - STYCZEŃ 2024

PYTANIE NR 25.
W języku PHP należy zapisać warunek, który będzie spełniony, gdy zmienna
$a 
będzie dowolną liczbą całkowitą mniejszą od -10 lub gdy zmienna
$b 
będzie dowolną liczbą z przedziału (25, 75). Wyrażenie logiczne użyte w tym warunku ma postać
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Warunek ma być spełniony, gdy zachodzi co najmniej jeden z dwóch przypadków:
1) $a jest mniejsze od -10, lub 2) $b leży w przedziale otwartym (25, 75), czyli jednocześnie $b > 25 i $b < 75. Dlatego poprawny zapis łączy te części operatorem or, a zakres dla $b operatorem and.

Pełne wyjaśnienie:

Treść zadania opisuje dwa niezależne scenariusze, z których wystarczy spełnienie jednego, aby cały warunek był prawdziwy:

  • Scenariusz 1: zmienna $a jest dowolną liczbą całkowitą mniejszą od -10. W zapisie logicznym oznacza to po prostu $a < -10. Informacja "całkowita" nie zmienia samego warunku nierówności (nie proszono o sprawdzanie typu), wskazuje jedynie, jak rozumieć dane.
  • Scenariusz 2: zmienna $b jest dowolną liczbą z przedziału (25, 75). Nawiasy okrągłe oznaczają przedział otwarty, czyli bez wartości brzegowych. Aby $b należało do takiego przedziału, muszą być spełnione jednocześnie dwa porównania: $b > 25 oraz $b < 75. To jest klasyczny przypadek użycia koniunkcji (and).

Cały warunek jest więc alternatywą tych dwóch części:

($a < -10) or (($b > 25) and ($b < 75))

Dlaczego pozostałe propozycje są błędne?

  • Zapis z "(($b > 25) or ($b < 75))" jest logicznie zbyt szeroki: taka alternatywa będzie prawdziwa dla niemal każdej liczby (np. 0 spełnia $b < 75, a 100 spełnia $b > 25). Nie wymusza to przynależności do przedziału.
  • Zapis "($a < -10) and (...)" zmienia sens zadania: wymaga jednoczesnego spełnienia warunku dla $a i warunku dla $b, a w treści jest wyraźnie "lub", czyli wystarczy jeden z nich.
  • Zapis "($a < -10) and (($b > 25) and ($b < 75))" dodatkowo zaostrza wymagania jeszcze bardziej, przez co odrzuca sytuacje, w których poprawnie powinien zadziałać sam warunek na $a.

Wskazówka egzaminacyjna: przedział otwarty zawsze tłumacz na dwie nierówności połączone and, a "lub" między scenariuszami realizuj przez or (lub równoważnie ||) z wyraźnymi nawiasami dla czytelności.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Przedział (25, 75) jest otwarty, czyli nie zawiera wartości brzegowych. W praktyce zapisujesz go jako dwa warunki spełnione jednocześnie: $b > 25 oraz $b < 75, połączone operatorem and (lub &&).
Najbezpieczniej zapisać to jako koniunkcję: ($b > 25) && ($b < 75). To wymusza, że $b spełnia oba ograniczenia naraz. Jeśli ma to być przedział domknięty, używa się odpowiednio >= i <=.
Ponieważ nawiasy okrągłe oznaczają, że wartości 25 i 75 są wykluczone. Zapis z >= lub <= włączyłby te granice, co odpowiadałoby raczej przedziałowi [25, 75]. Na egzaminie zwracaj uwagę na typ nawiasów w zapisie przedziału.
Najczęstszy błąd to użycie alternatywy: ($b > 25) || ($b < 75). Taki warunek jest prawdziwy dla prawie każdej liczby, więc nie opisuje "bycia w środku" przedziału. Poprawnie muszą być spełnione oba porównania jednocześnie.
W praktyce często używa się || i &&, bo mają "typowe" pierwszeństwo i są czytelne w warunkach. Operatory or i and też działają, ale mają inne pierwszeństwo, więc warto stosować nawiasy, aby jednoznacznie wymusić kolejność łączenia podwarunków.
Bo "należenie do przedziału" oznacza jednoczesne spełnienie dolnego i górnego ograniczenia. Samo $b > 25 dopuszcza też wartości powyżej 75, a samo $b < 75 dopuszcza wartości poniżej 25. Dopiero połączenie ich operatorem and zawęża zakres.
To alternatywa: warunek jest spełniony, gdy spełniony jest którykolwiek z podwarunków. W kodzie oznacza to połączenie dwóch części operatorem or (lub ||): pierwsza część dotyczy $a, a druga dotyczy przynależności $b do przedziału.
Nawiasy dodawaj zawsze, gdy łączysz kilka operatorów i chcesz uniknąć błędu pierwszeństwa oraz poprawić czytelność. Dla egzaminu to bezpieczna strategia: grupuj warunek przedziału, np. (($b > 25) && ($b < 75)), i dopiero potem łącz go z resztą.
W samym wyrażeniu logicznym zwykle nie, jeśli zadanie wymaga tylko sprawdzenia progu: wystarcza $a < -10. Sprawdzanie, czy zmienna jest całkowita (np. funkcjami typu) byłoby dodatkowym wymaganiem, którego tu nie opisano. Kluczowe jest poprawne użycie nierówności.
Podstaw dwie wartości testowe: jedną w środku (np. 50) i jedną poza (np. 0 albo 100). Dla poprawnego warunku "w (25,75)" wartość ze środka powinna dać true, a spoza false. Jeśli poza przedziałem nadal wychodzi true, to znaczy, że użyto błędnie "or".
info

To pytanie poprawnie rozwiązuje 48% zdających egzamin. trudne

Według specjalistów z branży: "Warunek ma być spełniony, gdy zachodzi co najmniej jeden z dwóch przypadków:1) $a jest mniejsze od -10, lub 2) $b leży w przedziale otwartym (25, 75), czyli jednocześnie $b &gt; 25 i $b &lt; 75."

Źródła:

  • PHP Manual: Logical Operators (and, or, &&, ||) — https://www.php.net/manual/en/language.operators.logical.php - accessed 2026-02-28
  • PHP Manual: Comparison Operators (&lt;, &gt;, &lt;=, &gt;=) — https://www.php.net/manual/en/language.operators.comparison.php - accessed 2026-02-28
  • PHP Manual: Operator Precedence — https://www.php.net/manual/en/language.operators.precedence.php - accessed 2026-02-28

Materiały:

  • Dokumentacja PHP: operatory porównania i logiczne
  • Ćwiczenia z logiki zdań (AND/OR, przedziały, prawa De Morgana)
  • Zadania praktyczne: walidacja zakresów w formularzach PHP

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego