---
# System prepended metadata

title: 09 Pętle

---

#  09 Pętle
Pętle to konstrukcje językowe służące do zdefiniowania szeregu instrukcji, które będą powtarzane wielokrotnie. 
Pętle **for**, **while** i **do..while** wykonują się tylko wtedy gdy warunek jest prawdziwy. 


## Pętle while i do..while
Pętla **while** wykonuje się tak długo, jak długo prawdziwy jest warunek (warunki) zapisany w nawiasach instrukcji while.
Część inicjacyjną licznika tworzy się najczęściej przed blokiem pętli, natomiast część operacyjna jest wykonywana wewnątrz pętli.
Pętla może się nie uruchomić jeżeli warunek na samym początku nie będzie prawdziwy.
```cpp=
while(warunek)
{ 

    //instrukcje powtarzane w pętli

} 
```
![](https://i.imgur.com/hhC4Vdi.png)

Różnica między pętlą **while** i **do..while** polega na tym, iż w przypadku pętli **while** warunek sprawdzany jest na początku, zaś w **do..while** na końcu bloku instrukcji. W pętli **do..while** instrukcje wykonują się przynajmniej jeden, raz ponieważ warunek jest sprawdzany na końcu.Najpierw pętla wykonuje instrukcje a potem sprawdza warunek (warunki).
```cpp=
do
{ 

    //instrukcje powtarzane w pętli

} 
while (warunek);
```
![](https://i.imgur.com/YX5EsEO.png)

## Pętla for
Pętla for składa się najczęściej z trzech części oddzielonych średnikami oraz instrukcji.
```cpp=
for(część A; część B; część C)
{
	//część D 
}
```

część A: nadawanie początkowej wartości zmiennej (licznikowi);
część B: warunek kończący pętlę **for**;
część C: zwiększenie (zmniejszenie) licznika pętli;
część D: powtarzana instrukcja bądź blok instrukcji.

*PAMIĘTAJCIE, JEŻELI MAMY WIĘCEJ NIŻ JEDNĄ INSTRUKCJĘ W PĘTLI, KONIECZNE JEST UJĘCIE ICH W NAWIASACH {....}*

**Przykład:**
Poniżej mamy przykład pętli, która wykona się 10 razy
```cpp=
for(int i=1; i<=10; i++)
 {
    //instrukcje powtarzane w pętli
 } 
 ```
Zmienna **i** to liczba typu całkowitego nazywana zmienną sterująca pętlą albo iteratorem pętli. W powyższym przykładzie w pierwszym wywołaniu pętli jej wartość startowa jest równa 1 **[i=1]**. W każdym przebiegu pętli zwiększamy wartość **i** o dokładnie jeden. Warunek i<=10 określa koniec powtarzania instrukcji. 

Przykład pętli zliczającej w dół:
```cpp=
for(int i=10; i>=1; i--)
 {
    //instrukcje powtarzane w pętli
 } 
 ```
 Zmienna **i** w tym przypadku ma wartość 10 **[i=10]**, po każdym przebiegu **i** zmniejsza się o 1. Pętla wykonuje się do czasu kiedy **i** będzie większe lub równe 1 **[i>=1]**, czyli do czasu kiedy warunek będzie prawdziwy.


**ZADANIA Z LEKCJI INFORMATYKI:**
Wczytywanie liczby od której startuje wypisywanie 6 liczb.
Pętla **while** powoduje, że jeżeli **a** będzie większe od 44 lub mniejsze niż 1, to petla jeszcze raz prosi o podanie **a**.
Pętla for wypisuje 6 kolejnych liczb całkowitych zaczynając od wartości zmiennej **a**.
```cpp=
#include <iostream>

using namespace std;

int main()
{ //x liczby nie większj niż 44
    int lotto, a,ile ;
    cout<<"Podaj A: ";
    cin>>a; // 1<=a<=44
    while (a>44 || a<1){
        cout<<"Podaj A: ";
        cin>>a;
    }
    ile=a+6;
    for (int i=a;i<ile; i++){
        cout<<i<<" ";
    }
    return 0;
}
 ```
 
Kod dla podstawowego losowania liczb
```cpp=
#include <iostream>
#include <time.h>
using namespace std;

int main()
{

    srand(time(NULL));
    
    liczba=rand()%49+1;
    cout<<liczba;
    return 0;
}
 ```