- •Самарский государственный технический университет
- •Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 29.11.02.
- •For (инициализация; условие; модификация) операторы
- •Инкремент, декремент и составные операции присваивания
- •Составные операции присваивания
- •Порядок выполнения работы
- •Задание на выполнение лабораторной работы
- •Примеры составления прогамм
- •Листинг программы
- •Результат выполнения программы
- •Листинг программы
- •Результат выполнения программы
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Приложение Математические функции
- •Типы данных
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Самарский государственный технический университет
Филиал в г. Сызрани
Кафедра электротехники, информатики и компьютерных технологий
СОСТАВЛЕНИЕ И ОТЛАДКА ПРОГРАММ
С ЦИКЛАМИ
Методические указания к лабораторной работе № 3
по дисциплине "Программирование и основы алгоритмизации"
Составитель: Будин В.И.
Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 29.11.02.
СЫЗРАНЬ 2002
Лабораторная работа №3
СОСТАВЛЕНИЕ И ОТЛАДКА ПРОГРАММ С
ЦИКЛАМИ
Цель работы – закрепление теоретических знаний и приобретение практических навыков по составлению программ с циклическими вычислительными процессами и их отладке в интегрированной среде Borland C++5.
Организация циклов
Для программирования многократно повторяющихся действий применяются операторы цикла. Любой цикл состоит в общем случае из следующих операций: начальные установки (инициализация), проверка условия выхода из цикла, выполнение операторов циклического вычислительного процесса, модификация (изменение) параметра цикла (переменной, изменяющейся в цикле и используемой в формировании условия).
В зависимости от местоположения условной операции выделяют две основных схемы операторов цикла: цикл с предусловием (рис. 1а) и цикл с постусловием (рис. 1б).
а) б)
Рис. 1. Блок-схемы циклического алгоритма:
а - цикл с предусловием; б – цикл с постусловием
Первая схема в С++ реализуется операторами while и for, а вторая do.
Оператор цикла while имеет вид:
while (условие) тело_цикла,
где тело_цикла – блок операторов циклического вычислительного процесса вместе с оператором модификации параметра цикла.
Пример. Сумма n первых чисел натурального ряда.
. . . . . . .
int n; cin>>n;
int s=0, i=1;
while (i<=n)
{s=s+i; i=i+1;}
cout<<s;
. . . . . . .
Оператор for удобнее, чем while, так как его заголовок более информативен (содержит все основные параметры цикла). Он имеет следующую форму:
For (инициализация; условие; модификация) операторы
Любая из частей оператора for может быть опущена, но точки с запятой необходимо оставить на своих местах (пустые операторы), причем, если отсутствует условие, то результат проверки всегда истинен.
Пример. Вычисление факториала n!.
. . . . . . .
int n,r; cin>>n;
for (int i=1, r=1; i<=n; i=i+1)
r=r*i; cout<<"n!="<<r;
. . . . . . .
Для заголовка цикла for было введено специальное графическое обозначение. Для выше рассмотренного примера блок-схема оператора for будет иметь следующий вид:
Рис. 2. Пример использования оператора for
Оператор do является циклом с постусловием (рис. 1б) и используется в тех случаях, когда условие формировать в начале итерационного процесса не совсем удобно, а так же когда цикл необходимо выполнить хотя бы один раз. Этот цикл имеет следующую форму записи:
do тело_цикла while (условие)
Пример. Вычислить с заданной точностью eps по итерационной формуле
yi=(yi-1+x/yi-1)/2 при начальном приближении y0=1.
. . . . . . .
double x, eps, y0, y=1;
cin>>x>>eps;
do { y0=y; y=(y0+x/y0)/2;
} while (fabs (y-y0)>=eps);
cout<<y;
. . . . . . .
В практических задачах часто используются вложенные циклы, т.е. когда один цикл выполняется внутри другого. Во вложенных циклах в соответствии с логикой построения программы можно использовать любые комбинации операторов while, for, do.
В циклических структурах возможно зацикливание (бесконечный цикл) из-за вычислительной неустойчивости алгоритма или его неправильного программирования. Для исключения этой ситуации в операторах цикла на этапе отладки программы необходимо предусмотреть дополнительную проверку на сходимость или достижение заданного предельного числа повторений цикла. Существует два оператора выхода из цикла: goto и break.
Оператор goto идет вразрез с правильным стилем программирования и его в настоящее время использовать не рекомендуется, кроме исключительных случаев, когда без него сложно обойтись.
Обычно выполнение цикла прерывают с помощью оператора break. В результате управление передается оператору, следующему непосредственно за циклом.