- оператор функция
- функция abs
- функция atof
- функция atoi
- функция atol
- оператор break
- оператор case
- функция cell и floor
- функция cin и cout
- функция clock
- оператор const
- оператор continue
- оператор default
- оператор define
- функция div
- оператор do
- функция fgetc
- функция fgets
- оператор for
- функция fprintf
- функция freopen
- функция fseek
- функция fwrite
- оператор if
- оператор itoa
- функция ltoa
- функция main
- функция setprecision и setw
- манипулатори oct, hex
- функция modf
- функция pow
- функция printf
- функция puts
- функция rand
- функция scanf
- функция sin - синус и cos - косинус
- функция sizeof
- функция sqrt
- функция srand
- функция strcat
- функция strchr
- функция strcmp
- функция strcoll
- функция strcspn
- функция strlen
- функция strcpy и strncpy
- функция strrev
- оператор struct
- функция strlwr и strupr
- оператор switch
- функция tan - тангенс
- функция tmpnam
- функция tolower и toupper
- функция void
- оператор while
- съпоставяне do и while
оператор do - цикъл с постусловие
Оператор do се ползва за формиране на цикъл с постусловие do while - първо се изпълнява вложеният оператор в тялото на този цикъл и едва след това се извършва проверка дали се продължава итеративния процес.
Описание: оператор do има следния синтаксис: do {<оператор>} while (<условие>); като обикновено <оператор> е съставен оператор.Семантиката на този вид цикъл е следната: след ключовата дума do се изпълнява съставният оператор в тялото на цикъла, изчислява се изразът, зададен чрез <условие> (подобно на if), и докато неговата стойност е истина се изпълнява отново съставният оператор в този цикъл.
Това се повтаря, докато стойността на условието престане да бъде истина (стойност, равна на нула). Съставният оператор в този цикъл винаги се изпълнява поне веднъж, дори ако още при първото изчисление на <условие> се получи стойност 0 (лъжа).
Примерната блок схема илюстрира работа на цикъл do.
В тялото на цикъл do while може да се съдържа един или повече цикъла for, while, do while.
цикъл do while - извеждане на цифрите 0..9
Преобладаващият брой примери за илюстриране действие на цикъл съдържа извеждане на позната последователност. Следващият пример извежда на екрана всички едноцифрени естествени числа - цифрите 0..9 чрез цикъл do while:
#include<iostream>
using namespace std;
int main()
{ int a=0;//inicializaciq na promenliwata "a"
cout<<"Da se systawi programa, chrez koqto s cikyl do-while \n";
cout<<"se izwevdat na ekrana wsichki ednocifreni chisla.\n";
cout<<"Primer: 9 Izhod 0123456789\n";
do //nachalo do while
{ cout<<a;
a++;//sledenata w usowieto na cikyla promenliwa narastwa s 1
} while (a<10); //indeksnata promenliwa "a" da ne dostiga 10
system("pause");//chaka natiskane na klawish ot klawiaturata
return 0;
}//kraj na programa do while
цикъл do while за проверка по вход
Разглежданият цикъл с постусловие do while се изпълнява задължително поне веднъж. Тази негова собеност го прави предпочитано средство за контрол на въвежданите данни. Нека разгледаме следната задача за проверка на въвежданите данни:
Намерете число N, което при делене на M се получава частно P и остатък O. Числата O,M,P,O са естествени.Така поставената задача се решава с един единствен ред: M=N*P+O, но само ако са въведени коректни данни.
В случая изискването е остатъкът да е по-малък от въведената стойност за делител. Реално в самото постусловие се извършва дали във въведените данни остатъкът е по голям от делителя. В тялото на цикъла има само оператори за извеждане на съобщение и въвеждане стойност на данни. Проверката за условие на валидност на въвежданите данни е и условие за продължаване на този цикъл.
Следващата примерна програма илюстрира идеята за проверка по вход чрез цикъл do while:
#include<iostream>
using namespace std;
int main()
{int M,N,O,P;
cout<<"Tyrsim chislo M, koeto razdeleno na N dawa chastno P i ostatyk O.\n";
cout<<"Da se systawi programa, chrez koqto s cikyl do while \n";
cout<<"se izwyrshwa prowerka za korektnost na wywevdanite danni.\n";
cout<<"Primer: N=11, P=10, O=9 Izhod M=119\n";
do {//nachalo do while
cout<<"delitel ";cin>>N;
cout<<"chastno ";cin>>P;
cout<<"ostyk ";cin>>O;
} while (O>=M); // kraj do while ostayk > delitel
M=N*P+O;
cout<<"chislo M = "<<M<<endl;
system("pause");
return 0;
}//kraj na programa do while
цикъл do while - съставно условие
В цикъл с постусловие може да се използва съставно условие за проверка - аналогията с оператор if за проверка на условие е пълна. Нека разгледаме следната задача за проверка на въвежданите данни чрез съставно условие: Търсим две последователни четни естествени числа, за които е въведена разликата от техните квадрати - също естествено число. Търсим тези числа.
АлгоритъмРазглеждаме уравнението (N+2)*(N+2) – N*N = R
N*N + 4*N + 4 - N*N = R
N = (R-4)/4
Трябва едновременно да се проверява за изпълнение на условие:
R да е кратно на 4, както и R>4
Следващата примерна програма илюстрира идеята за проверка на съставно по вход чрез цикъл do while
#include<iostream>
using namespace std;
int main()
{int M,N,P,R;
cout<<"Tyrsim dwe chetni estestweni chsila N i M, chiqto razlika na\n";
cout<<"tehnite kwadrati e P\n";
cout<<"Da se systawi programa, chrez koqto s cikyl do while \n";
cout<<"se izwyrshwa prowerka za korektnost na wywevdanite danni.\n";
cout<<"Primer: P=44 Izhod M=10 N=12\n";
//N*N +4*N + 4 - N*N = R => N = (R-4)/4
do {//nachalo do while
cout<<"razlika ";cin>>R;
} while (R<4 || R%4); // kraj do while razlika
M=(R-4)/4; N=M+2;
cout<<"chisla "<<M<<" i "<<N<<endl;
system("pause");
return 0;
}//kraj na programa do while
Задачи с подобни функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени примери.