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

Косарев_Экомическая информатика

.pdf
Скачиваний:
170
Добавлен:
03.05.2015
Размер:
9.05 Mб
Скачать

Программирование

411

[Операнд1]=> [Операнд2]

Больше или равно. Результат -True,

 

если первый операнд больше или

[Операнд 1]<= [Операнд2]

равен второму

Меньше или равно. Результат -True,

 

если первый операнд меньше или

 

равен второму

[Строка] Like [Маска}

Соответствие маске. Результат -True,

 

если строка соответствует маске

[Операнд!] Is [Операнд2]

Ссылка на объект. Результат -True,

 

если обе переменные ссылаются на

 

один и тот же объект

Операции отношения применяются для записи выражений ус­ ловия, результатом выполнения которых являются значения True (Истина) или False (Ложно). Ниже представлены примеры исполь­ зования операций отношения.

Выражение условия

 

Результат

 

 

25 <> 30

True (Истина) ( 25 не равно 30)

 

25<30

True (Истина) (25 меньше 30)

 

25>30

False (Ложно) ( 25 не больше 30)

 

Text1.Text = «Петров»

True (Истина), если слово «Петров»

 

является

содержимым

первого тек­

 

стового поля, в противном случае

-

 

False (ложно)

 

 

Number >= 100

True (Истина), если

переменная

 

Number

содержит значение не

 

меньше

100, в противном случае

-

 

False (ложно)

 

 

Логические операции

Логические операции применяются в логических выраже­ ниях. Если существует несколько условий выбора в операциях отношения, то эти операции связываются между собой логи­ ческими операциями. Перечень логических операций VBA при­ веден ниже.

412

Логическая операция

[Операнд1] And [Операнд2]

[Операнд1] От [Операнд2]

Not [Операнд]

[Операнд!] Хог [Операнд2]

Глава 8

Действие

Если связываемые условия имеют значение True, то результирующее значение также будет True

Если одно из связываемых условий будет иметь значение True, то ре­ зультирующим . значением также будет True

Если условие имеет значение True, то результирующим значением бу­ дет False. Если условие имеет значе­ ние False, то результирующее значе­ ние будет True

Если только одно из связываемых условий имеет значение True, то ре­ зультирующее значение также будет True. Если оба условия имеют оди­ наковые значения, то результирую­ щее значение будет False

Ниже приведены примеры применения логических операций.

Логическое выражение

Результат

Textl .Text = «Иванов» And Number < 20

Textl .Text = «Иванов» Хог Number < 20

Textl .Text = «Иванов» Or Number < 20

Not Number < 20

True (истина), если оба выражения сравнения имеют значение True (Ис­ тина)

False (ложно), если оба выражения сравнения имеют значение True (Ис­ тина)

True (истина), если хотя бы одно выражение сравнения имеет значе­ ние True (Истина). False (Ложно), если оба выражения имеют значение False (ложно).

True (истина), если выражение срав­ нения имеет значение False

Операции для работы со строками

В среде VBA есть только одна операция для работы со строка­ ми - операция конкатенации. Она позволяет объединить значения двух или нескольких строковых переменных или строковых кон-

Программирование

413

стант. Знак операции конкатенации - символ амперсанд (&). При конкатенации строк значение второй строки добавляется в конец первой строки. Результатом операции является более длинная строка, составленная из исходных строк.

Выражение с применением операции конкатенации имеет сле­ дующий вид:

strBbipa>KeHHe_l & 81гВыражение_2 [. .. & strBbipa»ceHHe_N]

где strBbipaxceHHe - строковые выражения, которые могут быть любыми допустимыми строками (строковыми переменными, строковыми константами или функциями обработки строк). Знак амперсанда между строковыми выражени­ ями указывает, что производится конкатенация этих вы­ ражений. Он отделяется от выражения пробельным сим­ волом. В одном операторе можно объединять любое ко­ личество строковых выражений.

П р и м е р :

strResult = «Студент» & «Иванов»

Здесь объединяются две неименованные строковые констан­ ты. Результатом операции конкатенации будет значение «Студент Иванов».

Тот же результат будет получен при использовании следую­ щего кода фрагмента программы:

Dim strName As String Dim strResult As String strName = «Иванов»

strResult = «Студент» & strName

В этом примере в операции конкатенации участвуют неиме­ нованная строковая константа й строковая переменная.

8.4.3. ОПЕРАТОРЫ УПРАВЛЕНИЯ

Операторы управления служат для управления работой про­ граммы. К ним относятся: операторы перехода, операторы выбо­ ра и операторы циклов.

414

Глава 8

Операторы перехода

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

 

GoTo идентификатор

где GoTo

- ключевое слово;

идентификатор - одна из меток программы.

