Конструкции управления visual basic


Содержание

Урок № 13. Управляющие структуры

Этот раздел посвящён операторам, которые предназначены для управления процессом выполнения всех остальных исполняемых операторов Visual Basic. Такие классические структуры, как условные операторы и операторы цикла, имеются во всех процедурных языках программирования, имеются они и в Visual Basic.

Примечание: Здесь бы хотелось заметить, что управляющие структуры мы тоже будем называть операторами. Операторы, рассмотренные на предыдущем уроке используются в выражениях. А операторы рассматриваемые в этом уроке предназначаются для управления вычислением этих выражений (в документациях такие операторы называются — Statement). Важно понимать различие между этими операторами.

Условный оператор If. End If

Этот оператор вы уже встречали в восьмом уроке. Он необходим для принятия решений, нужно ли выполнять то или иное действие или нет. Другими словами если Логическое_выражение истинно, то Оператор выполнится. Если ложно, то выполнение не произойдёт.

If Логическое_выражение Then Оператор

If Логическое_выражение Then
&nbsp&nbsp&nbsp&nbspГруппа_операторов
End If

В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один).

If (a = b) And (c <> d) Then
&nbsp&nbsp&nbsp&nbspb = d
&nbsp&nbsp&nbsp&nbspa = 20
End If

Скобки здесь не обязательны, но они повышают читабельность кода.

Условный оператор If. Else. ElseIf. End If

Такая конструкция используется для более сложных ветвлений:

If Логическое_выражение 1 Then
&nbsp&nbsp&nbsp&nbspГруппа_операторов
ElseIf Логическое_выражение 2 Then
&nbsp&nbsp&nbsp&nbspГруппа_операторов
.
Else
&nbsp&nbsp&nbsp&nbspГруппа_операторов
End If

Эта схема может быть и в укороченном виде If. Then. Else. End If. При этом операторы после Else выполняются только в том случае, если ни одно из условий не выполнено.

If (a = b) Or (c <> d) Then
&nbsp&nbsp&nbsp&nbspb = d
&nbsp&nbsp&nbsp&nbspa = 20
Else
&nbsp&nbsp&nbsp&nbspc = d
End If

Выражение c=d будет выполнено только в том случае, если a<>b или c=d.

Условный оператор Select Case. End Select

Конструкция Select Case «принимает решение» на основе анализа значения одного выражения. При этот это выражение указывается в строке Select Case:

Select Case Анализируемое_выражение

Case Значение№1
&nbsp&nbsp&nbsp&nbspГруппа операторов
Case Значение№2
&nbsp&nbsp&nbsp&nbspГруппа операторов
.
Case Значение№N
&nbsp&nbsp&nbsp&nbspГруппа операторов
Case Else
&nbsp&nbsp&nbsp&nbspГруппа операторов

Конечно, анализируемое выражение должно возвращать значение типа, совместимого с типом значений в строка Case.

В зависимости от значения переменной iTest, строковой переменной strResult присваиваются различные значения

Select Case iTest

Case 1
&nbsp&nbsp&nbsp&nbspstrResult = «iTest = 1»
Case 2, 3, 4
&nbsp&nbsp&nbsp&nbspstrResult = «iTest = 2, 3 или 4»
Case 5 To 9
&nbsp&nbsp&nbsp&nbspstrResult = «iTest находится в диапазоне от 5 до 9»
Case iTest Case Is > 9
&nbsp&nbsp&nbsp&nbspstrResult = «iTest больше 9»
Case Else
&nbsp&nbsp&nbsp&nbspstrResult = «iTest равно 0»

Оператор цикла For. Next

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

For Счётчик_цикла = Старт To Стоп Step Шаг
&nbsp&nbsp&nbsp&nbspГруппа операторов
Next [Счётчик_цикла]

Роль счётчика цикла может играть только ранее объявленная переменная целочисленного типа. Шаг задаёт приращение счётчика цикла при каждом проходе. Умолчательно значение шага равно 1. После слова Next счётчик можно опустить.

В этом примере всем элементам массива iArray присваивается значение 5.

Dim c As Integer
Dim iArray(10) As Integer
For c = 0 To 10
&nbsp&nbsp&nbsp&nbspiArray(c) = 5
Next c

Оператор цикла For Each. Next

Эта специфическая форма цикла For предназначена для выполнения некоторой операции с каждым объектом, входящим в состав некоторой коллекции объектов (такой операцией, например, может быть вызов метода или присваивание значения свойству). Синтаксис оператора:

For Each ИмяОбъекта In ИмяКоллекции
&nbsp&nbsp&nbsp&nbspОперации над объектами
Next ИмяОбъекта

В этом примере показано, как изменить свойство BackColor у всех этикеток (Label), лежащих на форме

Dim x As Object
For Each x In Me.Controls
&nbsp&nbsp&nbsp&nbspIf TypeName(x) = «Label» Then
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspx.BackColor = 0
&nbsp&nbsp&nbsp&nbspEnd If
Next x

Me здесь — текущая форма. Т.е. не обязательно использовать полное имя формы для доступа к её свойствам. Например, для закрытия текущей формы, можно написать Me.Hide. (или Unload Me).

Оператор цикла Do While. Loop / Do. Loop While

Эти две разновидности цикла тесно взаимосвязаны, и их часто рассматривают как один из базовых видов цикла. Как уже отмечалось, циклы For применяют в тех случаях, когда количество проходов и диапазон изменения счётчика цикла заранее известны. Циклы While предназначены для ситуаций, когда количество проходов цикла заранее не известно, но зато известно условие выхода из цикла. Синтаксис цикла While:

Do While Условие_выхода
&nbsp&nbsp&nbsp&nbspГруппа операторов
Loop

Do
&nbsp&nbsp&nbsp&nbspГруппа операторов
Loop While Условие_выхода

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

Do While 2 > 1
&nbsp&nbsp&nbsp&nbspDegub.Print «Вечный цикл»
Loop

Если у вас случаянно получился такой цикл, то выйти из него можно при нажатии Ctrl+Break. Но это работает только в среде разработки.

Dim n As Integer
n = 100
Do While n >= 0
&nbsp&nbsp&nbsp&nbspn = n — 1
&nbsp&nbsp&nbsp&nbspDebug .Print n
Loop

Оператор цикла Do Until. Loop / Do. Loop Until

По своей логике цикл Until подобен циклу While с той лишь разницей, что проходы цикла выполняются до тех пор, пока условие выхода не выполняется.

Dim n As Integer
n = 100
Do
&nbsp&nbsp&nbsp&nbspn = n — 1
&nbsp&nbsp&nbsp&nbspDebug .Print n
Loop Until n

Выход из цикла Exit For / Exit Do

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

Dim n As Integer
n = 10
Do While n > 1
&nbsp&nbsp&nbsp&nbspn = n — 1
&nbsp&nbsp&nbsp&nbspDebug .Print n
&nbsp&nbsp&nbsp&nbspIf n = 5 Then Exit Do ‘ Если счётчик = 5, то
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp’выходим из цикла
Loop

Итак, управляющие структуры — очень важное и далеко не слабое звено в программировании на Visual Basic (да и не только на Visual Basic). Без таких использования таких структур не получится написать даже самую маленькую программу. Даже если и получится, то программа не будет представлять никакого практического интереса.
Но есть ещё более важное звено программы — функция. Вот как раз функциями мы сейчас и займёмся! Рассмотрев функции, мы уже сможем написать какую-нибудь полезную в хозяйстве програмку.

Конструкции управления visual basic

В VB.NET имеются следующие условные структуры:

Конструкция If. Then

Конструкция If . Then проверяет истинность некоторого условия и зависимости от результатов проверки выполняет определенный код:

Здесь проверяем, больше ли число num1 числа num2, и если num1 больше чем num2. то выводим сообщение. Но, допустим, мы захотим, чтобы в случае невыполнения этого условия тоже совершалось какое-нибудь действие. Тогда мы добавляем выражение Else и после него определяем те действия, которые будут совершаться, если программа не удовлетворяет условию в выражении If. Например, мы будем выводить сообщение, что первое число меньше второго:

Но как вы уже заметили, мы сделали немного неправильно. Так как первое число может быть не только больше или меньше второго: оба числа могут быть равны друг другу. В этом случае мы можем определить альтернативные условия с помощью ключевого слова ElseIf:

В данном примере мы использовали генератор случайных чисел, который представлен классом Random. Строка Dim R As New Random() выполняет инициализацию генератора случайных чисел. А в следующей строке Dim num1 As Integer = R.Next(100) мы присваиваем числу num1 случайное значение, которое выдаст нам генератор, причем в качестве максимально возможного значения выбрано число 100.

Конструкция Select Case

Конструкция Select Case подобна в конструкции If. Then, так как позволяет обрабатывать сразу несколько условий. После слов Select Case указывается сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора Case. И в случае если значения совпали, то выполняется блок команд, помещенных после данного оператора Case. Конструкция завершается словами End Select. Если мы хотим определить действия, которые будут выполняться, если совпадений не выявлено, то мы можем использовать оператор Case Else, после которого помещаем блок действий по умолчанию. Блок Case Else необязателен и может не употребляться Так, мы можем переписать предыдущий пример с помощью Select Case:

Здесь мы также генерируем случайное число и последовательно сравниваем его значения. Обратите внимание на строку Case 3 To 25 — здесь мы задаем целый диапазон значений от 3 до 25. Также обратите внимание, что если будет найдено совпадение с одним из выражений Case, то остальные выражения Case рассматриваться не будут. То есть следующий код отработает только для выражения Case 1 , после чего программа осуществит выход из Select Case, несмотря на то, что новое значение числа совпадает с значением в следующем выражении Case:

Конструкция GoTo

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

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

Интерфейс и компоненты Visual Basic

Проектирование программного кода осуществляется в Интегрированной среде разработки (Integrated Development Environment IDE). Основными компонентами IDE являются:

окно формы, предназначено для визуального проектирования;

окно кода, предназначено для написания кода вручную;

панель элементов управления, содержит объекты, размещаемые на форме при создании интерфейса;

окно свойств элементов управления;

окно проекта, в котором отображаются все составляющие проекта в виде иерархической древовидной структуры (проводник проекта).

Каждый объект проекта (формы и элементы управления) обладают свойствами, им соответствуют определённые события, реакция на которые называется методами.

ЛАБОРАТОРНОЕ ЗАНЯТИЕ № 3

Цель занятия:ознакомить студентов с составом проекта Visual Basic, визуальной средой разработки и синтаксисом языка.

Задание 1. Проект и интегрированная среда разработки Visual Basic

Используя проводник Windows откройте папку с проектом Visual Basic, указанную преподавателем (VB учебные \ 00 Наибольшее число).

Алгоритм задачи рассмотрен во втором разделе пособия (лабораторное занятие 2, задание 2)

Эта папка содержит шесть файлов, каждый из которых является частью проекта.

Файл с расширением ЕХЕ (MaxN.exe) – исполняемый файл, созданный в процессе компиляции исходного кода. Это результат проектирования, который может существовать независимо от других файлов проекта.

Остальные файлы проекта создаются автоматически в процессе его сохранения. Основными из них являются Проект1.vbp – файл проекта и Форма1.frm – файл формы. Установите указатель на первый из них, и два раза щёлкните по левой кнопке мыши. При этом произойдёт загрузка интегрированной среды разработки Visual Basic, которая приведена на рисунке 18.

Рис. 18. Интегрированная среда разработки Visual Basic.

Последовательно отыщите на экране и ознакомьтесь со следующими компонентами интерфейса:

─ главное меню – расположено в верхней части экрана;

─ панель инструментов – расположено ниже главного меню;

─ панель элементов – находится в левой части экрана;

─ окно формы – в центре экрана;

─ окно программного кода – в центре экрана;

─ окно свойств – в правой части экрана;

─ менеджер проекта – над окном свойств.

Обратите внимание на то, что часть компонентов интерфейса (окно элементов, окно формы, окно кода, окно свойств) содержат атрибуты окна Windows. Поэтому их можно перемещать, сворачивать и закрывать.

Закройте окно формы, окно свойств и панель элементов. Используя меню Вид (Просмотр), откройте закрытые компоненты.

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

Закройте Visual Basic.

