Синтаксис некоторых операторов

Оператор Бейсик Паскаль Си++ *
Комментарий 'текст или Rem в начале строки // или { несколько строк } //или /* несколько строк */
Разделение операторов : или новая строка ; ;
Блок операторов   begin end; { }
Присваивание Variable=expression Variable:=expression; Variable=expression;
Условный оператор (Если-То-Иначе) If условие Then операторТо Else операторИначе End If If условие Then операторТо Else операторИначе; If (условие) операторТо Else операторИначе;
Цикл (для счётчика i от нач до кон с шагом 1) For i=нач To кон Тело_цикла Next For i:=нач To кон do Тело_цикла;   For (i:=нач; i<=кон; ++i) Тело_цикла;
Функция Function _ Имя(параметры) As _ Тип Тело_функции End Function Function Имя(параметры): тип; begin Тело_функции End; Тип Имя(параметры) { Тело_функции };
Процедура Sub Имя(параметры) Тело_процедуры End Sub procedure Имя(параметры); begin Тело_процедуры End; void Имя(параметры) { Тело_процедуры };

Дальнейшее изложение основ программирования ведётся в основном применительно к языку Visual Basic for Applications (VBA) ввиду его простоты и доступности. VBA соблюдает основной синтаксис и правила программирования языков-диалектов Бейсика (BASIC, Visual Basic), что делает его достаточно простым. VBA является общей языковой платформой для приложений MS Office, что особенно удобно при изучении – среда VBA доступна, например, из редактора Word. В то же время VBA обладает многими возможностями современных систем программирования: позволяет создавать объекты управления графического интерфейса пользователя, задавать и изменять свойства объектов, подключать к ним необходимый для конкретного случая программный код.

10.4 Вопросы и тестовые задания для самоконтроля

1. Запись алгоритма на формальном языке - ...

1) Программа

2) Алфавит

3) Синтаксис

4) Семантика

2. Набор символов, с помощью которого могут быть образованы слова языка программирования

1) Программа

2) Алфавит

3) Синтаксис

4) Семантика

3. Система правил, определяющих допустимые конструкции (фразы, осмысленные предложения) языка программирования из символов

1) Программа

2) Алфавит

3) Синтаксис

4) Семантика

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

1) Программа

2) Алфавит

3) Синтаксис

4) Семантика

5. Для обозначения объектов программы (переменных, массивов, функций и др.) предназначены

1) Имена

2) Операции

3) Данные

4) Выражения

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

1) Имена

2) Операции

3) Данные

4) Выражения

7. Величины, обрабатываемые программой

1) Имена

2) Операции

3) Данные

4) Выражения

8. Последовательности символов, предназначенные для выполнения необходимых вычислений и состоящие из констант, переменных и функций

1) Имена

2) Операции

3) Данные

4) Выражения

9. Назовите и охарактеризуйте наиболее часто встречающиеся практически во всех языках типы операций.

10. Что такое переменная, тип пременной, константа, выражение, арифметическое выражение, логическое выражение, строковое выражение в языке программирования?

11. Укажите приоритет выполнения операций при вычислении выражения (арифметические операции, операции сравнения, логические операции).

12. Укажите приоритет выполнения арифметических операций.

13. Перечислите базовые типы переменных.

14. Что такое массивы?

15. Назовите наиболее часто используемые в языках программирования операторы,

вернуться к содержанию

ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА VISUAL BASIC FOR APPLICATIONS

В данном разделе описываются основные операторы языка программирования высокого уровня VBA. При этом в электронную версию данного пособия внедрены «живые» примеры программ, запуск которых можно производить щелчком по соответствующим кнопкам.

Оператор присваивания

С помощью оператора присваивания можно задать новое или изменить существующее значение переменной. Несколько идущих друг за другом таких операторов реализуют алгоритмическую структуру «следование». Синтаксис оператора присваивания следующий:

[Let] переменная = выражение

Квадратные скобки вокруг ключевого слова Let говорят о том, что эта часть оператора не является обязательной и может быть опущена. Правая часть оператора содержит выражение, которое вычисляется при выполнении оператора. Вычисленное значение присваивается переменной, идентификатор которой указан в левой части. В качестве переменной могут выступать также свойства элементов управления и других объектов, допускающие присваивание.

С использованием нескольких операторов присваивания можно реализовать базовую структуру «следование». В таблице 21 приведены фрагменты программ с использованием операторов присваивания и указаны результаты их выполнения.

Таблица 21

Примеры использования оператора присваивания