Метка - это идентификатор, помещаемый слева от програм­ много оператора и отделенный от него двоеточием, например:

ml: Text1.Text = «это метка»

Оператор перехода для перехода к оператору с меткой ml бу­ дет иметь вид:

GoTo ml

Операторы выбора

Операторы выбора используются в программе для реализа­ ции условных алгоритмических конструкций, которые вызывают выполнение различных частей программы в соответствии с усло­ виями, существующими на момент выполнения этих операторов. Одним из важных элементов программного оператора выбора является выражение условия, значением которого может быть Истина (True) или Ложь (False). Такие выражения условия запи­ сываются с помощью операций отношения.

В системе VBA есть два основных типа операторов выбора: операторы условия и переключатели.

Существуют два типа операторов условия: линейный опера­ тор и блочный оператор.

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

безальтернативная: If условие Then Выражение альтернативная: If условие Then Выражение_1 Else Выражение_2

Программирование

415

В безальтернативной форме при значении условия True сна­ чала выполняется выражение, следующее за ключевым словом Then, а затем - следующий в последовательности оператор. Если условие принимает значение False, то выражение, следующее за словом Then, не выполняется, а выполняется оператор, располо­ женный за этим выражением.

П р и м е р ы линейного оператора безальтернативной формы:

If intNamber<3 Then intResult = 10*2 ' Если переменная intNamber 'содержит значение меньше трех, то переменной 'intResult будет присвоено значение 20

If optAddition.Value = True Then z = x + у

П р и м е р линейного оператора альтернативной формы:

If intNamberO Then intResult = 10*2 Else intResult =30

В результате выполнения этого оператора переменной nResul будет присвоено значение 20, если переменная nNamber содержит значение меньше 3, в противном случае переменной nResult будет присвоено значение 30.

Блочный оператор используется, когда в случае истинности условия необходимо выполнить несколько программных опера­ торов (блок операторов). Блочный оператор также может быть безальтернативным и альтернативным. Структура безальтерна­ тивного блочного оператора:

If Условие Then Программный оператор 1 Программный оператор 2

Программный оператор N End If

Здесь End If указывает на окончание блока оператора If.

Альтернативный блочный оператор применяется в тех случа­ ях, когда при выполнении условия необходимо выполнить один набор программных операторов, а при невыполнении - другой. Это реализуется с помощью оператора If... Then ... Else. Его син­ таксическая конструкция:

If условие Then

416

Глава 8

Блок программных операторов, выполняемых при значении условия True:

Else

Блок программных операторов, выполняемых при значении усло­ вия False

End If

Операторы могут быть в л о ж е н н ы м и друг в друга. Такое вложение операторов применяется, если нужно проверить какоелибо условие при другом условии, которое является истинным (например, если фамилия Иванов и он торговый агент). Формат вложенного оператора:

If условие_1 Then

If условие_2 Then Программный оператор 1 Else

Программный оператор 2 Endlf

Endlf

П р и м е р применения вложенного оператора:

If Name = «Иванов» Then

If Rang = «Торговый агент» Then Text 1 .Text = Name & Rang Else

Text2.Text=«AreHTa с указанной фамилией в списке нет» Endlf

Endlf

При использовании вложенных операторов If важно не пере­ путать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему опера­ тору If, не имеющему ветви Else.

В системе VBA предусмотрена также конструкция для рабо­ ты с несколькими операторами If. Несколько операторов If при­ меняются в случаях, когда необходимо рассмотреть еще несколь­ ко условий в дополнение к исходному. Для этого служит конст­ рукция If... Then ... Elself. В отличие от вложенных операторов конструкция с несколькими операторами If позволяет проверить

Программирование

417

дополнительное условие, если исходное условие принимает зна­ чение False. Синтаксическая конструкция записи нескольких опе­ раторов If:

If выражение_условия_1 Then Программный оператор 1

Elself выражение_условия_2 Then Программный оператор 2

Else

Программный оператор 3 Endlf

П р и м е р :

If CorrectAnsver.Text >=8 Then

Ball.Text =«Отлично»

Elself CorrectAnsver.Text >=6 Then

Ball.Text = «Хорошо»

Elself CorrectAnsver.Text >=4 Then

Ball.Text = «Удовлетворительно»

Else Ball.Text = «Неудовлетворительно»

Endlf

Приведенный код программы определяет количество правиль­ ных ответов и выставляет оценку. Он работает следующим обра­ зом. Сначала проверяется значение условия в операторе If. Если оно принимает значение True, то выполняется оператор (или блок операторов), следующий непосредственно за оператором If, пос­ ле чего программа переходит к выполнению оператора, следую­ щего за Endlf. Если первое условие принимает значение False, то программа переходит к выполнению первого оператора Elself, чтобы проверить выполнение его условия. Если оно имеет значе­ ние True, то выполняется оператор Ball = 4, и программа перехо­ дит к выполнению оператора, следующего за Endlf. В против­ ном случае эта последовательность действий повторится для сле­ дующего оператора Elself, и так до тех пор, пока не будут проверены все из них.

