Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 3. Sub SquarPr (L As Single; H As Single; S As Single; Optional F )

Пример

Пример

Sub SquarPr (L As Single; H As Single; S As Single; Optional F)

If IsMissing(F) Then F=100 ‘IsMissing проверяет наличие аргумента F, если F не задано, по умолчанию F присваивают 100.

S=L*H: End Sub

Вызов: Sub Proc_A()

I способ: Dim Sq as Single

SquarPr 12,23,sq ‘ могут быть через,- зависит от установки.

End Sub

II способ: Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SquarPr LL HH Sq

End Sub

III способ: Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SquarPr L:=LL, H:=HH, S:=Sq

End Sub

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

Static <var> As <type>

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

Для модификации:

Sub SquarPr (ByVal L As Single, ByVal H As Single, S As Single)

S=L*H: L=10: H=20: End Sub

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

Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SqarPr L:=(LL), H:=(HH), S:=Sq

End Sub

Если хотим передать массив по ссылке (чтобы под него один раз выделялось место, а не в каждой процедуре), то перед именем массива в заголовке процедуры пишем не ByVal, а ByRef. В этом случае изменение значений элементов массива в вызванной процедуре, приведет к изменению их значений и в вызывающей процедуре. Это экономит оперативную память.

8.10.4 Операторы управления

К операторам управления относятся 2 типа операторов:

1. перехода и выбора (Goto, If – Then – Else и Select Case);

2. повтора (For – Next, For Each, Do – Loop, While – Wend).

Оператор перехода имеет вид:

Goto метка, где метка – это цифровая комбинация, стоящая ещё и перед оператором, на который нужно перейти. В современных программах его стараются не использовать.

Условный оператор If относится к операторам выбора.

У него несколько конструкций. Он может быть в виде простой или блочной структуры.

1. If условие Then [инструкция] [Else инструкция Else] – простая структура If (в [] заключена необязательная часть оператора).

Примеры:

А) If Сумма > 1000 then Скидка = 0.05 Else Скидка = 0

Б) If Сумма > 1000 then Скидка = 0.05

2. If Условие then [инструкция ] [Else (инструкция Else) End if]

Примеры:

А) If Сумма> 1000 then Скидка = 0.05 Else скидка = 0 End If

Б) If сумма >1000 then Скидка = 0.05 End If

3. If условие1 then

[блок инструкций 1]

ElseIf Условие2 then

[блок инструкций 2] блочная структура If

Else [блок инструкций Else] End If

Блок - это последовательность операторов одной строки, разделенная “двоеточием”.

Пример. Определение, какому интервалу принадлежит число:

X= InputBox (“Введите число”)

If X >0 and X<=1 then MsgBox “Число из интервала [0,1]”

ElseIf X >1 And X< =2 then MsgBox “Число из интервала (1,2]”

Else MsgBox “Число либо отрицательное, либо>2”: End If

Разновидность простого оператора имеет вид:

If <выражение> Then <оператор>

Если условие истинно в любой конструкции оператора, то выполняется простой или составной оператор, следующий за Then. Рассмотрим пример.

Пример:

If AvgPrice>12000 Then

DiffPrice = Full(234, 45600)

ElseIf AvgPrice>24000 Then

DiffPrice = Full(12000, 45000)

ElseIf AvgPrice>36000 Then

DiffPrice = Full(24000, 50000)

Else DiffPrice = Full(36000, 70000

End If

Оператор выборки Select Case также относится к операторам перехода. Он используется реже оператора If.

Он имеет вид:

Select Case <величина>

Case <сравнение 1>

<блок операторов 1>

Case <сравнение 2>

<блок операторов 2>

Case Else

<блок операторов Else>

End Select

Пример:

Select Case Demse

Case Demse 21

Dem=21

Case Demse 22;25;28

Dem=31

Case Demse 45 To 48

Dem=41

Case Else

Dem=51

End Select

Есть ещё функции выбора, которые возвращают одну из альтернатив:

1. IIf (Expr, Truepart, FalsePart)

Expr – проверяемое выражение.

Truepart – значение или выражение, возвращаемое, если Expr – истина.

FalsePart - значение или выражение, возвращаемое, если Expr – ложь.

2. Choose (index, chooce1[,chooce2…] возвращает значение, выбранное из списка параметров index, лежит в интервале [1 … число элементов в списке].

3. Switch (Expr1, value1, Expr2, value2…)

expr – выражение типа variant.

value – возвращаемое значение, если соответствующее expr – истина.

Пример 2:

Число = InputBox(«Введите целое число»)

Select Case Число

Case 1: MsgBox “Число равно 1”

Case 2, 3: MsgBox “Число равно 2 или 3”

Case 4 to 6: MsgBox “Число от 4 до 6”

Case Is>=7: MsgBox “Число не менее 7”

End Select

Идентификация нажатой клавиши.

Private Sub UserForm_KeyDown (byval keykode As MsForm. _ ReturnInteger, byval Shift As Integer)

<== предыдущая лекция | следующая лекция ==>
Объявление констант | Формы записи алгоритмов. Case vbkey 0: MsBox “Нажали 0”
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 199; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.