Lekcja 5 — Programowanie: pętle

Pętle w C++ to konstrukcje językowe służące do zdefiniowania szeregu instrukcji, które będą powtarzane wielokrotnie. Pętle są niezbędne do wykonywania wielu zadań w programowaniu, takich jak:

  • Wyświetlanie liczb od 1 do 10
  • Pobieranie od użytkownika danych z klawiatury
  • Przeszukiwanie tablicy
  • Sortowanie danych

W języku C++ istnieje trzy rodzaje pętli:

  • Pętla for
  • Pętla while
  • Pętla do...while

Pętla for

Pętla for jest najbardziej popularnym rodzajem pętli w C++. Ma następującą składnię:

for (inicjalizacja; warunek; zmiana) {
  // instrukcje do wykonania
}

Pętle w C++ to konstrukcje językowe służące do zdefiniowania szeregu instrukcji, które będą powtarzane wielokrotnie. Pętle są niezbędne do wykonywania wielu zadań w programowaniu, takich jak:

Wyświetlanie liczb od 1 do 10
Pobieranie od użytkownika danych z klawiatury
Przeszukiwanie tablicy
Sortowanie danych

W języku C++ istnieje trzy rodzaje pętli:

Pętla for
Pętla while
Pętla do…while

Pętla for

Pętla for jest najbardziej popularnym rodzajem pętli w C++. Ma następującą składnię:
C++

for (inicjalizacja; warunek; zmiana) {
// instrukcje do wykonania
}

W pętli for kolejno wykonywane są następujące kroki:

Wykonywane są instrukcje w bloku inicjalizacja.
Sprawdzany jest warunek. Jeśli warunek jest prawdziwy, to wykonywane są instrukcje w bloku instrukcje do wykonania.
Wykonywane są instrukcje w bloku zmiana.
Powtarzane są kroki 2-3, dopóki warunek jest prawdziwy.

Przykład użycia pętli for:

#include <iostream>
int main() {
  for (int i = 0; i < 10; i++) {
    std::cout << i << std::endl;
  }
}

Ten kod wypisze na ekran liczby od 0 do 9.

Pętla  while

Pętla while wykonuje instrukcje w jej bloku tak długo, jak długo warunek jest prawdziwy. Ma następującą składnię:

while (warunek) {
  // instrukcje do wykonania
}

Przykład użycia pętli while:

#include <iostream>
int main() {
  int i = 0;
  while (i < 10) {
    std::cout << i << std::endl;
    i++;
  }
}

Ten kod jest równoważny poprzedniemu przykładowi użycia pętli for.

Pętla do...while

Pętla do...while jest podobna do pętli while, ale instrukcje w jej bloku są wykonywane przynajmniej raz, nawet jeśli warunek jest od razu fałszywy. Ma następującą składnię:

do {
  // instrukcje do wykonania
} while (warunek);


Przykład użycia pętli do...while:

#include <iostream>
int main() {
  int i = 10;
  do {
    std::cout << i << std::endl;
    i--;
  } while (i >= 0);
}

ten kod wypisze na ekran liczby od 10 do 1.

Wybór rodzaju pętli

Dobór rodzaju pętli zależy od konkretnego zadania. Pętla for jest najczęściej używana, ponieważ jest najprostsza w użyciu. Pętla while jest dobrym wyborem, gdy warunek może zmieniać się w trakcie wykonywania pętli. Pętla do...while jest dobrym wyborem, gdy instrukcje w bloku pętli powinny zostać wykonane przynajmniej raz.

Po co programowi powtarzanie

Pętla wykonuje ten sam fragment programu wiele razy. Zamiast przepisywać instrukcję wyświetlającą komunikat dziesięć razy, określamy zasadę powtarzania. Pętla przydaje się podczas sumowania liczb, przeglądania wyników uczniów, odliczania czasu i rysowania powtarzalnego wzoru. Powtarzanie nie oznacza jednak braku kontroli. Trzeba wiedzieć, od czego zaczynamy, kiedy kończymy i co zmienia się po każdym wykonaniu. Te trzy pytania pomagają zaprojektować rozwiązanie jeszcze przed zapisaniem kodu.

Pętla for jest wygodna, gdy znamy liczbę powtórzeń. Zapis for (int i = 0; i < 5; i++) opisuje pięć wykonań dla wartości i równych zero, jeden, dwa, trzy i cztery. Pierwsza część tworzy licznik, druga jest warunkiem kontynuacji, a trzecia zwiększa licznik po wykonaniu instrukcji w klamrach. Gdy licznik osiągnie pięć, warunek i < 5 staje się fałszywy i pętla się kończy. Zero jest częstym początkiem licznika, szczególnie podczas pracy z tablicami.

Pętla while i zmieniający się warunek

Pętla while sprawdza warunek przed każdym wykonaniem. Jeśli warunek od początku jest fałszywy, instrukcje wewnątrz nie wykonają się ani razu. Taka pętla pasuje do sytuacji, w której nie znamy z góry liczby prób: użytkownik podaje odpowiedź, dopóki nie trafi, albo program przetwarza dane, dopóki są dostępne. W środku musi nastąpić zmiana, która kiedyś pozwoli zakończyć powtarzanie. Może to być zwiększenie licznika, zmiana odpowiedzi albo odczyt kolejnego elementu.

