СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Основы программирования на VB

Категория: Прочее

Нажмите, чтобы узнать подробности

Методическая разработка «Основы программирования на VB» предназначена для студентов дневного отделения специальности 09.02.03 «Программирование в компьютерных системах» в качестве учебного пособия при изучении темы «Разработка кода программного продукта на уровне модуля на языке программирования VB» междисциплинарного курса «Прикладное программирование». 

Просмотр содержимого документа
«Основы программирования на VB»

Типы данных, допустимые имена

Типы данных относятся к самым фундаментальным понятиям любого языка. Тип данных определяет:

1. множество допустимых значений, которое может принимать указанная переменная.

2. размер памяти, введенной переменной.

3. множество операций и функций, которые можно применять к данным этого типа.

В Visual Basic применяются следующие типы данных:

Числовой (Integer, Long, Single, Double, Currency);

Строковый (String);

Типа дата (Date);

Байтовый (Byte);

Логический (Boolean);

Произвольный (Variant);

Объектный (Object).

Тип данных

Размер

(байт)

Диапазон значений

Byte (байт)

1

От 0 до 255

Boolean (логический)

2

True или false

Integer (целое)

2

От –32 768 до 32 767

Long (длинное целое)

4

От –2 147 483 648 до 2 147 483 647

Single (С плавающей точкой обычной точности)

Double(удвоенная точность)

4

От-3,402823Е+38 до –1,401298Е-45 для отрицательных значений;

От 1,401298Е-45 до 3,402823Е+38 для положительных значений

Currency (денежный)

8

От –922 337 203 685 477 ,5808 до 922 337 203 685 477,5807

Date (даты и времени)

8

От 1 января 100г. до 31 декабря 9999г.

String (строка переменной длины)

10+длина строки

От 0 до приблизительно 2 миллиардов знаков

String (Строка постоянной длины)

Длина строки

От 1 до приблизительно 65 400 знаков

Variant (числовые подтипы)

16

Любое числовое значение вплоть до границ диапазона для типа Double

Variant (строковые подтипы)

22+длина строки

Как для строки String переменной длины.

Тип данных, определяемый пользователем (с помощью ключевого слова Type)

Объем определяется элементами

Диапазон каждого элемента определяется его типом данных.

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

1. Длина имени не должна превышать 265 символов;

2. Имя не может содержать точек, пробелов и следующих символов: %, &, !, #, @, $ ;

3. Имя может содержать любую комбинацию букв, цифр, символов, начинающуюся с буквы;

4. Имена должны быть уникальны внутри области, в которой они определены;

5. Не следует использовать имена, совпадающие с ключевыми словами VB и именами встроенных функций и процедур.


Описание переменных и массивов


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

Синтаксис:

