Хочу получить удостоверение. Сколько стоит оплата? |
Оператор do-while
Цикл do-while отличается от циклов for и while тем, что использует проверку окончания цикла в конце тел цикла. В таком случае при использовании циклов do-while произойдет хотя бы один раз вход в цикл, а условие окончания цикла будет проверяться в конце первого прохода. В противоположность циклам for и while, которые выполняются много раз или вообще не выполняются ни разу, все зависит от переменной управления циклом. Поскольку цикл do-while выполняется по крайней мере один раз, то его лучше применять только в тех участках кода где нет сомнений, что цикл должен выполниться хотя бы раз. Так, например, если ваша программа создает меню пользователя, то в случае, если даже пользователь захочет сразу выйти из программы, он или она должен знать по каким клавишам происходит выход из программы. Ниже приведен синтаксис цикла do-while:
do { операция_1; операция_2; операция_3; операция_4; } while(тестовое_условие);
В приведенной ниже программе используется цикл do-while для расчета количества букв и слов во вводимой пользователем фразе:
//========================================================== // Name : dow_while.cpp // Author : Marat // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //========================================================== #include <iostream> using namespace std; #define LENGTH 80 #define NULL_TERM 1 int main() { char cSentence [LENGTH + NULL_TERM] ; int iNumChars = 0, iNumWords = 1; do { cout << "Please enter your sentence: "; cin.getline(cSentence,LENGTH) ; } while(cSentence [0] == '\0'); while(cSentence [iNumChars] != '\0') { if (cSentence [iNumChars] == ' ') iNumWords++; iNumChars++; } cout << "You entered " << iNumChars << " characters"<<" in "<<iNumWords << " words"<<endl; return 0; }
Результат:
Please enter your sentence: omni animal ex ovo You entered 18 characters in 4 words
В цикле do-while повторяется запрос на ввод предложения, и пользователь должен ввести хотя бы один символ. Если просто нажать клавишу ENTER, будет вызвана функция getline(), записывающая нулевой символ в позицию первого элемента массива. Как только предложение будет введено, программа перейдет к выводу рассчитанной статистики.
В приведенной выше программе мы впервые столкнулись с использованием директивы препроцессора #define:
#define LENGTH 80 #define NULL_TERM 1
Директива #define работает следующим образом. Всякий раз, когда программа встечает лексему LENGTH, последняя заменяется на 80, а NULL_TERM, соответственно, на 1. Директива #define очень удобна при задании размера массивов (см. ниже):
#define array_size 10 double a[array_size]; int b[array_size];
Достаточно изменить размер массивов (10) в директиве #define, как автоматически изменятся размеры массивов a и b.