- •Программирование
- •«Программирование»
- •Чернигов чгту 2011
- •Ответственный за выпуск: Бивойно п.Г., доцент кафедры информационных и компьютерных систем, кандидат технических наук,
- •Введение
- •1Расчетно-графическая работа № 1. Функции и процедуры для расчетов по формулам
- •1.1 Задания к расчетно-графической работе
- •1.2 Пример создания проекта
- •1.2.1Создание интерфейса
- •1.2.1.1 Компонент ole-контейнер
- •1.2.1.2Компонент Group Box
- •1.2.1.3 Компонент Memo
- •1.2.1.4 Завершение работы над интерфейсом
- •1.2.2Создание процедур и функций
- •1.2.2.1Процедура очистки протокола
- •1.2.2.2Процедура инициализации формы
- •1.2.2.3Процедура считывания коэффициентов уравнения
- •1.2.2.4Функция для расчета по формуле
- •1.2.2.5Процедура вызова выполнения расчета по формуле
- •1.2.3Использование дополнительного модуля
- •1.2.4Форматирование результатов расчетов
- •1.2.5Контольный пример
- •1.3 Содержание отчета
- •Рекомендованая литература
- •2Расчетно-графическая работа № 2. Программирование циклов
- •2.1 Задания к расчетно-графической работе
- •2.2 Рекомендации по составлению алгоритмов решаемых задач
- •2.2.1Итерационные алгоритмы
- •2.2.2Алгоритмы вычисления сумм бесконечных рядов
- •2.2.3Алгоритмы обработки последовательностей целых чисел
- •2.2.4Алгоритмы табулирования значений функций
- •2.3 Пример создания проекта
- •2.3.1Компоненты для создания интерфейса проекта
- •2.3.1.1Компоненты PageControl и TabSheet
- •2.3.1.2Компонент CheckBox
- •2.3.1.3Дополнительные требования к интерфейсу
- •2.3.2Создание закладки для вычисления корня
- •2.3.2.1Интерфейс страницы вычисления корня
- •2.3.2.2Процедура вычисления корня
- •2.3.3Создание закладки для вычисления синуса
- •2.3.3.1Интерфейс страницы вычисления синуса
- •2.3.3.2Процедура вычисления синуса
- •2.3.4Создание закладки «Табулирование функции»
- •2.3.4.1 Интерфейс странички «Табулирование функции»
- •2.3.4.2Создание процедуры табулирования функции
- •2.3.5Создание закладки «Обработка последовательности целых чисел»
- •2.3.5.1Интерфейс странички «Обработка последовательности целых чисел»
- •2.3.5.2Создание процедуры обработки последовательности целых чисел
- •Рекомендованая литература
- •3Расчетно-графическая работа № 3. Обработка массивов
- •3.1 Задания для работы с одномерным массивом
- •3.2 Задания на сортировку одномерных массивов
- •3.3 Задания на обработку двумерных массивов
- •3.4 Краткая характеристика вспомогательных модулей
- •3.4.1Интерфейс модуля для работы с одномерными массивами
- •3.4.2Интерфейс модуля для работы с двумерными массивами
- •3.4.3Рекомендации по перестановкам элементов матрицы
- •Перечень основных процедур и функций для работы с типизированными файлами
- •Пример Создание проекта «Результаты аттестации»
- •4.1.1Требования к проекту
- •4.1.2Интерфейс пользователя для проекта
- •4.1.3Определение типов данных
- •4.1.4Настройка интерфейса пользователя
- •4.1.5Вспомогательные процедуры для работы с файлом Процедура выбора имени файла
- •4.1.5.1Процедура открытия файла
- •4.1.5.2Процедура вывода файла в StringGrid
- •4.1.6Процедуры работы со StringGrid1
- •4.1.7Процедуры реализации пунктов меню fileMenu
- •4.1.7.1Добавление данных из StringGrid1 в файл
- •4.1.7.2Поиск записи по фамилии
- •4.1.7.3Удаление записи по фамилии
- •4.1.7.4Сохранение файла под другим именем
- •Содержание отчета
- •Рекомендованая литература
2.2 Рекомендации по составлению алгоритмов решаемых задач
2.2.1Итерационные алгоритмы
Алгоритм решения уравнений, приведенных в таблице 2.1 заключается в следующем. Берется какое-нибудь приближенное значение корня уравнения х0 (начальное приближение) и подставляется в итерационную формулу. Полученное по итерационной формуле новое приближенное значение корня сравнивается с предыдущим. Если эти значения существенно отличаются друг от друга, то новое приближенное значение подставляется в итерационную формулу вместо старого и получается новое приближенное значение. Так продолжается до тех пор, пока новое и старое приближения станут достаточно близкими дуг к другу.
Примером итерационного алгоритма может служить алгоритм вычисления кубического корня методом Ньютона, который представлен на рисунке 2.1.
Рисунок 2.1 – Схема итерационного алгоритма
Суть метода заключается в том, что приближенное значение корня находится по формуле 2.1.
(2.1)
где а – число, из которого извлекается корень, xold – приближенное значение корня, xnew – более точное, чем xold значение корня.
Таким образом, формула позволяет последовательно уточнять значения корня, используя предыдущий результат. В качестве начального значения для x можно взять число, из которого извлекается корень.
Вычисления проводятся обычно до тех пор, пока разность между двумя последовательными приближениями по абсолютной величине не станет меньше некоторого, наперед заданного, достаточно малого числа.
Для реализации этого алгоритма используется цикл REPEAT.
Схема алгоритма, реализующего этот метод, представлена на рисунке 2.1.
В алгоритме предусмотрено прерывание цикла с помощью инструкции break в том случае, если переменная Xold равна нулю, для того, чтобы исключить деление на 0.
2.2.2Алгоритмы вычисления сумм бесконечных рядов
При решении задач из таблицы 2.2 производится суммирование последовательно вычисляемых членов ряда. Сходство таких алгоритмов с предыдущим заключается в том, что вычисление каждого следующего члена ряда производится по рекуррентной формуле исходя из значения предыдущего. Но предыдущее и последующее значения здесь не сравниваются.
Вычисление суммы имеет смысл только в том случае, если ряд сходится, то есть значения членов ряда постепенно уменьшаются. Поэтому накопление суммы производят до тех пор, пока очередной член ряда не станет меньше некоторого, наперед заданного, достаточно малого числа.
Ниже рассматривается пример вычисления синуса как суммы бесконечного ряда.
Синус можно представить как сумму бесконечного ряда 2.2.
(2.2)
Особенность данного ряда состоит в том, что каждый член ряда, начиная со второго, может быть найден их предыдущего по формуле 2.3.
(2.3)
Алгоритм вычисления синуса по формуле 2.2 с использованием соотношения 2.3 представлен на рисунке 2.2.
Рисунок 2.2 – Алгоритм вычисления суммы бесконечного ряда
Ряд 2.2 при больших значениях х сходится медленно, а факториал и «х в степени» растут очень быстро. Это приводит к тому, что все значащие цифры этих чисел перестают помещаться в разрядной сетке и, следовательно, обрезаются, вследствие чего результат искажается. Для того, чтобы избежать переполнения или потери значащих цифр при больших значениях х в рассмотренном алгоритме целесообразно выполнить предварительную обработку переменной х. Для этого следует в начале алгоритма реализовать цикл, в котором переменная х будет уменьшаться на величину периода синуса, который равен 2π, до тех пор, пока х не станет меньше, чем 2π.