Dim ИмяПеременной [As [New] Тип] [, ИмяПеременной[As [New] Тип]

ИмяПеременной – имя переменной, удовлетворяющее стандартным правилам именования переменных.

New – ключевое слово, включающее возможность неявного создания объекта.

Тип – тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As Тип.

Например, следующая инструкция описывает переменную типа Integer.

Dim N As Integer

Инструкция Dim предназначена также для описания объектного типа переменных.

Например, следующая инструкция описывает переменную для нового экземпляра формы:

Dim X As New Form

Если при описании объектной переменной не используется ключевое слово New, то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.

Если тип переменной не объявлен, и в модуле отсутствует инструкция DefТип, то по умолчанию переменная получает тип Variant.

Для обязательного описания всех переменных в модуле в его начале надо поместить инструкцию Option Explicit.

Массивы должны быть объявлены до их использования в программе.

Синтаксис:

Dim ИмяМассива (Индексы) [As Тип] [,ИмяМассива (Индексы) [As Тип]]

ИмяМассива – имя массива, удовлетворяющее стандартным правилам именования переменных.

Тип – Тип данных массива.

Индексы – Размерность массива. Допускается описание до 60 размерностей. Данный параметр имеет следующий синтаксис:

LBound (ИмяМассива [, Размерность]) To UBound (ИмяМассива [, Размерность]),

Возвращают минимальное и максимальное допустимые значения указанной размерности. Или:

[Нижний То] Верхний [, [Нижний То] Верхний]

Примеры объявления массивов приведены ниже:

Dim B(3, 3) As Single

Dim A(12) As Integer

Первая инструкция объявляет двухмерный массив 3 * 3(матрицы). Вторая инструкция объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 – базовый индекс.

Можно изменить базовый индекс, написав в области описания модуля инструкцию Option Base 1. После этого индексы массивов А и В будут нумероваться с единицы. Другим способом изменения базового индекса является использование ключевого слова To при объявлении массива:

Dim B(1 To 3, 1 To 3) As Single

Dim A(1 To 12)As Integer

Массив в программе определяется поэлементно.

Dim B(1 To 3, 1 To 3) As Single

B(1, 1) = 2

B(1, 2) = 4

B(2, 1) = 1

B(2, 2) = 6

Dim B(1 To 3, 1 To 3) As Single

B(1, 1) = 2 : B(1, 1) = 2 : B(1, 1) = 2 : B(1, 1) = 2

Удобным способом определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant. Например,

Dim A As Variant

A = Array(10, 20, 30)

B = A(2)


Динамические массивы


Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность.

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

Синтаксис:

ReDim [Preserve] ИмяМассива (Индексы) [As Тип] [,ИмяМассива (Индексы) [As Тип]]

Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности. Если ключевое слово Preserve не используется, то данные в массиве при изменении размерности не сохраняются.

Например, в следующем примере устанавливаются границы динамического массива:

ReDim(1 To 10)


Операции VB

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

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

отношения, применяются не только к числам, и их результатом являются логические значения.

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

Приведем операции Visual Basic всех трех категорий.


Математические операции

Операции

Описание

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

Сложение

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

Вычитание

- [Операнд]

Перемена знака

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

Умножение

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

Деление

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

Целочисленное деление

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

Остаток от деления по модулю.

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

Возведение в степень

Операции отношения

Операции

Описание

[Операнд1]

Меньше

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

Больше

[Операнд1]

Меньше или равно

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

Больше или равно

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

Не равно

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

Равно

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

Сравнение двух операндов, содержащих ссылки на объекты.

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

Сравнение двух строковых выражений


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


Операции

Описание

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

Логическое умножение

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

Логическое сложение

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

Исключающее Or, т.е. возвращает True тогда и только тогда, когда только один операнд возвращает True

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

Логическое отрицание

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

Логическая импликация (в настоящее время почти не используется)

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

Логическая эквивалентность (в настоящее время почти не используется)

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

Приоритет

Операции

1.

Вызов функции и скобки

2.

^

3.

- (смена знака)

4.

* и /

5.

\ (деление нацело)

6.

Mod (Остаток от деления нацело)

7.

+ и -

8.

,=, и =

9.

Not

10.

And

11.

Or

12.

Xor

13.

Equ

14.

Imp


Строковые функции


Left – возвращает подстроку, состоящую из заданного числа первых символов

исходной строки.

Синтаксис:

Left (string, length), где

length- число символов;

string- исходная строка.


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

Синтаксис:

Right (string, length), где

length- число символов;

string- исходная строка.

Mid - возвращает подстроку строки, содержащую указанное число символов.

Синтаксис:

Mid (string, start [, length]), где

String - строковое выражение из которого извлекается подстрока.

Start - позиция символа в строке string, с которого начинается нужная подстрока.

Length - число возвращаемых символов подстроке.

Len - возвращает число символов строки.

Синтаксис:

Length (string).

FileLen – возвращает значения типа Long, содержащее размер файла в байтах.

Синтаксис:

FileLen ( ПолноеИмяФайла).

LCaseпреобразует строку к верхнему регистру.

Синтаксис:

LCase (string).

InStrВозвращает позиции первого и последнего вхождения одной строки внутри другой строки.

Синтаксис:

InStr ([Start,] StringCheck, StringMatch [, Compare])

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

StringCheckстроковое выражение, в котором выполняется поиск;

StringMatchискомое строковое выражение;

Compareуказывает способ сравнения строк.


Встроенные диалоговые окна: InputBox, MsgBox


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

Примером такого диалогового окна в программе Visual Basic является окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно – это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немодального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации.

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

Функция InputBox выводит на экран диалоговое окно, содержащее сообщение, поле ввода и две кнопки и Cancel. Устанавливает режим ожидания ввода текста пользователем и нажатия кнопки, а затем возвращает значение типа String по нажатию кнопки ОК, содержащее текст, введенный в поле ввода. При нажатии кнопки Cancel возвращает пустую строку.

Синтаксис:

InputBox (Prompt [, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, context])

Prompt – строковое выражение, отображаемое как сообщение в диалоговом окне;

Title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, то в строке заголовка помещается имя приложения;

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

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

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

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

Context – Числовое выражение, определяющее номер соответствующего раздела справочной системы.

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

Синтаксис:

MsgBox (Prompt [, Buttons] [, Title] [, Helpfile, Context])

Buttons – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого параметра равняется 0. Параметры Prompt , Title, Helpfile, Context имеют то же назначение, что и у функции InputBox.


Операторы присваивания, перехода, условного

перехода, выбора


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

Синтаксис:

[Let] Переменная =Выражение

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

Для присваивания переменной ссылки на объект применяется инструкция Set.

В общем случае инструкция Set имеет следующий синтаксис:

Set ОбъектнаяПеременная ={[New] ОбъектноеВыражение | Nothing}, где ключевое слово New используется при создании нового экземпляра класса, а ключевое слово Nothing позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (т.е. она удаляет объект из памяти).

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

Синтаксис:

GoTo Строка

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

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

Синтаксис:

If Условие Then [Инструкция] [Else Инструкция _else] [End If]

Если Условие принимает значение True, то выполняется Инструкция, если False , то Инструкция_Else. Ветвь Else является не обязательной. Ключевое слово End If необходимо только в случае блочной структуры оператора If.

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

If Условие Then

[Инструкции

[Else

[Инструкции_Else]]

End If]

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

If Условие1 Then

[Инструкции1]

ElseIf Условие2

[Инструкции2]

Else

[Инструкции_Else]]

