Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 3:

Операторы управления

3.4 Операторы цикла

Циклический процесс или просто цикл это повторение одних и тех же действий. Последовательность действий, которые повторяются в цикле, называют телом цикла. Один проход цикла называют шагом или итерацией. Переменные, которые изменяются внутри цикла и влияют на его окончание, называются параметрами цикла.

При написании циклических алгоритмов следует помнить следующее. Во- первых, чтобы цикл имел шанс когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла. Во-вторых, условие должно состоять из корректных выражений и значений, определённых ещё до первого выполнения тела цикла.

В С++ для удобства пользователя предусмотрены три оператора, реализующих циклический процесс: while, do...while и for.

3.4.1 Оператор цикла с предусловием

На рис. 3.20 изображена блок-схема алгоритма цикла с предусловием. Оператор, реализующий этот алгоритм в С++, имеет вид:

while (условие) оператор;
			

здесь условие — логическое или целочисленное выражение, оператор — любой оператор языка С(С++) .

Алгоритм циклической структуры с предусловием

Рис. 3.20. Алгоритм циклической структуры с предусловием

Работает цикл с предусловием следующим образом. Вычисляется условие. Если оно истинно (не равно нулю), то выполняется оператор, и условие проверяется вновь. В противном случае цикл заканчивается, и управление передаётся оператору, следующему за телом цикла. Условие вычисляется перед каждой итерацией цикла. Если при первой проверке выражение равно нулю, цикл не выполнится ни разу. Тип выражения должен быть арифметическим или приводимым к нему.

Если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор:

while (условие)
{
	оператор 1;
	оператор 2;
	...
	оператор n;
}
			

Рассмотрим пример. Пусть необходимо вывести на экран таблицу значений функции y=e^{\sin (x)}\cos (x) на отрезке [0; π] с шагом 0.1. Применив цикл с предусловием, получим:

#include <stdio.h>
#include <math.h>
#define PI 3.14159
using namespace std;
int main ( )
{
	float x, y; //Описание переменных
	x=0; //Присваивание параметру цикла стартового значения
	//Цикл с предусловием
	while (x<=PI ) //Пока параметр цикла не превышает конечное значение
	{ //выполнять тело цикла
	y=exp ( sin ( x ) ) * cos ( x ); //Вычислить значение y
	//Вывод на экран пары x и y .
	printf ( " \t x =%5.2 f \t y =%5.4 f \n ",x, y );
	x+=0.1; //Изменение параметра цикла
	// (переход к следующему значению x )
	} //Конец цикла
	return 0;
}
			

В результате работы данного фрагмента программы на экран последовательно будут выводиться сообщения со значениями переменных x и y:

x= 1.00	y=1.2534	x= 2.10	y=-1.1969
x= 1.10	y=1.1059	x= 2.20 y=-1.3209
x= 1.20	y=0.9203	x= 2.30 y=-1.4045
x= 1.30	y=0.7011	x= 2.40 y=-1.4489
x= 1.40	y=0.4553	x= 2.50 y=-1.4576
x= 1.50 y=0.1918	x= 2.60 y=-1.4348
x= 1.60 y=-0.0793	x= 2.70 y=-1.3862
x= 1.70 y=-0.3473	x= 2.80 y=-1.3172
x= 1.80 y=-0.6017	x= 2.90 y=-1.2334
x= 1.90 y=-0.8328	x= 3.00 y=-1.1400
x= 2.00 y=-1.0331	x= 3.10 y=-1.0416
			
1.1.
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?