Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR-INF-02.docx
Скачиваний:
6
Добавлен:
04.10.2021
Размер:
358.2 Кб
Скачать

7.2) Создание файлов c функциями пользователя

В данном проекте в соответствии с заданием создается два файла с текстами функций пользователя:

  • файл GP.cpp, содержащий функцию GetDouble для ввода из текстового поля формы и преобразования в вещественное число типа Double, и функцию PutDouble для вывода вещественного числа типа Double в текстовое поле формы;

  • файл RootX.cpp, содержащий все остальные функции, необходимые для решения поставленной задачи.

На рис. 5 приведен программный код файла GP.cpp.

Рис. 5. Программный код файла GP.cpp

На рис. 6 приведен программный код файла RootX.cpp.

Функции Funct и Deriv служат для вычисления функции в левой части уравнения и ее производной.

Функция Root служит для приближенного вычисления корня уравнения с заданной точностью. Код функции детально прокомментирован и соответствует схеме алгоритма на рис. 1.

Отдельного пояснения требует оператор функции, формирующий строку fs со значениями i, x и y для форматированного вывода в список LB. Подробно этот вопрос будет рассмотрен позже, при изучении темы «Обработка строк». В данной же работе, для правильного формирования строки следует воспользоваться сведениями, приведенными в Приложении 1.

Рис. 6. Программный код файла RootX.cpp

7.3) Создание событийных процедур

В данной работе создаются две событийные процедуры, вызываемые при нажатии (клике мышью) на кнопках cmdFind (Найти корень) и cmdExit (Завершить).

Напомним, что для создания заготовок этих процедур следует, находясь в окне Form1.h [Конструктор], выполнить двойной щелчок мышью на соответствующих кнопках, а затем заполнить тело процедур соответствующим кодом.

На рис. 7 приведен код этих процедур, вставляемых в файл Form1.h после директивы #pragma endregion.

Процедура cmdExit_Click содержит единственный оператор, вызывающий метод Close для закрытия формы и завершения приложения.

В процедуре cmdFind_Click сначала выполняется контроль корректности исходных данных. Поле txtX0 проверяется на непустое значение (свойство Length – длина поля – должно быть больше нуля). Поле txtEps дополнительно проверяется на значение, меньшее либо равное 0.1 (при больших значениях задача теряет смысл). При нарушении условий контроля происходит вывод в отдельное окно соответствующих сообщений, формируемых с использованием класса MessageBox.

Рис. 7. Программный код событийных процедур в файле Form1.h

Сведения об основных возможностях этого класса приведены в Приложении 2.

Следует иметь в виду, что в данном примере не выполняется проверка исходных данных на допустимые символы входных строк. Для числовых данных вещественного типа они могут содержать только цифровые символы, знаки числа + или , а также разделитель целой и дробной части числа (только запятая!). Такая проверка требует использования достаточно сложных методов, которые будут изучаться позже, в теме «Обработка строк».

Далее производится ввод и преобразование исходных данных с вызовом функции GetDouble. Для требуемой точности Eps вызов этой функции выполняется в операторе if.

Затем список lstLB очищается от результатов предыдущего запуска программы при нажатии на кнопку Найти корень. Это позволяет многократно выполнять расчеты при разных исходных данных в одном сеансе работы с приложением.

После этого объявляются переменные x, в которую записывается результат вызова функции Root, и y, передаваемая в Root в качестве параметра по ссылке. Вызывается функция Root, причем и в текстовые поля txtRoot и txtFRoot с помощью функции PutDouble выводятся результаты вычислений.

Соседние файлы в предмете Информатика