- •Понятие процедур, функций, операторов, переменных
- •Переменные
- •Принципы и правила выбора имен для переменных
- •Типы переменных (данных)
- •Числовой тип
- •Строковый тип (текстовая строка)
- •Тип Date (дата)
- •Логический тип
- •Произвольный тип
- •Объектный тип
- •Создание переменных
- •Объявление переменной (variable declaration)
- •Требование явного объявления переменных. Область действия переменных. Константы. Правила написания констант. Операции и знаки операций Требование явного объявления переменных
- •Присваивание переменной (assigning the variable)
- •Область действия или видимости (scope - скауп) переменных
- •Использование переменных с одним и тем же именем в различных уровнях области действия
- •Правила того, как долго переменные удерживают свое значение
- •Константы
- •Создание именованных констант
- •Область действия констант
- •Написание констант
- •Операции и знаки операций
- •Получение приоритета:
- •Преобразование типов данных. Процедуры и функции. Типы операторов. Состав проекта Назначение типов данных
- •Преобразование типов данных
- •Преобразование числовых типов данных
- •Строковые переменные
- •Строки изменяемой и фиксированной длины
- •Преобразование числовых данных в строковые
- •Форматирование данных
- •Процедуры и функции
- •Аргументы
- •Примеры процедур
- •Функции
- •Обзор типов операторов
- •Операторы объявления
- •Операторы присваивания (инициализации)
- •Выполняемые операторы
- •Параметры компилятора
- •Состав проекта
- •Массивы. Классы объектов. Характеристики объектов. Объектная модель. Окно просмотра объекта. Комментарии. Управление потоком Массивы
- •Статические массивы
- •Динамические массивы
- •Пример работы с массивом
- •Классы объектов
- •Наследование
- •Полиморфизм
- •Инкапсуляция
- •Семейства объектов
- •Объектная модель
- •Использование Окна просмотра объектов
- •Замечания о комментариях
- •Управление потоком
- •Управление потоком (продолжение). Условные переходы. Циклы. Оператор With. Немедленный выход с помощью оператора Exit For Оператор Go to Примеры работы с двоичной логикой
- •Операторы условного перехода:
- •Оператор условного перехода If…Then
- •Пример использования условного перехода If…Then
- •Оператор условного перехода If…ElseIf
- •Оператор Select Case
- •Операторы циклов:
- •Повторение под управлением цикла For…Next
- •Пример вложенных циклов For…Next
- •Важные замечания по поводу циклов For…Next
- •Использование оператора цикла For Each… Next
- •Циклы Do…Loop
- •Типы оператора цикла Do…Loop
- •Пример оператора Do While (условие) Loop
- •Использование оператора Do …Until Loop (условие)
- •Использование оператора With
- •Использование оператора Is
- •Немедленный выход с помощью оператора Exit For
- •Управление потоком с помощью оператора Go To
- •«Ввод-вывод данных. Системные функции InputBox и MsgBox» Функции InputBox и MsgBox
Использование оператора цикла For Each… Next
Ключевым различием в использовании For Each… Next и For … Next является то, что в цикле For Each… Next не требуется указывать число повторений. В операторе For Each (для каждого элемента в группе) с помощью переменной элемент определяется тип объекта в семействе, а с помощью аргумента группа задается семейство, с которым нужно работать.
Структура представляет множество операторов, относящихся ко всем объектам в некотором семействе (как и структура цикла Do…Loop), но она проще в использовании.
Синтаксис цикла For Each… Next:
For Each элемент In группа
(операторы, выполняемые при каждом проходе цикла)
Next элемент
Например, семейство Blocks является семейством объектов Block, и каждый объект Block содержит неограниченное количество графических объектов типа Cone (конус) или 3Dface (3-х мерная поверхность). В этом фрагменте программного кода всего лишь отображается имя каждого объекта Block (objB) семейства Blocks:
Dim objB As Blocks
For Each objB In Blocks
Debug.Print objB.Name
Next objB
Циклы Do…Loop
Все возможные версии оператора Do…Loop предназначены для повторения заданного блока, пока не будет выполнено некоторое условие. Для того, чтобы решить: продолжать цикл или нет, оператор Do…Loop оценивает заданное условное выражение типа условных выражений, используемых для оператора If…Then.
Примеры применения:
-
отображение сообщения об ошибке снова и снова, пока пользователь не введет верную информацию;
-
чтение данных из файла на диске, пока не будет обнаружен конец файла;
-
организация холостой работы программы в течение некоторого времени;
-
выполнение некоторых действий по отношению ко всем элементам массива;
-
выполнение (с использованием оператора условного перехода If…Then) некоторых действий по отношению ко всем элементам массива или семейства, удовлетворяющих определенным критериям.
Типы оператора цикла Do…Loop
Операторы Do…Loop повторяют выполнение действий, пока некоторый условный оператор внутри цикла не выполнит команду End (слово Loop означает "петля"):
-
Do While (условие) Loop - цикл выполняется в случае и до тех пор, пока заданное условие имеет значение True (слово While - значит "пока"), т. е. выполнение кода может не состояться ни разу, если заданное условие не является истинным;
-
Do … Loop While (условие) – оператор начинает процедуру и выполняет блок кода один раз, т. к. условие проверяется после выполнения цикла (цикл с постусловием), а затем повторяет выполнение цикла, пока заданное условие имеет значение True;
-
Do Until (условие) Loop - начинает и повторяет выполнение блока кода, только если заданное условие принимает значение False (слово Until означает "пока не");
-
Do … Loop Until (условие) - выполняет блок программного кода один раз, а затем повторяет выполнение, пока заданное условие имеет значение False.
Пример оператора Do While (условие) Loop
Do While ВводимыеИмена < > "Готово"
ВводимыеИмена =InputBox("Введите Ваше имя или слово "Готово" для выхода")
If ВводимыеИмена < > "Готово" Then
Print ВводимыеИмена
Loop
VB трактует код, как "исполнять цикл до тех пор, пока переменная ВводимыеИмена не будет содержать значение "Готово". Если содержанием этой переменной сразу же является текстовая строка "Готово", то цикл Do не выполнится ни разу. При этом VB пропустит все, входящие в цикл операторы, и продолжит выполнение с оператора, следующего за циклом, т. е. за ключевым словом Loop.
Если же нужно, чтобы цикл выполнялся хотя бы один раз, то оператор проверки условия помещают в конце цикла.
Do
ВводимыеИмена =InputBox("Введите Ваше имя или слово "Готово" для выхода")
If ВводимыеИмена < > "Готово" Then
Print ВводимыеИмена
Loop While ВводимыеИмена < > "Готово"
Это даёт возможность изменения переменной ВводимыеИмена до проверки условия, поэтому в случае ранее присвоенного переменной значения "Готово" цикл не будет пропущен, а гарантированно выполнится один раз. Но
в цикле нужно будет добавить операторы, исключающие значение "Готово" для переменной ВводимыеИмена перед вводом имён.