- •В.В.Ломтадзе, л.П.Шишкина
- •Издание четвертое, переработанное
- •664074, Иркутск, ул. Лермонтова, 83
- •8. Электронные таблицы Microsoft Excel 93
- •9. Системы управления базами данных. Субд Access 113
- •10. Введение в программировние. Создание приложений на языке Visual Basic for Applications 127
- •11.Основы защиты информации 158
- •Предисловие
- •1. Информационные технологии. Понятие информации. Информационное общество. Информационные революции. Поколения компьютерных систем
- •2. Вводные сведения о современных программных средствах
- •2.1. Особенности современных программных средств
- •2.2. Основные элементы управления в интерфейсе программных продуктов
- •2.3. Типовые диалоги в интерфейсе программных продуктов
- •3. Кодирование и хранение информации. Системы счисления
- •Запись содержимого полубайта в разных системах счисления
- •4. Алгоритмы. Роль алгоритмизации в решении задач и формализации знаний. Информационные ресурсы
- •5. Технические средства информационных технологий
- •5.1. Основные блоки персонального компьютера
- •5.2. Основные периферийные устройства, подключаемые к компьютеру
- •5.3. Компьютерные сети
- •6. Классификация и обзор программного обеспечения
- •6.1. Системное программное обеспечение
- •6.2. Инструментальные средства программирования
- •6.3. Прикладное программное обеспечение
- •7. Текстовый процессор Microsoft Word
- •7.1. Назначение. Основные понятия
- •7.2. Модель фрагмента текста. Параметры форматирования. Стили
- •7.3. Типовая последовательность создания документа
- •7.4. Разработка стилей и форматирование фрагментов текста
- •7.5. Редактирование документа
- •7.6. Списки, табуляция, таблицы, многоколончатая верстка
- •7.7. Вставка символа, рисунка, объекта
- •8. Электронные таблицы Microsoft Excel
- •8.1. Назначение. Основные понятия
- •8.2. Обобщенная технология работы в электронной таблице
- •8.3. Ввод, редактирование, форматирование данных
- •8.4. Выполнение расчетов по формулам и построение диаграмм
- •Сообщения об ошибках в формуле
- •8.5. Сортировка, консолидация данных, сводные таблицы
- •9. Системы управления базами данных. Субд Access
- •9.1. Основные понятия
- •9.2. Нормализация отношений (таблиц) и обеспечение целостности данных в реляционной базе данных
- •9.3. Последовательность действий при создании и использовании базы данных
- •1. Создание базы данных
- •2. Создание таблиц базы данных, ввод данных во вспомогательные таблицы
- •3. Создание основной таблицы
- •4. Создание схемы данных
- •5. Создание формы
- •6. Создание запросов
- •7. Формирование отчетов
- •10. Введение в программировние. Создание приложений на языке Visual Basic for Applications
- •10.1. Основные понятия
- •10.2. Создание интерфейса пользователя
- •V Режим конструктора Свойства isual Basic
- •10.3. Модули, процедуры, функции
- •Часто используемые встроенные функции Visual Basic
- •10.4. Работа с переменными, массивами, константами и со свойствами объектов
- •10.5. Основные инструкции языка Visual Basic и отладка программ
- •Основы защиты информации
- •11.1. Основные понятия информационной безопасности
- •11.2. Классификация угроз информационной безопасности
- •11.3. Юридические основы информационной безопасности
- •11.4. Принципы защиты информации в компьютерных системах
- •11.5. Меры по поддержанию работоспособности компьютерных систем
- •11.6. Основы противодействия нарушению конфиденциальности информации
- •Литература
10.5. Основные инструкции языка Visual Basic и отладка программ
Сгруппируем основные инструкции языка Visual Basic по типу операций:
-
присваивания, в том числе с выполнением математических операций в правой части инструкции;
-
проверки условий, управления последовательностью исполнения инструкций, организации циклов;
-
инструкции для работы с файлами.
Последняя группа инструкций в этой краткой книге не рассматривается. При необходимости с ними можно познакомиться самостоятельно [5, 9, 13].
Инструкция присваивания уже пояснялась в разделе 4 и встречалась в примерах. Сейчас уделим внимание математическим операциям, которые используются в выражениях, стоящих в правой части инструкций присваивания. Среди возможных операций можно выделить арифметические, конкатанации строк, сравнения и логические.
Арифметические операции перечислены в таблице 10.3. При программировании формул необходимо учитывать приоритеты операций и в случае необходимости использовать скобки, как это принято в математике. Поясним таблицу 10.3. Смена знака имеет место, когда минус ставится перед именем переменной, константы или перед числом. Например: F=CX*(-G^2) ; если CX=3, а G=1.5 , то F = -6.75. Чтобы убедиться в правильности результата, достаточно на листе Excel разместить кнопку CommandButton1 и поле TextBox1, а в событийную процедуру CommandButton1_Click включить инструкции:
Dim I As Integer, F As Single
F = 3 * (-1.5 ^ 2) : I = 3 * (-1.5 ^ 2)
TextBox1.Text = "F=" & Format(F, "0.00") & " I=" & Str(I)
Выйдя из режима конструктора и нажав кнопку, увидим в поле TextBox1 результаты.
Таблица 10.3. Арифметические операции
Операция |
Наименование |
Приоритет |
Примеры |
Результаты |
||
I – Целое число |
F – действительное число |
I |
F |
|||
^ |
Возведение в степень |
1 |
I = 1.5^2 |
F = 1.5^2 |
2 |
2.25 |
- |
Смена знака |
2 |
I = -6.75 |
F = -6.75 |
-7 |
-6.75 |
* |
Умножение |
3 |
I = 1.3*4 |
F = 1.3*4 |
5 |
5.20 |
/ |
Деление |
3 |
I = 10/3 |
F = 10/3 |
3 |
3.33 |
\ |
Деление нацело |
4 |
I = 10\3 |
F = 10\3 |
3 |
3.00 |
Mod |
Остаток от деления |
5 |
I = 10 Mod 3 |
F = 10 Mod 3 |
1 |
1.00 |
+ |
Сложение |
6 |
I = 12 + 7 |
F = 11.45+7.55 |
19 |
19.00 |
- |
Вычитание |
6 |
I = 7-12 |
F = 7.55-11.45 |
-5 |
-3.90 |
Все результаты примеров легко проверить, подставляя в текст приведенной только что процедуры формулы вычисления I и F. Из этих примеров должно быть понятно, что результат арифметических операций зависит также от типа переменной, которой он присваивается – ведь переменная целого типа не может хранить число с плавающей точкой, и поэтому перед записью в ячейку I результат округляется.
Приведенная выше процедура иллюстрирует и конкатанацию (&) – слияние строк. К строке “F=” прибавляется строка, содержащая отформатированное значение F (с двумя цифрами после десятичной точки). К этой объединенной строке добавляется “ I=” и далее - превращенное в последовательность символов (в строку) число I.
Операции сравнения используют для сравнения чисел, значений переменных, констант, ячеек таблиц. Результат операции сравнения имеет тип Boolean – может принимать значение True или False (Таблица 10.4).
Таблица 10.4. Операции сравнения
Операция |
Наименование |
Пример (R имеет тип Boolean) |
Результат (R) |
= |
Равно |
R = (10=5) |
False |
> |
Больше |
R = 10>5 |
True |
< |
Меньше |
R = 10<5 |
False |
>= |
Больше или равно |
R = “a” >= “b” |
False |
<= |
Меньше или равно |
R = “a” <= “b” |
True |
<> |
Не равно |
R = “a” <> “b” |
True |
В логических операциях не только результат, но и операнды имеют тип Boolean. Поясним назначение таких операций на простом примере. Пусть переменная типа Boolean с именем R должна принимать значение True, если точка с координатами X,Y попадает в прямоугольную область, ограниченную координатами X1,X2 и Y1,Y2. Если точка за пределами прямоугольника, то R=False. Применив логическую операцию AND (И), вычислим значение R:
R = (X>=X1) AND (X<=X2) AND (Y>=Y1) AND (Y<=Y2)
Смысл этой операции в том, что если и первое выражение (X больше или равно X1) истинно, и второе истинно, и третье истинно, и четвертое истинно, то R=True. Если один из операндов логической операции AND представляет собой ложное выражение (утверждение), то и результатом будет False.
Кроме операции AND, к числу часто используемых логических операций относятся OR и NOT. Первая из них дает результат True, если истинно хотя бы одно выражение, являющееся операндом. Операция NOT изменяет результат на противоположный, подобно смене знака в арифметическом выражении. Вычислим R с помощью этих операций:
R = NOT ((X<X1) OR (X>X2) OR (Y<Y1) OR (Y>Y2))
Выражение, стоящее в скобках после операции NOT, истинно (True), если точка или левее, или правее, или ниже, или выше воображаемого прямоугольника, т.е. если точка в него не попала. В этом случае R будет иметь значение False благодаря логическому отрицанию NOT.
Несколько реже используются логические операции XOR (исключающее ИЛИ), EQV (эквивалентность) и IMP (импликация).
Первая из них дает результат True, если только одно из выражений-операндов имеет результат True.
Результатом операции EQV будет True, если выражения-операнды дают одинаковый результат.
Результатом IMP будет FALSE только в одном случае – при первом операнде, имеющем значение TRUE, второй операнд имеет значение False, например, при правильной посылке получен неверный вывод.
Перейдем теперь ко второй, важнейшей в любом языке программирования, группе инструкций. Это инструкции проверки условий и организации циклов. Все они позволяют управлять последовательностью исполнения инструкций в программе.
Инструкция IF (ЕСЛИ) используется в двух нотациях: в виде простой и блочной структур. Инструкция простой структуры имеет следующую форму записи:
If <Выражение> Then <Инструкция, исполняемая, если выражение-условие истинно>
Конструкция блочной структуры может включать один блок инструкций (<Блок 1>), исполняемых, если выражение 1 истинно, или же еще дополнительные условия, сопровождаемые блоками инструкций:
If <Выражение1> Then
<Блок 1 – исполняется, если выражение 1 истинно>
ElseIf <Выражение2> Then
<Блок 2 – исполняется, если выражение 2 истинно >
ElseIf <Выражение3> Then
<Блок 3 – исполняется, если выражение 3 истинно >
…………………..
Else
<Блок инструкций, исполняемых, если ложны выражения в инструкциях If и ElseIf>
End If
Приведем пример простой инструкции If:
If R Then MsgBox “Точка попала в прямоугольник”
Теперь пример блочной структуры:
R = False
If X < X1 Then
GoTo 10 ’уже ясно, что точка не попала в прямоугольник
ElseIf X > X2 Then
GoTo 10 ‘управление передается на метку 10
ElseIf Y < Y1 Then
GoTo 10
ElseIf Y > Y2 Then
GoTo 10
Else
R = True
End If
10: MsgBox R ’после метки ставится двоеточие
Блоки ElseIf и (или) Else могут отсутствовать. В любом случае блочная конструкция оканчивается инструкцией End If.
Приведенный пример, кроме блочной конструкции IF, поясняет возможность использования в программе меток и передач управления с помощью инструкции GoTo. Метка не обязательно обозначается числом – можно было написать и N10 или MsgR.
В ситуациях, когда требуется запрограммировать три и более разветвлений в зависимости от значения одной переменной, удобно использовать структуру Select Case:
Select Case <Переменная>
Case <Значение 1> либо Case is <Условие 1>
<Блок 1 – выполняется, если значение переменной равно значению 1
или соответствует условию 1>
Case <Значение 2> либо Case is <Условие 2>
<Блок 2 – выполняется, если значение переменной равно значению 2
или соответствует условию 2>
………………….
End Select
Приведем пример:
Возраст = TextBox1.Value
Select Case Возраст
Case Is < 13
Label1.Caption = "После 22-00 спать !"
Case 16
Label1.Caption = "Пора получать паспорт"
Case Is < 18
Label1.Caption = "Только чай !"
Case Is >= 18
Label1.Caption = "Можно почти все!"
End Select
Теперь рассмотрим организацию циклов. Вообще говоря, цикл нетрудно организовать и без специальных инструкций по схеме:
1) инструкции присваивания начальных значений переменной цикла и другим переменным;
2) инструкции, исполняемые при очередном значении переменной цикла;
3) наращивание (изменение) переменной цикла и, возможно, других переменных, изменяемых одновременно с переменной цикла;
4) проверка переменной цикла на соответствие условию, при котором цикл должен исполняться повторно, и передача управления блоку 2 при выполнении этого условия (IF <условие> GoTo <метка в начале блока 2>).
Именно такой, классический цикл изображен на рис. 4.1 в виде блок-схемы. Но в языках высокого уровня, и в том числе в VBA, предусмотрены инструкции, позволяющие записывать циклы еще компактнее. Проще всего цикл записывается, если известны начальное, конечное значения переменной цикла и шаг ее изменения. Пусть в J-ом столбце на листе Excel надо суммировать четные ячейки до строки 20, но только пока не встретится число 7777:
J = 1: S = 0
For I = 2 To 20 Step 2
F = Cells(I, J).Value
If F = 7777 Then Exit For 'Выход из цикла - на инструкцию после Next
S = S + F
Next I
MsgBox "i= " & Str(I-2) & " S=" & Str(S)
После выхода из цикла сообщается номер последней ячейки, значение которой добавлено к S и сама накопленная сумма. Цикл этого примера называют циклом типа For-Next.
В большинстве случаев циклы этого типа выглядят проще, т.к. обычно не требуется задавать шаг изменения переменной цикла (Step) и не нужно выходить из цикла по дополнительному условию (Exit For). В модуле, приведенном после рис. 10.5 (см. подраздел 10.4), такие циклы используются в процедурах TabCXCY и TabA. В последней процедуре – вложенный (двойной) цикл.
В тех случаях, когда нет возможности указать начальное и конечное значения переменной цикла, используют циклы типа Do-Loop. Для таких циклов возможны 4 варианта записи:
условие True в начале цикла Do While <условие> <инструкции, исполняемые в цикле> Loop |
условие False в начале цикла Do Until <условие> <инструкции, исполняемые в цикле> Loop |
условие True в конце цикла Do <инструкции, исполняемые в цикле> Loop While <условие> |
условие False в конце цикла Do <инструкции, исполняемые в цикле> Loop Until <условие> |
Циклы такого типа уже неоднократно применялись в примерах процедур в подразделах 10.3, 10.4. В число инструкций, исполняемых в цикле, может быть включена инструкция Exit Do, если из цикла надо выйти “досрочно”, например, при выполнении какого-нибудь дополнительного условия. Заметим, что Do While означает Выполнять пока… Do Until означает Выполнять пока не … Другими словами, вместо Do Until можно написать Do While Not. В некоторых случаях эти проверки удобнее ставить в конец цикла (Loop – цикл, дословно – петля).
В заключительной части этого раздела приведем рекомендации по отладке приложений.
Во-первых, для отладки надо подбирать разнообразные примеры, не ограничиваясь самыми простыми – ведь многие ошибки проявляются только при определенных значениях исходных данных, а иногда даже только при определенных сочетаниях этих значений.
Во-вторых, для просмотра промежуточных и окончательных значений переменных можно на время отладки включать в тексты процедур обращения к процедуре MsgBox, а также выводить значения переменных в виде свойства Caption элемента управления Label (метка – статический текст) или в виде свойства Text элемента управления TextBox (поле с редактируемым текстом). Важную роль играет выбор точек процедуры для вывода значений переменных при отладке. Для выбора таких точек можно рекомендовать рассматривать процедуру состоящей из логически завершенных фрагментов программного кода, формирующих определенные «информационные сцены». Эти-то сцены, характеризующиеся содержимым переменных и массивов, и надо контролировать.
В-третьих, VBA предоставляет специальные средства для отладки процедур. Если в окне редактора слева от текста инструкции (на полях) щелкнуть мышью, то создастся точка останова. При этом инструкция выделится красным цветом. Теперь переключаемся через панель задач на окно Excel и запускаем процедуру (обычно – командной кнопкой). В точке останова выполнение программы приостановится, причем произойдет переключение на окно редактора Visual Basic, а очередная инструкция будет выделена желтым цветом. Теперь можно навести мышь на любую переменную (на ее имя в любой инструкции), и появится окошечко со значением этой переменной в момент останова. Далее можно установить курсор в следующую представляющую интерес позицию модуля и нажать <Ctrl>+<F8> - программа выполнится до этой позиции и снова приостановится. Можно снова “посмотреть” значения переменных, наводя на них мышь. Есть также возможность перейти к пошаговому исполнению инструкций, пользуясь клавишей <F8> или комбинациями клавиш <Shift>+<F8> (шаг с обходом вызываемой процедуры) и <Shift>+<Ctrl>+<F8> (шаг с выходом из процедуры – см. также пункт меню Отладка).
Таким образом, современные среды визуального программирования предельно облегчают отладку программ.
Контрольные вопросы к разделу 10: что такое программирование; особенности и достоинства VBA; создание интерфейса пользователя, как разместить элементы управления на листе Excel, как установить их свойства, как перейти в окно редактора VBA, как создать диалоговое окно; что такое модуль, процедура, функция; как оформляются и вызываются процедуры; как оформляются и вызываются функции; категории встроенных функций; встроенные типы данных VBA; назначение переменных, их описание, локальные и глобальные переменные; назначение инструкции Option Explicit; массивы, их описание, доступ к элементам массива, многомерные массивы, динамическое переопределение размерности массивов; пояснить связь математических понятий вектора и матрицы с понятиями одномерного и двумерного массивов в программировании; конструирование собственных типов данных; константы, их определение и использование; доступ к данным, хранимым в виде свойств объектов-элементов управления; основные группы инструкций языка Visual Basic; инструкция присваивания; арифметические операции; конкатанация; операции сравнения; логические операции; инструкции проверки условий и организации циклов; методы отладки приложений.