Задание 2. Создание интерфейса приложения с использованием визуальных средств программирования

Рассмотрим один из важнейших инструментов программирования на примере создания простейшего текстового редактора.

Используя меню Пуск \ Программы \ Microsoft Visual Basic 6.0 \ Microsoft Visual Basic 6.0, откройте окно Новый проект. В появившемся окне щёлкните по кнопке Открыть. На экране появится визуальная среда разработки Visual Basic.

На панели элементов щелчком указателя мыши утопите кнопку TextBox – текстовое поле, как показано на рис. 19.

Рис. 19. Кнопка TextBox.

Этот элемент управления используется для ввода текстовой информации. Элементы управления, размещенные на форме, принято называть объектами формы. Форма для них служит контейнером. Сама же форма тоже является объектом приложения. Совокупность этих объектов и есть пользовательский интерфейс.

Для размещения текстового поля на форме, установите указатель мыши в левый верхний угол предполагаемого текстового редактора и, удерживая левую кнопку мыши, переместите его по диагонали формы в правый нижний угол.

Полученный прямоугольник является текстовым полем (рис. 20). Если он выделен, вокруг него размещены угловые, вертикальные и горизонтальные маркера (маленькие чёрные квадратики). Маркера используются для изменения размеров текстового поля. Убедитесь в этом.

Рис. 20. Окно текстового редактора, размещённое на форме.

Если элемент управления активен, в окне свойств отображаются его свойства, в нашем случае свойства текстового поля (рис. 21). Окно свойств содержит две колонки. Колонку наименований (левая ) и колонку значений (правая). Значения свойств элементов управления могут быть изменены.

Установите указатель мыши в правую колонку напротив свойства text и удалите его значение. Обратите внимание на то, какие изменения произошли с текстовым полем.

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

Рис. 21. Свойства текстового поля.

Из меню Вид (Просмотр) выберите команду План формы. Выполните щелчок по левой кнопке мыши. На экране появится окно План формы.

На панели инструментов нажмите кнопку Старт или меню Пуск \ Старт. Среда разработки Visual Basic переключится в режим интерпретации, который имитирует работу приложения в реальном масштабе времени. Необходимо учитывать, что это не результат проектирования, а лишь его промежуточный этап.

Опробуйте работу созданного текстового редактора. Для этого введите несколько текстовых строк.

На панели инструментов нажмите кнопку Конец или меню Пуск \ Конец, что позволит вернуться к процессу разработки проекта.

Рис. 22. Окно План формы.

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

Переместите указатель на форму и щёлкните левой кнопкой мыши. Форма, а следовательно и её свойства станут активными.

В окне свойств найдите свойство Caption. Удалите существующее значение (Form1) и наберите с клавиатуры новое (Редактор текстов). В заголовке создаваемой формы отобразится новое значение свойства Caption.

Обратите внимание на то, что свойство Name (Имя) также имеет значение Form1. Но разница между ними существенная. Свойство Caption определяет заголовок формы, тогда как свойство Name используется в качестве идентификатора объекта Форма в программном коде.

Переместите указатель на свойство Icon. Нажмите на кнопку с тремя точками. В окне Загрузить Пиктограмму выберите: VB Учебные \ Фотогаллерея \ ico \ Book01a.ico. В качестве пиктограммы может быть выбран любой файл с расширением ico. Выбранная пиктограмма помещается в строку заголовка формы. Она же будет являться значком к имени загружаемого файла проекта.

Используя проводник Windows, создайте в собственной папке папку Редактор. В процессе сохранения проекта можно изменять наименования файлов. Например, загружаемый файл можно назвать Редактор.ехе. Как правило, он эксплуатируется автономно. Сохраните проект в следующей последовательности:

Файл \ Сохранить Проект Как…

Файл \ Сохранить Form1 Как…

Файл \ Делать Project1.ехе…

Процесс создания загружаемого файла называется процессом компиляции.

Закройте визуальную среду программирования. Используя проводник Windows, убедитесь в том, что необходимые файлы проекта содержатся в папке Редактор. Загрузите исполняемый файл и проверьте его работоспособность.

Задание 3. Модули, процедуры и функции

Чтобы продолжить работу с проектом, необходимо загрузить файл с расширением vbp. Этот файл содержит структуру всего проекта.

Если после загрузки окно формы отсутствует, выберите в окне менеджера проекта (рис. 23) строку формы и щёлкните по ней кнопкой мыши. Для просмотра составляющих проекта используют кнопки Показать объект, Показать Код, которые расположены в левом верхнем углу окна (рис. 23).

Рис. 23. Окно менеджера проекта.

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

─ модули формы – основа проекта;

─ стандартные модули – доступны всем модулям проекта;

─ модули классов – используются для создания новых классов, объектов, свойств и методов.

Модули содержат процедуры общего назначения, процедуры обработки событий и функции.

В нашем случае Форма1 является модулем формы, который пока не содержит процедур и функций.

Любое приложение Windows после загрузки сохраняет состояние покоя до тех пор, пока не произойдёт внешнее воздействие на один из элементов управления. Такое воздействие называют событием. Реакция на событие – методом. Рассмотрим технологию создания и структуру процедуры обработки событий на конкретном примере.

Активизируйте окно формы, если оно не активное. Выделите текстовое поле Тext1 и разместите его в центре формы. Для этого используйте функциональное меню: Формат \ Центрировать в Форме \ Горизонтально; Формат \ Центрировать в Форме \ Вертикально.

На панели элементов утопите кнопку CommandButton (кнопка управления). Удерживая левую кнопку мыши, очертите на форме пространство ниже текстового поля. Свойству Caption данного объекта присвойте значение «Восстановить». Аналогичным образом создайте рядом вторую кнопку в соответствие с рис. 24.

Рис. 24. Форма Редактор текстов.

Выделите обе кнопки, удерживая клавишу CTRL. Отформатируйте их размеры с помощью функционального меню: Формат \ Сделать одного Размера \ Ширина; Формат \ Сделать одного Размера \ Высота.

Выделите текстовое поле Тext1. В окне свойств данного объекта выберите свойство Visible. Установите для этого свойства значение «False» (Нет), как показано на рис. 25.

Рис. 25. Свойство Visible.

Установка такого значения свойства Visible позволит скрыть на экране текстовое поле при загрузке приложения. Убедитесь в этом, используя режим интерпретатора. Вернитесь в режим проектирования приложения.

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

Установите указатель на кнопку «Восстановить» и дважды щёлкните по левой кнопке мыши. Автоматически откроется окно Редактора кода, в котором будет сформированы первая и последняя строчки процедуры обработки события Click:

Private Sub Command1_Click()

End Sub

Первая строка процедуры должна обязательно содержать зарезервированное слово Sub и имя процедуры, которое состоит из наименования объекта Command1 и наименования события Click, разделённых знаком подчёркивания. Private – обозначает то, что данная процедура доступна только для модуля Form1. Последняя строка процедуры содержит зарезервированные слова End Sub. Обратите внимание, что курсор расположен между первой и последней строками процедуры.

Нажмите клавишу Tab и наберите на клавиатуре выражение следующего содержания:

Text1.Visible = True

В этом выражении использован оператор присвоения – знак равно. Свойству Visible объекта Text1 присваивается значение True – истина. При этом объект следует отделить от его свойства точкой. Такая запись позволяет обеспечить видимость текстового поля.

Общий вид процедуры обработки события нажатия на клавишу «Восстановить»:

Private Sub Command1_Click()

Text1.Visible = True

End Sub

Самостоятельно создайте процедуру обработки события нажатия на клавишу «Удалить». Программный код этой процедуры должен выглядеть следующим образом:

Private Sub Command2_Click()

Text1.Visible = False

End Sub

Проверьте результаты программирования в режиме интерпретации.

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

─ функции всегда возвращают значения, процедуры никогда;

─ первая строка функции начинается с зарезервированного слова Function, за которым следует её наименование;

─ последняя строка функции завершается фразой End Function;

─ функция не связана с обработкой событий и может быть вызвана из процедуры.

В арсенале Visual Basic содержится много стандартных функций, использование которых облегчает работу программиста, так как для вызова функции достаточно указать её имя. Рассмотрим на конкретных примерах использование функций.

Используя кнопку Label (Метка), расположенную на панели элементов, отобразите в правом верхнем углу формы (над текстовым полем) прямоугольник. Этот элемент управления будет использоваться для отображения системной даты. Установите для его свойства Caption значение пробел, а для свойства BorderStyle значение 1- Fixed Single как указано на рис. 26.

Рис. 26. Свойства элемента управления.

Откройте Окно формы, если оно закрыто. Установите указатель на кнопку «Восстановить». Двойным щелчком по кнопке мыши откройте Редактор кода. Введите в тело процедуры обработки текущего события выражение вызова стандартной функции Date: Label1.Caption = Date. Функция Date всегда возвращает системную дату, которая присваивается свойству Caption объекта Label1. Теперь процедура будет выглядеть следующим образом:

Private Sub Command1_Click()

Text1.Visible = True

Label1.Caption = Date

End Sub

Создайте две функции одна из которых позволяет выводить на экран текстовую константу, например: “Первая программа на VB”, вторая — гасить изображение на экране и значение системной даты.

Для этого в последней, свободной строке Редактора кода наберите на клавиатуре первую строку функции titul: Function titul() и нажмите клавишу Enter. Последняя строка функции будет создана автоматически. Нажмите клавишу Tab и введите выражение Print «Первая программа на VB». Оператор Print позволяет выводить на экран текстовую константу, заключённую в двойные кавычки.

Function titul()

Print «Первая программа на VB»

End Function

Аналогичным образом создайте функцию гашения экрана. При этом можно использовать обычные средства Копирования и Вставки фрагментов текста через буфер обмена.

Function cle()

Cls

Label1.Caption = «»

End Function

Функция с наименованием cle содержит оператор гашения экрана Cls. В следующей строке свойству Caption объекта Label1 присваивается пустое значение, что соответствует двум последовательно набранным двойным кавычкам.

Для вызова функций наберите их имена в процедурах обработки событий как показано ниже:

Private Sub Command1_Click()

Text1.Visible = True

Label1.Caption = Date

Titul

End Sub

Private Sub Command2_Click()

Text1.Visible = False

Cle

End Sub

Проверьте результаты программирования в режиме интерпретации.

Вернитесь в Редактор кода. Разверните окно редактора на весь экран с помощью кнопки Развернуть (средняя из трёх кнопок, расположенных в правом верхнем углу окна). Созданный программный код, состоящий из процедур обработки событий и функций называется Модулем Формы 1.

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

Введите следующие комментарии:

Процедура обработки щелчка по кнопке Восстановить

Private Sub Command1_Click()

Text1.Visible = True

Label1.Caption = Date вызов стандартной функции

titul вызов функции titul

End Sub

Процедура обработки щелчка по кнопке Удалить

Private Sub Command2_Click()

Text1.Visible = False

cle вызов функции cle

End Sub

Функция вывода текста на экран

Function titul()

Print «Первая программа на VB»

End Function

Функция очистки экрана

Function cle()

Cls‘очистка экрана

Label1.Caption = «»‘очистка объекта Label1

End Function

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

Рассмотрим пример готового программного кода.

Илон Маск рекомендует:  Что такое код diskfreespace

Используя проводник Windows, загрузите проект:

VB Учебные \ Проекты \ 01 Вызов процедуры \ Проект1.vbp

Откройте окно Редактора кода. Код приложения приведён ниже:

‘Общая процедура присвоения значения текстового поля

‘Text5 свойствам текстовых полей Text1,2,3,4

Sub Процедура()

Text1.Text = Text5

Text2.Text = Text5

Text3.Text = Text5

Text4.Text = Text5

End Sub

‘Процедура обработки события: Щелчок по кнопке Command1

Private Sub Command1_Click()

Процедура

End Sub

В данном примере рассмотрены две процедуры:

─ процедура обработки события.

Рассмотрите структуру общей процедуры и технологию обращения к ней. Определите, чем общая процедура отличается от процедуры обработки событий.


Просмотрите работу приложения в режиме интерпретации.

Закройте Visual Basic

Задание 4. Переменные, константы, объявление переменных

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

