KWALIFIKACJA INF2 + INF3 - CZERWIEC 2013

PYTANIE NR 27.
Przedstawiona deklaracja dotyczy typu
Ilustracja przedstawia fragment kodu źródłowego umieszczony w prostokątnej ramce.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W Pascalu konstrukcja set of zawsze oznacza typ zbiorowy, czyli typ przechowujący zbiór wartości typu bazowego. Nawias z listą (pn, wt, sr, czw, pt) opisuje tu typ bazowy (enumerację), ale cała deklaracja tworzy zbiór tych wartości. Operatory ".." i "^" wskazywałyby inne typy.

Pełne wyjaśnienie:

W języku Pascal typy definiowane przez użytkownika rozpoznaje się po charakterystycznych elementach składni. W pokazanej deklaracji kluczowa jest fraza set of – jej obecność oznacza, że definiowany jest typ zbiorowy (set). Taki typ pozwala przechowywać wiele wartości naraz jako zbiór elementów należących do pewnego typu bazowego (np. można trzymać jednocześnie kilka dni tygodnia).Dlaczego to nie jest typ wyliczeniowy? Typ wyliczeniowy w Pascalu ma postać samej listy wartości w nawiasach, np. (pn, wt, sr, czw, pt). W tej deklaracji lista w nawiasach występuje, ale jest użyta jako typ bazowy dla zbioru. Oznacza to, że wartości w nawiasach są elementami, które mogą wchodzić do zbioru, natomiast "set of …" przesądza o typie głównym.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • Typ okrojony (subrange) rozpoznaje się po operatorze .., który wyznacza zakres (np. 0..9). W deklaracji nie ma zakresu ani operatora "..".
  • Typ wskaźnikowy (pointer) zawiera operator ^ (np. ^Integer). W deklaracji nie ma znaku "^".
  • Typ wyliczeniowy byłby poprawny tylko wtedy, gdyby deklaracja składała się z samej listy wartości w nawiasach, bez "set of".

Wskazówka egzaminacyjna: gdy widzisz w Pascalu set of, najpierw odpowiedz sobie na pytanie "jaki jest typ po lewej stronie?" – to zawsze będzie zbiór, niezależnie od tego, czy typ bazowy jest wyliczeniowy, okrojony czy inny porządkowy.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Fraza set of oznacza, że tworzysz typ zbiorowy (set), czyli zmienna tego typu może przechowywać jednocześnie wiele elementów typu bazowego. Typ bazowy występuje po słowach "set of" i musi być porządkowy (np. enumeracja lub zakres).
Wyliczeniowy to pojedyncza wartość z listy (np. pn albo wt). Zbiorowy to kolekcja wartości tego typu (np. [pn, sr, pt]). W składni najprościej: sama lista w nawiasach → wyliczeniowy, a "set of …" → zbiorowy.
Bo występuje w nim słowo kluczowe set of, które w Pascalu jednoznacznie definiuje typ zbiorowy. Nawias z (pn, wt, …) opisuje tylko elementy, które mogą należeć do zbioru, ale nie zmienia faktu, że typ po lewej stronie jest zbiorem.
Typ okrojony rozpoznasz po operatorze .., który wyznacza zakres, np. 0..9 albo 'A'..'Z'. Jeśli w deklaracji nie ma "..", to nie jest typ okrojony. To szybka reguła przy pytaniach testowych.
Typ wskaźnikowy w Pascalu definiuje się z użyciem znaku ^, np. Wsk = ^Integer;. Jeśli w deklaracji nie ma "^", to nie jest wskaźnik. Na egzaminie warto odróżniać "^" (wskaźnik) od "set of" (zbiór).
Nie zawsze. Lista w nawiasach oznacza enumerację tylko wtedy, gdy jest samodzielną definicją typu. Jeżeli przed nią stoi set of, to ta enumeracja staje się typem bazowym, a całość jest typem zbiorowym. To częsty "haczyk" w testach.
Typ zbiorowy wspiera typowe operacje mnogościowe, np. sumę (unia), część wspólną (przecięcie) i różnicę zbiorów. W praktyce pozwala to wygodnie przechowywać "zestaw cech" lub "wybrane elementy" zamiast pojedynczej wartości.
Nie. Typ bazowy zbioru musi być porządkowy (ordinal), czyli taki, którego wartości da się uporządkować i policzyć (np. enumeracja, zakres liczbowy, znaki). Dlatego w zadaniach często spotkasz "set of (… )" albo "set of 0..9".
Najczęściej wybierają "wyliczeniowy", bo widzą wartości w nawiasach i nie zauważają krótkiego fragmentu set of. Drugi typowy błąd to mylenie operatorów: uznanie, że ".." i "^" to tylko "znaki", a nie kluczowe wyznaczniki typu okrojonego i wskaźnikowego.
Najpierw szukaj w deklaracji "markerów" składni: set of (zbiorowy), .. (okrojony), ^ (wskaźnikowy), a dopiero na końcu sama lista w nawiasach (wyliczeniowy). Ta kolejność zmniejsza ryzyko pomyłki przez pierwsze wrażenie.
info

Około 62% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "W Pascalu konstrukcja set of zawsze oznacza typ zbiorowy, czyli typ przechowujący zbiór wartości typu bazowego."

Źródła:

  • Free Pascal Reference Guide (FPRG), rozdział o typach danych: "Set types" (typy zbiorowe) – https://www.freepascal.org/docs-html/ref/refse18.html (dostęp: 2026-03-01)
  • Embarcadero DocWiki (Delphi/Object Pascal), hasło: "Set Types" – https://docwiki.embarcadero.com/RADStudio/en/Set_Types (dostęp: 2026-03-01)
  • Lazarus Wiki, hasło dotyczące Object Pascal/typów: "Set" – https://wiki.lazarus.freepascal.org/Set (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja Free Pascal: sekcja o typach zbiorowych (Set types)
  • Dokumentacja Delphi/Object Pascal: opis typów Set i różnic względem enumeracji
  • Podręczniki do Pascala (działy: typy definiowane przez użytkownika, set/enum/subrange/pointer)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego