Увод в програмирането
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; }