W tym typie zadania chodzi o przetłumaczenie schematu blokowego na zapis pętli. Kluczowe są trzy elementy: inicjalizacja licznika, miejsce modyfikacji licznika (inkrementacja) oraz warunek kontynuacji.
Odpowiedź "x=0; while (x<=10) {x++;}" jest poprawna, bo zawiera:
- inicjalizację licznika: x=0,
- pętlę z warunkiem na początku: while (...), czyli decyzja o wejściu do bloku zapada przed wykonaniem instrukcji w klamrach,
- inkrementację o 1: x++,
- warunek z równością: x<=10, co jest istotne dla liczby wykonań (to typowy obszar błędów off-by-one).
Dlaczego pozostałe propozycje nie pasują:
- "x=0; do {x=x+1;} while (x<10)" to pętla do-while, czyli warunek jest sprawdzany po wykonaniu bloku. Dodatkowo warunek ma postać x<10, więc zakres iteracji różni się od przypadku z x<=10.
- "x=0; do {x++;} while (x>10)" ma warunek w przeciwną stronę (x>10). Przy starcie od zera taki warunek nie będzie spełniony po pierwszym obrocie, więc zachowanie pętli nie odpowiada typowemu schematowi "liczenia w górę do 10".
- "for (x=0;x<10;x++)" jest pętlą z warunkiem x<10, a więc znowu pojawia się różnica brzegowa w porównaniu do x<=10. Nawet jeśli stylistycznie for bywa równoważny while, tutaj warunek determinuje inną liczbę iteracji.
Wskazówka egzaminacyjna: najpierw odczytaj ze schematu warunek dokładnie z operatorem (<, <=, >, >=), potem sprawdź, czy warunek jest przed czy po bloku (while vs do-while). To najszybciej eliminuje odpowiedzi pozornie podobne.