русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 2640; Нарушение авторских прав


 

Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла (рис. 4.9-4.10).

Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

 
 

 


Рис.4.9.

 

 

 


Рис.4.10.

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

Начальные установки могут явно не присутствовать в программе, их смысл состоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла не рекомендуется.

Для удобства, а не по необходимости, в C++ есть три разных оператора цикла while, do while и for.

5.3.1.Цикл с предусловием (while).Цикл с предусловием реализует структурную схему, приведенную на рис.4.9, и имеет вид:

 

while ( выражение ) оператор

 

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



Пример (программа печатает таблицу значений функции у=х2+1 во введенном диапазоне):

#include <stdio.h>

int main(){

float Xn, Xk, Dx;

printf(“ Введите диапазон и шаг изменения аргумента: ");

scanf (“%f%f%f”, &Xn, &Xk, &Dx);

printf("| X | Y |\n"); // шапка таблицы

float X = Xn; // Установка параметра цикла

while (X <= Xk){ // Проверка условия продолжения

printf(“| %5.2f | %5.2f |\n", X, X*X+1

X+= Dx;

}

return 0;

}

Пример (программа находит все делители целого положительного числа):

#include <iostream.h>

int main(){

int num;

cout << "\nВведите число : ";

cin>> num;

int half = num / 2; // половина числа

int div = 2; // кандидат на делитель

while (div <= half){

if (!(num % div))

cout << div <<"\n";

div++;

}

return 0;

}

Распространенный прием программирования - организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия.

В круглых скобках после ключевого слова while можно вводить описание переменной1. (В старых версиях компиляторов это требование стандарта может не поддерживаться). Областью ее действия является цикл:

while (int x = 0){ ... /* область действия х */ }

5.3.2. Цикл с постусловием (do while).Цикл с постусловием реализует структурную схему, приведенную на рис.4.10, и имеет вид:

 

do оператор while выражение;

 

Сначала выполняется простой или составной оператор, составляющий тело цикла, а затем вычисляется выражение. Если оно истинно (не равно false), тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему.

Пример (программа осуществляет проверку ввода):

#include <iostream.h>

int main(){

char answer;

do{

court <<"\nКупи слона!";

cin >>answer:

}while (answer != 'y');

return 0;

}

Пример. Программа вычисляет квадратный корень вещественного аргумента X с заданной точностью Eps по итерационной формуле:

где - предыдущее приближение к корню (в начале вычислений выбирается произвольно), последующее приближение. Процесс вычислений прекращается, когда приближения станут отличаться друг от друга по абсолютной величине менее, чем на величину заданной точности. Для вычисления абсолютной величины используется стандартная функция fabs(), объявление которой находится в заголовочном файле <math . h>.

#include <stdio.h>

#include <math.h>

int main() {

double X, Eps; // аргумент и точность

double Yp, Y=1;// предыдущее и последующее приближение

printf("Введите аргумент и точность: ");

scanf("%lf%lf", &X, &Eps);

do{

Yp = Y;

Y = (Yp + X/Yp)/2;

}while (fabs(Y - Yp) >= Eps);

printf("\nKopeнь из %lf равен %lf", X, Y);

return 0;

}

5.3.3.Цикл с параметром (for).Цикл с параметром имеет следующий формат:

 

for ( инициализация; выражение; модификации) оператор;

 

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»), например, так.

for (int i=0, j = 2; ...

int k, m;

for (k=1, m=0; ...

Областью действия переменных, объявленных в части инициализации цикла, является цикл (В старых версиях компиляторов это требование стандарта может интерпретироваться по-другому). Инициализация выполняется один раз в начале исполнения цикла.

Выражение определяет условие выполнения цикла: если его результат, приведенный к типу bool, равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую. Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Пример (оператор, вычисляющий сумму чисел от 1 до 100):

for (int i=l, s = 0; i<=100; i++) s += i;

Пример (программа печатает таблицу значений функции у=х2+1 во введенном диапазоне):

#include <stdio.h>

int main(){

float Xn, Xk, Dx, X;

printf(“Введите диапазон и шаг изменения аргумента: ");

scanf (“%f%f%f”,&Xn, &Xk, &Dx);

printf(“| X | Y |\n");

for (X=Xn; X<=Xk; X+= Dx)

printf(“| %5.2f | %5.2f |\n", X, Х*Х + 1);

return 0;

}

Пример (программа находит все делители целого положительного числа):

#include <iostream.h>

int main(){

int num, half, div;

cout<< "\nВведите число : ";

cin >>num;

for (half = num / 2, div = 2; div <= half; div++)

if (!(num % div))

cout << div <<"\n";

return 0;

}

Два последних примера выполняют те же действия, что и примеры для цикла с предусловием, но записаны более компактно и наглядно: все действия, связанные с управлением циклом, локализованы в его заголовке.

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот по следующей схеме:

for (b1; b2; b3) оператор b1;

while (b2){

оператор b3;}

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

Чтобы избежать ошибок, рекомендуется:

- проверить, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов);

- проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;

- предусмотреть аварийный выход из цикла по достижению некоторого количества итераций (см. пример в следующем разделе);

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

Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.

Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз (например, если в цикле производится ввод данных).

Оператор for предпочтительнее в большинстве остальных случаев (однозначно - для организации циклов со счетчиками).

Оператором while удобнее пользоваться в случаях, когда число итераций заранее не известно, очевидных параметров цикла нет или модификацию параметров удобнее записывать не в конце тела цикла.

 



<== предыдущая лекция | следующая лекция ==>
Операторы ветвления | Операторы передачи управления.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.13 сек.