Переключатели в VBA реализуются оператором Select Case, который позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значения условного выражения. Син­ таксическая конструкция оператора:

418

Глава 8

Select Case Выражение

Case Значение 1

Программные операторы, выполняемые при совпадении Значе­ ния 1 и значения переменной:

Case Значение 2

Программные операторы, выполняемые при совпадении Значе­ ния 2 и значения переменной:

Case Значение N

Программные операторы, выполняемые при совпадении Значе­ ния N и значения переменной:

End Select

В операторе Select Case можно использовать операции отно­ шения. Для этого надо включить в выражение ключевое слово Is или ключевое слово То. Ключевое слово Is дает указание компи­ лятору сравнить значение проверяемой переменной со значением выражения, следующего за ключевым словом Is. Ключевое слово То задает диапазон значений.

П р и м е р :

Select Case ПравильныйОтвет.Тех!

Case 8 То 10

Bami.Text = «Отлично»

Case 6 То 7

Bami.Text = «Хорошо»

Case 4 То 5

Bami.Text = «Удовлетворительно»

Case Is < 4

Bami.Text = «Неудовлетворительно»

End Select

8.4.4. ПРОГРАММИРОВАНИЕ ЦИКЛОВ

Цикл - это оператор или группа операторов, которые про­ грамма многократно выполняет до тех пор, пока не получит ко­ манду на выполнение других операторов. Существуют два основ-

Программирование

419

ных типа циклов - циклы со счетчиком (с известным числом по­ вторений) и циклы с условием. Циклы со счетчиком используют в тех случаях, когда необходимо повторить некоторые действия заданное число раз. Циклы с условием применяются тогда, когда некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие, или до тех пор, пока не будет выполнено определенное условие.

Циклы со счетчиком

Циклы со счетчиком (с известным числом повторений) в VBA еще называют циклами For или циклами For ... Next. Так они на­ зываются потому, что начало и конец этих циклов определяются операторами For и Next. Синтаксис цикла For.. .Next таков:

For СчетчикЦикла= НачальноеЗначение То КонечноеЗначение_ [Step Шаг]

операторы

Next [СчетчикЦикла]

где For - ключевое слово, обозначающее начало цикла; СчетчикЦикла - переменная, определенная в качестве счетчика цикла; НачальноеЗначение - число, задающее начальное значение счетчика; То - ключевое слово Visual, разделяющее НачальноеЗначение и КонечноеЗначение; Конечное Значение - число, задающее значение счетчика, при котором цикл завершается;

Step - ключевое слово, используемое для задания шага цикла, необяза­ тельный аргумент; Шаг - число, задающее шаг цикла, т.е. значение, на которое увеличивает­

ся (или уменьшается) значение счетчика на каждом шаге, это число может быть отрицательным;

Next - ключевое слово, обозначающее конец цикла.

Вначале цикла For ...Next определяется переменная-счетчик,

атакже начальное и конечное значения этой переменной. В самом начале выполнения цикла переменная-счетчик устанавли­ вается в начальное значение. Каждый раз, когда программа, прой­ дя через цикл, возвращается к его началу, значение счетчика уве­ личивается. Если используется ключевое слово Step, переменнаясчетчик изменяется в соответствии с числом, указанным после ключевого слова Step, например:

420

Глава 8

For I = 0 То 10 Step 2 ' Значение I будет увеличиваться на 2

Каждый раз, когда значение переменной-счетчика изменяет­ ся, оно сравнивается с заданным конечным значением счетчика. Если значение счетчика превышает конечное значение, програм­ ма выходит из цикла и переходит к той строке кода, которая сле­ дует за циклом.

П р и м е р :

Option Explicit

Dim I As Integer Dim Sum As Integer

Sum=0

For I = 1 To 4

Sum =Sum + 2 Next I

Этот цикл эквивалентен четырем операторам Sum =Sum + 2 в тексте программы.

Цикл For Next может быть прерван досрочно, например при достижении какого-либо условия. Для этого в нужном месте цикла нужно поместить оператор Exit For.

П р и м е р :

Option Explicit

Dim Sum As Integer

Dim j As Integer

Sum = 2

Forj = lTo 10

Sum = Sum + j

If Sum > 6 Then

Exit For

End If

Nextj

Text1.Text = Sum

В этом примере цикл прерывается досрочно, когда значение переменной Sum будет больше 9. В результате выполнения этого кода в текстовом окне будет показано вычисленное значение пе­ ременной Sum, равное 8.