Процесс резервирования участка памяти под переменную называется объявлением переменной. При объявлении переменных тип данных может быть обозначен знаком – идентификатором. Справочная информация о типах данных и идентификаторах приведена в приложении 1. Рассмотрим на конкретных примерах использование переменных в программном коде.

Создайте Новый проект Visual Basic.

Свойству Caption присвойте значение: Сложение двух чисел.

Аналогичный алгоритм рассмотрен в теоретической части второго раздела.

Для свойства Icon загрузите пиктограмму VB Учебные \ Фотогаллерея \ ico \ Mycomp.ico.

Command1

Рис. 25. Окно формы.

Разместите на форме три текстовых поля (TextBox) и одну кнопку управления (CommandButton).

Переместите форму в центр экрана.

Удерживая клавишу CTRL, выделите три текстовых поля. Отформатируйте их, используя меню Формат.

Снимите выделение трёх текстовых полей, щелчком мыши на свободном пространстве формы.

Последовательно выделяя каждое текстовое поле, установите для каждого из них значение свойства Text равным нулю. Для свойства MaxLength (максимальное количество вводимых символов) значение равное 4 для первых двух полей и значение равное 5 для третьего поля.

Свойству Caption элемента управления Command1присвойте значение: Вычислить.

Используя элемент управления Label (Label) разместите на форме подписи полей как показано на рис. 26.

Рис. 26. Интерфейс приложения.

Таким образом, создан интерфейс будущего приложения. Два первых текстовых поля будут служить для ввода целых четырёхзначных числовых значений. Щелчок по кнопке «Вычислить» должен обеспечить суммирование чисел и занесение результата в третье текстовое поле.

В учебных целях используем переменные a и b в качестве слагаемых, переменную с для хранения результата суммирования. Хотя их использование в такой простой задаче не обязательно.

Переменные должны быть объявлены. Иногда возникают ошибки при использовании не объявленных переменных. Во избежание такого рода проблем в начале модуля устанавливается оператор Option Explicit, который предупреждает программиста, когда встретится имя переменной, не объявленной явно. Если установить опцию Требуется переменные объявле (Инструменты \ Опции \ вкладка Редактор), то этот оператор будет добавляться автоматически в каждый вновь создаваемый модуль.

Откройте окно Редактора кода и проверьте наличие этого оператора. Если он отсутствует, наберите его на клавиатуре.

Объявите переменные, используя оператор Dim (см. приложение1):

Option Explicit

Dim a As Integer ‘число 1

Dim b As Integer ‘число 2

Dim c As Integer ‘результат

Все переменные объявлены как целые числа.

Второй вариант объявления переменных с помощью идентификатора приведён ниже:

Option Explicit

Dim a % ‘число 1

Dim b % ‘число 2

Dim c % ‘результат

Откройте Окно формы и дважды щёлкните по объекту Command1. В Редакторе кода будут сформированы первая и последняя строки процедуры обработки событий (щелчок по кнопке «Вычислить»):

Private Sub Command1_Click()

End Sub

Напишите следующую последовательность строк программного кода данной процедуры:

Private Sub Command1_Click()

a = CInt(Text1)

b = CInt(Text2)

c = a + b

Text3.Text = CStr(c)

End Sub

a = CInt(Text1) –присвоение значений данных, занесённых в текстовое поле Text1 переменной a.

Поле Text1 содержит текстовую информацию, а переменная a объявлено как число. Во избежание несоответствия типов данных, текстовая информация должна быть преобразована в числовую.

Для этих целей использована стандартная функция CInt. В скобках указан аргумент – текстовое поле.

b = CInt(Text2) –присвоение значений данных, занесённых в текстовое поле Text2, переменной b.

c = a + b –суммирование и пересылка результата в переменную c.

CStr(c) –функцияпреобразования числового значения, содержащегося в переменной, в текстовую информацию. Cstr – функция, с – аргумент (переменная).

Text3.Text = CStr(c)– присвоение значения, возвращаемого функцией, свойству Text текстового поля Text3.

Программный код модуля формы содержит одну процедуру обработки событий:

Option Explicit

Dim a As Integer ‘число 1

Dim b As Integer ‘число 2

Dim c As Integer ‘результат

Private Sub Command1_Click()

a = CInt(Text1)

b = CInt(Text2)

c = a + b

Text3.Text = CStr(c)

End Sub

Проверьте работу приложения в режиме интерпретации.

Создайте в собственной папке папку Переменные. Сохраните в ней проект. Выполните компиляцию. Закройте Visual Basic.

В проводнике Windows откройте папку Переменные и загрузите файл. Проверьте корректность работы созданного приложения.

Вопросы для самоконтроля:

1. Основные компоненты Интегрированной среды разработки Visual Basic и их назначение.

2. Компоненты программного кода Visual Basic (модули, процедуры и функции).

3. Структура процедуры и функции, их отличие.

4. Переменные и константы, типы данных.

5. Объявление переменных, идентификаторы.

6. Назначение оператора Option Explicit.

7. Создайте программный код вывода на экран текстовой информации.

8. Создайте программный код вычисления разности двух чисел.

9. Создайте программный код расчёта удельного веса объёма производства отрасли (Vотрасли) в общем объёме (Vпром.).Удельный вес рассчитывается по формуле:

Уотрасли = (Vотрасли /Vпром.) * 100%.

10. Создайте программный код расчёта удельного веса работников отрасли (Ч отрасли) в общей численности работников занятых в производстве (Чпром.).Удельный вес рассчитывается по формуле:

Уотрасли = (Чотрасли /Чпром.) * 100%.

11. Создайте программный код расчёта эффективности производства. Э = Р / З (Р – результаты, З– затраты).

ОБЛАСТЬ ОПРЕДЕЛЕНИЯ ПЕРЕМЕННЫХ, МАССИВЫ, КОНСТРУКЦИИ ЯЗЫКА

Область определения переменных

Переменные могут быть объявлены на уровне: процедуры, модуля, приложения. От того, где объявлена переменная, зависит возможность её использования или как принято называть область видимости переменной.

Переменные, объявленные на уровне процедуры, могут быть локальными (объявляются оператором Dim) и статическими (объявляются оператором Static). Локальные переменные теряют своё значение при выходе из процедуры. Статические переменные сохраняют последнее присвоенное значение.

Переменные модуля доступны всем процедурам данного модуля. Они объявляются оператором Private вначале модуля.

Переменные объявленные оператором Public доступны всем модулям проекта. Их называют открытыми переменными и объявляют вначале модуля. Справочные сведения о переменных приведены в Приложении 1.

Массивы

В массивах хранятся нумерованные наборы логически связанных переменных, доступ к значениям которых осуществляется по имени элемента массива и его номеру – индексу. Индекс массива начинается с нуля. Массивы объявляются теми же операторами, что и переменные.

Выделяют статические и динамические массивы. Границы статического массива заранее определены. Они указываются в скобках после наименования массива. Например:

Dim Spisok ( 149 ) As String – одномерный массив, состоящий из 150 строковых элементов.

Dim Tovar ( 19, 49 ) As Integer – двухмерный массив, содержащий 20 строк и 50 столбцов.

Границы динамического массива первоначально не определены. Например:

Dim Suma ( ) As Variant – динамический массив содержащий значения типа Variant.

В процессе выполнения программного кода массиву назначается действительное число элементов оператором ReDim. Например:

ReDim Suma ( 150 ) –такое назначение может быть выполнено только в рамках процедуры.

Конструкции языка

Конструкции языка позволяют изменять порядок выполнения операций (ветвление) или неоднократно повторять последовательность действий в

зависимости от определённого условия (циклы).

Краткая справочная информация об основных конструкциях языка приведена в приложении 2.

ЛАБОРАТОРНОЕ ЗАНЯТИЕ № 4

Цель занятия:привить студентам навыки работы с переменными и массивами. Обучить приёмам использования основных конструкций языка Visual Basic.

Задание 1. Массивы, конструкции языка (ветвление, циклы)

Рассмотрим технологию обработки массивов и построение конструкций языка на конкретном примере.

Требуется создать программу сортировки пяти целых чисел по возрастанию. Совокупность числовых значений рассматривать как одномерный массив, состоящий из пяти элементов. В качестве инструмента сортировки использовать простейший алгоритм поплавка. При котором, числа, имеющие меньший удельный вес (меньшее значение), “всплывают”.

Создайте новый проект Visual Basic.

На форме разместите следующие объекты в соответствие с рис. 27:

пять текстовых полей (Text1 – Text5),

управляющую кнопку (Command1).

Для указанных свойств объектов присвойте следующие значения (табл. 5):

Объекты Свойства Значения
Форма1 Caption Сортировка
Icon VB Учебные \ Фотогаллерея \ ico \ Graph14.ico
Label1 Caption Введите пять чисел
Text1, Text2, Text3, Text4, Text5 Alignment 1 Выровнять по Правому Краю
MaxLength
Text
Command1 Caption Сортировать

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

После очередного прохода наращивается на 1 переменная внешнего цикла i.

Программный код с комментариями (выделены курсивом) приведён ниже.

Рис. 27. Интерфейс приложения.

Option Explicit

Dim PU(4) As Integer ‘Объявление массива

Dim Sh As Integer ‘Объявление буферной переменной

Dim i%, j%‘Объявление переменных цикла

Private Sub Command1_Click()

‘Заполнение массива PU данными

PU(0) = CInt(Text1)

PU(1) = CInt(Text2)

PU(2) = CInt(Text3)

PU(3) = CInt(Text4)

PU(4) = CInt(Text5)

i = 0: Sh = 0 ‘Инициализация переменных

Do While i <> 5 ‘Цикл всех проходов

Do While j <> 4 ‘Цикл одного прохода

If PU(j) > PU(j + 1) Then ‘Условие погружения

Sh = PU(j)

PU(j) = PU(j + 1)

PU(j + 1) = Sh

End If

j = j + 1

Loop

j = 0

i = i + 1

Loop

‘Пересылка значений элементов массива в текстовые поля

Text1.Text = CStr(PU(0))

Text2.Text = CStr(PU(1))

Text3.Text = CStr(PU(2))

Text4.Text = CStr(PU(3))

Text5.Text = CStr(PU(4))

End Sub

После создания программного кода сохраните проект. Выполните компиляцию. Закройте Visual Basic. Проверьте работоспособность приложения. Для этого загрузите исполняемый файл (файл с расширением ехе) введите пять числовых значений и выполните их сортировку.

Загрузите файл Проект1.vbp (VB Учебные \ Проекты \ 08 Пузырёк).

Найдите свойство формы Picture. Используя кнопку с многоточием, расположенную в поле свойства, измените картинку.

Закройте Visual Basic без сохранения проекта.

Задание 2. Конструкция Select Case

Создайте новый проект. Разместите на форме семь меток (Label 1 – 7), одно текстовое поле и управляющую кнопку Command1 (рис. 27).

Присвойте свойствам объектов значения, приведённые в таблице 6. Программный код должен реагировать на нажатие любой клавиши – событие KeyPress. Это событие выбирается из списка событий, который размещён в правой верхней части Редактора кода.

Объекты Свойства Значения
Форма1 Caption Дни недели
Label1 – Label7 Caption Понедельник – Воскресенье
Visible False
Label8 Caption Номер дня недели
Text1 Text
MaxLength
Command1 Caption Сброс

Рис. 27. Окно формы Дни недели.

При этом на экране должен появляться тот день недели, номер которого указан в текстовом окне.

Этот алгоритм рассмотрен во втором разделе (лабораторное занятие 2, задание 4).

Управляющая кнопка Сброс (Command1) используется для восстановления свойств меток (Label1 – 7). Эту операцию в дальнейшем будем называть инициализацией.

Создайте программный код приведённый ниже.

Option Explicit

‘ Общая процедура инициализации меток

Sub Сброс()

Label1.Visible = False

Label2.Visible = False

Label3.Visible = False

Label4.Visible = False

Label5.Visible = False

Label6.Visible = False

Label7.Visible = False

End Sub

‘ Вызов общей процедуры

Private Sub Command1_Click()

Сброс

End Sub

‘Нажатие на клавишу

Private Sub Text1_KeyPress(KeyAscii As Integer)

Dim dn% ‘Объявление переменной день недели

If Text1 <> «» Then ‘Если информация введена, тогда

dn = CInt(Text1) ‘она присваивается переменной dn,

