KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 31.
Dana jest tablica o nazwie tab wypełniona liczbami całkowitymi różnymi od zera. Przedstawiony kod zapisany w języku PHP ma za zadanie
Ilustracja przedstawia fragment kodu w języku PHP, który jest częścią pytania egzaminacyjnego z kwalifikacji zawodowej dla
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna interpretacja to zamiana każdego elementu tablicy na liczbę o przeciwnym znaku.
W praktyce oznacza to, że dodatnie wartości stają się ujemne, a ujemne dodatnie (np. 5 → -5, -3 → 3). To nie jest to samo co wartość bezwzględna, która zawsze daje wynik nieujemny.

Pełne wyjaśnienie:

Opisane działanie kodu sprowadza się do negacji (odwrócenia znaku) każdego elementu tablicy tab. Typowo realizuje się to w PHP przez iterację po tablicy (np. pętlą foreach lub for) i przypisanie do danego indeksu wartości ujemnej względem poprzedniej, np. przez użycie operatora unarnego minus albo mnożenie przez -1.

Dlaczego odpowiedź "zamienić wszystkie elementy tablicy na liczby z przeciwnym znakiem" pasuje do takiej logiki?

  • Jeśli element wynosi 7, po operacji ma wynosić -7.
  • Jeśli element wynosi -2, po operacji ma wynosić 2.

Pozostałe odpowiedzi opisują inne, często mylone operacje:

  • "obliczyć wartość bezwzględną elementów tablicy" oznacza użycie funkcji typu abs(), gdzie wynik jest zawsze nieujemny. Negacja natomiast zachowuje "odległość od zera", ale zmienia znak (może dać wynik dodatni lub ujemny).
  • "obliczyć iloczyn wszystkich liczb w tablicy" to operacja agregująca (redukcja) do jednej liczby. W takim przypadku kod zwykle utrzymuje zmienną akumulatora (np. $prod) i mnoży kolejne elementy, zamiast nadpisywać każdy element tablicy.
  • "zamienić elementy tablicy na wartości przechowywane w zmiennej liczba" sugeruje nadpisanie stałą wartością. Działanie polegające na zmianie znaku wykorzystuje aktualną wartość elementu, a nie niezależną stałą.

Wskazówka egzaminacyjna: aby odróżnić te przypadki, sprawdź, czy kod (1) modyfikuje każdy element (mapowanie), czy (2) tworzy jedną wartość końcową (redukcja), oraz czy pojawia się operator "-"/"*-1" (negacja), czy funkcja typu abs() (wartość bezwzględna).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To operacja zmiany znaku: dodatnia liczba staje się ujemna, a ujemna dodatnia, np. 5 → -5 i -3 → 3. W PHP robi się to zwykle przez operator unarny minus (np. -$x) albo mnożenie przez -1.
Negacja zmienia znak liczby (może dać wynik dodatni lub ujemny). Wartość bezwzględna zwraca zawsze liczbę nieujemną (np. abs(-3)=3 i abs(3)=3). Te pojęcia są często mylone, bo oba "modyfikują" liczbę.
Najczęściej iterujesz po tablicy i nadpisujesz elementy: $tab[$i] = -$tab[$i]; albo $tab[$i] *= -1;. Alternatywnie można użyć funkcji mapującej, np. z array_map(), aby zwrócić nową tablicę z przekształconymi wartościami.
Tak, bo array_map() służy do mapowania, czyli wykonania tej samej operacji na każdym elemencie. Przykładowo funkcja zwracająca -$x utworzy nową tablicę z odwróconymi znakami. Uważaj, że zwykle nie modyfikuje ona tablicy "w miejscu", tylko zwraca wynik.
foreach jest czytelne i bezpośrednio służy do iteracji po elementach tablicy. Na egzaminie ułatwia to pokazanie operacji wykonywanej na każdym elemencie. Trzeba jednak pamiętać, że aby modyfikować tablicę, czasem używa się iteracji po indeksach albo referencji.
Iloczyn to przykład redukcji: wiele liczb zamieniasz na jedną (np. akumulator $p i mnożenia w pętli). Modyfikacja elementów to mapowanie: każdy element jest zastępowany nową wartością (np. odwrócony znak). Rozpoznasz to po tym, czy wynik jest tablicą czy pojedynczą liczbą.
Tak. Najprościej użyć operatora unarnego minus: $x = -$x;. To semantycznie czytelne i często spotykane w kodzie. Mnożenie przez -1 ($x *= -1;) daje ten sam efekt, ale bywa mniej jednoznaczne dla początkujących.
Częste błędy to: modyfikacja tylko kopii zmiennej w foreach (bez referencji), pomylenie abs() ze zmianą znaku, oraz nadpisanie tablicy jedną stałą wartością. Na egzaminie warto sprawdzić, czy instrukcja przypisania dotyczy elementu tablicy, np. $tab[$i].
Dla samej negacji 0 nie stanowi problemu, bo 0 → 0. Taki warunek bywa dodawany, aby wykluczyć inne konteksty (np. dzielenie przez element tablicy) lub uprościć interpretację. W zadaniach o zmianie znaku jest to zwykle informacja poboczna.
Szukaj operacji typu -$tab[...] albo $tab[...] *= -1 wykonywanej w pętli przechodzącej po wszystkich elementach. Jeżeli kod zamiast tego używa abs(), chodzi o wartość bezwzględną, a jeśli utrzymuje jedną zmienną akumulatora, to raczej o iloczyn/sumę.
info

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

W praktyce zawodowej kluczowe jest to, że poprawna interpretacja to zamiana każdego elementu tablicy na liczbę o przeciwnym znaku.W praktyce oznacza to, że dodatnie wartości stają się ujemne, a ujemne dodatnie (np. 5 → -5, -3 → 3).

Źródła:

  • PHP Manual: foreach — https://www.php.net/manual/en/control-structures.foreach.php (dostęp: 2026-03-02)
  • PHP Manual: Arrays — https://www.php.net/manual/en/language.types.array.php (dostęp: 2026-03-02)
  • PHP Manual: abs() — https://www.php.net/manual/en/function.abs.php (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja PHP: pętle i iteracja po tablicach (foreach)
  • Dokumentacja PHP: tablice (arrays) i modyfikacja elementów
  • Ćwiczenia: przekształcenia tablic (mapowanie, filtrowanie, redukcja) w PHP

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego