Программа исследования функций
Пояснительная записка к курсовой работе по дисциплине “Основы алгоритмизации и программирования”
Выполнил : студент гр. 96ВВ3 Гаврищенко О.Н.
Пензенский государственный технический университет, Кафедра “Вычислительная Техника”
1997
Введение
В настоящее время индустрия производства компьютеров и программного обеспечения для них является одной из наиболее важных сфер экономики развитых стран. Ежегодно в мире продаются десятки миллионов компьютеров. Только в США объем продаж компьютеров составляет десятки миллионов долларов и постоянно продолжает расти.
В чем же причины такого стремительного роста индустрии персональных компьютеров и их сравнительная выгодность для многих деловых применений?
1. Простота использования, обеспеченная с помощью диалогового способа взаимодействия с компьютером.
2. Относительно высокие возможности по переработке информации, наличие программного обеспечения, а так же мощных систем для разработки нового программного обеспечения.
Имеются и другие причины.
Язык С++ - универсальный язык общего назначения, область приложений которого - программирование систем в самом широком смысле. Кроме этого, С++ успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С++ осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем.
1 Постановка задачи
Задача курсовой работы состоит в разработки системы , позволяющей исследовать некоторые функций:
y = sin(x);
y = cos(x);
Cистема должна обеспечивать выполнение следующих функций:
Выбор из предложенного списка исследуемой функции;
Задание диапазона (диапазонов) изменения параметров;
Вывод значений функции на экран и при необходимости в файл , имя которого задаётся пользователем;
Вывод на экран графика функции.
2 Описание программы
2.1 Общие сведения
Данная программа предназначена для исследования математических функций (см. пункт 1). Программа do.cpp разработана на алгоритмическом языке Turbo C++ v.3.0. , и предназначена для использования на персональном компьютере IBM PC/XT или совместимым с ним.
2.2 Краткое описание метода решения задачи
Работа с программой организована в графическом режиме 640х480 точек , 16 цветов через меню, по пунктам которого можно передвигать цветовой курсор с помощью клавиш управления курсором.
Основное меню описано при помощи массива структур menu_ на 5 элементов , который заначительно упрощает работу программы при обращении к этому меню. Каждый пункт основного меню (кроме "Выход") содержит в себе подменю , каждый пункт которого вызывает какие-либо действия программы.
Главное меню состоит из следующих пунктов:
"Функция" - выбор исследуемой функции;
"Диапазон" - задание минимального и максимального значения Х для отображения графика функции и занесения значений в таблицу;
"Масштаб" - задание масштаба по оси X;
"Таблица" - вывод значений функции на экран или в файл (имя файла задаётся пользователем) , изменение числа выволимых значений;
"Выход" - завершение работы программы.
Программа разбита на функциональные модули , работой которых управляет основная программа. Опрос клавиатуры организован с помощью оператора getch() , который возвращает код нажатой клавиши , который затем анализируется программой. В зависимости от нажатой пользователем клавиши программа анализирует её код и производит выбор того или иного действия , выбор очередного пункта меню или подменю , выход из программы.
2.3 Функциональное назначение
Программа позволяет исследовать определённые заданием функции , построить их графики на любом отрезке их значений , занести значения функций в таблицу и вывести их на экран или в файл , программа также позволяет изменять масштаб отображаемой функции , изменять диапазон её значений.
2.4 Описание данных
Структура , массив которых образует меню , состоит из 3 полей:
1. num - поле целого типа (int) - содержит количество пунктов меню;
2. onum - поле целого типа (int) - содержит количество опрашиваемых пунктов меню;
3. capt - массив символов (по 20 символов на элемент) из 6 элементов - содержит имена пунктов меню.
Глобальные переменные,которые использует программа:
Название | Тип | Начальное значение | Назначение |
MinX | float | -4 | Начальное значение Х |
MaxX | float | 4 | Начальное значение Y |
MX | float | 80 | Масштаб по оси Х |
MY | float | 80 | Масштаб по оси Y |
CF | int | 0 | Номер функции |
SC | int | 20 | Число строк в таблице |
2.5 Структура программы
Данная программа разработана на алгоритмическом языке С++ и состоит из следующих функциональных модулей:
1. Функция fun - Возвращает 0 , если невозможно вычислить значение функции при заданном значении Х, иначе вычисляет значение Y и возвращает 1;
2. Функция output - Осуществляет вывод графика функции на экран с учётом всех параметров;
3. Функция use_scroll - Осуществляет обработку вертикального меню;
4. Функция use_menu - Осуществляет обработку главного меню;
5. Функция InputFloat - Осуществляет ввод вещественного числа в графическом режиме;
6. Функция InputString - Осуществляет ввод строки символов в графическом режиме;
7. Функция prttabl - Осуществляет вывод таблицы в файл или на экран;
8. Основная программа Main - Заполняет массив меню , организует взаимодействие всех функциональных модулей.
2.6 Спецификация на функциональные модули
2.6.1 Функция fun
Назначение: Возвращает 0 , если невозможно вычислить значение функции при заданном значении Х, иначе вычисляет значение Y и возвращает 1;
Входные данные: x - значение переменной х , *y - имя функции.
Выходные данные: fun.
Не вызывает никаких функций.
Вызывается из output: rt=fun(x,&y);
prttabl: if (fun(x,&y)) fprintf (f,"Fun(%f)=%f\n\f",x,y);
2.6.2 Функция output
Назначение: Осуществляет вывод графика функции на экран с учётом всех параметров.
Входные данные: нет.
Выходные данные: нет.
Вызывает функцию fun.
Вызывается из основной программы: output();
В пункте 2.11 приведён алгоритм работы данной функции.
2.6.3 Функция use_scroll
Назначение: Осуществляет обработку вертикального меню - опрос клавиатуры , отображение пунктов подменю , передвижение курсора , при нажатии клавиши Enter возврвщает код выбранного пункта меню , при нажатии клавиши ESC возвращает -1.
Входные данные: menu_m - название массива меню , х-координата х вывода меню.
Выходные данные: use_scroll.
Не вызывает никаких функций.
Вызывается из основной программы: CF=use_scroll(fun,0);
switch (se_scroll(dia,105))
switch (se_scroll(mas,205))
switch (se_scroll(tabl,305))
2.6.4 Функция use_menu
Назначение: Осуществляет обработку главного меню - вывод пунктов меню на экран , отображение цветового курсора , при нажатии клавиши Enter возврвщает код выбранного пункта меню , при нажатии клавиши ESC возвращает -1.
Входные данные: menu_m - название массива меню.
Выходные данные: use_menu.
Не вызывает никаких функций.
Вызывается из основной программы: switch (use_menu(m1))
2.6.5 Функция InputFloat
Назначение: Осуществляет ввод и редактирование вещественного числа в графическом режиме , возвращает введённое число.
Входные данные: x1,y1,x2,y2 - координаты окна редактирования , last - текущее значение данного параметра.
Выходные данные:InputFloat.
Не вызывает никаких функций.
Вызывается из основной программы:MinX=InputFloat(210,30,310,45,MinX);
MaxX=InputFloat(210,50,310,65,MaxX);
MY=InputFloat(310,30,410,55,MY);
2.6.6 Функция InputString
Назначение: Осуществляет ввод и редактирование строки символов в графическом режиме , возвращает указатель на введённую строку.
Входные данные: x1,y1,x2,y2 - координаты окна редактирования ,* last - указатель на строку.
Выходные данные: *InputString.
Не вызывает никаких функций.
Вызывается из основной программы: prttabl(Inputstring(410,30,510,45,"Prn"));
2.6.7 Функция PrtTabl
Назначение: Осуществляет вывод таблицы в файл или на экран.
Входные данные: *fname - указатель на имя файла , если имя файла "con" то вывод осуществляется на экран в текстовом режиме.
Выходные данные: нет.
Вызывает функцию fun.
Вызывается из основной программы: prttabl("con\x0");
prttabl(Inputstring(410,30,510,45,"Prn"));
2.7 Описание работы основной программы
Основная программа осуществляет следующие действия:
Заполнеие массива меню.
Установку начальных пунктов меню.
Установку графического режима , очистку экрана.
Вызов функции оформления экрана.
Опрос меню , вызов функций , соответствующих каждому из выбраннх пунктов.
Выход из программы.
Основная программа использует следующие функции: output , use_scroll , use_menu , InputFloat , Inputstring , prttabl.
Далее в пункте 2.10 приведён подробный алгоритм работы основной программы.
2.8 Схема взаимодействия функциональных модулей
2.9 Описание алгоритма основной программы и функции Output
В нижеприведённом алгоритме работы основной программы отображены следующие блоки:
Блоки 0,30 - Начало программы , функции;
Блоки 11,12,14,15,18,19,23,26,40,41 - Операции ввода,вывода;
Блоки 1,2,3,5,13,21,28,32,33,38 - Операции действия , вычисления , присваивания.
Блоки 6,8,16,20 - Операция ветвления.
Блоки 31,37,39,44 - Условная операция.
Блоки 4,7,8,17,22,24,25,36 - Вызов функции.
Блоки 29,45 - Конец программы,функции.
2.10 Алгоритм работы основной программы
2.11 Алгоритм работы функции output
3 План отладки программы
При написании данной программы был выбран метод нисходящего программирования, поскольку все функции, используемые для вводаданных, могут быть написаны и проверены поочередно. Примерный порядок написания программы следующий: