YourLib.net
Твоя библиотека
Главная arrow Информатика (Под общ. ред. А.Н. Данчула) arrow 4.7.5. Реализация событийной процедуры кнопки «РЕШЕНИЕ»
4.7.5. Реализация событийной процедуры кнопки «РЕШЕНИЕ»

4.7.5. Реализация событийной процедуры кнопки «РЕШЕНИЕ»

   Эта кнопка предназначена для запуска программы, которая обрабатывает введенные данные и выдает сообщения о результатах решения уравнения в соответствии с алгоритмами, представленными на рис. 4.18 и 4.19. Проведя вычисления, необходимо отобразить результаты на экране и, если в этом появится необходимость, подготовиться к повторному вводу коэффициентов уравнения.
   «Нажатие» на кнопку «РЕШЕНИЕ» приведет к вызову событийной процедуры Click. Используя эту событийную процедуру, составим программу вычислений, где отобразим следующие действия:
   —  преобразование введенных данных в числовой формат;
   —  анализ данных и выбор варианта ответа;
   —  подготовка результатов анализа для вывода на экран;
   —  отображение результатов в подготовленном приложении.
   По ходу составления программы понадобятся новые функции и операторы, поэтому на последующих рисунках приведены характерные части программы. Начало процедуры Solve_Click показано на рис. 4.26.

Рис. 4.26. Программа преобразования и проверки исходных данных 

Рис. 4.26. Программа преобразования и проверки исходных данных

   В этой части программы реализованы проверка содержимого переменных sa, sb, sc и функции их преобразования в числа.
   Для проверки ввода исходных данных использован условный оператор If, реализующий базовую конструкцию структурного программирования (БКСП) «Ветвление» (см. п. 1.5), включающую: начало, условие, список необходимых операций и конец оператора. Синтаксис оператора If, в котором квадратные скобки [ ] заключают необязательные элементы структуры, выглядит следующим образом:
   If <условие> Then
   [оператор]
   ................
   [Else
   [<оператор]...]
   End If
   Из приведенной конструкции видно, что после ключевого слова If должно стоять условие (булево выражение). В качестве булева выражения используются либо логическое значение (True или False), либо два выражения, разделенные знаком сравнения. Когда условие выполняется, то следующие за Піеп операторы будут исполняться. Ключевое слово Else дает возможность организовать вычисления в операторе If для случая, когда условие не выполняется. Завершение БКСП «Ветвление» (слияние ветвей) отмечается оператором End If. Одновременно можно проверять сразу несколько условий, для чего можно внутри первого оператора If помешать сколько угодно таких же последовательностей операторов If... End If.
   Анализ содержимого переменных производится с помощью функции IsNumeric( ), которая выявляет, что за информация введена: числовая (True) или нет (False). Применение такой записи позволяет определить как отсутствие какого-либо ввода, так и ввод нечисловых данных. А чтобы осуществить такое сравнение в одном условии, используется логическая операция Or. В качестве децимального разделителя используется знак (запятая или точка), установленный в среде Windows.
   В случае если хотя бы одно из значений «пусто» или содержит символ, будет выдано сообщение (всплывающе окно) «Введите все числовые данные» (рис.4.27).
   Сообщение создано с помощью оператора MsgBox (Message Box — окно сообщений), в кавычках задается текстовое значение. Процесс работы приложения прерывается, пока пользователь

Рис. 4.27. Внешний вид всплывающего окна с предупреждением 

Рис. 4.27. Внешний вид всплывающего окна с предупреждением

не нажмет кнопку ОК. После нажатия кнопки OK управление будет передано в конец процедуры оператором Goto 1.
   Для преобразования текстовой числовой информации любого формата, в том числе имеющей дробную часть (числа после запятой), используется функция Val. Функция Val (Value — значение) возвращает числовое значение, полученное преобразованием строки символов. Ее синтаксис: Val (набор символов).
   Далее устанавливаются свойства объектов Ls, Lx1, Lx2 и вычисляется значение дискриминанта D.
   В соответствии со структурой алгоритма (рис. 4.13) по значениям переменных а, Ь, с и D определяется вариант решения n (1, ..., 5), для чего используется оператор If.. Тhen .. End If, имеющий вложенную структуру (рис. 4.28). Первая (внешняя) конструкция оператора If предназначена для контроля содержимого переменной а (равно ли оно нулю). На следующем уровне проверяется содержимое переменной b. И, наконец, оператор If внутреннего уровня проверяет значение переменной с.

Рис. 4.28. Программа определения варианта решения 

Рис. 4.28. Программа определения варианта решения

 Рис. 4.29. Нахождение результатов решения

Рис. 4.29. Нахождение результатов решения

   На рис. 4.29 показан фрагмент программного кода, который формирует сообщения о результатах в зависимости от варианта решения с использованием БКСП «Выбор» (см. п. 1.5). Для этого используется оператор Case Select, где ключом выбора является переменная п — порядковый номер выбранного варианта решения. Этот оператор позволяет по конкретному значению ключа выбрать нужную ветвь конструкции.
   Синтаксис оператора Select следующий:
   Select Case (выражение-ключ)
   Case (список выражений, сравниваемых с ключом)
   [блок операторов]
   Case (список выражений, сравниваемых с ключом)
   [блок операторов]
   Case Else
   [блок операторов]
   End Select
   Например, если существует только один корень уравнения (п=3), вычисляемый по формуле x1 = — с / Ь, то надо сформировать сообщение «Один корень» в переменной s и одно значение корня в переменной x1. Это реализуется командами, которые находятся в теле оператора Case 3. В случае двух действительных корней уравнения подкоренное выражение вычисляется с использованием встроенной функции Sqr — вы-числить корень квадратный из числового выражения, заданного в скобках.
   Если значение не будет равно ни одному из допустимых вариантов, выдается сообщение в соответствии с командой — MsgBox ”n=" + Str$(n).
   Для отображения величин корней уравнения на экране их представляют в текстовом формате, присваивая надписям меток значения вычисленных результатов, преобразованные функцией Format$ (рис. 4.30).
   Функция Format$ преобразует числовое выражение аргумента в строку в соответствии с заданным форматом. Так как мы работаем с цифровым значением, то необходимо указывать внешний вид числа, которое мы хотим отобразить на экране, в виде символов. В данном случае, независимо оттого, сколько символов будет введено после десятичной точки, после преобразования на экране будет представлено число с тремя знаками после десятичной точки.

 Рис. 4.30. Блок отображения результатов на екране

Рис. 4.30. Блок отображения результатов на екране

   Далее имеется метка «1:», на которую осуществляется переход по оператору Goto 1.
   После того как на экране появится результат вычислений, пользователю приложения предоставляется выбор: либо повторить все вычисления еще раз с вновь введенными коэффициентами (для этого активизируется кнопка «ВВОД»), либо закончить работу, для чего необходимо нажать кнопку «ВЫХОД».

 
< Пред.   След. >