HАИМЕНОВАНИЕ: Составление и отладка программ с применением операторов цикла
1.ЦЕЛЬ РАБОТЫ: Научится использовать циклические операторы
2.ПОДГОТОВКА К ЗАНЯТИЮ:
2.1. Изучить предложенную литературу.
2.2. Подготовить бланк отчёта.
3.ЛИТЕРАТУРА:
3.1 Белов В.В., Чистякова В.И. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное. Учебное пособие. – М.: Горячая линия – Телеком, 2009
3.2 Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования. – Форум, 2010
3.3Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования. – М.: Издательский центр «Академия», 2008
3.4Семакин И.Г., Шестаков А.П. Основы программирования. – М.: Издательский центр «Академия», 2008
4. ПЕРЕЧЕНЬ ОБОРУДОВАНИЯ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ:
4.1. Персональный IBM PC.
5.ЗАДАНИЕ:
5.1 Используя циклы while, do - while и for, написать три варианта программы получения на экране таблицы синусов для значений аргумента в диапазоне от 0 до π/2 с заданным числом шагов.
5.2 Вычислить и вывести все члены числового ряда
|
|
значение которых превышает 10 в -5.
5.3 Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
6. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ:
6.1 По предложенной литературе изучить необходимый материал;
6.2 Выполнить задания практического занятия и записать листинг программы;
6.3 Дать ответы на контрольные вопросы;
7. СОДЕРЖАНИЕ ОТЧЕТА:
7.1 Наименование и цель работы
7.2 Код программы
7.3 Записать результат (листинг) выполненых заданий.
7.4 Ответы на контрольные вопросы
7.5 Вывод о проделанной работе
8. КОНТРОЛЬНЫЕ ВОПРОСЫ:
8.1 Зачем нужен фаил l i m i t s. h?
8.2 Когда программа будет «топтаться на месте»?
8.3 Что делает-«i++»?
8.4 Отличие do... while от repeat... u n t i l?
ПРИЛОЖЕНИЕ:
В Си, как и в Паскале, существуют все три типа операторов цикла: цикл с предусловием, цикл с постусловием и цикл с параметром.
Цикл с предусловием. Формат оператора цикла с предусловием:
while (выражение) оператор;
Цикл повторяет свое выполнение, пока значение выражения отлично от нуля, т. е. заключенное в нем условие цикла истинно.
В качестве примера использования оператора цикла рассмотрим программу вычисления факториала целого положительного числа N!. Сопоставим программу решения этой задачи, написанную
на Паскале, с программой на Си.
Обратите внимание на операторы в теле цикла. Конечно, и в Си-программе можно было написать два оператора присваивания, объединив их фигурными скобками. Однако использованный способ записи более лаконичен и более характерен для Си. Этот же самый оператор можно было записать еще короче: F*=i++.
При практическом использовании этой программы не следует забывать, что факториал - очень быстро растущая функция, и поэтому при определенных значениях N выйдет из диапазона, соответствующего типу long int. Задав для переменной F тип unsigned long, можно сдвинуть эту границу, но этого может оказаться недостаточно. Предлагаем в качестве самостоятельного задания исследовать предельные значения N для двух указанных типов переменной F.
|
|
Интересно свойство следующего оператора: while (1);
Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается. Тело в этом цикле представляет собой пустой оператор. При исполнении такого оператора программа будет «топтаться на месте».
Рассмотрим еще один пример использования оператора цикла while. Вернемся к задаче итерационного вычисления суммы гармонического ряда: 1 +1/2+1/3+... с заданной точностью ε. Снова сопоставим программу на Си с программой на Паскале.
Файл l i m i t s. h, подключаемый препроцессором, содержит определения предельных констант для целых типов данных. В частности, константа с именем INT_MAX равна максимальному значению типа i n t в данной реализации компилятора. Если для типа int используется двухбайтовое представление, то INT_MAX=327 67.
В этом же заголовочном файле определены и другие константы:
INT_MIN=-327 68; LONG_MAX=2147483647 И Т.Д.
Цикл с постусловием. Формат оператора цикла с постусловием:
do оператор while (выражение);
Цикл выполняется до тех пор, пока выражение отлично от Нуля, т.е. заключенное в нем условие цикла истинно. Выход из Цикла происходит после того, как значение выражения станет ложным, иными словами равным нулю. Таким образом, в отличие от оператора repeat... u n t i l, используемого в Паскале, где в конце пишется условие выхода из цикла, в операторе do... while
в Си в конце пишется условие повторения цикла. В качестве примера рассмотрим программу вычисления N!, в которой используется цикл с постусловием, и сопоставим ее с аналогичной программой на Паскале.