Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаРГР_Программирование.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.13 Mб
Скачать

2.2.3Алгоритмы обработки последовательностей целых чисел

Алгоритмы решения этих задач заключаются в анализе последовательности натуральных чисел из заданного диапазона, либо последовательности случайных целых чисел, получаемых с помощью функции random(n). Анализ числа заключается в проверке некоторого условия, которому должно удовлетворять данное число. Если условие выполняется, то производится некоторая обработка числа. Иногда при проверке условия приходится также выполнять циклические действия над числами. Таким образом, для решения задачи требуется объединить циклический и разветвляющийся алгоритм.

В качестве примера мы рассмотрим подобную задачу. Пусть, например, в последовательности целых чисел от 1 до Max требуется выделить числа, квадрат которых равен сумме квадратов других целых чисел. Схема алгоритма такой задачи приведена на рисунке 2.3.

Рисунок 2.3 – Алгоритм обработки последовательности целых чисел

2.2.4Алгоритмы табулирования значений функций

Одной из достаточно распространенных задач, в которых используются циклы, является задача табулирования значений некоторой функции. Суть задачи заключается в том, что необходимо изменять аргумент функции от некоторого начального значения до конечного значения с некоторым шагом и для полученных значений аргумента вычислять значения функции. На рисунке 2.4 приведен алгоритм табулирования некоторой функции f(x) для значений аргумента х, который изменяется от x0 до xMax с шагом step.

Рисунок 2.4 – Алгоритм табулирования функции

Эту задачу можно решать с помощью цикла whiledo, в котором параметр цикла будет последовательно увеличиваться на величину шага. Однако такой подход считается не совсем правильным. Обычно аргументы функций – вещественные числа, которые в памяти машины записываются с некоторой погрешностью. При многократном суммировании таких чисел погрешность накапливается и может стать заметной при большом количестве циклов. Поэтому при табулировании функций удобнее использовать цикл for, в котором параметром является целочисленный номер строки таблицы. Строки таблицы удобно считать пронумерованным с 0, тогда приращение аргумента на каждом шаге можно определять путем умножения шага на номер строки. Ошибка при этом не накапливается.

При выводе таблиц на экран или на печать желательно добиться, чтобы столбцы были ровными, десятичные разделители были в одной позиции. Для этого, прежде всего таблицы целесообразно выводить шрифтом Courier new, в котором все символы имеют одинаковую ширину. Но этого мало. Строки таблицы следует формировать с помощью функции format().

2.3 Пример создания проекта

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

2.3.1Компоненты для создания интерфейса проекта

Откроем новый проект. Назовем появившуюся форму frmWhileRepeatFor. В заголовке напишем текст «Построение циклов».

Для решения всех задач можно использовать одну и ту же форму, а интерфейсы задач расположим на отдельных закладках, используя компонент TPageControl.

На рисунке 2.5 показан интерфейс проекта с открытой закладкой «Корень».

Рисунок 2.5 – Интерфейс проекта

Создайте интерфейс своего проекта по аналогии с этим рисунком в соответствии со своим вариантом.

Если новые компоненты вам незнакомы, их описание Вы найдете ниже.