Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
17.04.2013
Размер:
340.99 Кб
Скачать

МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОБНОЙ ТЕХНИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра “Информатика и программное обеспечение вычислительных систем”

Учебная дисциплина “Информатика”

“УТВЕРЖДАЮ”

Зав. кафедрой ИПОВС

Шаньгин В.Ф.

Лабораторная работа

Разработка циклических программ на языке С.

Разработала:

к .т. н. Ашарина И.В.

МОСКВА - 1998

Цель работы: научиться составлять программы с использованием операторов цикла for, whilе, do-while.

Циклы в практике программирования – это повторяющиеся выполнения одних и тех же простых или составных операторов.

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

Оператор цикла for в С++ является универсальным, т. к. компоненты цикла могут быть произвольными выражениями.

Общая форма записи оператора цикла for имеет вид:

for(<инициализация управляющих переменных цикла>; <проверка на продолжение цикла>;

<инкремент/декремент управляющих переменных цикла>)<оператор>;

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

1. Самый простой вариант использования цикла for очень похож на аналогичные операторы цикла в других языках программирования:

For (n=10; n<=10; n++) у=n * n;

Однако существует еще много других возможностей его применения.

2. Можно применять операцию уменьшения для счета в порядке убывания:

For (n=10; n=>0; n--)

printf(“%d секунд ! \n”, n);

printf(“пуск !

3. При желании можно вести счет двойками, десятками и т.д.

for (n=2; n<60; n=n+13)

printf ("%d \n", n );

Вместо выражения n=n+13 можно воспользоваться записью n+=13. Знак += определяет аддитивную операцию присваивания, в результате выполнения которой величина, стоящая справа, прибавляется к значению переменной, расположенной слева.

4. Можно вести подсчет с помощью символов, а не только чисел:

for(ch=’a’;ch<=’z’;ch++)

printf(“Величина кода ASCII для %c равна %d .\n”,ch,ch);

При выполнении этого оператора будут выведены на печать все буквы от а до z вместе с их АSСII-кодами.

5. Можно проверить выполнение некоторого произвольного условия, отличного от условия, полагаемого на число итераций:

for (num=1; num* num* num<=21б; num++)

printf (“%5d%5d\n”, num, num* num ' num);

Это целесообразно в том случае, когда более критично ограничение максимального значения, а не количества итераций.

6. Можно сделать так, чтобы значение некоторой величины возрастало в геометрической, а не в арифметической прогрессии, т.е. чтобы вместо прибавления фиксированного значения на каждом шаге цикла выполнялось умножение:

for (debt=100.0; debt<150.0; debt=debt*1.1)

printf ("Ваш долг теперь $%.2f.\n", debt);

Для выражения debt=debt*1.1 существует сокращенная запись: debt*=1.1, в которой знак *= определяет мультипликативную операцию присваивания, при выполнении которой значения переменой, расположенной слева, умножается на величину, стоящую справа.

7. В качестве третьего выражения можно использовать любое правильно составленное выражение. При этом его значение будет изменяться при каждой итерации:

for ( х=1; у<=75; у=5*х++10);

printf ("%10d %10d \n", х, у);

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

Следует отметить, что хотя приведенный пример правилен, он не может служить иллюстрацией хорошего стиля программирования.

8. В цикле for можно опустить одно или более выражений (но при этом нельзя опускать символы "точка с запятой"). Необходимо только включить в тело цикла несколько операторов, которые рано или поздно приведут к завершению его работы.

ans=2;

for ( n=3; ans<=25; )

ans=ans*n;

Тело следующего цикла

for( ; ; )

printf ("Мы написали бесконечный цикл \n");

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

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

8а. Оператор break служит для продолжения работы программы после окончания текущего цикла и используется, если после выхода из цикла for необходимо выполнить оставшуюся часть программы.

8б. Функция exit; объявленная в заголовочном файле STDLIB.H, позволяет выйти из программы. Эта функция используется в том случае, если нужно прекратить выполнение шагов цикла и выйти из программы.

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

Пример:

// почтовые тарифы

#define FIRST 20 // 20 центов за первую унцию веса

#define NEXT 17 // 17 центров за каждую следующую.

void ( )

{

int ounces,cost;

printf ("стоимость унции \n");

for(ounces=1, cost=FIRST; ounces<=16; ounces++,cost+= NEXT)

printf ("%Зd %7d \n", ounces, cost);

Здесь операция "запятая" используется в первом и третьем выражениях: в первом случае она позволяет инициализировать переменные ounces и cost; во втором – на каждой итерации увеличивать значение ounces на 1, а cost – на 17 (величину константы NEXT). Все вычисления осуществляются в спецификации цикла for.

Соседние файлы в папке C_cicles