Изучение рекурсивных функций
Исследование свойств рекурсивной функции. Методика создания программы с использованием данной функции, выбор и обоснование языка программирования. Спецификация данной программы, состав и структура ее модуля. Листинг программы и оценка ее эффективности.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 20.07.2012 |
Размер файла | 433,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Цель
Изучить рекурсивную функцию, написать программу с использованием этой функции. Познакомиться с потоковым вводом и выводом. Создать файлы для записи и чтения. Создать свой заголовочный файл, в него поместить все функции кроме главной (main). Все вышеперечисленное реализовать в одной программе
1. Анализ задания
1.1 Текст задания
Даны положительные действительные числа a, x, E. В последовательности Y1, Y2, …, образованной по закону
Y0=a; Yi=(Yi-1+x/Yi-1)/2; i=1, 2, …;
Найти первый член Yn, для которого выполнено неравенство
|Y2n-Y2n-1|<E
1.2 Анализ задания
рекурсивный программа функция листинг
Для решения задачи разработать следующие функции:
· Функцию вывода на экран меню программы
· Функцию, вычисляющую выражение рекурсивным способом
· Функцию main(), которая организует работу всех разработанных функций; в этой функции создать файлы для записи и чтения
Предусмотреть эхо контроль введенных данных и защиту от некорректного ввода.
· Отдельно написать программу осуществляющую проверку вычислений
2. Реализация метода решения задачи
2.1 Проектирование программы
Последовательность действий:
1) Ввести переменные a, x, E.
2) Ввести счетчик i
3) Если неравенство выполнилось остановить выполнение рекурсивной функции, прописать все пройденные значения
4) Запросить разрешение на замену исходных данных
5) Записать результаты в файл
6) Написать меню
7) Вставить функцию защиты от некорректного ввода
8) В другой программе реализовать проверку (с помощью цикла)
2.2 Спецификация программы
При запуске программы пользователю выводится меня, состоящее из пунктов:
1) Ввод данных
2) Решение
3) Ответы
4) О программе
5) Помощь
6) Выход
Программа выполнена в виде одной основной функции tmain().Она предназначена для вычисления выражения с использованием рекурсии.
1) Если вы выбираете первый пункт меню «Ввод данных», сначала предлагается выбрать ввести данные или запросить их из файла. Если выбирается «С клавиатуры» нужно ввести переменные a, x, E, если «Из файла» программа обращается к файлу исходных данных. Везде присутствует эхо-контроль.
2) Во втором пункте меню «Решение» производятся только расчеты, если пользователь не заходил в первый пункт меню, программа попросит его это сделать.
3) В пункте «Ответы» осуществляется вывод на экран либо всех результатов (промежуточные и конечные), либо только конечного результата. Запрашивается разрешение на замену исходных данных, введенными с клавиатуры, если это было произведено.
4) В пункте меню «About» содержится информация о программе, версии, разработчике и годе разработки.
5) В пункте меню «Help» содержится информация с текстом программы.
6) Последний пункт - это выход из программы.
Программа разделена на два программных модуля: V11.cpp и myfunc.h. В первом находится основная функция main(), а во втором все остальные функции (rdFile, wtFile, wtFile, Data rec, ReadControl, vvod, MenuShow, SubMenuShow). В программе предусмотрена защита от некорректного ввода.
2.3 Состав программного модуля
Программа состоит из двух программных модулей: V11.срр и myfunc.cpp и одного заголовочного файла myfunc.h (в нем содержаться прототипы функций)
V11.срр:
· Содержит главную функцию main();
myfunc.cpp:
· Функция rdFile() - чтения из файла исходных данных
· Функция wtFile() - перезаписи исходных данных
· Функция wtFile() - записи файл конечного результата
· Функция Data rec() - расчета рекурсивной функции
· Функция ReadControl() - защиты от некорректного ввода
· Функция vvod() - ввода значений с клавиатуры
· Функция MenuShow() - визуализация шапки меню
· Функция SubMenuShow() - визуализация выбора для 1 и 3 пункта меню
В программе используются переменные всех типов (входные данные - int, char, double bool; выходные - double)
Входные данные программы приведены в приложении А, Таблица А.1.
Выходные данные программы приведены приложении А Таблица А. 2
2.4 Структура программного модуля
2.5 Верификация программы
В программе:
a |
x |
E |
Количество повторов |
|
1.7e56 |
1.58e41 |
1e-56 |
124 |
В проверке циклом:
a |
x |
E |
Количество повторов |
|
1.7e56 |
1.58e41 |
1e-56 |
124 |
Приложение А
Аннотация
Данный программный документ содержит информацию, которая может помочь пользователю лучше понять логическую структуру и код программы. В документе также приведены характеристики программы, ее назначение, описание входных и выходных данных.
1 Общие сведения
Данная программа написана на языке Microsoft Visual C++ 2008 и успешно функционирует в операционных системах Windows XP, Windows 7.
2 Функциональное назначение
Программа предназначена для вычисления заданного выражения (см. Анализ задания, пункт 1.1) методом рекурсии.
3 Используемые технические средства
Минимальные требования к системе:
· Минимальная частота процессора 800MHz
· 256 Mb RAM
· 6 000 kb свободного пространства на диске
· 4 Mb видеоадаптер
· Клавиатура
· Мышь
4 Вызов и загрузка
Программа приступает к работе после запуска файла «V11.exe» и занимает на диске 4 Кb. Данный файл достаточен для полного функционирования программного продукта и не нуждается в дополнительных файлах.
5 Входные данные
Входные данные представлены в Таблице А.1.
Таблица А.1. - Входные данные
Тип |
Идентификатор |
Назначение |
Диапазон |
|
double |
a |
Начальное значение У |
|a|<1.7e^308 |
|
double |
x |
Произвольное число, введенное пользователем |
|x|<1.7e^308 |
|
double |
E |
Точность |
1<E<10^(-323) |
6 Выходные данные
Выходные данные представлены в Таблице А.2
Таблица А.2 - Выходные данные
Тип |
Идентификатор |
Назначение |
Диапазон |
|
double |
Y.i |
Сколько раз вызывалась функция расчета |
-32768 < Y.i < 32767 |
|
double |
Y.yn |
Конечное значение функции расчета |
|Y.yn|<1.7e^308 |
7 Описание логической структуры
После загрузки файла «V11.exe» откроется консольное приложение с меню.
Через меню осуществляется переход ко всем частям программы.
При выборе первого пункта меню - «Ввод данных» осуществляется ввод данных (начального значения, константы и точности вычисления). Вызываются функция vvod().
При выборе второго пункта меню - «Решение» осуществляется решение задачи рекурсивным методом при этом вызывается функция rec().
В первом пункте осуществляется чтение исходных данных из файла, а во втором пункте осуществляется запись в файл входных и выходных данных.
Третий пункт - «Ответы» (вызывается функция rec()) - в консольное окно выводится результат выполнения программы, а также запрашивается разрешение на изменение исходных данных.
Из меню так же предусмотрен вызов справок о программе (вызов производится из главной функции main()).
8 Схемы программ
Рисунок А.1. - Схема программы функции main()
Рисунок А.2. - Схема программы функции rec()
Размещено на Allbest.ru
Подобные документы
История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.
курсовая работа [102,7 K], добавлен 23.12.2011Методика разработки, практической апробации программы в среде Turbo Pascal по построению графика прямой линии регрессии. Формирование блок-схемы данной программы, ее листинг. Построение графика с помощью математических формул и графического модуля Graph.
контрольная работа [46,2 K], добавлен 22.07.2011Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.
дипломная работа [1,0 M], добавлен 15.06.2014Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.
реферат [687,5 K], добавлен 28.10.2011Математическое обоснование метода решения задачи: определенный интеграл, квадратурная формула Симпсона (формула парабол). Словесное описание алгоритма и составление его блок-схемы. Выбор языка программирования. Текст программы решения задачи, ее листинг.
курсовая работа [593,6 K], добавлен 09.07.2012Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.
курсовая работа [532,7 K], добавлен 20.07.2014Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013Описание и функциональное назначение программы по оптимизации функции, ее логическая структура и используемые технические средства. Практическое применение программы, вызов и загрузка, входные и выходные данные, выполнение контрольного примера и листинг.
курсовая работа [337,4 K], добавлен 26.02.2012Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012