KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2010

PYTANIE NR 21.
Przedstawiony w postaci listy kroków algorytm przypisuje
Ilustracja przedstawia fragment egzaminacyjnego pytania z kwalifikacji zawodowej dla technika programisty.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Algorytm przechodzi po wszystkich parach indeksów (i,j) w macierzy 10×10. Dla komórek spełniających warunek i=j (przekątna główna) przypisuje wartość 1, a dla pozostałych (i≠j) przypisuje 0. Taki wzorzec odpowiada macierzy jednostkowej.

Pełne wyjaśnienie:

Rozpatrywany algorytm działa na tablicy dwuwymiarowej tab[i,j] i wykorzystuje dwie pętle zagnieżdżone. Zmienna i iteruje po wierszach od 1 do 10, a zmienna j po kolumnach od 1 do 10, więc odwiedzane są wszystkie 100 elementów macierzy 10×10.

Kluczowy jest warunek: jeżeli i jest równe j. Tylko wtedy, gdy numer wiersza jest równy numerowi kolumny, komórka leży na przekątnej głównej, czyli w pozycjach: tab[1,1], tab[2,2], …, tab[10,10]. Dla tych elementów algorytm wykonuje przypisanie wartości 1.

W przeciwnym wypadku (gdy i≠j) algorytm przypisuje wartość 0. Oznacza to, że wszystkie elementy poza przekątną główną stają się zerami.

Dlatego poprawne jest stwierdzenie, że algorytm przypisuje wartość 1 elementom na przekątnej macierzy. Pozostałe odpowiedzi są błędne z typowych powodów:

  • Teza o "wartości 0 wszystkim elementom" ignoruje gałąź, w której ustawiane są jedynki dla i=j.
  • Teza o "wartości 1 wszystkim elementom" pomija gałąź alternatywną, w której dla i≠j przypisywane są zera.
  • Teza o "wartości 0 elementom na przekątnej" wynika z odwrócenia przypisań (zamiany ról 1 i 0) albo z błędnego odczytania warunku.

W praktyce taki algorytm tworzy macierz jednostkową: jedynki na przekątnej głównej i zera poza nią. To częsty wzorzec inicjalizacji w programowaniu i punkt wyjścia w zadaniach z operacji macierzowych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Macierz jednostkowa to macierz kwadratowa, w której na przekątnej głównej są jedynki, a poza nią zera. Czyli elementy z indeksami (i,i) mają wartość 1, a wszystkie (i,j) dla i≠j mają wartość 0. To odpowiednik "1" w mnożeniu macierzy.
Przekątna główna to te komórki, dla których numer wiersza równa się numerowi kolumny. W zapisie tab[i,j] oznacza to warunek i=j. Przykłady: tab[1,1], tab[2,2], tab[3,3]. Wszystkie pozostałe pola mają i≠j.
Warunek i=j pozwala wybrać tylko elementy leżące na przekątnej głównej. Dzięki temu algorytm może przypisać inną wartość na przekątnej (np. 1), a inną poza nią (np. 0). Bez tego warunku wszystkie elementy dostałyby tę samą wartość.
Gdy i≠j, element nie leży na przekątnej głównej, więc trafia do gałęzi "w przeciwnym wypadku". W typowym algorytmie macierzy jednostkowej oznacza to przypisanie 0. To sprawia, że poza przekątną pojawiają się same zera.
Rozmiar wynika z zakresów pętli. Jeśli pętla i biegnie od 1 do 10 i pętla j od 1 do 10, to wypełnianych jest 100 pól, czyli macierz 10×10. Zmiana zakresu (np. do n) tworzy analogicznie macierz n×n.
Najczęściej myli się przekątną główną z poboczną, odwraca się wartości (0 na przekątnej, 1 poza), albo pomija gałąź "w przeciwnym wypadku". Częsty jest też błąd w rozumieniu indeksów i oraz j, szczególnie przy tablicach 2D.
Macierz jednostkowa jest elementem neutralnym mnożenia macierzy: dla zgodnych wymiarów zachodzi A·I = A oraz I·A = A. Intuicyjnie jedynki na przekątnej "przepuszczają" odpowiednie elementy, a zera poza przekątną nie dodają nic do sum.
Najprościej: dla i=1..n, w środku dla j=1..n, a następnie instrukcja if (i==j) ustaw 1, w przeciwnym razie ustaw 0. Taki zapis jasno pokazuje, że decyzja zależy od relacji indeksów.
Stosuje się ją m.in. jako wartość początkową w algorytmach operujących na macierzach (np. przy budowaniu transformacji), w grafice komputerowej oraz przy testowaniu funkcji mnożenia macierzy. Jest też dobrym przykładem inicjalizacji tablicy 2D z warunkiem.
Sprawdź, czy w algorytmie jest warunek zależny od i oraz j. Jeśli pojawia się i=j, to działanie dotyczy tylko przekątnej, a nie wszystkich pól. Gdyby algorytm nie rozróżniał przypadków, przypisanie byłoby jednolite dla całej tablicy.
info

Około 41% zdających odpowiada poprawnie na to pytanie. trudne

Specjaliści zwracają uwagę: "Algorytm przechodzi po wszystkich parach indeksów (i,j) w macierzy 10×10."

Źródła:

  • https://pl.wikipedia.org/wiki/Macierz_jednostkowa - dostęp 2026-03-01
  • https://pl.wikipedia.org/wiki/Tablica_(informatyka) - dostęp 2026-03-01
  • https://pl.wikipedia.org/wiki/P%C4%99tla_(programowanie) - dostęp 2026-03-01

Materiały:

  • Materiały dydaktyczne z podstaw programowania: pętle zagnieżdżone i tablice 2D
  • Wprowadzenie do algebry liniowej: definicja macierzy jednostkowej i przekątnej głównej
  • Zadania praktyczne: generowanie macierzy jednostkowej dla różnych rozmiarów n

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego