Тема: Основы программирования VBA и VB. Конструкция ветвления – If … Then …Else
-
Элементы управления Label, TextBox, CommandButton, Timer
-
Функции Randomize, Rnd(), ABS()
-
Диалоговые окна – InputBox
-
Конструкция ветвления – If … Then …Else
Что нужно сделать
-
Оформите интерфейс пользовательской формы по образцу (Рис. 1 Интерфейс входной формы Рис. 2 Интерфейс выходной формы для выполнения задания для выполнения задания) – 4 элемента Label, два элемента TextBox и две командные кнопки CommandButton .
-
Добавьте на форму элемент управления Timer
-
Задайте необходимые свойства элементам управления – цвет, шрифт
-
Напишите код программы, связав процедуры событий с соответствующими элементами управления на форме (объектами). Для каждой инструкции кода напишите пояснение, используя оператор REM или его заменитель – апостроф’.
-
Скомпилируйте код программы – создайте exe-файл.
-
Проверьте работоспособность программы.
-
По готовой программе воссоздайте её блок-схему.
-
Оформите отчёт в MS WORD.
-
Постановка задачи
Сравнить по абсолютной величине два случайных числа из интервала [a,b] и большее число отобразить красным (или другим) цветом. Для выполнения задания оформить интерфейс на форме (Рис. 1 Интерфейс входной формы Рис. 2 Интерфейс выходной формы для выполнения задания , Рис.2).
Рис. 1 Интерфейс входной формы Рис. 2 Интерфейс выходной формы для выполнения задания для выполнения задания
-
Указания по составлению кода программы
-
Для информационных текстов использовать свойство Caption элементов управления — подпись (Label)
-
Для обработки действий использовать событие Click для командных кнопок с заголовком Пуск (процедура Private Sub Command1_Click() … End Sub) и с заголовком Выход (процедура Private Sub Command2_Click() … End Sub).
-
Для ввода границ интервала [a,b] использовать функцию InputBox — ввод данных типа String (), преобразовав тип вводимых переменных a и b в числовой тип с помощью функции Val.
Рис. 3 Диалоговое окно InpuBox с полем ввода (см. п. 4.a
-
1Для обеспечения истинной случайности чисел X и Y использовать инструкцию рандомизации Randomize z, где в качестве аргумента z (произвольное число) использовать встроенный счетчик времени — функцию Timer, а именно: Randomize Timer. Чтобы эта инструкция работала, нужно разместить элемент управления Timer на форме.
-
Для вычисления случайных чисел из интервала [a,b] использовать оператор присваивания "=" переменным X и Y выражения (b-a)*Rnd + a. (См. п.4.b
Отобразить получаемые случайные числа с помощью текстовых полей (объект - TextBox панели ToolBox), т.е. присвоить свойству Text объектов TextBox значения переменных X и Y, преобразовав для этого их числовой тип в String - строковый при помощи функции Str(x).
-
Сравнить абсолютные значения чисел используя:
-
функцию ABS(number)—вычисляет абсолютное значение аргумента number, в данном случае аргументы, это числа X и Y;
-
оператор сравнения > для записи условия;
-
конструкцию ветвления:
If условие Then
Блок операторов 1
Else
Блок операторов 2
End If
-
Для числа, большего по абсолютной величине, изменить цвет шрифта на красный. Это достигается присвоением в коде процедуры свойству ForeColor текстового поля значения соответствующего цвета.
Системное значение кода любого цвета можно определить в палитре свойства ForeColor любого объекта на форме. Например, код красного цвета в16-ричной системе счисления — &H000000FF&.
-
Вывести итоговый информационный текст под текстовыми полями. Цвет текста итоговой информации задать в соответствующем свойстве в окне свойств надписи.
-
Для кнопки с заголовком Выход создать процедуру завершения приложения.
-
Код программы
Private Sub Command1_Click() ‘процедура для кнопки Пуск
Randomize Timer
Text1.ForeColor = &H0&
Text2.ForeColor = &H0&
a = Val(InputBox("введите a - левую границу интервала", "Сравнение чисел"))
b = Val(InputBox("введите b - правую границу интервала"))
x = a + Rnd() * (b - a)
y = a + Rnd() * (b - a)
Text1.Text = Str(x):
Text2.Text = Str(y)
If Abs(x) > Abs(y) Then
Text1.ForeColor = &HFF&
Label4.Caption = "абсолютная величина X > абсолютной величины Y"
Else
Text2.ForeColor = &HFF&
Label4.Caption = "абсолютная величина Y > абсолютной величины X"
End If
End Sub
Private Sub Command2_Click() процедура для кнопки Выход
End
End Sub
-
Теоретический материал
-
К пункту 3)
-
Функция InputBox отображает модальное окно диалога, в котором содержится просьба о вводе пользователем некоторых данных. Пока не завершится диалог с модальным окном, переключиться в другое диалоговое окно невозможно.
Упрощенный вариант синтаксиса функции следующий:
InputBox(Приглашение [,Заголовок] [,НачЗначение])
Приглашение — строковое выражение, отображаемое как сообщение в диалоговом окне, которое служит подсказкой пользователю;
Заголовок — Строковое выражение, отображаемое в строке заголовка диалогового окна. По умолчанию в строку заголовка выводится имя приложения;
НачЗначение — по умолчанию поле ввода изображается пустым, но пользователь может отобразить любую строку.
Следующий код отображает окно ввода, показанное на Рис. 4 ниже
Private Sub Label2_Click()
X = InputBox("Введите Ваше имя", "Заголовок проекта")
End Sub
Переменной X будет присвоено значение ЕКАТЕРИНА, введенное пользователем.
Рис. 4 Модальное окно диалога
-
К пунктам 4, 5
Функция — Rnd (number)
Возвращает очередное значение псевдослучайной последовательности — число в диапазоне от 0 до 1 с типом данных Single (вещественное число одинарной точности). Аргумент number — любое числовое выражение. Можно вызвать функцию без аргумента, т.е. Rnd() или Rnd.
Здесь надо иметь ввиду, что функция Rnd имитирует случайную величину, распределенную равномерно на отрезке [0,1], причем с необходимой погрешностью, обусловленной конечностью разрядной сетки компьютера.
Если требуется получить значения псевдослучайных чисел в интервале, отличном от интервала [0,1], скажем в интервале [a,b], достаточно использовать выражение (b-a)*Rnd + a, т.е. написать оператор присвоения Х =(b-a)*Rnd + a
Однако функция Rnd при каждом запуске приложения всегда генерирует одну и ту же последовательность чисел, вне зависимости от необязательного аргумента, если только он не отрицателен.
При работе в среде программирования Visual Basic вместе с функцией Rnd можно использовать инструкцию Randomize (number), которая инициализирует генератор случайных чисел. Здесь number типа Variant любого числового субтипа. Если аргумент number в инструкции Randomize отсутствует, в качестве "затравки" для генератора псевдослучайных чисел, используется значение системного таймера, инструкция при этом имеет следующий синтаксис: Randomize Timer
-
К пункту 7
Для программной установки значения свойства объекту применяется следующий синтаксис, так называемая точечная нотация:
Объект.Свойство = значение свойства
Примеры операторов устанавливающих значения свойств объекту Text1
Text1.Visible = True 'Отображает текстовое поле, т.е. делает его видимым.
Text1.Text = "Привет" ' Отображает слово 'Привет' в тестовом поле
Только при работе в среде программирования Visual Basic (VB).
Только при работе в среде программирования VB
1 Пункт 4) использовать при работе в среде программирования Visual Basic. При работе в среде Visual Basic for Application инструкцию Randomize Timer из кода программы исключить, элемент Timer на форме не размещать за его отсутствием в наборе элементов ToolBox.