Select Case dn ‘которая используется для анализа

Case 1 ‘Понедельник

Label1.Visible = True

Case 2 ‘Вторник

Label2.Visible = True

Case 3 ‘Среда

Label3.Visible = True

Case 4 ‘Четверг

Label4.Visible = True

Case 5 ‘Пятница

Label5.Visible = True

Case 6 ‘Суббота

Label6.Visible = True

Case 7 ‘Воскресенье

Label7.Visible = True

End Select

End If

End Sub

Сохраните проект. Выполните компиляцию. Закройте Visual Basic. Проверьте работоспособность приложения.

Загрузите файл Проект1.vbp (VB Учебные \ Проекты \ 06 Дни недели).

Ознакомьтесь с программным кодом.

Определите, какие новые элементы управления использованы в этом проекте.

Закройте Visual Basic без сохранения проекта.

Вопросы для самоконтроля:

  1. Что такое переменные и область их определения?
  2. Какие бывают массивы (статические, динамические массивы)?
  3. Как объявить переменную или массивов?
  4. Создайте программный код, содержащий одномерный массив из пяти элементов.
  5. Какие конструкции языка позволяют изменить порядок операций?
  6. Охарактеризуйте конструкции языка, позволяющие неоднократно повторять операции.
  7. Создайте программный код с использованием конструкции If … Then.
  8. Создайте программный код с использованием конструкции Select Case.
  9. Создайте программный код с использованием циклической конструкции.
  1. УПРАВЛЕНИЕ ПРОГРАММОЙ ПО СОБЫТИЯМ

Программный код Visual Basic состоит из процедур обработки событий. Основными событиями являются события щелчка мыши, перемещение мыши, события клавиатуры. Список событий активного объекта можно просмотреть в Редакторе кода.

Вложенные структуры управления (Visual Basic) Nested Control Structures (Visual Basic)

Можно разместить управляющие операторы внутри других операторов управления, If. Then. Else например блока For. Next внутри цикла. You can place control statements inside other control statements, for example an If. Then. Else block within a For. Next loop. Оператор управления, помещенный внутрь другой управляющей инструкции, называется вложенным. A control statement placed inside another control statement is said to be nested.

Уровни вложенности Nesting Levels

Структуры управления в Visual Basic могут быть вложены на столько уровней, сколько нужно. Control structures in Visual Basic can be nested to as many levels as you want. Распространенной практикой является более удобочитаемость вложенных структур путем создания отступов для текста каждой из них. It is common practice to make nested structures more readable by indenting the body of each one. Редактор интегрированной среды разработки (IDE) автоматически делает это. The integrated development environment (IDE) editor automatically does this.

В следующем примере процедура sumRows добавляет вместе положительные элементы каждой строки матрицы. In the following example, the procedure sumRows adds together the positive elements of each row of the matrix.

Next В предыдущем примере первая инструкция закрывает внутренний For цикл, а последняя Next инструкция закрывает внешний For цикл. In the preceding example, the first Next statement closes the inner For loop and the last Next statement closes the outer For loop.

Аналогично, в If вложенных инструкциях End If инструкции автоматически применяются к ближайшей If предыдущей инструкции. Likewise, in nested If statements, the End If statements automatically apply to the nearest prior If statement. Вложенные Do циклы работают аналогичным образом с самой внутренней Loop инструкцией, соответствующей Do самой внутренней инструкции. Nested Do loops work in a similar fashion, with the innermost Loop statement matching the innermost Do statement.

Для многих структур управления при щелчке ключевого слова все ключевые слова в структуре выделяются. For many control structures, when you click a keyword, all of the keywords in the structure are highlighted. If Например, если щелкнуть If. Then. Else Then End If Else конструкцию, будут выделены ElseIf все экземпляры . ивконструкции. If For instance, when you click If in an If. Then. Else construction, all instances of If , Then , ElseIf , Else , and End If in the construction are highlighted. Чтобы перейти к следующему или предыдущему выделенному ключевому слову, нажмите клавиши CTRL + SHIFT + стрелка вниз или CTRL + SHIFT + стрелка вверх. To move to the next or previous highlighted keyword, press CTRL+SHIFT+DOWN ARROW or CTRL+SHIFT+UP ARROW.

Вложение различных видов структур управления Nesting Different Kinds of Control Structures

Один тип структуры управления можно вложить в другой тип. You can nest one kind of control structure within another kind. В следующем примере With используется блок For Each внутри цикла With и вложенные If блоки внутри блока. The following example uses a With block inside a For Each loop and nested If blocks inside the With block.

Перекрывающиеся структуры элементов управления Overlapping Control Structures

Нельзя перекрывать структуры управления. You cannot overlap control structures. Это означает, что любая вложенная структура должна полностью содержаться в следующей самой внутренней структуре. This means that any nested structure must be completely contained within the next innermost structure. Например, следующее расположение недопустимо, так как For цикл завершается до завершения внутреннего With блока. For example, the following arrangement is invalid because the For loop terminates before the inner With block terminates.

Компилятор Visual Basic обнаруживает такие перекрывающиеся структуры элементов управления и сигнализирует об ошибке во время компиляции. The Visual Basic compiler detects such overlapping control structures and signals a compile-time error.

Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев)

Для самостоятельного изучения языка Visual Basic, позволяет без помощи преподавателя, «с нуля» разобраться в основах программирования и научиться создавать полноценные приложения для Windows. Большое количество информации о Visual Basic также даёт возможность использовать книгу и в качестве справочника.

Оглавление

  • Введение
  • Глава 1. Установка Visual Basic на компьютер пользователя
  • Глава 2. Знакомство с Visual Basic
  • Глава 3. Использование мастеров
  • Глава 4. Операторы и выражения
  • Глава 5. Условные переходы и циклы
  • Глава 6. Процедуры и функции
  • Глава 7. Типы данных, переменные и константы

Приведённый ознакомительный фрагмент книги Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев) предоставлен нашим книжным партнёром — компанией ЛитРес.

Глава 2. Знакомство с Visual Basic

В этой главе вы научитесь:


• запускать Visual Basic,

• находить нужные пункты меню,

• пользоваться кнопками панели инструментов,

• разбираться во всех основных объектах интерфейса,

• создавать проекты приложений,

• выбирать подходящий тип приложения,

• сохранять и открывать записанные проекты,

• напишите свою первую программу,

• правильно пользоваться справочной системой.

2.1. Обзор среды программирования

В главном меню Windows выберите команду Пуск – Программы – Microsoft Visual Studio 6.0 – Microsoft Visual Basic 6.0 (Start – Programs – Microsoft Visual Studio 6.0 – Microsoft Visual Basic 6.0) Запустится Visual Basic и на экране появится диалог New Project (Новый проект), раскрытый на вкладке New (Новый) (Рис.2.1).

Рис.2.1. Вкладка New (Новый)

диалога New Project (Новый проект)

Диалог New Project (Новый проект) предлагает пользователю возможность создания нового, либо открытия уже существующего проекта. Проект представляет собой разрабатываемое приложение. Он состоит из нескольких компонентов, хранящихся на диске в виде отдельных файлов, каждый из которых имеет соответствующее расширение:

• файлы форм с исходным кодом (*.frm),

• файлы форм с исполняемым кодом (*.frx),

• файлы модулей классов (*.cls),

• файлы дополнительных элементов управления (*.ocx),

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

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

А теперь перечислим варианты создаваемых приложений или компонентов, которые выбираются на вкладке New (Новый) диалога New Project (Новый проект):

Standard EXE – стандартное приложение,

ActiveX EXE – компонент ActiveX в виде приложения,

ActiveX DLL – компонент ActiveX в виде динамически загружаемой библиотеки,

ActiveX Control – компонент ActiveX в виде инструмента Visual Basic для создания элементов управления,

VB Application Wizard – мастер приложений Visual Basic,

VB Wizard Manager – управляющая программа по созданию пользовательских мастеров,

Data Project – приложение для работы с базами данных,

IIS Application – приложение для Microsoft Internet Information Server,

Addin – дополнение для Visual Basic,

ActiveX Document Dll – документ ActiveX в виде динамически загружаемой библиотеки,

ActiveX Document Exe – документ ActiveX в виде приложения,

DHTML Application – приложение в виде динамической web-страницы,

VB Enterprise Edition Controls – стандартное приложение Windows с возможностью использования дополнительных элементов управления.

Для ознакомления со следующей вкладкой диалога New Project (Новый проект) щелкните мышью на ярлыке Existing (Существующий) (Рис.2.2).

Рис.2.2. Вкладка Existing (Существующий)

диалога New Project (Новый проект)

Вкладка Existing (Существующий) позволяет открыть сохраненный проект с любого постоянного или съемного диска, либо сетевого устройства, для чего сначала выберите папку, где он размещен, в открывающемся списке Папка (Folder), затем имя файла проекта в главном окне и нажмите кнопку Открыть (Open).

Теперь перейдем к вкладке Recent (Недавний) диалога New Project (Новый проект) (Рис.2.3).

Рис.2.3. Вкладка Recent (Недавний)

диалога New Project (Новый проект)

Здесь можно быстро вернуться к одному из последних редактируемых проектов Visual Basic, для чего достаточно выделить щелчком мыши имя файла проекта и нажать кнопку Открыть (Open).

Чтобы продолжить ознакомление с интерфейсом среды программирования Visual Basic, следует создать проект стандартного приложения. В этом случае станут доступными большинство пунктов меню и кнопок панели инструментов.

Вернитесь на вкладку New (Новый) (Рис.2.1) диалога New Project (Новый проект), щелчком мыши выберите значок Standard EXE (Стандартное приложение) и нажмите кнопку Open (Открыть). После этого будет создан новый проект с именем Project1, которое присваивается по умолчанию, и мы увидим среду программирования Visual Basic в режиме design (проектирование) (Рис.2.4).

Рис.2.4. Среда программирования Visual Basic

в режиме design (проектирование)

Перечислим объекты интерфейса среды программирования Visual Basic, видимые в настоящий момент:

• заголовок окна (Window Header),

• строка меню (Menu Bar),

• панель инструментов (Tool Bar),

• панель элементов управления (Tool Box),

• проводник проекта (Project Explorer),

• окно свойств (Properties Window),

• окно размещения формы (Form Layout Window).

Заголовок окна (Window Header) отображает название редактируемого проекта и текущий режим работы Visual Basic, как об этом говорилось выше.

Строка меню (Menu Bar) предоставляет программисту возможность пользования мощным арсеналом функций среды программирования Visual Basic (Рис.2.5).

Рис.2.5. Функции строки меню (Menu Bar)

Прямо под строкой меню, как у многих приложений Windows, находится панель инструментов (Tool Bar), кнопки которой дублируют наиболее часто используемые пункты меню Visual Basic. На панели инструментов, также, отображается справочная информация о положении и размерах выделенного объекта, либо расположении курсора в тексте программы (Рис.2.6).

Рис.2.6. Функции панели инструментов (Tool Bar)

В левой части окна Visual Basic располагается панель элементов управления (Tool Box) (Рис.2.7).

Рис.2.7. Панель элементов управления (Tool Box)

Большая часть элементов управления используется для оформления внешнего вида приложения и взаимодействия с пользователем. Подробно они будут рассмотрены в соответствующей главе.

Справа в верхнем углу расположено окно проводника проекта (Project Explorer), озаглавленное как Project – Project1 (Проект – Project1). В данном окне имеется древовидная структура со списком компонентов, которые входят в состав проектируемого приложения. Сейчас список содержит один единственный компонент – форму с именем Form1 (Рис.2.8).

Рис.2.8. Проводник проекта (Project Explorer)

Если щелкнуть правой кнопкой мыши на имени объекта в проводнике проекта, то появится контекстное меню, из которого можно выбрать нужное действие над этим объектом, например:

• отобразить на экране,

• сохранить на диске,

• распечатать на принтере,

Так как приложения Visual Basic строятся по модульному принципу, каждый компонент проекта хранится в отдельном файле.

Ниже находится окно свойств (Properties Window), имеющее заголовок Properties – Form1 (Свойства – Form1) (Рис.2.9).

Рис.2.9. Окно свойств (Properties Window)

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