Фрагмент текста программы Результат
Sub q() Const pi = 3.14 Dim a%, b!, c#, d As Boolean Dim e As Date, f$ a = 1 / 3 b = 1 / 3 c = 1 / 3 d = 1 / 3 e = 1 / 3 f = a & vbCr & b & vbCr & c & _ vbCr & d & vbCr & e & vbCr & pi MsgBox f End Sub Синтаксис некоторых операторов - student2.ru
a=1 : b=2 : a=b : b=a a=2 b=2
a=1 : b=2 : a=a+b : b=a*b a=3 b=6
a=1 : b=2 : a=a+b : b=a : a=a=a a=-1(True) b=3
c=a : a=b : b=c a и b меняются значениями
6 * a=a+b : b=a-b : a=a-b a и b меняются значениями
7 * a=y*2 : y=y/x : x=x*x : x=x+y+a x=x*x+y/x+y*2

Более подробных комментариев заслуживает пример 1 из таблицы 21. Оператор присваивания здесь задаёт значения переменных a, b, c, d, e, f. Оператор Sub … End Sub задаёт описание подпрограммы-процедуры с именем q, внедрённой в данный электронный документ и запускаемой нажатием следующей кнопки .

Примечание: предполагается, что параметры безопасности Microsoft Office Word разрешают запуск макросов (активного содержимого). Более подробные сведения о выполнении программ в среде VBA можно получить, изучая справочную систему, соответствующую учебную литературу [14], а также выполняя задания лабораторного практикума и делая соответствующие выводы [19, 23].

Оператор Const задаёт значение константы pi, а оператор Dim объявляет переменные, причём все они относятся к разным типам (см. табл. 17). Именно поэтому присваивание разным переменным значения одного и того же выражения приводит к получению совершенно различных результатов.

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

В качестве оператора, отображающего на экране в окне сообщения значение переменной f, выступает функция MsgBox.

Достаточно простые примеры 2 и 3 позволяют лучше понять работу оператора присваивания и заодно закрепить понятие переменной. Особенность примера 4 заключается в последнем операторе a=a=a. Здесь второй знак равенства означает не присваивание, а сравнение, результатом которого в данном случае будет логическое значение «Истина», которому соответствует число -1.

В примерах 5 и 6 выполняется обмен значениями двух переменных а и b, причём в примере 5 это делается с помощью третьей переменной с, а в примере 6* демонстрируется один из способов, не требующих использования дополнительной переменной. Последовательность операторов присваивания в примере 7* эквивалентна вычислению выражения, содержащего несколько операций.

11.2 Условный оператор IF … THEN

Далеко не всякий алгоритм можно описать только линейными структурами. Условный оператор позволяет реализовать алгоритмическую структуру «Ветвление», показанную на рисунке 11.1, и выполнить нужный вариант вычислений из двух (или более) предусмотренных в зависимости от выполнения некоторых условий (логических выражений).

Синтаксис некоторых операторов - student2.ru

Рис. 11.1. Базовая алгоритмическая структура «Ветвление»

Для реализации структуры «Ветвление» (Если – То – Иначе) и её частного случая «обход» (Если – То) в VBA используется так называемый строчный вид оператора IF … THEN. Его синтаксис имеет следующий вид:

IFусловие THENоператоры_А [ELSEоператоры_В]

В качестве условия (англ. condition) может выступать любое выражение, значение которого расценивается как истина (не ноль) или ложь (ноль). А в качестве операторов А и В – один или несколько, разделённых двоеточиями, операторов. Если опустить часть оператора в квадратных скобках, то будет реализована структура «обход». Приведём пример использования оператора IF … THEN, в котором можно обойтись без комментариев:

IFрейтинг < 60 THENитог = «незачёт» ELSEитог = «зачёт»

Блочный вид оператора IF … THEN позволяет, кроме того, реализовать более сложное вложенное ветвление. Синтаксис этого оператора имеет следующий вид:

IF условие_1 THEN

[блок_операторов_1]

[ELSEIF условие_2 THEN

[блок_операторов_2]]

[ELSE

[блок_операторов_иначе]]

END IF

В отличие от строчной, блочная форма оператораIF … THEN допускает использование нескольких условий, после каждого из которых следует (необязательный) блок операторов, выполняющийся только в случае истинности соответствующего выражения. Следующее условие проверяется только в случае ложности предыдущего. В случае же истинности одного из условий (и последующего выполнения соответствующего блока операторов) никакие дальнейшие условия блочного оператора IF … THEN уже не проверяются, а выполнение программы продолжается с оператора, следующего за ключевым словом END IF.

Исчерпывающее рассмотрение базовой управляющей алгоритмической структуры «Ветвление» даётся в практикуме [20]. Мы же ограничимся приведением ещё одного примера, комментарии к которому могут быть составлены заинтересованным читателем самостоятельно:

IF рейтинг < 55 THEN

итог = «неудовлетворительно»

ELSEIF рейтинг < 70 THEN

итог = «удовлетворительно»

ELSEIF рейтинг < 85 THEN

итог = «хорошо»