Jeżeli zmienna kontrolująca warunek nigdy się nie zmienia, może powstać pętla nieskończona. Program będzie wykonywał te same instrukcje bez końca albo przestanie reagować. Zanim uruchomisz pętlę, wskaż dokładnie instrukcję odpowiedzialną za postęp. W ćwiczeniach używaj małych zakresów i wypisuj licznik. Nie próbuj naprawiać zawieszonego programu przypadkowym klikaniem. Zatrzymaj jego wykonanie w środowisku programistycznym, sprawdź warunek i popraw sposób aktualizowania danych.

Sumowanie i wartości początkowe

Przy sumowaniu potrzebujemy zmiennej, która przechowuje narastający wynik. Zaczynamy zwykle od zera. Jeżeli chcemy dodać liczby od jeden do pięć, tworzymy suma = 0, a w kolejnych przebiegach wykonujemy suma += i. Po dodaniu kolejnych liczb suma wynosi jeden, trzy, sześć, dziesięć i piętnaście. Nie zeruj sumy wewnątrz pętli, bo wtedy po każdym przebiegu stracisz poprzednio zebrany wynik. Zmienna pomocnicza powinna być utworzona w miejscu odpowiadającym jej roli.

Inną sytuacją jest liczenie iloczynu. Wtedy wartością początkową jest zazwyczaj jeden, ponieważ mnożenie przez zero wyzerowałoby cały wynik. To pokazuje, że wartości początkowej nie wybieramy mechanicznie. Musi pasować do wykonywanego działania. Podobnie licznik znalezionych elementów zaczyna od zera i rośnie dopiero wtedy, gdy dany element spełnia warunek. Możemy więc połączyć pętlę z instrukcją if, aby policzyć tylko dodatnie liczby albo tylko parzyste wyniki.

Granice i najczęstsza pomyłka

Błąd o jedno powtórzenie pojawia się często przez pomylenie < i <=. Pętla przechodząca od zera do wartości mniejszej niż pięć ma pięć przebiegów. Jeśli dopuścimy także wartość pięć, otrzymamy sześć przebiegów. Narysuj tabelę wartości licznika i policz wiersze. Przy pracy z tablicą liczącą pięć elementów prawidłowe indeksy to zero, jeden, dwa, trzy i cztery. Próba dostępu do elementu o indeksie pięć wychodzi poza ten zakres i jest błędem.

Ćwiczenie: tabela i ręczne śledzenie

Napisz program wyświetlający pięć kolejnych wielokrotności liczby siedem. Dla każdej wartości licznika od jeden do pięć oblicz iloczyn licznika i siedmiu. Oczekiwane wyniki to siedem, czternaście, dwadzieścia jeden, dwadzieścia osiem i trzydzieści pięć. Następnie zmień program tak, aby liczbę powtórzeń podawał użytkownik. Sprawdź przypadek jednego powtórzenia, kilku powtórzeń i zera. Zastanów się, jak zareagować na liczbę ujemną, zanim rozpoczniesz wykonywanie pętli.

Na kartce przygotuj kolumny: numer przebiegu, wartość licznika, wynik działania i aktualna suma. Wypełnij je dla pierwszych trzech powtórzeń, a następnie porównaj z wynikiem programu. Ręczne śledzenie nie jest stratą czasu. Uczy przewidywania zmian i pomaga zauważyć błąd, zanim rozwiązanie stanie się długie. Na koniec wyjaśnij, kiedy użyłbyś for, a kiedy while. Uzasadnij odpowiedź tym, czy liczba powtórzeń jest znana, czy zależy od zdarzeń podczas działania programu.

Sprawdź, co pamiętasz

Pytania kontrolne

1. Jaki jest główny temat artykułu „Lekcja 5 — Programowanie: pętle”?

Wskazówka: Odpowiedz własnymi słowami i wskaż najważniejszy cel lub problem opisany w materiale.

2. Które trzy pojęcia, zasady albo etapy z artykułu warto zapamiętać?

Wskazówka: Wybierz informacje potrzebne do wykonania zadania lub wyjaśnienia tematu innej osobie.

3. Jak można wykorzystać tę wiedzę w praktyce?

Wskazówka: Podaj konkretny przykład z lekcji, pracy przy komputerze albo codziennej sytuacji.

4. Jakie kroki należy wykonać, aby poprawnie zrealizować opisane zadanie?

Wskazówka: Ułóż najważniejsze czynności we właściwej kolejności.

5. Jakich narzędzi, funkcji lub materiałów potrzeba do wykonania zadania?

Wskazówka: Wymień elementy wskazane w artykule i krótko opisz ich rolę.

6. Która zasada opisana w artykule jest najważniejsza i dlaczego?

Wskazówka: Uzasadnij wybór przykładem z materiału.

7. Jaki błąd można popełnić podczas wykonywania zadania i jak go uniknąć?

Wskazówka: Wskaż możliwą trudność oraz sposób jej rozwiązania.

8. Jak wyjaśnisz ten temat osobie, która poznaje go po raz pierwszy?

Wskazówka: Użyj prostych słów i najważniejszych pojęć z artykułu.

9. Co zmieniłoby się, gdyby pominąć jeden z opisanych etapów lub zasad?

Wskazówka: Przewidź skutek i uzasadnij odpowiedź.

10. Jakie własne ćwiczenie lub przykład można przygotować na podstawie artykułu?

Wskazówka: Zaproponuj zadanie, które sprawdza zrozumienie materiału.

Komentarze

Dodaj komentarz