KWALIFIKACJA INF2 + INF3 - CZERWIEC 2007

PYTANIE NR 6.
Ile razy będzie wykonana operacja mnożenia, zgodnie z przedstawioną instrukcją pętli?


                        k:=5; 

                         iloczyn:=1; 

                        for     n:=10     downto     k  do 

                         iloczyn:=iloczyn*n; 




A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla "for n:=10 downto k do" wykonuje się dla wartości n: 10, 9, 8, 7, 6, 5 (zakres jest domknięty, krok wynosi −1). Instrukcja "iloczyn:=iloczyn*n" zawiera jedno mnożenie na iterację, więc operacja mnożenia zostanie wykonana 6 razy.

Pełne wyjaśnienie:

W tym fragmencie kodu ustawiono k:=5 oraz iloczyn:=1. Następnie użyto pętli for w wariancie malejącym: for n:=10 downto k do. Słowo kluczowe downto oznacza, że zmienna sterująca n będzie przyjmować kolejne wartości, zmniejszając się o 1 w każdej iteracji, aż do osiągnięcia wartości końcowej.

Kluczowa własność tej konstrukcji to zakres domknięty: wykonywanie pętli obejmuje zarówno wartość startową (10), jak i końcową (k, czyli 5). Zatem kolejno otrzymujemy:

  • n = 10
  • n = 9
  • n = 8
  • n = 7
  • n = 6
  • n = 5

To daje łącznie 6 iteracji. W każdej iteracji wykonywana jest instrukcja iloczyn:=iloczyn*n. Ponieważ w tej instrukcji występuje dokładnie jedna operacja mnożenia (iloczyn razy n), liczba wykonań mnożenia jest równa liczbie iteracji pętli, czyli 6.

Dlaczego pozostałe odpowiedzi są błędne? Odpowiedź "5" zwykle wynika z pominięcia domknięcia zakresu (policzenia tylko różnicy 10−5). Odpowiedź "3" nie odpowiada żadnemu poprawnemu zliczaniu zakresu i może wynikać z przypadkowego skrótu myślowego lub pomylenia z innym zadaniem. Odpowiedź "10" bywa skutkiem błędnego założenia, że skoro start jest równy 10, to pętla zawsze wykona się 10 razy, co nie jest prawdą — o liczbie iteracji decydują oba końce zakresu.

Wskazówka egzaminacyjna: przy pętli downto zawsze wypisz 2–3 pierwsze wartości (10, 9, 8…) i sprawdź, czy końcówka (…6, 5) jest również liczona. To szybko zabezpiecza przed typowym błędem "bez +1".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Pętla for ... downto ... do wykonuje iteracje malejąco. Zmienna sterująca przyjmuje kolejne wartości zmniejszane o 1, a zakres jest zwykle domknięty, czyli obejmuje wartość startową i końcową. To pozwala łatwo przejść np. od 10 do 5.
Zakres domknięty oznacza, że pętla wykona się także dla wartości końcowej. Jeśli iterujesz od 10 do 5 (malejąco), to pętla wykona się dla 10, 9, 8, 7, 6 oraz 5. Pominięcie tej cechy to częsty błąd na egzaminie.
Najprościej użyć wzoru: liczba = (start − koniec) + 1 dla iteracji malejącej o krok 1. Dla 10 i 5 otrzymujesz (10−5)+1 = 6. Alternatywnie wypisz wartości: 10, 9, 8, 7, 6, 5 i policz je.
Bo instrukcja mnożenia jest wykonywana w każdej iteracji, a iteracje obejmują również wartość końcową n=5. Błąd "5" wynika zwykle z policzenia samej różnicy 10−5 bez dodania 1, czyli z pominięcia ostatniego przejścia pętli.
Tak, bo k jest granicą końcową pętli: downto k. Im większe k, tym krótszy zakres i mniej iteracji; im mniejsze k, tym więcej iteracji. W tym przykładzie k=5 wyznacza ostatnią wartość n, dla której wykona się mnożenie.
W sensie algorytmicznym tak: jest to jedna operacja mnożenia na iterację (iloczyn razy n). Na egzaminie zwykle tak się to liczy. Nie analizuje się tu szczegółów implementacji sprzętowej, tylko liczbę wykonań operatora "*" w kodzie.
Najczęściej: pominięcie wartości końcowej (brak "+1"), pomylenie downto z to, oraz mylenie liczby iteracji z wartością zmiennej sterującej. Pomaga wypisanie kilku pierwszych i ostatnich wartości n przed wyborem odpowiedzi.
Gdy wartość początkowa jest mniejsza niż końcowa przy iteracji malejącej. Przykład: start 3, koniec 5 i użycie downto — wtedy warunek wejścia nie jest spełniony i ciało pętli nie wykona się. Zawsze sprawdzaj relację start–koniec.
Najpierw ustal listę wartości zmiennej sterującej (albo policz je wzorem), a potem sprawdź, czy dana instrukcja jest w ciele pętli. Jeśli w ciele jest pojedyncza instrukcja, wykona się tyle razy, ile iteracji. Jeśli jest blok, zlicz działania w bloku.
Nie, w tym typie zadania liczy się ile razy wykona się operator mnożenia, a nie jaka będzie końcowa wartość zmiennej iloczyn. Nawet jeśli wartości są duże, liczba mnożeń zależy tylko od liczby iteracji pętli.
info

Statystycznie 58% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Pętla "for n:=10 downto k do" wykonuje się dla wartości n: 10, 9, 8, 7, 6, 5 (zakres jest domknięty, krok wynosi −1)."

Źródła:

  • Free Pascal Reference Guide: "For statement" (for .. to/downto .. do), https://www.freepascal.org/docs-html/ref/refse58.html - dostęp 2026-02-28
  • Embarcadero DocWiki: "for Statement (Delphi)", https://docwiki.embarcadero.com/RADStudio/en/For_Statement - dostęp 2026-02-28
  • Lazarus Wiki: opis pętli for w Free Pascal (for..to/downto), https://wiki.lazarus.freepascal.org/For_loop - dostęp 2026-02-28

Materiały:

  • Dokumentacja języka Pascal/Free Pascal: sekcja o instrukcji for
  • Materiały kursowe do INF.2 z podstaw programowania strukturalnego (pętle, zmienne sterujące)
  • Zestawy zadań egzaminacyjnych dotyczących zliczania iteracji i analizy fragmentów kodu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego