KWALIFIKACJA INF2 + INF3 - CZERWIEC 2008

PYTANIE NR 37.
W ramce zamieszczono kod źródłowy, w którym zastosowano instrukcję warunkową Switch. Jest ona


void main()
{int k = 2
	switch (k)
	{case1: cout <<"k = 0"; break;
	case2: cout<<"k = 1"; break;
	default: cout<<"k>1"; break;
	};
}



A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Instrukcja switch realizuje wielokrotny wybór: dla wartości wyrażenia sterującego sprawdza kolejne etykiety case i wykonuje pasujący blok (albo default). Dlatego można ją opisać jako zbiór możliwych warunków dopasowania, z których w danym przebiegu spełnia się co najwyżej jeden.

Pełne wyjaśnienie:

Instrukcja switch w C++ służy do wykonania jednej z wielu możliwych gałęzi programu na podstawie wartości pojedynczego wyrażenia sterującego (np. zmiennej typu całkowitego lub wyliczeniowego). Wewnątrz switch znajduje się zestaw etykiet case, z których każda opisuje alternatywną możliwość dopasowania (porównanie przez równość do stałej wartości), oraz opcjonalna etykieta default dla sytuacji, gdy żaden case nie pasuje.

Odpowiedź "zbiorem warunków, które mogą być spełnione" jest trafna, bo switch obejmuje wiele potencjalnych dopasowań (case), a wybrana zostaje ta gałąź, której wartość odpowiada wyrażeniu sterującemu. W typowym użyciu (z break) wykonuje się tylko jeden blok, co odpowiada intuicji "jeden z wielu możliwych warunków".

  • "warunkiem zawsze spełnionym" jest niepoprawne, bo switch nie jest stałą prawdą logiczną; wybór zależy od wartości wyrażenia i może trafić do default.
  • "konkretnym warunkiem złożonym" jest mylące: switch w standardowym ujęciu nie służy do warunków złożonych (np. z operatorami logicznymi), tylko do porównań z konkretnymi stałymi w case.
  • "wielokrotnie zagnieżdżoną instrukcją Case" jest błędne pojęciowo: case nie jest samodzielną instrukcją sterującą zagnieżdżaną wielokrotnie, lecz etykietą (punktem wejścia) w obrębie switch.

Wskazówka egzaminacyjna: jeśli w odpowiedziach pojawiają się sformułowania o warunkach logicznych lub zagnieżdżaniu, porównaj je z tym, co switch naprawdę robi: wybiera gałąź na podstawie równości wartości i zwykle kończy ją przez przerwanie wykonania (break), aby uniknąć niezamierzonego przejścia do kolejnych case.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To konstrukcja wielokrotnego wyboru, która uruchamia jeden z kilku bloków kodu na podstawie wartości jednego wyrażenia. Program porównuje tę wartość z etykietami case, a gdy nie ma dopasowania, może wykonać gałąź default.
Wyrażenie w nawiasie po switch jest porównywane przez równość z wartościami przypisanymi do case. Dopasowanie oznacza wejście do odpowiedniego bloku. Wartości w case muszą być stałe (znane w czasie kompilacji), a nie dowolnymi warunkami logicznymi.
Bo switch typowo obsługuje wybór na podstawie równości do konkretnych stałych wartości, a if pozwala na dowolne wyrażenia logiczne (np. zakresy, nierówności, złożone warunki z AND/OR). Gdy potrzebujesz złożonej logiki, if zwykle będzie właściwsze.
Break przerywa wykonywanie instrukcji switch po zakończeniu danego przypadku. Bez break wykonanie może "przejść" do kolejnych case (tzw. fall-through), co często jest źródłem błędów. Dlatego w zadaniach egzaminacyjnych warto sprawdzać, czy break jest obecny.
Gałąź default uruchamia się, gdy żadna z wartości zdefiniowanych w etykietach case nie pasuje do wyrażenia sterującego. To odpowiednik "w przeciwnym razie" i jest przydatny do obsługi wartości nieoczekiwanych lub błędnych.
Najczęściej są to typy całkowite (np. int, char) oraz typy wyliczeniowe (enum). Kluczowe jest, aby dało się je porównać do stałych wartości w case. Gdy operujesz na złożonych strukturach lub łańcuchach znaków, zwykle stosuje się inne podejście.
Switch bywa używany do obsługi menu (wybór opcji 1/2/3), kodów błędów, typów komunikatów, stanów w prostym automacie stanów oraz mapowania wartości na działania. Jest czytelny, gdy rozgałęzień jest dużo i dotyczą jednej zmiennej.
W standardowym C++ switch nie jest przeznaczony do zakresów i nierówności (np. "mniej niż", "od-do"). Każdy case to dopasowanie do pojedynczej wartości stałej. Zakresy realizuje się zwykle przez if/else albo odpowiednie przekształcenie danych przed switchem.
Najczęstsze pomyłki to: mylenie switch z warunkami logicznymi if, pomijanie break (co daje niezamierzone wykonanie kolejnych case) oraz błędne oczekiwanie, że case może zawierać złożone wyrażenia. Na egzaminie zwracaj uwagę na rolę case i default.
Opis switch zwykle mówi o "wielokrotnym wyborze" na podstawie wartości jednej zmiennej/wyrażenia oraz o etykietach case i default. Opis if akcentuje warunki logiczne (prawda/fałsz), nierówności i łączenie warunków operatorami AND/OR.
info

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

W praktyce zawodowej kluczowe jest to, że instrukcja switch realizuje wielokrotny wybór: dla wartości wyrażenia sterującego sprawdza kolejne etykiety case i wykonuje pasujący blok (albo default).

Źródła:

  • cppreference.com: "switch statement" (C++), https://en.cppreference.com/w/cpp/language/switch — dostęp 2026-03-13
  • Microsoft Learn: "switch statement (C++)", https://learn.microsoft.com/en-us/cpp/cpp/switch-statement-cpp — dostęp 2026-03-13
  • cplusplus.com: "switch statement", https://www.cplusplus.com/doc/tutorial/control/ — dostęp 2026-03-13

Materiały:

  • Dokumentacja C++ (sekcja o instrukcjach sterujących: switch/case)
  • Ćwiczenia: zamiana łańcucha if-else-if na switch i odwrotnie
  • Materiały o typowych błędach: brak break i efekt "przejścia" do kolejnych case

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego