Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на VB_.pdf
Скачиваний:
19
Добавлен:
15.03.2016
Размер:
654.41 Кб
Скачать

Основы программирования в среде Visual Basic for Application (Excel 2010)

раторов2», и т.д.

Задание 3.2

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

а) больше 100: принят на бюджетную ставку б) от 80 до 100: принят по контракту

в) от 75 до 79: вопрос о приеме будет решаться после собеседования д) меньше 75: не принят (а).

Технология выполнения задания

1.Выполните пункты 1…5 Задания 1.1

2.Задайте свойству Name значение frmZadanie3_2, а свойству Caption значение «Приемная комиссия 1»

3.Откройте форму frmZadanie3_1 в окне Project - VBAProject.

4.Щелкнув форму, выделите все расположенные на ней элементы управления с помощью клавиш Ctrl+A, а затем скопируйте их в буфер обмена нажав клавиши Ctrl+С.

5.Дважды щелкнув кнопку Прием на форме Приемная комиссия, откройте код cmdPriem_Click(), выделите его и также скопируйте в буфер обмена.

6.На форме Приемная комиссия 1 также дважды щелкните кнопку Прием для открытия шаблона процедуры, вставьте из буфера только что скопированную подпрограмму и откоррек-

тируйте ее следующим образом (тем самым превратив его в работоспособную подпрограмму):

Private Sub cmdPriem_Click() Dim intNuin As Integer intNum = Val(txtNum.Text)

Усков Ю.И., Катеринина С.Ю.

35

каф. МиИТ, нояб.2015

Основы программирования в среде Visual Basic for Application (Excel 2010)

If intNum > 100 Then

lblResol.Caption = IxIName.Texl & _

"принят(а) на бюджетную ставку" ElseIf intNum >= 80 Then

lblResol.Caption = txtName.Text & " принят(а) по кон-

тракту"

ElseIf intNum >= 75 Then lblResol.Caption = txtName.Text & _

"вопрос о приеме будет решаться после собеседования" Else

lblResol.Caption = txtName.Text & " не принят(а)" End If

End Sub

3.Запустите программу. Вводим фамилию, имя, число баллов и нажимаем кнопку Прием. Можно убедиться, что программа выдает сообщения при любом числе баллов.

4.Добавим в программу кнопку сдачи экзаменов. Число баллов, набранных во время экзамена, будем определять с помощью датчика случайных чисел.

5.В Visual Basic случайные числа генерируются с помощью функции функцию Rnd(), которая генерирует случайное число в интервале от 0 до 1. Для задания псевдослучайной последовательности используется подпрограмма Randomize. Обращение к этому подпрограмму Randomize k, где k случайное число. Если параметр k у подпрограммы Randomize отсутствует, то по умолчанию в качестве случайного числа используется значение функции Timer.Добавьте кнопку на форму cmdPriem . В окне свойств задайте свойству Name значение cmdExam, а свойству Caption задайте значение &Сдача экзаменов. Измените размер и начертание шрифта: 14, полужирный (свойство Font) (рис. 3.2).

7.Дважды щелкните на кнопке Сдача экзаменов, чтобы открыть окно программы. Откорректируйте процедуру события Click кнопки:

Private Sub cmdExarn_Click() Dim intNum As Integer

Randomize intNum = lnt(Rnd(1) * 150) + 1

Рис. 3.2

8. Сохраните проект и форму с именем z3-2.

9. Запустите программу командой Run, Start (Пуск, Старт). 1милию, имя и нажимаем сначала кнопку «Сдача экзаменов», а затем «Прием»

Контрольные вопросы

1.Как работает оператор If Then Elself?

2.Что возвращает функция Rnd()?

3.Для чего нужен оператор Randomize?

4.Какие события возникают при работе программы?

Усков Ю.И., Катеринина С.Ю.

36

каф. МиИТ, нояб.2015

Основы программирования в среде Visual Basic for Application (Excel 2010)

5. Что означает знак подчеркивания _ , используемый в программном коде учебного задания 3.2?

Задание для закрепления знаний

Усовершенствуйте программу, которую вы сделали в задании 3.1. Программа определяет новый баланс покупателя. При нажатии на кнопку "Оценить кредитоспособность" программа проверяет, превышает ли новый баланс предельный размер кредита и в зависимости от результата проверки выдает различные сообщения: а) в случае если новый баланс меньше либо равен 95% предельного размера кредита, то выдастся сообщение, в котором указывается Номер счета и Новый баланс б) в случае если новый баланс меньше либо равен 100%, но больше 95% предель-

ного размера кредита, то выдастся сообщение "Ваш кредит близок к предельному"; в) в случае если новый баланс больше 100% предельного размера кредита, то вдается сообщение "Ваш кредит превышен".

3.3. Условный оператор SELECT CASE... END SELECT

Основная цель задания

1.Ознакомиться и изучить оператор Select Case...End Select.

2.Научиться получать случайные числа с помощью функции Rnd.

3.Научиться описывать и применять функции.

Краткая справка

Для принятия сложных решений (особенно при наличии нескольких условий) можно воспользоваться блоком Select Case ... End Select.

Его синтаксис прост:

Select Case x

Case Is = 3

‘ Выполнить некоторые действия для случая х =3

Case Is > 17

‘ Выполнить другие действия для случая х >17

Case 4 То 16

‘ Выполнить другие действия для случая изменения х от 4 до 16

Case Else

‘ Действия для случая, когда не выполнено ни одно из предыдущих условий

End Select

Для каждого оператора Select Case в программе должен быть соответствующий оператор End Select. Количество секций Case между Select Case и End Select может быть любым.

Для каждого проверяемого условия создается отдельная секция Case. Если вы хотите отдельно обработать ситуацию, когда не выполняется ни одно из условий, создайте секцию Case Else. Она во многом похожа на секцию Else оператора

If....Then.

Усков Ю.И., Катеринина С.Ю.

37

каф. МиИТ, нояб.2015

Основы программирования в среде Visual Basic for Application (Excel 2010)

В операторе Select Case можно сравнивать как значения строковых и числовых переменных, так и диапазоны их значений.

Случайные числа

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

Randomize и функция Rnd.

Функция Rnd() предназначена для получения случайного числа в диапазоне от 0 до 1, т.е., например, 0,36703; 0,8975; 0,5050 и т.д. Далее можно изменять диапазон чисел умножая на константу. Например, умножая вышеприведенные числа на 100, получим 36,703, 89,75, 50,50. Если необходимо получать целые числа, то используется функция Int(), которая удаляет дробную часть числового значения, переданного ей в качестве параметра. При этом для положительных значений она возвращает ближайшее меньшее целое число. Например: Int(3,267545) = 3

Int(7,9563) = 7 Int(0,043678) = 0

Таким образом, оператор Int(Rnd()* 10) теоретически может нам вернуть числа в диапазоне от 0 до 10, но практически будет возвращать числа в диапазоне от 0 до 9. И это нужно учитывать при генерации случайных чисел.

Функция Rnd() возвращает число, которое берется из длинной последовательности так называемых случайных чисел. Для выбора позиции в этой последовательности, начиная с которой будет выбираться число, используется подпрограмма Randomize.

Обращение к подпрограмме Randomize

Randomize k,

где k случайное число. Если параметр k у подпрограммы Randomize отсутствует, то по умолчанию в качестве случайного числа используется значение функции Timer. Функция: Timer возвращает текущее значение времени в секундах. Строго говоря:, последовательность чисел является не случайной, а псевдослучайной, так как, начав с того же стартового значения можно точно повторить всю последовательность.

Задание 3.3

Напишите программу, которая бы загадывала число от 1 до 10 и предлагала бы Пользователю угадать число. Примерный вид программы показан на рис. 3.3.

Рис. 3.3

Технология выполнения задания

Этап 1. Создание программы

1.Выполните пункты 1…5 Задания 1.1