ELSE

итог = «отлично»

END IF

11.3 Оператор выбора варианта *

Разновидность структуры «ветвление» – выбор одного из нескольких блоков – показана на рисунке 11.2. Реализуется эта структура оператором выбора варианта SELECT CASE … END SELECT. Логика работы оператора выбора очень похожа на блочную форму оператораIF … THEN. Также выполняется только один из нескольких блоков операторов (вычислительных процессов). Отличие заключается в том, что все условия выбора связаны с проверкой значения одного общего тест-выражения, а в условиях оператораIF … THEN могут проверяться совершенно независимые значения.

Синтаксис некоторых операторов - student2.ru

Рис. 11.2. Структура «выбор»

Приведём синтаксис оператора SELECT CASE … END SELECT, который выполняет один из нескольких блоков операторов (на рис. 11.2 – процессов) в зависимости от значения тест-выражения:

SELECT CASE тест_выражение

CASE список_выражений_1

[блок_операторов_1]

[CASE список_выражений_2

[блок_операторов_2]]

[CASE ELSE

[блок_операторов_иначе]]

END SELECT

В качестве тест-выражения может выступать любое числовое или даже строковое выражение. А выбор блока операторов осуществляется последовательным сравнением значения тест-выражения со списками выражений, которые могут содержать один или более разделённых запятыми элементов, каждый из которых относится к одному из трёх видов: выражение, определяющее единственное значение; пара выражений, разделённых ключевым словом TО и определяющая ограниченный значениями этой пары диапазон; выражение, начинающееся с ключевого слова IS и следующего за ним знака операции отношения (сравнения), также определяющее соответствующий диапазон.

Работу оператора SELECT CASE … END SELECT можно проиллюстрировать на примере следующего фрагмента программы, запускаемой щелчком по кнопке и выполняющей пересчёт рейтинговой оценки из стобалльной шкалы в четырёхбалльную:

Select Case Rating' тест-выражение

Case Is< 0, Is > 100 ' выбор по списку_выражений

txtОценка.Value = "Вне диапазона"

Case Is >= 85 ' "Отлично", если Rating>= 85

txtОценка.Value = "Отлично"

Case70 To 85 ' "Хорошо", если Ratingв диапазоне 70 – 85

txtОценка.Value = "Хорошо"

Case Is >= 55 ' не хорошо, но вполне удовлетворительно

txtОценка.Value = "Удовлетворительно"

Case Else ' иначе – всё, что осталось…

txtОценка.Value = "Неудовлетворительно"

End Select

Результат выполнения программы при значении тест-выражения равном 77 представлен на рисунке 11.3.

Синтаксис некоторых операторов - student2.ru

Рис. 11.3. Форма с результатом для примера 2

Забегая немного вперёд и используя терминологию объектно-ориентированного программирования, поясним, что идентификатор txtОценка.Value в приведённом фрагменте означает содержимое текстового поля (значение свойства Value объекта TextBox с именем txtОценка). Текстовые поля и другие объекты-элементы управления (метки – Label, командная кнопка – CommandButton, рисунок – Image) размещены на форме пользователя (объект UserForm с именем Пример2_Select)

Операторы цикла

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

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

Синтаксис некоторых операторов - student2.ru

Рис. 11.4. Циклические алгоритмические структуры

Для реализации цикла с предусловием в VBA может использоваться оператор WHILE … WEND и более универсальный оператор DO … LOOP (см. *), с помощью которого можно реализовать также и цикл с постусловием.

Программный код примера 3 на алгоритмическом языке VBA

Private Sub cmdStart_Click()

Dim I As Integer

I = 0

txtIn.Value = I

Do While I < 10

I = I + 1

Loop

txtIk.Value = I

End Sub

Результат выполнения программного кода цикла с предусловием с использованием универсального оператора цикла DO … LOOP представлен на рисунке 11.5. Фрагмент программного кода данного примера отображается на форме внутри элемента управления типа Label (метка).

Синтаксис некоторых операторов - student2.ru

Рис. 11.5. Форма для примера 3 (Цикл-Пока)

Для реализации так называемого цикла со счётчиком (с параметром) используется оператор FOR … NEXT (см. ). Блок-схема соответствующей алгоритмической структуры показана на рисунке 11.6. По сути, это частный случай цикла с предусловием. При этом действие, изменяющее значение счётчика с заданным шагом, вынесено из тела цикла непосредственно в заголовок (символ подготовки).

Синтаксис некоторых операторов - student2.ru

Рис. 11.6. Цикл с параметром

Фрагмент программного кода для примера 4 на языке VBA

Dim strY As String * 15

Dim strX As String * 7

Dim I As Integer

Rad = Atn(1) * 4/180 'коэффициент для перевода градусной меры угла в радианы

I = 0