End If]

Если нужно проверить несколько условий, то оператор If –Then может стать слишком сложным. В этом случае применяется оператор выбора. Оператор выбора выполняет одну из нескольких групп инструкций в зависимости от значения выражения.

Синтаксис:

Select Case Выражение

[Case СписокВыражений-1

[Инструкции –1]]

[Case СписокВыражений -n

[Инструкции – n]]

[Case Else

[Инструкции_Else]]

End Select

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

Выражение;

Выражение To Выражение;

Is ОператорСравнения Выражение,

где Выражение-это любое числовое или строковое выражение. Ключевое слово To задает диапазон значений. Ключевое слово Is с оператором сравнения задает диапазон значений. Если ключевое слово Is не указано, оно вставляется по умолчанию.

Инструкции – это одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка.

Инструкция_Else –одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case.

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


Операторы цикла (For-Next, For Each - Next, Do– Loop)


Оператор ForNext повторяет выполнение группы инструкций указанное число раз.

Синтаксис:

For Счетчик = Начало To Конец [Step Шаг]

[Инструкции]

[Exit For]

[Инструкции]

Next [Счетчик]

Оператор For – Next повторяет выполнение группы инструкций, пока Счетчик изменяется от Начала до Конца с указанным шагом. Если Шаг не указан, то он полагается равным 1. Альтернативный способ выхода из цикла предоставляет инструкция Exit For.