2.Задайте свойству Name формы имя frmZadanie3_3, а свойству Caption значение

Выбор числа

Усков Ю.И., Катеринина С.Ю.

38

каф. МиИТ, нояб.2015

Основы программирования в среде Visual Basic for Application (Excel 2010)

3.Создайте на форме две кнопки. Задайте свойству Name первой кнопки значение cmdGetSecretNumber, а свойству Caption задайте значение Начать игру.

4.Укажите для свойства Name второй кнопки значение cmdGuess, а для свойства Caption измените значение на &Угадай Число.

5.Создайте в верхней части формы два элемента-надписи (Label). Задайте свойству Caption первой этикетки значение Попытка, а свойству Name второй этикетки укажите значение lblTry. Задайте размер шрифта 14, полужирный (свойство

Font)

6.Дважды щелкните на форме чтобы открыть окно программы.

7. Вставьте следующие строки в секцию (General)(Declarations) формы frmMain:

Option Explicit

Private intSecretNumber As Integer

Private intTry As Integer

8.Перейдем к созданию функции GetSecretNumberQ, которая является одним из важнейших компонентов приложения.

9.Вставьте код следующей функции:

Private Function GetSecretNumber() As Integer ‘ Загадать число от 1 до 10

Randomize

GetSecretNumber = Int(Rnd(1) * 10) +1 End Function

В функции GetSecretNumber используется три стандартных функции Rnd(), Int()). Последний оператор функции

GetSecretNumber = lnt(Rnd(1) * 10) + 1

обеспечивает возвращение случайного числа в диапазоне от 1 до 10. Обратите внимание, что левая часть оператора - это имя функции.

10.Bставьте следующий фрагмент в процедуру события Load формы frmMain:

Private Sub Form_Load() ' Загадать число

IntSecretNumber = GetSecretNumber intTry=0

End Sub

11. Вставьте следующий фрагмент в процедуру события Click кнопки. cmdGetSecretNumber:

Private Sub cmdGetSecretNumber_Click() ' Загадать число

intSeu etNumber = GetSecretNumber cmdGuess.Caption = "Угадай число" End Sub

12. Отредактируйте процедуру события Click кнопки cmdGuess и приведите ее к

Усков Ю.И., Катеринина С.Ю.

39

каф. МиИТ, нояб.2015

Основы программирования в среде Visual Basic for Application (Excel 2010)

следующему виду:

Private Sub cmdGuess_Click()

Dim intGuess As Integer Dim strMsg As String Dim strCap As String Dim strRc As String intTry = intTry + 1

lblTry.Caption = Str(intTry) ' Создать сообщение

strMsg = "Введите число от 1 до 10" ' Получить число от пользователя

strRc = lnputBox(strMsg, "Введите число" ) 'Убедиться в том. что пользователь ввел значение...

If strRc <> "" Then

' Преобразовать строку в целое число с помощью функции СInt() intGuess =Clnt(strRc)

'Проверка: число угадано верно? Select Case intGuess

Case Is = intSecretNumber ' Да, пользователь угадал

strMsg = "Вы угадали" strCap = "Верно!" MsgBox strMsg, vbExclamation. strCap

'Закончить игру

'0ператор End используется для завершения программы. End Case Is > intSecretNumber

'Нет, следующая попытка

strMsg = "Неверно. Загаданное число меньше" strCap = "Попробуйте снова"

MsgBox strMsg, vbInformation, strCap Case Is < intSecretNumber

' Нет, следующая попытка

strMsg = "Неверно. Загаданное число больше" strCap = "Попробуйте снова"

MsgBox strMsg, vbInformation, strCap End Select

Else

' Новая попытка

strMsg = "Вы должны ввести число!" strCap = "Введите число!"

MsgBox strMsg, vbInformation, strCap End If

cmdGuess.Caption = strCap End Sub

13. Запустите программу.

Усков Ю.И., Катеринина С.Ю.

40

каф. МиИТ, нояб.2015