Под заголовком окна находится открывающийся список, содержащий перечень элементов управления активной формы. Еще ниже можно увидеть список свойств выбранного элемента в виде пары: название свойства – его значение. Например, свойство Caption (Заголовок) имеет значение Form1.

Чтобы было удобнее ориентироваться в большом количестве информации, у списка свойств предусмотрено две вкладки, позволяющие выбрать порядок сортировки: Alphabetic (Алфавитный) или Categorized (По категориям). Наконец, под списком свойств находится подсказка о назначении свойства, выделенного щелчком мыши.

Следующее окно, которое мы рассмотрим – это окно размещения формы (Form Layout Window) (Рис.2.10).

Рис.2.10. Окно размещения формы

(Form Layout Window)

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

Илон Маск рекомендует:  grad в CSS

Все подчиненные окна прикрепляются к краям главного окна Visual Basic. Такой тип интерфейса называется MDI – Multiple Document Interface (Многодокументный интерфейс). В ранних версиях Visual Basic использовалась другая его разновидность, именуемая SDI – Single Document Interface (Однодокументный интерфейс), когда каждое дочернее окно было независимым.

Если требуется установить другой тип интерфейса, выберите команду меню Tools – Options… (Инструменты – Параметры…). Появится диалог Options (Параметры), где нужно перейти на вкладку Advanced (Дополнительно) (Рис.2.11).

Рис.2.11. Вкладка Advanced (Дополнительно)

диалога Options (Параметры)

После установки флажка SDI Development Environment (Однодокументная среда разработки) и нажатия кнопки OK, тип интерфейса поменяется на SDI – Single Document Interface (Однодокументный интерфейс).

Можно регулировать режим прикрепления отдельных дочерних окон и при использовании MDI – Multiple Document Interface (Многодокументный интерфейс), для чего следует перейти к вкладке Docking (Прикрепление) этого же диалога (Рис.2.12).

Рис.2.12. Вкладка Docking (Прикрепление)

диалога Options (Параметры)

Установка флажка слева от названия соответствующего подчиненного окна включает режим прикрепления к краю главного окна Visual Basic, а сброс флажка – выключает его.

Кроме объектов интерфейса среды программирования Visual Basic, примерно посередине экрана (Рис.2.4) располагается окно созданного проекта, имеющее заголовок Project1 – Form1 (Form) (Project1 – Form1 (Форма)), внутри которого находится отображаемая форма будущего приложения (Рис.2.13).

Рис.2.13. Форма Form1

в окне проекта Project1

Форма является отдельным окном будущего приложения. На ее поверхности в дальнейшем могут быть размещены элементы управления Windows: кнопки, поля для ввода текста, списки, флажки и др.

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

Та же самая форма в режиме выполнения будет выглядеть несколько по-иному, без направляющей сетки для размещения элементов и окна проекта (Рис.2.14).

Рис.2.14. Форма Form1

в режиме выполнения

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

Большинство других компонентов среды программирования Visual Basic, также, в той или иной степени связаны с формой, и содержат в своём имени её название, поэтому форму желательно не переименовывать, во избежание необходимости ручного переименования других компонентов программы.

Некоторые окна интерфейса Visual Basic по умолчанию не видны. Управлять их отображением на экране можно с помощью команд меню View (Вид). Одним из важнейших является Code Window (Окно кода), в котором вводится исходный текст подпрограмм, входящих в состав приложения.

Выполните команду меню View – Code (Вид – Код), после чего вы увидите окно кода (Рис.2.15).

Рис.2.15. Code Window

Другим часто используемым окном является Object Browser (Просмотр объектов), где можно не только просмотреть иерархический список доступных объектов, но и увидеть краткую информацию об их использовании в программе (Рис.2.16).

Рис.2.16. Object Browser

Остальные окна среды программирования Visual Basic будут рассмотрены в соответствующих главах.

2.2. Справка об объектах и их свойствах

Объектов в Visual Basic существует довольно много, а свойств у них еще больше. Запомнить все трудно, если не сказать, что практически невозможно, поэтому необходимо постоянно пользоваться встроенной справкой.

То же самое касается и инструкций, а также встроенных функций языка Visual Basic. Они конечно будут запоминаться постепенно, но не стоит переживать, если вы не помните точно название или синтаксис какой то инструкции.

Контекстно-зависимую справку среды программирования Visual Basic можно легко и просто вызвать на экран с помощью клавиши [F1].

Справка называется контекстно-зависимой потому, что отображаемый раздел справки зависит от текущего контекста, который определяется выделением любого объекта, а также названия свойства, метода или оператора языка Visual Basic, внутри которого установлен текстовый курсор.

Попробуем воспользоваться контекстной справкой Visual Basic на практике. Например, мы хотим получить подробную информацию об элементе управления ProgressBar (Индикатор выполнения).

Выделите мышью кнопку ProgressBar (Индикатор выполнения) в ToolBox (Панель элементов) и нажмите клавишу [F1]. Откроется окно справочной системы Visual Basic с информацией о данном объекте (Рис.2.17).

Рис.2.17. Справочная система Visual Basic – ProgressBar (Индикатор выполнения)

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

See Also (Смотри также) – информация по родственным темам,

Example (Пример) – текст примеров кода,

Properties (Свойства) – перечень свойств,

Methods (Методы) – перечень методов,

Events (События) – перечень событий.

Допустим, что нам необходимо ознакомиться с примерами программирования элемента управления ProgressBar (Индикатор выполнения).

По идее, мы должны были бы выбрать пункт Example (Пример). Но в данном случае этот пункт недоступен, так как примеры кода расположены ниже. Поэтому, переместитесь вниз по тексту с помощью вертикальной линейки прокрутки, пока не появится пример процедуры с использованием элемента управления ProgressBar (Индикатор выполнения) (Рис.2.18).

Рис.2.18. Справочная система Visual Basic – текст примера процедуры с использованием ProgressBar

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

Выделите нужную часть кода с помощью мыши и скопируйте в буфер обмена Windows с помощью комбинации клавиш [Ctrl] + [C] или [Ctrl] + [Insert].

Перейдите в свою программу и нажмите комбинацию клавиш [Ctrl] + [V] или [Shift] + [Insert] для вставки фрагмента кода.

Находясь в окне справочной системы Visual Basic, можно просмотреть содержание других тем, воспользоваться алфавитным указателем или поиском для нахождения требуемого раздела справки.

Чтобы найти нужную информацию, щелкните мышью на ярлыке Search (Поиск), расположенном в левой части окна справки. Раскроется вкладка Search (Поиск) справочной системы Visual Basic (Рис.2.19).

Рис.2.19. Вкладка Search (Поиск)

справочной системы Visual Basic

Щелкните мышью на поле ввода Search for following words (Искать следующие слова) и введите ключевые слова для поиска, при необходимости используя логические операторы: And (И), Or (Или), Near (Близко), Not (Не). Ввод этих операторов возможен не только вручную, но и выбором из списка, вызываемого при нажатии на кнопку справа от данного поля.

Для запуска поиска разделов справки, содержащих введенную комбинацию ключевых слов, нажмите кнопку Topics (Разделы) и ждите окончания процесса поиска. По его завершению, в левой части окна отобразится список найденных разделов.

Описанные выше возможности использования справочной системы доступны из меню Visual Basic. Содержание справки вызывается командой HelpContents… (Помощь – Содержание), алфавитный указатель – следующим пунктом HelpIndex… (Помощь – Указатель), а поиск – HelpSearch… (Помощь – Поиск). С помощью меню Help, также, можно перейти на Web-сайт Microsoft для получения технической поддержки.

2.3. Первое приложение на языке Visual Basic

Теперь опробуем на практике весь процесс разработки приложения с помощью Visual Basic на примере простейшей программы Hello, World! (Привет, мир!). Это приложение будет иметь только две кнопки: Приветствие и Выход.

После нажатия кнопки Приветствие должен появляться диалог с сообщением Привет, мир!, а после нажатия кнопки Выход – происходить выход из программы.

Общеизвестная программа Hello, World! (Привет, мир!), обычно пишется всеми начинающими программистами, делающими свои первые шаги в освоении нового для них языка программирования.

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

В меню Visual Basic выберите пункт ProjectProject1 Properties… (Проект – Свойства Project1…). На экране появится диалог настройки Project1 – Project Properties (Project1 – Свойства проекта), раскрытый на вкладке General (Общие) (Рис.2.20).

Рис.2.20. Вкладка General (Общие)

диалога настройки Project1 – Project Properties

(Project1 – Свойства проекта)

Дважды щелкните мышью на поле ввода Project Name (Название проекта) и замените имеющийся в нем текст Project1 на новый – HelloWorld. После этого нажмите кнопку OK для закрытия диалога настройки Project1 – Project Properties (Project1 – Свойства проекта).

Переименуем единственную форму нашего приложения. Для этого щелкните мышью в любом месте формы Form1, после чего в окне Properties – Form1 (Свойства – Form1) отобразится полный перечень ее свойств (Рис.2.21).

Рис.2.21. Окно свойств Properties – Form1 (Свойства – Form1)

В левом столбце окна свойств найдите свойство с названием Name (Имя), имеющее текущее значение Form1. Название свойства Name (Имя) заключено в круглые скобки потому, что используется в коде программ Visual Basic несколько по-другому, чем все остальные свойства.

Дважды щелкните мышью на значении свойства Name (Имя) в правом столбце и введите ПриветМир, после чего нажмите клавишу [Enter].

Таким же образом измените значение свойства Caption (Заголовок). Вместо старого значения Form1 впишите новое – Привет, мир! Обратите внимание, что здесь уже можно использовать пробелы, запятые и другие символы. Форма примет следующий вид (Рис.2.22).

Рис.2.22. Форма ПриветМир в окне проекта HelloWorld

Чем же отличаются эти два свойства? Свойство Name (Имя) обязательно присутствует у любого объекта Visual Basic. Оно однозначно идентифицирует или, другими словами, указывает на этот объект, чтобы к нему можно было обратиться из текста программы. Имя формы ПриветМир можно увидеть в строке заголовка окна текущего проекта: HelloWorld – ПриветМир (Form). Это окно служит для информационной цели и отображается только в режиме разработки приложения. Окно проекта внутри себя содержит саму форму ПриветМир.

Свойство Caption (Заголовок) есть только у тех объектов, которые могут иметь надпись, видимую на экране монитора, например, у объектов Form (Форма), CommandButton (Командная кнопка) или Frame (Рамка). У нашей формы надпись Привет, мир! можно сейчас увидеть в строке заголовка, где она, также, будет видна в момент выполнения приложения.

Теперь все готово для того, чтобы продолжить проектирование интерфейса нашего приложения, состоящего из одной формы, на которой должны располагаться две кнопки. Форма у нас уже есть. Остается разместить на ней кнопки и написать подпрограмму вывода на экран диалога с сообщением Привет, мир!

Размещение кнопки на поверхности формы подобно рисованию прямоугольника в стандартной программе Paint. Щелкните мышью на значке инструмента CommandButton (Командная кнопка) панели элементов управления (Tool Box) и установите указатель мыши над формой, который примет вид крестика:

Нажмите левую кнопку мыши и, удерживая ее в таком положении, переместите указатель мыши на пару сантиметров вправо и вниз от этой точки, а затем отпустите кнопку мыши. В заданном месте формы появится командная кнопка с надписью Command1.

Таким же образом разместите на форме вторую кнопку. После этого, она примет приблизительно такой вид (Рис.2.23).

Рис.2.23. Форма ПриветМир с двумя командными кнопками

Конечно, сразу трудно установить нужные размеры и расположение кнопок. Но Visual Basic позволяет затем изменить эти параметры, причем несколькими способами, которые являются общими для всех элементов управления:

Выделив элемент управления мышью, можно перетаскивать его на поверхности формы или изменять размер, ухватившись за один из квадратных маркеров, расположенных по его периметру.

Для более точной установки геометрических размеров элемента управления следует выделить его и установить числовые значения свойств Left (Левый), Top (Верхний), Width (Ширина) и Height (Высота) в Properties Window (Окне свойств). Первые два свойства указывают на координаты левого верхнего угла элемента управления, а последние – ширину и высоту объекта.

Теперь изменим надписи на кнопках, которые должны быть не Command1 и Command2, а Приветствие и Выход соответственно, а также дадим более информативные названия этим объектам.

