Instrukcje pętli warunkowych

Pętla while

Składnia pętli while jest następująca:

while(warunek) instrukcja;

lub z wykorzystaniem instrukcji złożonej:

while(warunek)
{
   inst1;
   inst2;
   ...;
}

warunek  - wyrażenie dające w wyniku wartość różną od 0, gdy warunek jest spełniony, lub wartość równą 0, gdy warunek jest niespełniony.

Działanie pętli while jest następujące:

Najpierw obliczany jest warunek. Jeśli w wyniku dostajemy wartość różną od 0 (prawdziwą), to wykonana zostaje instrukcja pętli (lub instrukcje wewnątrz klamerek instrukcji złożonej). Po wykonaniu instrukcji następuje powrót na początek pętli i znów jest sprawdzany warunek kontynuacji. Pętla powtarza swoje instrukcje dotąd, aż warunek stanie się fałszywy, czyli jego wartością będzie 0. W takim przypadku pętla przestaje wykonywać swoją instrukcję i następuje przejście do dalszej części programu leżącej za pętlą.

Przykład:

Poniższa pętla while dodaje do zmiennej a  liczbę 5 dopóki zawartość a  jest mniejsza od 1000. Gdy zmienna a  osiągnie wartość większą lub równą 1000, to warunek kontynuacji pętli stanie się fałszywy i dodawanie zostanie przerwane:

...
while(a < 1000) a += 5;

...

Ponieważ warunek kontynuacji jest sprawdzany w pętli while na samym początku przed rozpoczęciem obiegu, to może się zdarzyć, iż będzie on fałszywy przy wejściu do pętli. W takim przypadku pętla while nie wykona ani jednego obiegu.

Warunek pętli powinien być uzależniony w pewien sposób od wykonywanych instrukcji lub od czynników zewnętrznych. W przeciwnym razie możemy otrzymać tzw. pętlę nieskończoną (ang. infinite loop), która nigdy normalnie się nie kończy.

Przykład:

Poniższy przykład w nieskończoność wypisuje na ekranie tekst - Witaj w C++:

...
while(1) cout << "Witaj w C++ ";
...

Sumy ciągów liczb

// Suma ciągu liczb naturalnych
// (C) I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
  int g,suma,i;

  cout << "Sumowanie kolejnych liczb naturalnych do przekroczenia granicy\n"
          "--------------------------------------------------------------\n\n";

// odczytujemy granicę g

  cout << "Podaj granice sumowania g = "; cin >> g;
  cout << endl;

// w pętli sumujemy kolejne liczby naturalne aż suma przekroczy g

  suma = 0;
  i    = 1;
  
  while(suma <= g) suma += i++;
  
  
//  wyprowadzamy wyniki

  cout << "Suma = " << suma << " dla i = " << --i << endl << endl;
 
  system("pause");
  return 0;
}
Sumowanie kolejnych liczb naturalnych do przekroczenia granicy
--------------------------------------------------------------

Podaj granice sumowania g = 1000

Suma = 1035 dla i = 45

Aby kontynuować, naciśnij dowolny klawisz . . .

 

Pętla do...while

Składnia pętli  do...while jest następująca:

do instrukcja; while(warunek);

lub z wykorzystaniem instrukcji złożonej:

do
{
   inst1;
   inst2;
   ...;
} while(warunek);

warunek  - wyrażenie dające w wyniku wartość różną od 0, gdy warunek jest spełniony, lub wartość równą 0, gdy warunek jest niespełniony.

Działanie pętli do...while jest następujące:

Najpierw wykonywana jest instrukcja powtarzana w pętli. Po wykonaniu tej instrukcji obliczany jest warunek. Jeśli wynik jest różny od 0, to instrukcja jest powtarzana. W przeciwnym razie gdy warunek ma wartość 0, pętla zostaje przerwana i program przechodzi do wykonywania instrukcji leżących za pętlą.

Przykład:

Poniższa pętla do...while odejmuje od zmiennej a  5 dotąd, aż wynik tego odejmowania będzie liczbą ujemną. Zwróć uwagę, iż odejmowanie wykonywane jest zawsze przynajmniej jeden raz!

...
do a -= 5; while(a >= 0);

...

 

W pętli do...while warunek kontynuacji jest sprawdzany na końcu, po wykonaniu biegu. Zatem pętla do...while zawsze wykonuje przynajmniej jeden obieg - tym różni się od pętli while, która może nie wykonać ani jednego obiegu, gdy warunek jest fałszywy.

Jeśli warunek jest zawsze prawdziwy, to otrzymujemy pętlę nieskończoną.

Przykład:

Poniższy przykład w nieskończoność wypisuje na ekranie tekst - Witaj w C++:

...
do cout << "Witaj w C++ "; while(1);
...

Tajny kod

Program żąda podania od użytkownika tajnego kodu - w tym przypadku jest to liczba 854. Odczyt kodu wykonywany jest dotąd, aż użytkownik poda właściwy kod.

// Sprawdzanie kodu dostępu
// (C) I LO w Tarnowie
//------------------------

#include <iostream>

using namespace std;

int main()
{
  int kod;

  cout << "System ROBO 378-XV86\n\n";
  
// czekamy w pętli na poprawny kod dostępu

  do
  {
    cout << "Wpisz kod: "; cin >> kod;
  }
  while(kod != 854);
  
// ok, wprowadzono poprawny kod

  cout << "\nKod zaakceptowany\n\n";
    
  system("pause");
  return 0;
}
System ROBO 378-XV86

Wpisz kod: 125
Wpisz kod: 968
Wpisz kod: 854

Kod zaakceptowany

Aby kontynuować, naciśnij dowolny klawisz . . .

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe