- •Лабораторная работа №2 «Создание приложений Windows Form, использующих итеративные циклические структуры»
- •2.1. Вопросы, подлежащие изучению
- •2.2. Общее задание на разработку проекта
- •Разработайте обобщенные схемы алгоритмов, а также программные коды следующих функций:
- •Создайте проект Приложений Windows Form, содержащий:
- •Докажите правильность полученных результатов.
- •2.3. Варианты индивидуальных заданий
- •2.4. Содержание отчёта
- •2.5. Пример выполнения задания
- •Создание Приложений Windows Form, использующих итеративные циклические структуры.
- •Иванов и., бин1905, вариант 13.
- •Разработка схемы алгоритма функции Root
- •Разработка графического интерфейса
- •7.2) Создание файлов c функциями пользователя
- •7.3) Создание событийных процедур
- •Результаты выполнения приложения
- •Доказательство правильности работы программы
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 выводятся результаты вычислений.