Щелчком мыши выделите кнопку Command1, после чего в Properties Window (Окне свойств) отобразится список ее свойств.

Дважды щелкните мышью на значении свойства Caption (Заголовок) и вместо Command1 введите Приветствие. После этого, текст на кнопке сразу же поменяется.

Таким же образом измените свойство Name (Имя), установив у него новое значение – cmdHello.

Аналогичные действия произведите с кнопкой Command2, у которой свойствам Name (Имя) и Caption (Заголовок) присвойте значения cmdExit и Выход соответственно.

На этом этап проектирования интерфейса заканчивается, и мы переходим, собственно, к написанию текста программы.

Дважды щелкните мышью на кнопке с надписью Приветствие. Откроется окно кода с уже оформленным шаблоном подпрограммы cmdHello_Click, которая будет вызываться при нажатии на эту кнопку (Рис.2.24).

Рис.2.24. Окно кода с процедурой cmdHello_Click

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

В левом списке можно выбрать элемент управления, а в правом – тип события, для реагирования на которое планируется написать подпрограмму на языке Visual Basic.

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

В данном случае, нужный элемент управления и тип события уже выбраны. Это – кнопка с именем cmdHello и событие Click (Щелчок). Текст пустой процедуры обработки события выглядит следующим образом:

Private Sub cmdHello_Click ()

Ключевое слово Sub, сокращение от Subroutine (Подпрограмма), служит для объявления (Declaration) процедуры cmdHello_Click, которая занимается обработкой события нажатия на кнопку cmdHello.

Название процедуры состоит из имени объекта, символа подчеркивания «_» и типа события. Именно это название указывает Visual Basic на связь данной процедуры с событием Click (Щелчок) кнопки cmdHello. Пустые круглые скобки говорят нам о том, что процедуре не передаются никакие параметры.

Модификатор Private (Частная) указывает на то, что данная процедура видна только в пределах своего контейнера, в данном случае – формы. Завершает процедуру инструкция End Sub.

Конечно же, пустая процедура ровным счетом ничего не делает – для того, чтобы она что-нибудь выполняла, нужно вписать хотя бы одну строчку программы внутри тела процедуры.

С этого момента начинается процесс кодирования (Coding), представляющего собой написание самого текста программы, выполняющей нужный функционал.

Кодирование является центральным звеном любой системы программирования. Visual Basic не является исключением, несмотря на то, что он позволяет минимизировать затраты времени на кодирование.

Нам остается, только, внутри процедуры вписать единственную инструкцию языка Visual Basic, выводящую на экран диалог с сообщением Привет, мир!:

Готовая процедура после этого примет следующий вид:

Private Sub cmdHello_Click ()

Затем дважды щелкните на второй кнопке с надписью Выход. Откроется процедура обработки события нажатия на эту кнопку.

В теле процедуры cmdExit_Click впишите инструкцию End, выполняющую функцию завершения работы приложения при возникновении события Click (Щелчок).

Текст второй процедуры теперь будет выглядеть таким образом:

Private Sub cmdExit_Click ()

Вот, собственно, и все! Остается только полюбоваться сделанной работой, проверив работоспособность написанного кода.

Для проверки жизнеспособности созданной программы, щелкните мышью на кнопке Start (Запуск) панели инструментов или нажмите клавишу [F5].

Visual Basic перейдет в режим выполнения и на экране появится работающее приложение Hello, World! (Привет, мир!) (Рис.2.25).

Рис.2.25. Работающее приложение

Hello, World! (Привет, мир!)

Сделайте несколько щелчков мышью на кнопке с надписью Приветствие. Появится диалог с нужным текстовым сообщением (Рис.2.26).

Рис.2.26. Диалог с текстовым сообщением

программы Hello, World! (Привет, мир!)

Полюбуйтесь на него с гордостью создателя своей первой компьютерной программы и нажмите кнопку OK для закрытия диалога.

Теперь щелкните мышью на кнопке Выход. Произойдет завершение работы программы и Visual Basic вернется в режим проектирования.

2.4. Сохранение проекта на диске и его загрузка

для продолжения программирования

Автор не сомневается в том, что создание приложений с помощью Visual Basic увлечет вас и возникнет необходимость в сохранении проекта на диске, а также его последующей загрузке для продолжения работы. Сделать это очень просто, аналогично сохранению документа Microsoft Office.

Просто щелкните мышью на кнопке Save Project (Сохранить проект) панели инструментов (Tool Bar), либо выберите команду меню FileSave Project (Файл – Сохранить проект) для сохранения всех компонентов проекта на диск. После этого Visual Basic последовательно выдаст запрос о сохранении отдельных компонентов. Сначала появится диалог Save File As (Сохранить файл как) с запросом о сохранении формы (Рис.2.27).

Рис.2.27. Диалог Save File As (Сохранить файл как)

Вы можете откорректировать предлагаемое имя формы в поле ввода File Name (Имя файла) или оставить его без изменений. Затем нажмите кнопку Сохранить (Save). После сохранения формы, появится диалог Save Project As (Сохранить проект как) с запросом о сохранении проекта (Рис.2.28).

Рис.2.28. Диалог Save Project As (Сохранить проект как)

Сразу нажмите кнопку Save (Сохранить) или предварительно измените имя файла проекта в поле ввода File Name (Имя файла).

На этом сохранение проекта будет завершено. При повторном сохранении не придется проделывать все действия заново – достаточно нажать кнопку Save Project (Сохранить проект) панели инструментов.

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

В проводнике проекта (Project Explorer) разверните ветку Forms (Формы) щелчком мыши на значке. Здесь мы увидим имя формы ПриветМир (Рис.2.29).

Рис.2.29. Обзор компонентов проекта HelloWorld

в проводнике проекта (Project Explorer)

Щелкните правой кнопкой мыши на имени формы. Появится контекстное меню, с помощью которого можно выполнить все допустимые действия над данным объектом (Рис.2.30).

Рис.2.30. Контекстное меню

в проводнике проекта (Project Explorer)

Выберите пункт меню Save ПриветМир.frm (Сохранить ПриветМир.frm) для сохранения формы на диске.

Для настройки режима автоматического сохранения проекта воспользуйтесь пунктом меню Tools – Options (Инструменты – Параметры). Откроется диалог Options (Параметры). Щелчком мыши перейдите на вкладку Environment (Среда) (Рис.2.31).

Рис.2.31. Вкладка Environment (Среда)

диалога Options (Параметры)

Переключатель When a program starts (Когда программа запускается) установите в положение Save Changes (Сохранять изменения) и нажмите кнопку OK.

Вот и все, что касается сохранения проекта. Теперь попробуем загрузить сохраненный проект с диска.

Для того, чтобы открыть проект, выберите команду меню File – Open Project… (Файл – Открыть проект…). На экране появится диалог Open Project (Открыть проект), раскрытый на вкладке Existing (Существующий) (Рис.2.32).

Рис.2.32. Вкладка Existing (Существующий)

диалога Open Project (Открыть проект)

Сначала в открывающемся списке Folder (Папка) выберите диск и каталог, где находится проект, затем щелкните на имени файла и нажмите кнопку Open (Открыть).

Если вы уже раньше работали с сохраненным проектом, то его удобнее открыть немного по-другому. Щелчком мыши на ярлыке перейдите к вкладке Recent (Недавний) диалога Open Project (Открыть проект) (Рис.2.33).

Рис.2.33. Вкладка Recent (Недавний)

диалога Open Project (Открыть проект)

На этой вкладке не нужно выбирать папку, просто щелкните на имени проекта и нажмите кнопку Open (Открыть).

Тем или иным способом мы открыли нужный проект, но сам по себе Visual Basic не будет выводить формы на экран для редактирования, для этого их нужно отобразить сознательно.

Для вывода на экран дважды щелкните мышью на имени формы ПриветМир в окне проводника проекта (Project Explorer) (Рис.2.29), либо сначала щелкните на нем правой кнопкой мыши, а затем из появившегося контекстного меню (Рис.2.30) выберите пункт View Object (Просмотреть объект).

Оглавление

  • Введение
  • Глава 1. Установка Visual Basic на компьютер пользователя
  • Глава 2. Знакомство с Visual Basic
  • Глава 3. Использование мастеров
  • Глава 4. Операторы и выражения
  • Глава 5. Условные переходы и циклы
  • Глава 6. Процедуры и функции
  • Глава 7. Типы данных, переменные и константы

Приведённый ознакомительный фрагмент книги Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев) предоставлен нашим книжным партнёром — компанией ЛитРес.

Конструкции управления visual basic

3.3.2. ������� InputBox

3.4. �������� �������� IF

If ������� Then ��������_1 Else ��������_2

������� 3.2. ���������� ���������

3.5. �������� ������ Select Case

[Case Else

End Select

For �������=���_�������� o ���_�������� Step ���

[Exit For]

For Each ������� In ������

[Exit For]

����� � ������������ – Do While Loop,

Do Until Loop;

����� � ������������ Do Loop While,

Do Loop Until.

‘ ���� � ������������ Do While Loop

[Exit Do]

Loop

‘ ���� � ������������ Do Until Loop

Do Until �������

Избавляемся от Visual Basic

Вот и настал тот переломный момент, когда мы решили перевести два проекта с VB на С#. Кому интересно — прошу под кат.

Введение

Данные проекты нам достались от подрядческой организации, которая писала их на протяжении лет 5-6. В общей сложности это около 1,5 млн. строк кода, если верить средству оценки метрик в Visual Studio, из которых около 30% на C#, а остальное на VB. Почему мы решили это сделать?! Скорее всего из-за нежелания работать с VB и отсутствия хороших vb-разработчиков.

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

Подготовка

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

В силу специфичных различий языков, необходимо предварительно подготовить проект для конвертации. Мы выделили несколько этапов, после которых будет, относительно безболезненно, проходить процесс конвертации.

Почему относительно?! Да потому, что после конвертации, в любом случае, имеется нотка неизвестного поведения программы. Это может всплыть сразу, если у вас код не покрыт 100% тестами. В нашем случае, я про тесты вообще промолчу, ибо нет их вовсе. Ну что ж – рассмотрим, что за шаги мы выделили:

1) Выбор инструмента для конвертации

Это очень важный этап на таком нелегком пути, ведь от того какую пилу выберешь, будет зависеть скорость и качество распила. После многочисленных вопросов гуглу и совещаний, мы остановились на двух продуктах: Instant CSharp и SharpDevelop версии 4.х (в версии 5.х конвертация не поддерживается), что очень странное, на мой взгляд, решение.

SharpDevelop бесплатен – это несомненно плюс, но и Instant CSharp имеет free версию, которая не отличается функциональностью от платной версии, лишь имеется ограничение на число строк в конвертируемом проекте. Плюсом Instant CSharp является то, что он лучше конвертирует WinForms. Есть у него и минус – это корректная конвертация только UTF файлов.

Решили использовать Instant CSharp для мелких проектов, а SharpDevelop для всего остального.

2) Составление списка VB проектов и формирование диаграммы зависимостей

Этот шаг необходим, чтобы наглядно понять с какой-же стороны начать работу. Приведу пример одной из диаграмм зависимостей, которая у нас получилась:

На данной диаграмме также указано число зависимостей между проектами. Из диаграммы, да и по логике вещей, видно, что порядок преобразования проектов — от проектов с меньшим количеством зависимостей к проектам с большим количеством зависимостей.

3) Замена ReDim на Array.Resize()

Был написан небольшой класс Re, чтобы реализовать данную замену.

Далее все вызовы ReDim Preserve X(N) заменили на Re.DimPreserve(X,N), а ReDim X(N) заменили на Re.Dim(X,N).

4) Включение опции компиляции strict

По умолчанию .NET Visual Basic или компилятор Visual Basic не обеспечивает строгую типизацию. Чтобы изменить это поведение по умолчанию, необходимо в свойствах проекта на вкладке Compile установить Option strict в значение on. После этого исправить все возникшие ошибки.

Следующие пункты не требуют разъяснений, так как они просты и понятны. Мы просто берем в руки ReSharper и выполняем все, описанные ниже пункты, со скоростью звука (а то и еще быстрее).

