Оператор цикла с последующим условием
Тема 2. Операторы цикла.
В практике программирования циклом называют многократное автоматическое выполнение некоторых действий (операторов). Повторяемый фрагмент называют телом цикла.
В языке C++ используются операторы цикла трех видов:
Ø с предварительным условием,
Ø с последующим условием,
Ø с параметром.
Оператор цикла с предварительным условием
Оператор цикла с предварительным условием (с предусловием) является наиболее общим по сравнению с другими конструкциями, которые легко моделируются с помощью оператора цикла с предусловием и, вообще говоря, могут считаться несколько избыточными, в основном служащими для удобства программирования.
Оператор цикла с предусловием выполняет повторяющиеся действия до тех пор, пока заданное условие истинно, и выглядит следующим образом:
while(условие входа в цикл) оператор;
если тело цикла состоит из одного оператора или
while(условие входа в цикл){ оператор1;
оператор2;
. . .
операторN;
} //end while
если тело цикла состоит из блока операторов.
Если условие входа в цикл сразу ложно, ни один из операторов, образующих тело цикла, не будет выполнен ни одного раза, то есть цикл будет полностью пропущен.
Тело цикла обязательно должно содержать действия, влияющие на условие входа в цикл. Иначе цикл станет ”бесконечным”.
Пример 2.1. Распечатать значение переменной m, изменяющейся от 1 до 100, с помощью оператора цикла с предусловием.
#include <iostream>
using namespace std;
int main()
{ int m = 1;
while(m <= 100)
{ cout << m << ' ';
m++;
}
return 0;
}
Пример 2.2. Вычислить среднее арифметическое значение введенной с клавиатуры последовательности целых чисел. Признаком завершения процесса ввода чисел служит ввод нуля.
#include <iostream>
using namespace std;
int main()
{ int dig, sum=0, cnt=0, middle;
cout << "Введите число ";
cin >> dig;
cnt++;
sum = dig;
while(dig != 0)
{ cout << "Введите число ";
cin >> dig;
cnt++;
sum += dig;
}
cnt--;
if (cnt != 0) { middle = sum/cnt; // вычисление будет с
// точностью до целого
cout << "Среднее арифметическое = ";
cout << middle <<endl;
}
else cout << "Последовательность пустая" << endl;
return 0;
}
Оператор цикла с последующим условием
Синтаксис оператора цикла с последующим условием (с постусловием) имеет вид:
do{оператор;} while (условие продолжения цикла);
или
do { оператор1;
оператор2;
. . .
операторN;
} while (условие продолжения цикла);
Если в теле цикла содержится только один оператор, то операторные скобки пишутся для устранения неоднозначности, обусловленной наличием while, так как это может интерпретироваться как заголовок структуры while с пустым телом цикла.
Действия, определяемые оператором, выполняются до тех пор, пока условие продолжения цикла не станет ложным или равным нулю. Его основное отличие от оператора while состоит в том, что тело цикла выполняется хотя бы один раз, так как проверка условия продолжения происходит после выполнения операторов, образующих тело цикла.
Тело оператора цикла с последующим условием обязательно должно содержать действия, влияющие на условие продолжения цикла, так как иначе цикл становится "бесконечным".
Пример 2.3. Вывести на экран значение переменной с, изменяющейся от 'A' до 'Z', с помощью оператора цикла с постусловием
#include <iostream>
using namespace std;
int main()
{ char sym;
cout << “Выводим на экран алфавит” << endl;
sym = 'A'-1;
do { sym++;
cout << sym << ' ';
} while (sym<'Z');
return 0;
}
Пример 2.4. Вводить с клавиатуры последовательность символов, пока не будет введена точка. Подсчитать, сколько в этой последовательности скобок.
#include <iostream>
using namespace std;
int main()
{ char sym;
int cnt = 0;
do { cout << "Введите символ ";
cin >> sym;
if (sym == '{' || sym == '}' || sym == '[' || sym == ']' || sym == '('
|| sym == ')') cnt++;
} while (sym != '.');
cout << "Количество скобок = " << cnt << endl;
return 0;
}