For x = -180 To 180 Step 10

I = I + 1

strI = I

strX = x

ModX = Abs(x)

If ModX>89 And ModX<91 Or ModX>269 _

And ModX<271 Then

strY = "-Нет решения"

Else

Y = b ^ sin(a ^ 2) / cos(x * Rad) - d

strY = Y

End If

lbxТабуляция.AddItem strI + "| " + _

strX + "| " + strY

Next x

Результаты выполнения программного кода цикла с параметром с использованием оператора цикла FOR … NEXT представлены на рисунке 11.7.

Синтаксис некоторых операторов - student2.ru

Рис. 11.7. Форма (Пример 4) с результатом работы цикла с параметром

Кроме того *, в VBA имеется очень похожий на цикл со счётчиком оператор For Each … Next, который повторяет тело цикла для каждого элемента массива или коллекции объектов. При работе с коллекциями (наборами однотипных объектов) количество элементов может быть неизвестно, а концепция начального и конечного значений – не иметь смысла. В таких случаях использование цикла For Each … Next является наиболее предпочтительным.

11.5 Оператор цикла FOR … NEXT

Оператор цикла FOR … NEXT используется, когда число повторений заранее известно, и определяется оно значениями счётчика (параметра) цикла: начальным, конечным и шагом (приращением). Оператор имеет следующий синтаксис:

FOR переменная_цикла = начало TO конец [STEP приращение]

[блок_операторов]

[EXIT FOR]

NEXT [переменная_цикла [,переменная_цикла]...]

Здесь переменная_цикла – числовая переменная, используемая как счетчик или параметр цикла; начало и конец – выражения, задающие начальное и границу конечного значения переменной цикла; приращение – значение, прибавляемое к переменной цикла при каждом следующем шаге цикла. Если необязательная часть оператора (STEP приращение) не указывается, то приращение принимается равным единице. Количество повторений тела цикла FOR … NEXT определяется целым (без округления!) числом, определяемым формулой (конец – начало) / приращение + 1.

Тело цикла может содержать любую последовательность вложенных алгоритмических структур, имеющих один вход и один выход, в том числе и вложенные циклы. Синтаксис оператора предусматривает также досрочный выход из цикла (EXIT FOR) *.

Несколько вложенных циклов могут закрываться одним ключевым словом NEXT и указанием имён счётчиков всех требующих закрытия циклов в порядке, обратном их открытию.

Рассмотрим работу оператора FOR … NEXT на примере следующего фрагмента программы:

ForI= Старт To Стоп

lsbРезультат.AddItem I

NextI

Щелчок по кнопке позволяет вызвать форму (рис. 5), на которой можно указать начальное (Старт) и конечное (Стоп) значения счётчика и увидеть соответствующий результат выполнения программы.

Программный код примера 5 на алгоритмическом языке VBA

Private Sub cmbStart_Click()

Dim I As Integer

Dim Старт As Integer

Dim Стоп As Integer

Старт = txtIstart.Value

Стоп = txtIstop.Value

For I = Старт To Стоп

lsbРезультат.AddItem I

Next I

lblВывод.Caption = "* Значение счётчика по завершении цикла ="& I

End Sub

Так, при Старт=1 и Стоп=5 тело цикла выполнится пять раз, при этом переменная I (счётчик) будет изменять своё значение от одного до пяти включительно с шагом, равным единице (поскольку STEP не указан). Тело цикла состоит всего из одной строки, предписывающей объекту lsbРезультат (элемент управления, отображающий список) выполнить метод AddItem (добавить элемент в список), причём в качестве добавляемой строки выступает текущее значение счётчика I, которое на каждом шаге меняется. В результате можно получить вид, представленный на рисунке 11.8.

Синтаксис некоторых операторов - student2.ru

Рис. 11.8. Форма (Пример 5) с результатом работы цикла.

Для более глубокого понимания работы оператора FOR … NEXT рекомендуется повторить выполнение предложенного примера с другими значениями Старт и Стоп. Ещё лучше выполнить предложенную программу в пошаговом режиме (запуск из меню редактора VBA: Debug – Step Into), в котором очередной выполняемый оператор подсвечивается, ожидая команды продолжения (нажатия F8), а зависание указателя мыши на имени переменной позволяет отобразить её текущее значение.

Оператор FOR … NEXT часто используется при обработке массивов. Например, для одномерного массива можно организовать цикл, используя Счётчик, изменяющийся от значения нижней границы индекса массива Старт до верхней Стоп. Такой цикл выполнится столько же раз, сколько в массиве имеется элементов. Если в теле цикла при обращении к элементу массива использовать в качестве указателя индекса идентификатор Счётчик, то таким образом можно осуществлять поэлементный перебор всего массива [21, 22].

Математические функции

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

Таблица 22

Наши рекомендации