KWALIFIKACJA INF2 + INF3 - CZERWIEC 2013

PYTANIE NR 12.
Który z zamieszczonych schematów blokowych przedstawia instrukcję iteracyjną do ... while języka C/C++?
Ilustracja przedstawia cztery schematy blokowe oznaczone literami A, B, C i D.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla do...while na schemacie blokowym rozpoznawana jest po tym, że najpierw wykonuje się blok instrukcji, a dopiero potem następuje sprawdzenie warunku w rombie. Gdy warunek jest spełniony, przepływ wraca do bloku; gdy nie, pętla się kończy. Dzięki temu ciało pętli wykona się co najmniej raz.

Pełne wyjaśnienie:

Pętla do...while w C/C++ ma cechę, która odróżnia ją od pętli while: warunek jest sprawdzany po wykonaniu instrukcji. Oznacza to, że ciało pętli wykona się co najmniej jeden raz, nawet jeśli warunek początkowo byłby fałszywy.

Na schemacie blokowym pętla do...while ma zwykle układ:

  • blok operacji (ciało pętli) znajduje się "przed" decyzją,
  • romb decyzyjny (warunek) jest umieszczony po bloku operacji,
  • jedna gałąź z rombu prowadzi z powrotem do bloku (kontynuacja iteracji),
  • druga gałąź wychodzi z pętli (zakończenie).

Dlatego poprawny schemat to taki, w którym strzałki pokazują sekwencję: wykonaj instrukcje → sprawdź warunek → ewentualnie wróć.

Pozostałe schematy, które często pojawiają się jako pułapki, zwykle odpowiadają innym konstrukcjom:

  • while (test na początku): romb decyzyjny jest przed blokiem instrukcji, więc pętla może wykonać się zero razy.
  • for: ma z reguły wydzielone elementy inicjalizacji i modyfikacji licznika (na schemacie widać dodatkowy krok aktualizacji lub zapis "i=i+1").
  • repeat...until (spotykane w pseudokodzie): logicznie podobne do do...while, ale warunek zakończenia bywa zapisany odwrotnie (wyjście następuje, gdy warunek jest spełniony). Na egzaminie kluczowe jest, czy powrót następuje dla warunku prawdziwego, czy fałszywego.

Wskazówka egzaminacyjna: jeśli widzisz romb na końcu i strzałkę powrotną do bloku instrukcji, sprawdź, dla której odpowiedzi (tak/nie) następuje powrót. W do...while w C/C++ pętla trwa while (warunek), czyli powrót odpowiada sytuacji, gdy warunek jest prawdziwy.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Pętla do...while to instrukcja iteracyjna, w której najpierw wykonuje się blok instrukcji, a dopiero potem sprawdza warunek kontynuacji. Dzięki temu ciało pętli wykona się co najmniej raz, nawet gdy warunek początkowo nie jest spełniony.
Bo sprawdzenie warunku jest na końcu konstrukcji. Program nie ma możliwości "ominąć" pierwszego wykonania bloku, ponieważ do rombu/warunku dochodzi dopiero po przejściu przez instrukcje pętli.
Szukaj układu: blok instrukcji → romb z warunkiem → powrót do bloku. Kluczowe jest położenie rombu: w do...while decyzja jest po ciele pętli, a nie przed nim.
W while romb z warunkiem jest na początku, więc pętla może wykonać się zero razy. W do...while romb jest na końcu, więc najpierw wykonujesz instrukcje, a dopiero później decydujesz, czy wracasz.
Tak. To klasyczne zastosowanie: wyświetlasz menu, pobierasz wybór i dopiero na końcu sprawdzasz, czy użytkownik chce zakończyć. W ten sposób menu pokaże się przynajmniej raz, co jest zwykle pożądane.
Najczęściej myli się miejsce sprawdzania warunku: wybiera się schemat z rombem na początku (czyli while). Drugi błąd to nieuważne odczytanie kierunku strzałek i pomylenie gałęzi "tak/nie", czyli kiedy następuje powrót do bloku.
Gdy dopuszczasz, że pętla może nie wykonać się ani razu, bo warunek może być fałszywy już na starcie (np. przetwarzanie danych tylko wtedy, gdy lista nie jest pusta). Wtedy naturalniejsze jest while z testem na początku.
Są podobne, bo oba mają test na końcu, ale często różnią się logiką warunku: w do...while kontynuujesz, gdy warunek jest prawdziwy, a w repeat...until zwykle kończysz, gdy warunek jest prawdziwy. Na schemacie decyduje, dla której gałęzi jest powrót.
Pomaga reguła: "do, potem sprawdź". Najpierw "zrób" (wykonaj instrukcje), a dopiero potem "sprawdź" warunek. Jeśli warunek jest spełniony, wracasz na początek bloku.
Tak, bo pytania często polegają na rozpoznaniu konstrukcji (pętla, warunek) po symbolach. Warto utrwalić: prostokąt = operacja, romb = decyzja/warunek, strzałki = przepływ sterowania. To pozwala szybko odróżnić while od do...while.
info

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

Eksperci podkreślają: "Pętla do...while na schemacie blokowym rozpoznawana jest po tym, że najpierw wykonuje się blok instrukcji, a dopiero potem następuje sprawdzenie warunku w rombie."

Źródła:

  • cppreference.com — "do-while loop" (C++), https://en.cppreference.com/w/cpp/language/do_while (dostęp: 2026-03-02)
  • cppreference.com — "do-while loop" (C), https://en.cppreference.com/w/c/language/do (dostęp: 2026-03-02)
  • Microsoft Learn — C++ "do-while Statement", https://learn.microsoft.com/en-us/cpp/cpp/do-while-statement-cpp (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja cppreference dla konstrukcji do...while w C i C++
  • Podręcznik do podstaw programowania strukturalnego (schematy blokowe i instrukcje sterujące)
  • Zadania treningowe: zamiana kodu while/for/do...while na schemat blokowy i odwrotnie

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego