Методика разработки и написания программы
В методике определены основные этапы проектирования программы.
Методика рассматривается на конкретном примере.
Дана задача: Написать программу, которая по введенному значению аргумента вычисляет значение функции.
Дана функция.
Математическая запись этой функции:
Этапы разработки и написания
I. Определить цель: Определить значение функции У при входном значении аргумента X.
II. Определить входные данные: Значение аргумента Х должно быть вещественного типа.
III. Определить выходные данные: Значение функции У должно быть вещественного типа.
IV. Составить алгоритм решения в общем виде: от общего к частному – это способ нисходящей разработки программы. Записывается алгоритм в неформальном словесном виде:
1) Ввести аргумент Х.
2) Определить, какому интервалу из области определения функции принадлежит введенное значение аргумента Х. Вычислить значение функции У по формуле.
3) Вывести значение У.
Далее детализируются пункты алгоритма – п.2
2.1 Если аргумент Х принадлежит интервалу [-œ; -2), то У = 0.
2.2 Если аргумент Х принадлежит интервалу [-2; -1), то У = -Х-2.
2.3 Если аргумент Х принадлежит интервалу [-1; 1), то У = Х.
2.4 Если аргумент Х принадлежит интервалу [1; 2), то У = -Х+2.
2.5 Если аргумент Х принадлежит интервалу [2; +œ;), то У = 0.
Обозначения применяемые в интервале:
[ - нестрогое неравенство >= или <=.
) – строгое неравенство > или <.
Алгоритм может быть представлен в виде блок-схемы (в данной методике этот вариант не рассматривается). Алгоритм в неформальном словесном виде допускается по технологии программирования.
V. По созданному алгоритму написать программу.
//программа расчета функции по ее аргументу
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Russian");//для правильной знакогенерации
//объявление переменных
double x; //значение аргумента
double y; //значение функции
//ввод
printf_s("Введите значение аргумента Х ->"); scanf_s("%lf", &x);
//расчет
if(x < 2) y = 0;
if(x >= -2 && x < -1) y = -x-2;
if(x >= -1 && x < 1 ) y = x;
if(x >= 1 && x < 2 ) y = -x+2;
if(x >= 2) y = 0;
//вывод
printf_s("\nДля x = %.2f значение y = %.2f\n", x, y);
return 0;
}
VI. Отладить программу – обнаружить и исправить ошибки как синтаксические (их показывает компилятор), так и заложенные в логике программы. Ошибки, заложенные в логике программы, выявляются при ее выполнении. Для устранения таких ошибок выполняется тестирование. Тестирование - процесс выполнения программы на некотором наборе данных, для которого заранее известен результат.
Таким образом, необходимо создать тестовые примеры: задать для каждого интервала по одному значению Х, задать граничные значения Х - точки перегиба и проверить значения функции соответствующие заданным Х.
Х | -5 | -1,5 | 0,5 | 1,5 | -2 | -1 | |||
У | -0,5 | 0,5 | 0,5 | -1 |
VII. Упростить программу в части расчета (оптимизировать).
//расчет
if(x >= -2 && x < -1) y = -x-2;
else if(x >= -1 && x < 1 ) y = x;
else if(x >= 1 && x < 2 ) y = -x+2;
else y = 0;
VIII. Протестировать программу после оптимизации.