INF.04 · pytanie 369
Wskaż fragment kodu, który stanowi realizację przedstawionego algorytmu w języku C++. Kod 1do { suma = suma + i; } while (suma <= liczba); cout << suma; | Kod 2if (suma <= liczba) { suma = suma + i; i++; } else cout << suma; Kod 3for (i = suma; i <= liczba; i++) suma = suma + i; else cout << suma; | Kod 4while (suma <= liczba) { suma = suma + i; i++; } cout << suma;

- Akod 1
- Bkod 4Poprawna
- Ckod 2
- Dkod 3
Wyjaśnienie
Kod 4 najlepiej odwzorowuje pokazany schemat blokowy, bo używa pętli while, czyli pętli z warunkiem sprawdzanym przed wejściem do bloku instrukcji. Na diagramie najpierw jest decyzja suma <= liczba. Jeśli warunek jest spełniony, wykonywane są dwie operacje: suma = suma + i oraz i++. Potem sterowanie wraca z powrotem do sprawdzenia warunku. Jeśli warunek nie jest spełniony, program przechodzi do wypisania wartości zmiennej suma. Dokładnie tak działa fragment: while (suma <= liczba) { suma = suma + i; i++; } cout << suma;. Z mojego doświadczenia to jest bardzo typowy zapis algorytmu iteracyjnego, gdzie narastająco zwiększamy sumę i licznik. W praktyce podobny schemat stosuje się np. przy sumowaniu kolejnych liczb, szukaniu momentu przekroczenia limitu albo obliczaniu progów w prostych symulacjach. Dobrą praktyką jest też użycie nawiasów klamrowych przy pętli, nawet gdy instrukcji byłoby mało, bo kod jest wtedy czytelniejszy i mniej podatny na pomyłki. Trzeba też pamiętać o wcześniejszej inicjalizacji zmiennych suma, i oraz liczba, bo bez tego program może działać losowo albo wpaść w pętlę nieskończoną.