Similar presentations:
Курсовий проект. Побудова графіку функції за наданим користувачем рядком, що містить припустимий опис функції
1. КУРСОВИЙ ПРОЕКТ
КРЕМЕНЧУЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТІМЕНІ МИХАЙЛА ОСТРОГРАДСЬКОГО
КАФЕДРА АВТОМАТИЗАЦІЇ ТА КОМП’ЮТЕРНО-ІНТЕГРОВАНИХ ТЕХНОЛОГІЙ
КУРСОВИЙ ПРОЕКТ
З дисципліни “Програмування”
на тему:
«Побудова графіку функції за наданим користувачем рядком,
що містить припустимий опис функції»
x^2
Виконав студент 2 курсу групи СІ-15-1: Головач Андрій
2.
Тема: побудова графіку функції за наданимкористувачем
рядком,
що
містить
припустимий опис функції.
Мета: розробити та реалізувати закінчений
програмний продукт для побудови графіку
функції, та її подальшого аналізу.
3.
Готовий програмний продукт повинен мати наступніможливості :
— побудова графіка функції за наданим рядком
— збереження результату роботи програми у графічний файл
— можливості налаштування графіку
— повідомлення про помилки під час побудови
— виведення координат точки на графіку
4.
Блок - схема алгоритму головної програми “UI.h”Початок
char *line
int from,to,amp_from,amp_to
1
line
from, to
amp_from, amp_to
Якщо межі
задано вірно
to>from && amp_to>amp_from
Непрвильні межі
побудови
+
Зробити
перевірку рядка
calc_fx(line,1)
Помилок не
виникло
-
Error == No
Розраховувати точки на
інтервалі від from до to з
точністю до сотих
+
double x = from; x<to;x+=0.01
calc_fx(line,x)
Додати точку [x, atof(expr)] на графік
1
2
Синтаксична
помилка
3
Кінець
2
3
5.
Загальний алгоритм синтаксичного аналізатора“Analyzer.h”
Початок
double X
char *expr
char token[80]
enum{Emty, Operator,Variable,Number}type;
enum {No, Syntax,Zero}error;
Глобальні змінні:
X – значення аргументу,
expr – зберігає вхідний рядок,
token – зберігає поточну лексему,
type – тип поточної лексеми,
error – наявність і тип помилки
funcSum(double* answ)
Точка входу
аналізатора.Приймає
вхідний рядок та
значення для
підстановки в змінну Х.
funcMulti(double* answ)
Функція складання та
віднімання
funcPow(double* answ)
Функція множення та
ділення
calc_fx(char *line, double num)
funcUnary(double* answ)
funcBrackets(double* answ)
token == “(”?
funcPart(double* answ)
token == “\0”?
+
Кінець
Функція піднесеняя до
ступіня
Функція унарних
операторів та
математичних функцій
Функція підрахунку
виразів у дужках
Функція повертає
значення неподільних
лексем
6.
Демонстрація програмиВікно завантаження програми
Головне вікно програми
7.
Демонстрація програмиОбласть задання меж побудови
Область задання функції
Область вибору кольору графіка
8.
Демонстрація програмиІнструкція користувача
9.
Демонстрація програмиВиведення координат точки вибраної
користувачем
Область побудованого графіку
Кнопки “Допомога” та “PNG” в головному вікні програми
10.
Демонстрація програмиПовідомлення про помилку при неправильно
заданій функції
Повідомлення про помилку при неправильно заданих
межах побудови
11.
Переваги та недоліки розробленої програмиПереваги:
• простота користування
• дружній графічний інтерфейс
• збереження результату
Недоліки:
• відсутня можливість побудови декількох графіків на одній
координатній площині
• необхідні вдосконалення синтаксичного аналізатору
• нерозгорнуті налаштування інтерфейсу та площини
графіку