Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программирование циклических процессов
Для многократного выполнения одного или нескольких операторов применяются операторы цикла. Имеется несколько типов оператора цикла.
1. Оператор цикла типа пересчета: For Счетчик = Начальное_значение To Конечное_значение [ Step Шаг ] Операторы Next [Счетчик] Здесь Счетчик – параметр цикла, переменная целого или вещественного типа, Начальное_значение и Конечное_значение – числа, задающие границы интервала изменения параметра цикла, Шаг – шаг изменения параметра цикла, если он не указан, то по умолчанию он принимается равным 1. Операторы – один или несколько операторов, которые повторяются до тех пор, пока Счетчик не достигнет конечного значения. Пример. Задан целочисленный массив A из N элементов. Нужно подсчитать количество четных элементов в этом массиве. Решение. Пусть S – переменная для результата, которой перед началом цикла присвоено нулевое значение. Поскольку длина массива известна, используем цикл типа пересчета.
S: = 0
i: = 1, 2, …, N
нет A(i) mod 2 = 0
да
S: = S +1
Вывод S
Рис.11. Пример цикла типа пересчета. Справа – фрагмент программы. 2. Оператор повторений с предусловием Do While … Loop:
Do While Условие Операторы Loop Указанные Операторы повторяются до тех пор, пока Условие остается истинным. Пример. Найти сумму числового ряда 1 – x1 + x2 – x3 + … (0 < x < 1) с точностью e = 0, 001. Из курса математики известно, что погрешность суммы знакочередующегося ряда не превышает абсолютной величины первого отброшенного члена. Поскольку в данном случае количество слагаемых заранее неизвестно, используем оператор цикла типа Do While. Пусть S – переменная для результата, EPS – заданная точность, А – очередное слагаемое На рис.12 показана блок-схема алгоритма и фрагмент программы.
S: = 1 A: = X
ô Aô > EPS
да
S: = S – A A: = –A*X
Вывод S
Рис.12. Пример цикла типа Do While с предусловием Справа – фрагмент программы. Комментарий. После первого шага величина S будет равна 1–X, а значение A, которое вначале было равно X изменится на – X2. После второго шага S и A окажутся равными соответственно 1–X+X2 и X3. Таким образом в S будет накапливаться сумма числового ряда до тех пор, пока очередное слагаемое по модулю остается больше заданного значения EPS. Если при первой проверке условие не будет выполнено, то цикл выполнятся не будет, следующим будет выполнен оператор вывода.
3. Оператор повторений с постусловием Do … Loop While: Do Операторы Loop While Условие Операторы повторяются до тех пор, пока Условие остается истинным. Отличие от предыдущего случая в том, что если Условие к моменту начала цикла ложно (имеет значение False ), указанные операторы будут хотя бы один раз выполнены. Для предыдущего примера вариант решения показан на рис.13. S: = 1
S: = S – A A: = –A*X
ô Aô > EPS да
Вывод S Рис.13. Пример цикла типа Do While с постусловием. Справа – фрагмент программы.
4. Оператор повторений с предусловием Do Until … Loop: Do Until Условие Операторы Loop Операторы повторяются до тех пор, пока Условие не станет истинным. Пример. В текстовом файле A.TXT содержится список фамилий. Нужно прочитать этот файл и вывести список фамилий на экранную форму. Поскольку неизвестно, сколько фамилий в списке, используем для чтения их из файла оператор цикла типа Do Until.
S: = 1 A: = X
конец файла? да нет
чтение S
вывод S Комментарий. Здесь используется функция EOF, аргументом которой является номер канала, присвоенный открытому для чтения файлу (в данном случае 1). Эта функция возвращает логическое значение True («истина») в случае, когда из открытого файла будут считаны все записи. До тех пор, пока все записи не считаны, значение функции EOF равно False («ложь»). В приведенном фрагменте записи будут считываться в переменную S до тех пор, пока не будет достигнут конец файла.
5. Оператор повторений с постусловием Do … Loop Until: Do Операторы Loop Until Условие Здесь Операторы повторяются до тех пор, пока Условие не станет истинным. Отличие от предыдущего случая в том, что если Условие к моменту начала цикла уже является истинным (имеет значение True ), указанные операторы будут хотя бы один раз выполнены. На рис.15 показан фрагмент программы, в котором решается задача предыдущего примера, но с использованием оператора повторений с постусловием.
S: = 1 A: = X
чтение S
вывод S конец файла? нет да
Рис.15. Пример цикла типа Do Until с постусловием. Справа – фрагмент программы. Комментарий. Фрагменты программ, представленные на рис.14 и 15 выполняют одни и те же действия и практически равносильны, за одним исключением. Если файл A.TXT окажется пустым, то есть в нем не будет записей, при выполнении второй программы будет выведено сообщение об ошибке, поскольку команда чтения из файла выполняется до того, как проверяется достигнут ли конец файла. В программе на рис.14 такая ошибка исключается, поскольку проверка значения функции EOF происходит в начале цикла.
Популярное:
|
Последнее изменение этой страницы: 2016-03-17; Просмотров: 1367; Нарушение авторского права страницы