жёстком диске, так и с клавиатуры;
–Данные, выводимые на экран;
Данные, вводимые из файла.
При запуске программы на экране появляется титульный лист, отображающий информацию о студенте; далее загружается меню программы, состоящее из пяти пунктов:
Рисунок 5.2 – Схема функционирования программы
– Справка
– y(x) =a*ln(b*x)
– y(x) =a*x^2+b*x+c
– Построение графика
– Выход
Пункт "Справка" включает в себя информацию о методе Ньютона. Пункты "y(x) =a*ln(b*x)" и "y(x) =a*x^2+b*x+c" представляют собой решения уравнений, где задаются промежутки m и n, параметры a, b(, c), погрешность E и выполняется сохранение в файлы. Пункт "Построение графика" строит график выбранного уравнения в зависимости от введённых параметров и промежутков. Пункт "Выход" – выход из программы. Схема функционирования представлена на рисунке 5.2.
Procedure title () – выводит титульную страницу на экран монитора;
Procedure graphica () – инициализирует графику.
Procedure pro () – содержит в себе переменную р, которая отвечает за номер выделяемой кнопки, передаётся как параметр в procedure key (p) и в procedure eat (p, bool), а также содержит в себе переменную bool, отвечающую за цикл в рамках procedure pro, передаётся как параметр в procedure eat (p2, bool);
Procedure eat (p2: byte; var bool: boolean) – в зависимости от параметра p2 выполняет один из пяти вариантов дальнейших действий программы. Переменная bool передаётся как параметр обратно в procedure pro;
Procedure key (p1: byte) – выстраивает графическую картинку меню в зависимости от параметра р1;
Procedure equation_1 () – решение уравнения вида y(x) =a×ln(b×x). Переменная Е (погрешность) принимается как параметр из procedure load_file_3 (E), передаёт переменную Е как параметр в procedure save_file (E);
Procedure equation_2 () – решение уравнения вида y(x) =a×x2+b×x+c. Переменная Е (погрешность) принимается как параметр из procedure load_file_3 (E), переменная Е передаётся как параметр в procedure save_file (E);
Procedure load_file_1 () – загружает переменные m и n (промежутки функции) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. m, n – глобальные переменные в рамках программы;
Procedure load_file_2 () – загружает переменные a и b либо a, b, c (в зависимости от вида функции) (коэффициенты уравнения) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. a, b, c – глобальные переменные в рамках программы;
Procedure load_file_3 (var E: real) – загружает переменную Е (погрешность функции) из файла, либо обеспечивает их ввод с клавиатуры, в зависимости от желания пользователя. Е передаётся как параметр и принимается как переменная в procedure equation_1 и equation_2;
Procedure save_file (E: real) – сохраняет переменные a, b, (c,) m, n – глобальные в рамках программы в файлы либо не сохраняет, сохраняет переменную Е в виде параметра в файл, либо не сохраняет;
Procedure groffunc () – выстраивает график по значениям глобальных в рамках программы переменных a, b, (c,) m, n, с отмеченными на оси х приближениями и корнем уравнения. Содержит в себе function f (x: real): real, высчитывающую значение одной из функций в зависимости от аргумента х. Переменные у0 (масштаб) и у2 (максимальное значение функции) передаются в виде параметров в procedure setka (y0, y2);
Procedure setka (yn: integer; y2: real) – выстраивает координатную сетку и оцифровку осей x и y в зависимости от глобальных в рамках программы переменных m, n и параметров yn и y2;
Procedure help () – предоставляет пользователю непосредственную методологическую помощь.
Для наглядности работы подпрограмм программы необходимо изобразить в виде схемы их взаимодействие между собой. Взаимодействие подпрограмм изображено на рисунке 5.3.
Рисунок 5.3 – Взаимодействие процедур программы
Условные обозначения:
– запуск процедуры на которую указывает стрелка, из процедуры из которой она исходит.
m, n – промежутки функции;
a, b, c – коэффициенты уравнения, представленные в виде параметров;
E – погрешность, аналог ε в разделе "Описании математической модели" и в разделе "Описание (и обоснование выбора) метода решения".
5.5.2 Обозначения выводимых данных
y(x) =a*ln(b*x), y(x) =a*x^2+b*x+c – уравнения используемые в программе;
x – неизвестная, корень уравнения;
ln – логарифм;
x^2 – неизвестная x в степени 2.
5.6 Входные и выходные данные
5.6.1 Входные данные
y(x) =a*ln(b*x), y(x) =a*x^2+b*x+c – функция;
m, n: real – левый и правый промежутки функции соответственно;
a, b, c: real – параметры, коэффициенты уравнения;
E: real – погрешность;
"Помощь и справочная информация".
5.6.2 Выходные данные
x1: real – значение корня уравнения;
st: string – текстовые сообщения, возникающие в процессе выполнения программы (ошибки и варианты дальнейшего продолжения).
5.6.3 Промежуточные данные
Bool_of: Boolean – определяет цикл выполнения алгоритма решения;
mass: real – массив [1. . 20] ;
number: byte – глобальная переменная, номер функции;
code_of: byte – переменная, отвечающая за необходимость поиска корня уравнения;
root: real – разность приближений.
Алгоритм решения уравнения вида y(x) =a×ln(b×x) приводится на рисунке 5.4.
выполнять
если (a = 0) то
выводnumber: =0;
иначе
выполнять
i: =1; если (a*ln(b*m) *(-a/sqr(m))) > 0 то
mass [i]: =m;
code_of: =1;
иначе
Рисунок 5.4 – Алгоритм решения уравнения вида y(x) =a×ln(b×x)
если (a*ln(b*n) *(-a/sqr(n))) > 0 то
mass [i]: =n;
code_of: =1;
иначе
вывод
number: =0; code_of: =0;
если (code_of = 1) то
выполнять
x1: =mass [i] -a*ln(b*mass [i]) /
(a/mass [i]);
root: =Abs (x1-mass [i]);
i: =i+1;
mass [i]: =x1;
пока (root < E);
если (x1 < m) или (x1 > n) то
вывод
number: =0; code_of: =0;
вывод
Рисунок 5.4 – Алгоритм решения уравнения вида y(x) =a×ln(b×x) (продолжение)
5.7.2. Алгоритм нахождения корня уравнения y(x) =a×x2+b×x+c
Алгоритм решения уравнения вида y(x) =a×x2+b×x+c приводится на рисунке 5.5.
выполнять
ввод
если (a = 0) и (b = 0) и (c = 0) то
вывод
number: =0;
иначе
выполнять
i: =1;
если (a*sqr(m) +b*m+c) *(2*a) >= 0 то
mass [i]: =m;
code_of: =1;
иначе
Рисунок 5.5 – Алгоритм решения уравнения вида y(x) =a×x2+b×x+c
если (a*sqr(n) +b*n+c) *(2*a) >= 0 то
mass [i]: =n;
code_of: =1;
иначе
вывод
number: =0; code_of: =0;
если (code_of = 1) то
выполнять
x1: =mass [i] -((a*sqr(mass [i]) +
b*mass [i] +c) /(2*a*mass [i] +b));
root: =Abs (x1-mass [i]);
i: =i+1;
mass [i]: =x1;
пока (root < E);
если (x1 < m) или (x1 > n) то
вывод
number: =0; code_of: =0;
вывод
Рисунок 5.5 – Алгоритм решения уравнения вида y(x) =a×x2+b×x+c (продолжение)
Алгоритмы решения уравнений рис.5.4 и рис.5.5 соответствуют procedure equation_1 и procedure equation_2 в программе соответственно.
Папка my_stuff, в которой содержится:
– RUOP. exe – основной файл программы;
– help. asc – файл с методологической информацией;
– m_n. txt – файл, содержащий значения промежутков m и n;
– a_b_c. txt – файл, содержащий значения параметров a, b, c;
– E. txt – файл, содержащий значение погрешности E;
– egavga. bgi – файл для работы с графикой;
– keyrus. com – файл для работы с русским языком;
– trip. chr – файл, содержащий русский шрифт.
Требуется скопировать папку my_stuff с содержащимися в ней файлами в папку “c: \temp\”. Для запуска программы необходимо запустить файл RUOP. exe, расположенный в папке my_stuff.
При копировании программы в иную папку, невозможными становятся работа "Справки" загрузка и автоматическое сохранение информации в файлы.
Тестовые примеры необходимы пользователю для того, чтобы узнать возможности, которые предоставляет данный программный продукт или протестировать его на правильность решения уравнений.
Тестовые примеры для решения уравнения вида y(x) =a*ln(b*x) приводятся в таблице 6.1.
Таблица 7.1. Тестовые примеры для уравнения вида y(x) =a*ln(b*x)
m | n | a | b | E | Результат |
1 | 10 | 1 | 0.5 | 0.01 | 2 |
-20 | -0.01 | 9 | -2 | 0.01 | -0.2 |
9 | 14 | 100 | 1 | 0.01 | Уравнение не имеет корней |
Тестовые примеры для решения уравнения вида y(x) =a*x^2+b*x+c приводятся в таблице 6.2.
Таблица 7.2. Тестовые примеры для уравнения вида y(x) =a*x^2+b*x+c
m | n | a | b | c | E | Результат |
-10 | 10 | 5 | 29 | 3 | 0.01 | -0.1054 |
-10 | 10 | 0 | 4 | 10 | 0.01 | -2.5 |
5 | 20 | 5 | 29 | 4 | 0.01 | Уравнение не имеет |
При введении в программу данных, не отвечающих требованиям типу, будет появляться сообщение "Ошибка ввода", пока не будут введены правильные данные, соответствующие требованиям программы.
Если уравнение не имеет корней, то построение графика и сохранение данных, результатов становиться невозможным.