Изучение рекурсивных функций

Исследование свойств рекурсивной функции. Методика создания программы с использованием данной функции, выбор и обоснование языка программирования. Спецификация данной программы, состав и структура ее модуля. Листинг программы и оценка ее эффективности.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.