5) Для value type переменных заменить Nothing на Default
6) Замена And на AndAlso и Or на OrElse
7) Удаление конструкций Imports, ссылающихся на классы
8) Замена вызова метода вида .Method на .Method()
9) Удаление конструкций Exit Try
10) Замена сравнения строковых переменных с Nothing или «» или со String.Empty на String.IsNullOrEmpty()
11) Замена ненужных директив ByRef на ByVal у параметров методов
12) Переименование методов, имеющих имя своего же класса
13) Исправление некорректных регистронезависимых вызовов в VB коде

Конвертация

И вот мы подошли к завершающему этапу – этапу конвертации. Инструмент выбран, проекты подготовлены и ждут своей участи.

Процесс конвертации не сложнее программы «Hello World», только требует немного большего времени. Приведу небольшой tutorial, как это делается в SharpDevelop и Instant CSharp.

1. Открыть UTFCast Express
2. В поле Source directory указать путь к каталогу проекта
3. В поле Target directory указать путь к каталогу в который будут перемещены файлы проекта в кодировке UTF8
4. Выстовить опцию Copy unconverted и запустить преобразование

И после этих танцев с бубном можно производить конвертацию проекта.

Вывод

В итоге мы перевели оба наших проекта полностью на c#.Сейчас идет, полным ходом, рефакторинг кода, кстати, не в рекламу будет сказано, но ReSharper в этом деле не заменим. В процессе эксплуатации, иногда, всплывают ошибки, связанные с конвертацией, но это неизбежно, увы.

Надеюсь, наш небольшой опыт будет полезен и вам, уважаемые хабражители.

Конструкции управления visual basic

Составные элементы управления являются тем средством, с помощью которого можно создавать и многократно использовать пользовательские графические интерфейсы. Составной элемент управления — это компонент, имеющий визуальное представление. Он может состоять из одного или нескольких элементов управления форм Windows Forms, компонентов или блоков кода, позволяющих расширить функциональные возможности (например, проверять допустимость вводимых пользователем данных, изменять свойства отображения или выполнять другие действия, необходимые разработчику). Составные элементы управления можно поместить в формы Windows Forms точно так же, как и другие элементы управления. В первой части пошагового руководства будет создан простой составной элемент управления ctlClock . Во второй части пошагового руководства функциональные возможности элемента ctlClock будут расширены с помощью наследования.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска. Чтобы изменить параметры, в меню Сервис выберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделе Customizing Development Settings in Visual Studio.

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

Чтобы создать библиотеку элементов управления ctlClockLib и элемент управления ctlClock

В меню Файл выберите Создать и выберите пункт Проект, чтобы открыть диалоговое окно Новый проект.

Из списка проектов Visual Basic выберите шаблон проекта Библиотека элементов управления Windows и в поле Имя введите ctlClockLib, затем нажмите кнопку OK.

Имя проекта ( ctlClockLib ) также назначается по умолчанию корневому пространству имен. Для определения имен компонентов в сборке используется корневое пространство имен. Например, если в двух сборках содержатся компоненты с именем ctlClock , то можно указать свой компонент ctlClock , используя имя ctlClockLib.ctlClock. .

В обозревателе решений щелкните правой кнопкой мыши файл UserControl1.vb и затем нажмите Переименовать. Измените имя файла на ctlClock.vb. Нажмите кнопку Да, чтобы переименовать все ссылки на элемент кода UserControl1.

Примечание

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

В меню Файл выберите команду Сохранить все для сохранения проекта.

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

Чтобы добавить элементы управления Label и Timer в составной элемент управления

В обозревателе решений щелкните правой кнопкой мыши элемент ctlClock.vb и выберите пункт Конструктор представлений.

На панели элементов разверните узел Общие элементы управления и дважды щелкните элемент Надпись.

Элемент управления Label с именем Label1 будет добавлен в созданный элемент управления на поверхности конструктора.

Выберите в конструкторе элемент Label1. В окне свойств задайте значения для следующих свойств.

Имя

lblDisplay

Текст

(пробел)

TextAlign

MiddleCenter

Font.Size

14

На панели элементов разверните узел Компоненты и дважды щелкните элемент Таймер.

Поскольку Timer является компонентом, он не имеет визуального представления во время выполнения. Поэтому он отображается не с элементами управления на поверхности конструктора, а в Конструкторе компонентов (область в нижней части поверхности конструктора).

В Конструкторе компонентов щелкните компонент Timer1 и установите значение свойства равным 1000, а значение свойства равным True.

Свойство управляет частотой тиканья компонента Timer. Каждый раз, когда компонент Timer1 тикает, выполняется код события Timer1_Tick . Значение этого свойства — это количество миллисекунд между событиями Tick.

В Конструкторе компонентов дважды щелкните компонент Timer1, чтобы перейти к событию Timer1_Tick компонента ctlClock .

Измените код, как указано ниже. Обязательно измените модификатор доступа с Private на Protected.

Этот код позволяет отобразить текущее время в элементе управления lblDisplay . Поскольку интервал между событиями Tick для компонента Timer1 был установлен равным 1000, эти события возникают через каждую тысячу миллисекунд, то есть текущее время обновляется каждую секунду.

Измените этот метод, сделав его доступным для переопределения. Дополнительные сведения см. ниже в разделе «Наследование из пользовательского элемента управления».

В меню Файл выберите команду Сохранить все для сохранения проекта.

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

Для добавления свойства в составной элемент управления выполните следующие действия.

В обозревателе решений щелкните правой кнопкой мыши элемент ctlClock.vb и выберите пункт Просмотреть код.

Откроется Редактор кода для выбранного элемента управления.

Найдите оператор Public Class ctlClock . Под ней введите следующий код.

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

Вставьте следующий код под объявлениями переменных, созданными на этапе 2:

Приведенный выше код позволяет пользователям этого элемента управления получить доступ к настраиваемым свойствам ClockForeColor и ClockBackColor с помощью вызова оператора Property . Операторы Get и Set соответственно сохраняют и извлекают значение свойства, а также выполняют код, реализующий необходимую функцию.

В меню Файл выберите команду Сохранить все для сохранения проекта.

Элементы управления не являются автономными проектами; они должны быть включены в контейнер. Проверьте поведение созданного элемента управления и испытайте его свойства с помощью Тестового контейнера пользовательских элементов управления. Дополнительные сведения см. в разделе Практическое руководство. Тестирование поведения элемента UserControl во время выполнения.

Чтобы протестировать элемент управления

Нажмите клавишу F5 для построения проекта и запустите элемент управления в Тестовом контейнере пользовательских элементов управления.

В таблице свойств тестового контейнера выберите свойство ClockBackColor и щелкните стрелку выпадающего меню, чтобы вывести на экран цветовую палитру.

Выберите цвет с помощью щелчка мыши.

Цвет фона элемента управления изменится на выбранный цвет.

С помощью аналогичной последовательности событий проверьте, что свойство ClockForeColor работает правильно.

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

В этом и предыдущем разделе было показано, как компоненты и элементы управления Windows можно объединить с кодом и упаковкой, чтобы предоставить пользовательские функциональные возможности в виде составного элемента управления. Было продемонстрировано, как предоставлять свойства составного элемента управления и тестировать элемент управления после завершения его разработки. В следующем разделе содержатся сведения о построении наследуемого составного элемента управления на базе элемента управления ctlClock .

В предыдущих разделах рассказывалось, как объединить компоненты, элементы управления Windows и код, чтобы создать составные элементы управления, доступные для многократного использования. В этом разделе будет показано, как на основе составного элемента управления построить другие элементы управления. Процесс создания производного класса на основе базового класса называется наследованием. В этом разделе будет создан составной элемент управления ctlAlarmClock . Он будет производным от родительского элемента управления ctlClock . Также будет показано, как расширить функциональные возможности элемента ctlClock путем переопределения методов родительского класса и добавления новых методов и свойств.

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

Чтобы создать наследуемый элемент управления

В обозревателе решений щелкните проект правой кнопкой мыши элемент ctlClockLib, укажите Добавить и выберите Пользовательский элемент управления.

Откроется диалоговое окно Добавление нового элемента.

Выберите шаблон Наследуемый пользовательский элемент управления.

В поле Имя введите ctlAlarmClock.vb и нажмите кнопку Добавить.

Откроется диалоговое окно Выбор компонентов для наследования.

Дважды щелкните ctlClock под строкой Имя компонента.

В обозревателе решений просмотрите список текущих проектов.

Примечание

В текущий проект был добавлен файл ctlAlarmClock.vb.

Добавление свойств в наследуемый элемент управления выполняется точно так же, как и в случае с составным элементом управления. Теперь будет использован синтаксис объявления свойства для добавления двух свойств в элемент управления: AlarmTime , хранящее значение даты и времени срабатывания будильника, и AlarmSet , показывающее, установлен ли будильник.

Для добавления свойств в составной элемент управления выполните следующие действия.

В обозревателе решений щелкните правой кнопкой мыши элемент ctlAlarmClock и выберите пункт Просмотреть код.

Найдите объявление класса элемента управления ctlAlarmClock, которое выглядит как Public Class ctlAlarmClock . Добавьте в объявление класса следующий код.

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

Чтобы добавить элемент управления надпись

В обозревателе решений щелкните правой кнопкой мыши элемент ctlAlarmClock и выберите пункт Конструктор представлений.

В главном окне откроется конструктор элемента управления ctlAlarmClock .

Щелкните lblDisplay (область отображения элемента управления) и изучите окно «Свойства».

Примечание

Хотя все свойства отображаются, они затенены. Это означает, что эти свойства являются собственными свойствами для lblDisplay и в окне свойств нельзя ни изменить их, ни обратиться к ним. Элементы управления, содержащиеся в составном элементе управления, по умолчанию являются закрытыми (Private), и их свойства недоступны.

Примечание

Чтобы пользователи элемента управления имели доступ к его внутренним элементам управления, эти элементы управления должны быть объявлены как Public или Protected. Это позволит устанавливать и изменять свойства элементов управления, содержащихся в составном элементе управления, с помощью написания соответствующего кода.

Для добавления элемента управления Label в составной элемент управления выполните следующие действия.

С помощью мыши перетащите элемент управления Label непосредственно под поле отображения. В окне свойств задайте значения для следующих свойств.

Имя

lblAlarm

Текст

TextAlign

MiddleCenter

Visible

False

Свойства и элемент управления, добавленные в предыдущих процедурах, позволяют реализовать функциональные возможности будильника в составном элементе управления. В этой процедуре в пользовательский элемент управления будет добавлен код, в котором текущее время сравнивается со временем срабатывания будильника. Если они совпадают, будильник начинает звонить и мигать. Переопределив метод Timer1_Tick элемента управления ctlClock и добавив в него дополнительный код, можно расширить функциональные возможности наследуемого элемента управления ctlAlarmClock , сохранив в то же время все функциональные возможности элемента ctlClock .

Чтобы переопределить метод Timer1_Tick компонента ctlClock

В обозревателе решений щелкните правой кнопкой мыши элемент ctlAlarmClock.vb и выберите пункт Просмотреть код.

Найдите оператор Private blnAlarmSet As Boolean . Непосредственно после него добавьте следующий оператор.

В нижней части страницы найдите оператор End Class . Непосредственно перед оператором End Class добавьте следующий код.

Этот код выполняет несколько задач. Оператор Overrides указывает, что элемент управления должен использовать этот метод вместо метода, унаследованного от базового элемента управления. При вызове этого метода он вызывает переопределяемый им метод (с помощью вызова оператора MyBase.Timer1_Tick ). Благодаря этому все функциональные возможности исходного элемента управления реализуются и в этом элементе. Затем выполняется дополнительный код, реализующий функциональные возможности будильника. При наступлении времени срабатывания будильника появится мигающий элемент управления «Надпись» и раздастся звуковой сигнал.

Примечание

Обратите внимание, что при переопределении наследуемого обработчика событий событие с ключевым словом Handles указывать не требуется. Это событие уже подключено. Требуется переопределить только реализацию обработчика.

Теперь разработка будильника почти завершена. Необходимо только реализовать возможность его отключения. Для этого необходимо добавить код в метод lblAlarm_Click .

Чтобы реализовать метод отключения будильника

В обозревателе решений щелкните правой кнопкой мыши элемент ctlAlarmClock.vb и выберите пункт Конструктор представлений.

