|
Увод в програмирането
alpha
|
Чрез операторите за цикъл се описва многократно изпълнение на 1 или няколко последователни оператори, които се наричат тяло на цикъла. Действия могат да се извършват преди или след изпълнението на цикъла.
Принципната разлика между операторите while и do while е в това къде се проверява условието за крайна цикъла. При while проверката се извършва в началото на цикъла, а при do while в края. От това следва, че тялото на цикъла в оператор do while винаги се изпълнява поне веднъж. While може да не се изпълни нито веднъж.
Разлика в синтатксиса:
while - след while ( израз ) няма ; ( точка и запетая )
do while - има ;
NB! Оператор може да е цикъл ( влагане на цикъл в цикъла )
while ( израз ) /whitespace/ -> изразът е празен
while ( израз ) {} -> the same
Компилаторът разглежда while без ; като начало на while, а със ; - край на do while;
Всички променливи в израза трябва да имат стойност:
дали при следващо изпълнение някоя от променливите се променя ако не се промененя - безкраен цикъл ( дали поне една от променливите се изменя ) -> зациклене умишлено безкраен чрез условие - в оператор прекъсване break
изразът никога не получава стойност false
Пример:
От клавиатурата се въвежда текст. Да се определи колко пъти даден символ се среща в текста.
#include <iostream>
#include <stdio.h> // <cstdio>
using namespace std;
int main()
{
int R, i;
char symbol;
cout<<"Въведете символ: ";
symbol = getchar();
getchar(); // за да работи правилно трябва да се махне символа от входящия буфер.
cout<<"Въведете текста: \n";
i = 0;
while( ( R = getchar() ) != '\n' )
if ( R == symbol )
i++;
cout<<"Честотата на символа в текста = "<<i<<endl;
return 0;
}
getchar() - връща int
Да се намери максимума и квадрата на максимума на двойка числа, въвеждана с потвърждаване.
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
short n1, n2, max, R;
long max2;
do {
cout<<"Въведете първото число: ";
cin>>n1;
cout<<"Въведете второ число: ";
if ( n1 >= n2 ) max = n1;
else
max = n2;
cout<<"max= "<< max << endl;
max2 = (long) max*max;
cout<<"max2= "<<max2<<endl;
cout<<"Ще въведете ли още числа? ( Y/N )";
R = getchar();
getchar();
} while ( R == 'Y' || R=='y' );
return 0;
}