- •Содержание
- •1. Алгоритмы и способы их описания
- •2. Алгоритмы линейной структуры
- •3. Алгоритмы разветвляющейся структуры
- •4. Алгоритмы циклической структуры
- •4.1. Структура и основные типы циклов
- •4.2. Алгоритмы нахождения суммы, произведения и количества вычисленных значений
- •4.3. Циклы с неизвестным числом повторений
- •4.4. Вложенные циклы
- •5. Алгоритмы обработки одномерных массивов
- •5.1. Ввод и вывод элементов одномерного массива
- •5.2. Нахождение максимального и минимального элементов массива
- •5.3. Сортировка элементов массива
- •5.4. Циклический сдвиг элементов массива
- •5.5. Добавление и удаление элементов массива
- •6. Алгоритмы обработки двумерных массивов
- •7. Алгоритмы, содержащие вспомогательные подзадачи
- •Задания к контрольной работе Задание №1.Организация линейного и разветвляющегося
- •Варианты заданий.
- •Задание №2. Организация циклов с известным числом повторений
- •Варианты заданий.
- •Задание № 3. Организация циклов с неизвестным числом повторений
- •Варианты заданий.
- •Задание № 4. Организация вложенных циклов
- •Варианты заданий.
- •Задание № 5. Обработка одномерных массивов
- •Задание № 6. Обработка двумерных массивов
- •Варианты заданий.
- •Задание № 7. Использование процедур и функций
- •Варианты заданий.
- •Рекомендации к выполнению контрольной работы
4.3. Циклы с неизвестным числом повторений
При решении некоторых задач может возникнуть ситуация, когда невозможно заранее определить количество повторений вычислений. В таких случаях речь идет о циклах с неизвестным числом повторений.
В циклах с неизвестным числом повторений вычислительный процесс завершается при выполнении некоторого дополнительного условия. Значения параметра цикла уже не задаётся в виде диапазона, а только указывается его начальное значение и шаг изменения. Тем не менее, организация цикла выполняется по стандартной методике, указанной в п. 4.1. Отличие заключается в том, что не любой тип циклического вычислительного процесса можно использовать. Тип цикла определяется в соответствии с заданным дополнительным условием завершения вычислений. Это однозначно исключает возможность использование цикла «Для» на основе блока модификации. Для определения количества шагов повторения цикла необходимо организовать счетчик.
Пример 4.3. Составить блок-схему алгоритма, вычисляющего значения функции у = ln(1 + 0.2∙x), при различных значениях параметра х, изменяющегося от xn ≤ 3 с шагом hx = -2. При этом вычислять у до тех пор, пока выражение под знаком логарифма остается больше 0. Определить количество (k) вычисленных значений y.
Перед решением задачи необходимо определить тип цикла, который будет использоваться. Вычисляемое выражение содержит «аномалию» (значение под знаком логарифма должно быть больше 0), которая в тоже время является условием завершения вычислений. Другими словами, необходимо вначале проверить возможность вычисления значения у, а только затем вычислять его. Поэтому в данном случае для организации вычислительного процесса можно использовать только цикл с предусловием (рис. 4.3).
В качестве исходных данных вводятся значения переменных хn, hx (блок 2). В блоке 3 задаются начальные значения для параметра цикла x и счетчика количества повторений цикла k. После этого, в блоке 4 одновременно проверяются условие продолжения цикла и возможная «аномалия» (выражение под знаком логарифма должно быть больше 0). В теле цикла для текущего значения х вычисляется и выводится соответствующее значение у (блоки 5-6), а также увеличивается значение счетчика вычисленных у (блок 7). В конце тела цикла выполняется переход к следующему значению параметра цикла х (блок 8). Цикл работает до тех пор, пока под знаком логарифма не появится выражение ≤ 0. После выхода из цикла в блоке 9 выводится переменная k – количество вычисленных значений у.
Результаты пошагового выполнения цикла в алгоритме, приведенном на рис. 4.3, представлены в таблице 4.3.
Таблица 4.3. Пошаговое выполнение цикла
|
№ шага |
Текущее значение х (в начале цикла) |
Результат проверки условия продолжения цикла (1+0.2∙x>0) |
Вычисл. значение у |
Текущие значения k |
Новое значение х (в конце цикла) |
|
1 |
3 (xn) |
Истина (1+0.2∙3=1.6 >0) |
0.47 |
k=1 |
1 |
|
2 |
1 |
Истина (1+0.2∙1=1.2 >0) |
0.18 |
k=2 |
-1 |
|
3 |
-1 |
Истина (1+0.2∙-1=0.8 >0) |
-0.22 |
k=3 |
-3 |
|
4 |
-3 |
Истина (1+0.2∙-3=0.4 >0) |
-0.92 |
k=4 |
-5 |
|
5 |
-5 |
Ложь (1+0.2∙-5=0 >0) |
|
|
|