Оператор For EachNext повторяет выполнение группы инструкций для каждого элемента массива или семейства.

Синтаксис:

For Each Элемент In Группа

[Инструкция]

[Exit For]

[Инструкции]

Next [Элемент]

Альтернативный способ выхода из цикла предоставляет инструкция Exit For.

Оператор Do-Loop повторяет выполнение набора инструкций, пока условие имеет значение True (случай While) или пока оно не примет значение True (случай Until)

Синтаксис:

Do [{While | Until} Условие]

[Инструкции]

[Exit Do]

[Инструкции

Loop]

или


Do

[Инструкции]

[Exit Do]

[Инструкции]

Loop [{While | Until} Условие]

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


Оператор With


VB предоставляет особую структуру –With…End, позволяющую ссылаться на свойства или методы, которые принадлежат одному и же объекту, без задания всей объектной ссылки каждый раз.

Синтаксис:

With Object

операторы, использующие свойства и методы Object

End With

Object – это любая допустимая ссылка.

Оператор With избавляет программиста от утомительной обязательности использовать большое количество повторений имени одного и того же объекта при работе с его свойствами и методами. Кроме того, он структурирует код, делая его боле прозрачным.

Допустимо использование вложенных операторов With.


Константы


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

Синтаксис:

[Public | Private] Const ИмяКонстанты [As Тип] = Выражение

где

Public – Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.

Private - Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.

ИмяКонстанты – Имя константы, удовлетворяющее стандартным правилам именования переменных.

Тип – любой из поддерживаемых типов данных. Для каждой описываемой константы следует использовать отдельное предложение As Тип.

Выражение – Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы за исключением Is.


Процедура, ее описание и вызов


Процедура является самостоятельной частью кода, которая имеет имя и может иметь параметры, выполнять последовательность инструкций и изменять значения своих параметров. Различают процедуры Sub и Function.

Синтаксис:

[Private | Public] [Static] Sub Имя [(СписокПараметров)]

[Инструкции]

[Exit Sub]

[Инструкции]

End Sub

где Public–указывает, что процедура Sub доступна для всех других процедур во всех модулях.

Private – указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана.

Static – указывает, что локальные переменные процедуры Sub сохраняют свои значения в промежутках времени между вызовами этой процедуры.

СписокПараметров – список формальных параметров, значения которых передаются в процедуру или возвращаются из процедуры при ее вызове. Разделителем в списке параметров является запятая.

Инструкция Exit Sub приводит к немедленному выходу из процедуры Sub.

Синтаксис Списка Параметров:

[Optional] [ByVal | ByRef] [ParamArray] ИмяПеременной [( )] [As тип]

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

ByVal указывает, что этот параметр передается по значению.

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

ParamArray используется только в качестве последнего элемента в списке СписокПараметров для указания, что конечным параметром является описанный как Optional массив значений типа Variant. Ключевое слово ParamArray позволяет задать произвольное количество параметров. Оно не может быть использовано со словами ByVal, ByRef или Optional.

Тип – тип значений параметра, переданного в процедуру.

Приведем синтаксис процедуры Function.

[Public | Private] [Static] Function Имя [(СписокПараметров)] [As Тип]

[Инструкции]

[Имя=Выражение]

[Exit Function]

[Инструкции]

[Имя = Выражение]

End Function

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

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

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

Первый способ вызова процедуры Sub:

ИмяПроцедуры СписокФактическихПараметров

СписокФактическихПараметров – список параметров, передаваемых процедуре. Он должен соответствовать по количеству и типам параметров списку, заданному в процедуре при ее определении.

Если требуется использовать несколько процедур с одинаковыми названиями, при их вызове через точку надо указать имя модуля, в котором они расположены. А именно:

ИмяМодуля.ИмяПроцедуры СписокФактическихПараметров

Второй способ вызова процедуры Sub производится с помощью инструкции Call.

Call ИмяПроцедуры (СписокФактическихПараметров)

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

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

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


21