Egzamin zawodowyPortal części pisemnej

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;

Ilustracja do pytania 369: Wskaż fragment kodu, który stanowi realizację przedstawionego algorytmu w język…
  1. Akod 1
  2. Bkod 4Poprawna
  3. Ckod 2
  4. 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ą.