Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задания / VBA / Задание_2 / Ветвление_If

.doc
Скачиваний:
41
Добавлен:
17.04.2015
Размер:
106.5 Кб
Скачать

Тема: Основы программирования 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.

  1. Постановка задачи

Сравнить по абсолютной величине два случайных числа из интервала [a,b] и большее число отобразить красным (или другим) цветом. Для выполнения задания оформить интерфейс на форме (Рис. 1 Интерфейс входной формы Рис. 2 Интерфейс выходной формы для выполнения задания , Рис.2).

Рис. 1 Интерфейс входной формы Рис. 2 Интерфейс выходной формы для выполнения задания для выполнения задания

  1. Указания по составлению кода программы

  1. Для информационных текстов использовать свойство Caption элементов управления подпись (Label)

  2. Для обработки действий использовать событие Click для командных кнопок с заголовком Пуск (процедура Private Sub Command1_Click()End Sub) и с заголовком Выход (процедура Private Sub Command2_Click()End Sub).

  3. Для ввода границ интервала [a,b] использовать функцию InputBox ввод данных типа String (), преобразовав тип вводимых переменных a и b в числовой тип с помощью функции Val.

Рис. 3 Диалоговое окно InpuBox с полем ввода (см. п. 4.a

  1. 1Для обеспечения истинной случайности чисел X и Y использовать инструкцию рандомизации Randomize z, где в качестве аргумента z (произвольное число) использовать встроенный счетчик времени — функцию Timer, а именно: Randomize Timer. Чтобы эта инструкция работала, нужно разместить элемент управления Timer на форме.

  2. Для вычисления случайных чисел из интервала [a,b] использовать оператор присваивания "=" переменным X и Y выражения (b-a)*Rnd + a. (См. п.4.b

Отобразить получаемые случайные числа с помощью текстовых полей (объект - TextBox панели ToolBox), т.е. присвоить свойству Text объектов TextBox значения переменных X и Y, преобразовав для этого их числовой тип в String - строковый при помощи функции Str(x).

  1. Сравнить абсолютные значения чисел используя:

  • функцию ABS(number)—вычисляет абсолютное значение аргумента number, в данном случае аргументы, это числа X и Y;

  • оператор сравнения > для записи условия;

  • конструкцию ветвления:

If условие Then

Блок операторов 1

Else

Блок операторов 2

End If

  1. Для числа, большего по абсолютной величине, изменить цвет шрифта на красный. Это достигается присвоением в коде процедуры свойству ForeColor текстового поля значения соответствующего цвета.

Системное значение кода любого цвета можно определить в палитре свойства ForeColor любого объекта на форме. Например, код красного цвета в16-ричной системе счисления — &H000000FF&.

  1. Вывести итоговый информационный текст под текстовыми полями. Цвет текста итоговой информации задать в соответствующем свойстве в окне свойств надписи.

  2. Для кнопки с заголовком Выход создать процедуру завершения приложения.

  1. Код программы

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

  1. Теоретический материал

    1. К пункту 3)

Функция InputBox отображает модальное окно диалога, в котором содержится просьба о вводе пользователем некоторых данных. Пока не завершится диалог с модальным окном, переключиться в другое диалоговое окно невозможно.

Упрощенный вариант синтаксиса функции следующий:

InputBox(Приглашение [,Заголовок] [,НачЗначение])

Приглашение — строковое выражение, отображаемое как сообщение в диалоговом окне, которое служит подсказкой пользователю;

Заголовок — Строковое выражение, отображаемое в строке заголовка диалогового окна. По умолчанию в строку заголовка выводится имя приложения;

НачЗначение — по умолчанию поле ввода изображается пустым, но пользователь может отобразить любую строку.

Следующий код отображает окно ввода, показанное на Рис. 4 ниже

Private Sub Label2_Click()

X = InputBox("Введите Ваше имя", "Заголовок проекта")

End Sub

Переменной X будет присвоено значение ЕКАТЕРИНА, введенное пользователем.

Рис. 4 Модальное окно диалога

    1. К пунктам 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

    1. К пункту 7

Для программной установки значения свойства объекту применяется следующий синтаксис, так называемая точечная нотация:

Объект.Свойство = значение свойства

Примеры операторов устанавливающих значения свойств объекту Text1

Text1.Visible = True 'Отображает текстовое поле, т.е. делает его видимым.

Text1.Text = "Привет" ' Отображает слово 'Привет' в тестовом поле

 Только при работе в среде программирования Visual Basic (VB).

 Только при работе в среде программирования VB

1 Пункт 4) использовать при работе в среде программирования Visual Basic. При работе в среде Visual Basic for Application инструкцию Randomize Timer из кода программы исключить, элемент Timer на форме не размещать за его отсутствием в наборе элементов ToolBox.

5

Соседние файлы в папке Задание_2