Синтакса на контролна стуктура повеќекратно повторување со проверка на почеток од циклусот - while

while исказот е наједноставниот тип на циклус кој го нуди програмскиот јазик C++. Во продолжение е дадена синтаксата на овој исказ:

while (uslov)
     naredba;

Слично како и исказот if, while очекува програмерот да дефинира услов кој треба да биде задоволен (uslov) и наредба naredba (или блок од наредби '{ ... }') кои треба да бидат извршени кога ќе биде задоволен тој услов. Но, за разлика од if, while ќе ги извршува наредбите континуирано: сé додека условот има вредност true. Да разгледаме еден пример:

Пример
 
 
#include <iostream>
using namespace std;
 
int main()
{
int i = 1;
int s = 0;
while (i <= 5)
{
    cout << "Dodavam " << i << "." << endl;
    s = s + i;
    i++; //zgolemi go i
}
//1+2+3+4+5 = 15
cout << "Zbir: " << s << endl; //pechati 'Zbir: 15'
return 0;
}

На почеток, променливите i и s ги добиваат вредностите 1 и 0, соодветно. Потоа, бидејќи условот (1<=5) е задоволен, ќе се извршат неколкуте наредби дадени во блокот на while циклусот (ќе се отпечати "Dodavam 1.", вредноста на s ќе се зголеми за вредноста i=1 и, потоа, ќе се зголеми вредноста на i). Сега, наместо да заврши извршувањето на овие наредби и програмата да продолжи понатаму, повторно се врши проверка на while условот. Бидејќи тој (2<=5) е задоволен, програмата повторно ги извршува наредбите од while блокот (печати "Dodavam 2.", го зголемува s за вредноста i=2 и ја зголемува вредноста на i). Блокот од наредби ќе се изврши уште три пати (за i=3, i=4 и i=5), по што условот (6<=5) нема да биде задоволен (6<=5 има вредност false) и циклусот ќе заврши. На крај, програмата ја печати вредноста на променливата s - која претставува збир на првите 5 природни броеви 1+2+3+4+5=15.

Доколку уште при првата проверка условот uslov има вредност false, наредбите нема да бидат извршени ниту еднаш. На пример, во програмата дадена погоре, доколку на почетокот променливата i добиеше вредност 10, со што условот (10<=5) во while циклусот не би бил задоволен ниту еднаш, програмата немаше да ги изврши наредбите од while блокот и ќе отпечатеше "Zbir: 0".

Никогаш не заборавајте, во while блокот, да ја ажурирате променливата/променливите која е дел од while условот. Во спротивно, програмата постојано ќе извршува едни исти наредби и никогаш нема да заврши. Ваша обврска е да предизвикате, во одреден момент, неисполнување на while условот. Во програмата дадена погоре, тоа се прави преку зголемување на вредноста на променливата i. Бидејќи i е вклучена во условот uslov (i<=5), во одреден момент (кога i ќе добие вредност поголема од 5), циклусот ќе заврши со извршување.

Следнава програма демонстрира некои од работите кои ги дискутиравме погоре:

Пример
 
 
#include <iostream>
using namespace std;
 
int main()
{
int z = 10;
while (z < 5)
{
    cout << "Ova nema nikogash da se izvrshi." << endl;
}
z = 6;
while (z >= 1)
{
    cout << z << ", ";
    z--;
}
cout << "KRAJ NA NATPREVAROT." << endl;
//izlez: 6, 5, 4, 3, 2, 1, KRAJ NA NATPREVAROT.
z = 100;
while (z < 1000)
{
    //bidejki 'z' ne go azurirame nikade, uslovot
    //(z < 1000) kje bide sekogash zadovolen
    //naredbite kje se izvrshuvaat se dodeka ne ja ubieme
    //programata - na primer, so pomosh na
    //alatkite koi gi nudi Operativniot Sistem
    cout << z << endl;
}
return 0;
}
Пример

#include <iostream>
using namespace std;

int main(void)
{
    float r;
    r=1;
    while (r<=5)
        {
            cout<<"Za radius R ="<<r<<" Obemot na kruznicata = "<<2*3.14*r<<endl;
            r+=0.5;
        }
}