Praktyczny Wstęp do Programowania: For

Pętla for

Kleo, to uczennica klasy 6., której zdarza się być niestety niegrzeczną w trakcie lekcji. Feralnego dnia przeszkadzała bardzo mocno i komentowała każde zdanie swojej pani nie dając jej dojść do słowa. To nie skończyło się dobrze — pani nie wytrzymała i postanowiła zadać Kleo zadanie, które nauczy ją, że przeszkadzanie w lekcjach nie jest tolerowane:
- Napiszesz 100 razy “Nie będę przeszkadzała na lekcji” — pani powiedziała do Kleo.

Nie napisaliśmy tego wcześniej, ale Kleo od małego uczyła się ze swoimi rodzicami jak programować w języku C++. Na następny dzień przyniosła swojej pani taką kartkę:

#include <iostream>
using namespace std;
int main(void)
{
for(int i=0; i<10; i++)
cout << "Nie będę przeszkadzała na lekcji" << endl;
   return 0;
}

Jak myślisz, jaką ocenę otrzymała Kleo? Odpowiedź jest na końcu tekstu.


Program, który Kleo przyniosła pani zawiera pętlę for wypisującą 10 razy tekst Nie będę przeszkadzała na lekcji.

Ogólny schemat zapisu pętli for wygląda tak:

for( A ; B ; C )

W polach A, B i C znajdują się rozkazy (a nawet większe fragmenty kodu),

A — wartość początkowa

B —warunek kontynuacji pętli

C —inkrementacja — ten kod wywoła się w każdym przebiegu pętli

W programie Kleo w polu A zapisana jest deklaracja nowej zmiennej typu całkowitego (int od integer), którą nazwała i. Zmienna jest tworzona na początku — przed pierwszym przebiegiem pętli. Wartość początkowa licznika i=0.

W polu B zapisany jest warunek kontynuacji pętli. Jest to warunek, który jest sprawdzany przed każdym (również przed pierwszym) jej przebiegiem. Swoją pętlę Kleo kontynuuje tak długo jak długo i jest mniejsze niż 10.

Pole C to pole zwiększania licznika pętli. Zwykle wpisujemy tu jak zmienia się licznik po każdym wywołaniu kodu z wnętrza naszej pętli. Kleo zapisała i++ co oznacza zwiększenie wartości zmiennej i o jeden (jest to to samo co i=i+1).

Uwaga: Pola A, B i C mogą być wykorzystywane w różny sposób, zmienny może być więcej, warunki na kontynuację pętli mogą być bardziej złożone, a inkrementacja może zawierać więcej kodu. W praktyce jednak, jeśli nie maa potrzeby na budowanie skomplikowanych pętli for — tworzymy je jak najprościej się da.

Poniżej przedstawiam przykłady pętli for. Są to gołe pętle, które trzeba uzupełnić o funkcję main i inne elementy jeśli chcesz je skompilować i uruchomić.

Pętla od -10 do 10 z krokiem co 1:

for(int i=-10; i<10; i++)
{
// tu kod do wykonania w pętli
}

Pętla od 100 do 0 (włącznie z 0) z krokiem co 2:

for(int i=100; i>=0; i=i-2)
{
}

Pętla nieskończona for:

for( ; ; )
{
}

Pętla for ze zmiennoprzecinkowym indeksem pętli wypisująca wartość indeksu i jego kwadrat:

for(float x=-3.14; x+=3.14; x=x+0.01)
{
cout << x << " " << x*x << endl;
}

Pętla for zawarta w drugiej pętli for (tu tabliczka mnożenia bez formatowania):

for(int i=1; i<=10; i++)
for(int j=1; j<=10; j++)
{
cout << i << "*" << j << "=" << i*j << endl;
}

Ćwiczenie do samodzielnego wykonania w celu sprawdzenia swojej wiedzy (z odpowiedzią do której zajrzyj dopiero po uzyskaniu poprawnej liczby samodzielnie):

Napisz pętlę for, która przebiega od -1000 do 1000 (włącznie z obu stron) z krokiem co 3. Sprawdź, ile razy wykona się pętla?
Poprawna odpowiedź: 667 razy.

Przedstawiam pytania kontrolne (z odpowiedziami). Jeśli odpowiedziałeś źle — wróć do tekstu w celu znalezienia odpowiedzi lub wskazówek.

  • Jeśli i=5, to po wykonaniu i++ zwiększy się ona o 1. Odp.
  • Pętla: for(int i=-2; i>-4; i--) {} wykona się 3 razy. Odp.
  • Pętla: for(float x=0; x<10; x=x+0.1) wykona się 10 razy. Odp.
  • Zapis for(int i=0; ;i++) oznacza pętlę nieskończoną. Odp.

— Kleo, bardzo ładnie sobie poradziłaś z tym zadaniem — powiedziała pani
 — Dziękuję — odparła Kleo — jaką otrzymam ocenę?
 — Dostaniesz piątkę z małym minusem, za to, że wypisałaś tekst 10 razy zamiast 100.