В конструкторе дважды щелкните компонент lblAlarm. В Редакторе кода откроется строка Private Sub lblAlarm_Click .

Измените этот метод, как указано ниже.

В меню Файл выберите команду Сохранить все для сохранения проекта.

Проверить наследуемый элемент управления можно таким же образом, как был проверен элемент управления базового класса, ctlClock : нажмите клавишу F5 для построения проекта и напустите элемент управления в Тестовом контейнере пользовательских элементов управления. Дополнительные сведения см. в разделе Практическое руководство. Тестирование поведения элемента UserControl во время выполнения.

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

Чтобы построить элемент управления и добавить его в тестовую форму

В обозревателе решений щелкните правой кнопкой мыши ctlClockLib и затем выберите Построить.

В меню Файл выберите Добавить, затем Новый проект.

Добавьте в решение новый проект Приложение Windows и назовите его Test.

Проект Test будет добавлен в обозреватель решений.

Щелкните правой кнопкой мыши узел проекта Test в обозревателе решений и выберите пункт Добавить ссылку, чтобы открыть диалоговое окно Добавление ссылки.

Перейдите на вкладку Проекты. Под строкой Имя проекта можно будет увидеть проект ctlClockLib. Дважды щелкните ctlClockLib, чтобы добавить ссылку на тестовый проект.

В обозревателе решений щелкните правой кнопкой мыши Test и затем выберите Построить.

На панели элементов разверните узел Компоненты ctlClockLib.

Дважды щелкните ctlAlarmClock, чтобы добавить экземпляр ctlAlarmClock в форму.

На панели элементов найдите элемент DateTimePicker и дважды щелкните его, чтобы добавить элемент управления DateTimePicker в форму, а затем добавьте элемент управления Label, дважды щелкнув элемент Надпись.

С помощью мыши удобно расположите элементы управления в форме.

Установите свойства этих элементов управления следующим образом.

Текст

(пробел)

Имя

lblTest

Имя

dtpTest

Format

В конструкторе дважды щелкните компонент dtpTest.

В редакторе кода откроется Private Sub dtpTest_ValueChanged .

Измените код, как показано ниже.

В обозревателе решений щелкните правой кнопкой мыши Test и выберите Назначить автозагружаемым проектом.

В меню Отладка щелкните Начать отладку.

Начнется выполнение тестовой программы. Обратите внимание, что в элементе управления ctlAlarmClock отображается текущее время (которое постоянно обновляется), а в элементе управления DateTimePicker — начальное время.

Щелкните поле элемента DateTimePicker, в котором отображаются минуты.

С помощью клавиатуры измените значение этого поля таким образом, чтобы оно было на одну минуту больше текущего времени, отображаемого элементом ctlAlarmClock .

Время включения будильника показано в элементе lblTest . Дождитесь, когда текущее время станет равным времени срабатывания будильника. В этот момент раздастся звуковой сигнал и элемент lblAlarm начнет мигать.

Отключите будильник, нажав lblAlarm . Теперь можно переустановить будильник.

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

Конструкции управления visual basic

Тулбокс Visual Basic содержит инструменты, которые Вы используете, чтобы рисовать элементы управления в ваших формах.

Рис. 7.1 Тулбокс Visual Basic

Категории элементов управления

В Visual Basic есть три большие категории элементов управления:

  • Встроенные элементы управления типа command button или frame. Они содержатся в файле Visual Basic .exe. Встроенные элементы управления всегда включаются в комплект инструментов, в отличие от элементов управления ActiveX и инсертабильных объектов, которые могут быть удалены из тулбокса или добавлены в него.
  • Элементы управления ActiveX, которые существуют как отдельные файлы с расширением .ocx. Они включают элементы, доступные во всех изданиях Visual Basic (элементы управления data-bound gr >Примечание Элементы управления ActiveX с расширением .vbx используют старую технологию и находятся в приложениях, написанных в более ранних версиях Visual Basic. Когда Visual Basic открывает проект, содержащий элемент управления .vbx, заданное по умолчанию поведение должно заменить элемент управления .vbx на элемент управления .ocx, но только, если версия элемента управления .ocx доступна.
  • Инсертабильные объекты, например объект Microsoft Excel Worksheet, содержащий список служащих всей вашей компании, или объект Microsoft Project Calendar, содержащий информацию планирования для проекта. Так как они могут быть добавлены к комплекту инструментов, они могут рассматриваться как элементы управления. Некоторые из этих объектов также поддерживают Автоматизацию (прежде называемую Автоматизацией OLE), которая позволяет вам программировать объекты другого приложения изнутри приложения Visual Basic.
  • Дополнительно Об элементах управления ActiveX, включённых в Профессиональное и Предпринимательское издания, см. «Использование элементов управления ActiveX» в Руководстве по инструментальным средствам компонентов.

    См. также Приложение А и Приложение Б к этой главе

    Чтобы узнать больше об элементах управления, см. следующие темы:

    Урок № 13. Управляющие структуры

    Этот раздел посвящён операторам, которые предназначены для управления процессом выполнения всех остальных исполняемых операторов Visual Basic. Такие классические структуры, как условные операторы и операторы цикла, имеются во всех процедурных языках программирования, имеются они и в Visual Basic.

    Примечание: Здесь бы хотелось заметить, что управляющие структуры мы тоже будем называть операторами. Операторы, рассмотренные на предыдущем уроке используются в выражениях. А операторы рассматриваемые в этом уроке предназначаются для управления вычислением этих выражений (в документациях такие операторы называются — Statement). Важно понимать различие между этими операторами.

    Условный оператор If. End If

    Этот оператор вы уже встречали в восьмом уроке. Он необходим для принятия решений, нужно ли выполнять то или иное действие или нет. Другими словами если Логическое_выражение истинно, то Оператор выполнится. Если ложно, то выполнение не произойдёт.

    If Логическое_выражение Then Оператор

    If Логическое_выражение Then
    &nbsp&nbsp&nbsp&nbspГруппа_операторов
    End If

    В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один).

    If (a = b) And (c <> d) Then
    &nbsp&nbsp&nbsp&nbspb = d
    &nbsp&nbsp&nbsp&nbspa = 20
    End If

    Скобки здесь не обязательны, но они повышают читабельность кода.

    Условный оператор If. Else. ElseIf. End If

    Такая конструкция используется для более сложных ветвлений:

    If Логическое_выражение 1 Then
    &nbsp&nbsp&nbsp&nbspГруппа_операторов
    ElseIf Логическое_выражение 2 Then
    &nbsp&nbsp&nbsp&nbspГруппа_операторов
    .
    Else
    &nbsp&nbsp&nbsp&nbspГруппа_операторов
    End If

    Эта схема может быть и в укороченном виде If. Then. Else. End If. При этом операторы после Else выполняются только в том случае, если ни одно из условий не выполнено.

    If (a = b) Or (c <> d) Then
    &nbsp&nbsp&nbsp&nbspb = d
    &nbsp&nbsp&nbsp&nbspa = 20
    Else
    &nbsp&nbsp&nbsp&nbspc = d
    End If

    Выражение c=d будет выполнено только в том случае, если a<>b или c=d.

    Условный оператор Select Case. End Select

    Конструкция Select Case «принимает решение» на основе анализа значения одного выражения. При этот это выражение указывается в строке Select Case:

    Select Case Анализируемое_выражение

    Case Значение№1
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    Case Значение№2
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    .
    Case Значение№N
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    Case Else
    &nbsp&nbsp&nbsp&nbspГруппа операторов

    Конечно, анализируемое выражение должно возвращать значение типа, совместимого с типом значений в строка Case.

    В зависимости от значения переменной iTest, строковой переменной strResult присваиваются различные значения

    Select Case iTest

    Case 1
    &nbsp&nbsp&nbsp&nbspstrResult = «iTest = 1»
    Case 2, 3, 4
    &nbsp&nbsp&nbsp&nbspstrResult = «iTest = 2, 3 или 4»
    Case 5 To 9
    &nbsp&nbsp&nbsp&nbspstrResult = «iTest находится в диапазоне от 5 до 9»
    Case iTest Case Is > 9
    &nbsp&nbsp&nbsp&nbspstrResult = «iTest больше 9»
    Case Else
    &nbsp&nbsp&nbsp&nbspstrResult = «iTest равно 0»

    Оператор цикла For. Next

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

    For Счётчик_цикла = Старт To Стоп Step Шаг
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    Next [Счётчик_цикла]

    Роль счётчика цикла может играть только ранее объявленная переменная целочисленного типа. Шаг задаёт приращение счётчика цикла при каждом проходе. Умолчательно значение шага равно 1. После слова Next счётчик можно опустить.

    В этом примере всем элементам массива iArray присваивается значение 5.

    Dim c As Integer
    Dim iArray(10) As Integer
    For c = 0 To 10
    &nbsp&nbsp&nbsp&nbspiArray(c) = 5
    Next c

    Оператор цикла For Each. Next

    Эта специфическая форма цикла For предназначена для выполнения некоторой операции с каждым объектом, входящим в состав некоторой коллекции объектов (такой операцией, например, может быть вызов метода или присваивание значения свойству). Синтаксис оператора:

    For Each ИмяОбъекта In ИмяКоллекции
    &nbsp&nbsp&nbsp&nbspОперации над объектами
    Next ИмяОбъекта

    В этом примере показано, как изменить свойство BackColor у всех этикеток (Label), лежащих на форме

    Dim x As Object
    For Each x In Me.Controls
    &nbsp&nbsp&nbsp&nbspIf TypeName(x) = «Label» Then
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspx.BackColor = 0
    &nbsp&nbsp&nbsp&nbspEnd If
    Next x

    Me здесь — текущая форма. Т.е. не обязательно использовать полное имя формы для доступа к её свойствам. Например, для закрытия текущей формы, можно написать Me.Hide. (или Unload Me).

    Оператор цикла Do While. Loop / Do. Loop While

    Эти две разновидности цикла тесно взаимосвязаны, и их часто рассматривают как один из базовых видов цикла. Как уже отмечалось, циклы For применяют в тех случаях, когда количество проходов и диапазон изменения счётчика цикла заранее известны. Циклы While предназначены для ситуаций, когда количество проходов цикла заранее не известно, но зато известно условие выхода из цикла. Синтаксис цикла While:

    Do While Условие_выхода
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    Loop

    Do
    &nbsp&nbsp&nbsp&nbspГруппа операторов
    Loop While Условие_выхода

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

    Do While 2 > 1
    &nbsp&nbsp&nbsp&nbspDegub.Print «Вечный цикл»
    Loop

    Если у вас случаянно получился такой цикл, то выйти из него можно при нажатии Ctrl+Break. Но это работает только в среде разработки.

    Dim n As Integer
    n = 100
    Do While n >= 0
    &nbsp&nbsp&nbsp&nbspn = n — 1
    &nbsp&nbsp&nbsp&nbspDebug .Print n
    Loop

    Оператор цикла Do Until. Loop / Do. Loop Until

    По своей логике цикл Until подобен циклу While с той лишь разницей, что проходы цикла выполняются до тех пор, пока условие выхода не выполняется.

    Dim n As Integer
    n = 100
    Do
    &nbsp&nbsp&nbsp&nbspn = n — 1
    &nbsp&nbsp&nbsp&nbspDebug .Print n
    Loop Until n

    Выход из цикла Exit For / Exit Do

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

    Dim n As Integer
    n = 10
    Do While n > 1
    &nbsp&nbsp&nbsp&nbspn = n — 1
    &nbsp&nbsp&nbsp&nbspDebug .Print n
    &nbsp&nbsp&nbsp&nbspIf n = 5 Then Exit Do ‘ Если счётчик = 5, то
    &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp’выходим из цикла
    Loop

    Итак, управляющие структуры — очень важное и далеко не слабое звено в программировании на Visual Basic (да и не только на Visual Basic). Без таких использования таких структур не получится написать даже самую маленькую программу. Даже если и получится, то программа не будет представлять никакого практического интереса.
    Но есть ещё более важное звено программы — функция. Вот как раз функциями мы сейчас и займёмся! Рассмотрев функции, мы уже сможем написать какую-нибудь полезную в хозяйстве програмку.

    Илон Маск рекомендует:  Что такое код preg_quote
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL
    Примечание