KWALIFIKACJA ELM5 - TEST WIEDZY NR 3

PYTANIE NR 3.
Rozważ następujący fragment kodu:
if (A && B) {
    C = 1;
} else {
    C = 0;
}
Jeśli A = 0 i B = 1, jaka będzie wartość C?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wyrażenie (A && B) jest prawdziwe tylko wtedy, gdy oba warunki są równe 1. Dla A=0 i B=1 koniunkcja ma wartość 0 (fałsz), więc wykona się gałąź else, która przypisuje C = 0.

Pełne wyjaśnienie:

W pokazanym fragmencie kodu zmienna C przyjmuje wartość zależną od wyniku warunku w instrukcji if. Kluczowe jest zrozumienie operatora &&, czyli logicznego AND (koniunkcji).

1) Jak działa AND (&&)?
AND zwraca prawdę tylko wtedy, gdy obie strony są prawdziwe. Przy zapisie 0/1 przyjmujemy typową interpretację: 0 = fałsz, 1 = prawda. Tabela prawdy dla AND w tym ujęciu wygląda tak:

  • 0 AND 0 = 0
  • 0 AND 1 = 0
  • 1 AND 0 = 0
  • 1 AND 1 = 1

2) Podstawienie danych z zadania
Mamy A = 0 oraz B = 1, więc:

(A && B) = (0 && 1) = 0

Warunek w if jest więc niespełniony (fałszywy).

3) Która gałąź się wykona?
Gdy warunek jest fałszywy, program przechodzi do bloku else i wykonuje znajdujące się tam przypisanie:

C = 0;

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

  • "1" byłoby poprawne tylko wtedy, gdyby warunek był prawdziwy, czyli gdy A=1 i B=1. Tu A=0, więc AND nie może dać 1.
  • "Nie można określić" jest błędne, bo dla podanych jednoznacznych wartości A i B wynik AND jest deterministyczny, a kod nie zawiera elementów losowych ani danych wejściowych zmiennych w czasie.
  • "Kod jest niepoprawny" nie pasuje, ponieważ składnia if/else z przypisaniem C jest poprawna w wielu językach z rodziny C (np. C, C++, Java, JavaScript). Sens logiczny też jest spójny: C sygnalizuje, czy oba warunki są spełnione.

Wskazówka egzaminacyjna: gdy widzisz AND, zadaj sobie pytanie: "Czy wszystko jest prawdą?". Jeśli choć jeden warunek ma 0/false, cały wynik to 0/false.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operator && to logiczne AND (koniunkcja). Zwraca prawdę tylko wtedy, gdy obie strony wyrażenia są prawdziwe. Przy zapisie 0/1 oznacza to, że wynik wyniesie 1 wyłącznie dla 1 && 1, a w pozostałych przypadkach będzie 0.
Najprostsza reguła: dla AND wystarczy znaleźć choć jedno 0, aby cały wynik był 0. Skoro w (0 && 1) występuje 0, to wynik jest fałszywy. Dzięki temu nie trzeba pamiętać całej tabeli prawdy, choć warto ją znać.
Instrukcja if wykonuje blok "prawda" tylko wtedy, gdy warunek ma wartość prawdziwą. Dla A=0 i B=1 wyrażenie (A && B) jest fałszywe, więc program przechodzi do else i przypisuje C=0 zgodnie z kodem.
W zadaniach z logiką i instrukcjami warunkowymi zwykle przyjmuje się: 0 = fałsz, 1 = prawda. W praktyce programistycznej bywa, że "prawda" to dowolna wartość różna od zera, ale w pytaniach testowych z 0/1 interpretacja jest najczęściej jednoznaczna.
&& to operator logiczny (pracuje na wartościach prawda/fałsz i często ma tzw. krótkie spięcie), a & bywa operatorem bitowym (działa na bitach liczb). W elektronice analogią dla && jest bramka AND, a dla & — operacje na rejestrach/bitach w mikrokontrolerze.
Tak. Wystarczy potraktować A i B jak wejścia bramki AND. Dla wejść (0,1) wyjście AND wynosi 0. Następnie przenosisz wynik na warunek w if: skoro warunek jest 0, to wykonuje się else i C przyjmuje 0.
Typowe pomyłki to: mylenie AND z OR (uznanie, że "wystarczy jedna jedynka"), nieuwzględnienie, że 0 oznacza fałsz, oraz automatyczne wybranie C=1 bez sprawdzenia warunku. Pomaga zasada: w AND "jedno 0 psuje wszystko".
Np. w sterowaniu układem: urządzenie ma zadziałać tylko, gdy jest spełniony warunek bezpieczeństwa (A) i jednocześnie pojawia się sygnał startu (B). W oprogramowaniu mikrokontrolera to często połączenie dwóch flag: zezwolenia oraz detekcji stanu czujnika.
Tak, ale tylko gdy brakuje danych (np. nie podano A lub B), albo gdy wartości zależą od nieznanego wejścia, losowości, czasu lub innego fragmentu programu. W tym zadaniu A i B są podane wprost, więc wynik warunku i wartość C da się określić jednoznacznie.
Sprawdzasz, czy nawiasy i klamry są domknięte, a w obu gałęziach są poprawne instrukcje (np. przypisania). Taki zapis jest typowy dla języków z rodziny C. Na egzaminie zwykle nie testuje się niuansów kompilatora, tylko sens logiki i przepływ sterowania.
info

Statystycznie 82% uczniów zna prawidłową odpowiedź. średnio łatwe

Specjaliści zwracają uwagę: "Wyrażenie (A && B) jest prawdziwe tylko wtedy, gdy oba warunki są równe 1."

Źródła:

  • MDN Web Docs: Logical AND (&&) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND (dostęp: 2026-02-28)
  • MDN Web Docs: if...else - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else (dostęp: 2026-02-28)
  • Wikipedia (PL): Koniunkcja - https://pl.wikipedia.org/wiki/Koniunkcja (dostęp: 2026-02-28)

Materiały:

  • Podręcznik do podstaw programowania (instrukcje warunkowe, operatory logiczne)
  • Materiały z logiki cyfrowej (bramki AND/OR/NOT, tabele prawdy)
  • Dokumentacja języka programowania (sekcja o operatorach logicznych i instrukcji if/else)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego