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

Задания / VBA / Задание_2 / Задание-2

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

Тема. Основы программирования VBA

  • Элементы управления Label, TextBox, CommandButton, Timer

  • Функции Randomize, Rnd(), ABS()

  • Диаологовые окна – InputBox

  • Конструкция ветвления – If … Then …Else

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

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

Алгоритм действий

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

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

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

Рис.2 Диалоговое окно InpuBox с полем ввода

  1. Для обеспечения истинной случайности чисел X и Y использовать инструкцию рандомизации

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

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

  2. Отобразить случайные числа с помощью текстовых полей Поле (TextBox) (рис.1), т.е. присвоить свойству Text текстовыx полей значения переменных X и Y, преобразовав их тип в String (строковый ).

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

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

  • оператор сравнения ">"

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

If условие Then

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

Else

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

End If

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

  2. Вывести информационный текст под текстовыми полями.

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

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

К пункт 3

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

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

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

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

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

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

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

Private Sub Command1_Click()

X = InputBox("Введите Ваше имя")

End Sub

Переменной X будет присвоено

Значение Екатерина, введенное пользователем.

К пунктам 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 при каждом запуске приложения всегда генерирует одну и ту же последовательность чисел, вне зависимости от необязательного аргумента, если только он не отрицателен.

Вместе с функцией Rnd можно использовать инструкцию Randomize (number), которая инициализи-рует генератор случайных чисел. Здесь number типа Variant любого числового субтипа.

Если аргумент number в инструкции Randomize отсутствует, в качестве "затравки" для генератора псевдослучайных чисел, используется значение системного таймера, инструкция при этом имеет следующий синтаксис.

Randomize Timer

К пункту 7

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

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

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

Text1.Visible = True 'Отображает текстовое поле

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

Выполнение задания

  • Оформить интерфейс формы по образцу (рис.1) – 4 элемента Label, два элемента TextBox и две командные кнопки CommandButton .

  • Добавьте на форму элемент управления Timer

  • Задайте необходимые свойства элементам управления – цвет, шрифт

  • Напишите код программы

  • Проверьте работоспособность программы

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

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

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