Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры 2l.doc
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
247.81 Кб
Скачать

17.VB. Типы данных. Способы объявления переменных и область их действия.Данные в Visual Basic. Типы данныхЛюбая программа, которую вы составляете, нацелена на обработку каких-либо данных. Данные поступают в программу в своем первоначальном виде (исходные данные) и в обработанном виде “выходят” из программы (выходные данные).Данные могут быть постоянными величинами и переменными величинами. Постоянные величины или константы – это такие величины, которые в процессе выполнения программы не изменяют своих значений. Переменные же величины в процессе выполнения программы свои значения изменяют.В языке Visual Basic, как и в любом другом языке, постоянные и переменные величины должны быть отнесены к какому-либо типу данных. В каждом языке существует набор стандартных типов данных. В Visual Basic кроме этого можно объявить свой собственный тип данных как комбинацию стандартных и отнести данные к этому типу.Стандартные типы данных, поддерживаемые языком Visual Basic, приведены в таблице.В таблице представлены различные типы данных, использующиеся в Visual Basic. Понимание того, как связаны тип данных и занимаемая ими память важно для оптимизации кода. Везде, где это возможно, нужно использовать тип данных, требующий меньший объем памяти, чтобы сэкономить {}ные ресурсы. Но сначала нужно научиться создавать и использовать постоянные и переменные величины.Типы данных Visual Basic.

Тип данных

Объем занимаемой памяти

Краткая запись

Целые типы

Integer (целое)

2 байта

%

Long (целое двойной длины)

4 байта

&

Byte (Байт)

1 байт

Boolean (булево)

2 байта

Плавающие типы

Single

Десятичные чсла

4 байта

!

Double

Десятичные чсла

8 байт

#

Строковые типы

String Текстовая инфо

1 байт на каждый символ

$

Объектные типы

Object

Рисунки или ссылки на любой другой объект

4 байта

Variant-типы

Variant

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

16 байт

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

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

Прочие типы

Currency

Чсло в денежном формате

8 байт

@

Date

Дата

8 байт

Объявление типа переменной.Переменные бывают:

  1. локальные внутри модуля (доступны, только в определенном программном модуле) - префикс m. Прим - mdtmДата1

  2. локальные внутри процедуры (доступны, только в определенной процедуре) - нет префикса. Прим - dtmДата2

  3. глобальные (доступны со всех программных модулей и процедур) префикс g. Прим - gdtmДата10

В Visual Basic для объявления переменных используют операторы Dim, Private, Static, Public: 

18.VB. Основные элементы управления и их свойства.

Элементы управления - это объекты, которые служат для организации интерфейса между пользователем и компьютером. Наприм: кнопки, списки, переключатели.Метка Label - служит для добавления текста на форму. Этот текст не может быть изменен пользователем, но может быть изменен программой. Свойства:(Имя) - имя метки. По умолчанию компьютер дает стандартное имя: наприм, Label1.Caption - текст надписи. Font - шрифт, его размер, начертание.Alignment - выравнивание текста: влево, вправо или по центру.ForeColor - цв текста. BackColor - цв фона.  ToolTipText - подсказка, появляющаяся при наведении указателя мыши на элемент управления. Свойства размещения и размера элемента: ForeColor - цв текста. BackColor - цв фона.

Текстовое поле - TextBoxСлужит для того, чтобы пользователь мог ввести текст или увидеть результат во время работы программы. Свойства:(Имя) - имя текстового поля. По умолчанию компьютер дает стандартное имя: наприм, Text1.Text - содержит символы, которые ввел пользователь. Другие свойства: Font, Alignment, ForeColor, BackColor аналогичны свойствам элемента Label.

Командная кнопка Command Button. Свойства:(Имя) - имя командной кнопки. По умолчанию компьютер дает стандартное имя: наприм, Command1.Caption - надпись на кнопке.

Рамка для рисунка PictureBox Содержит рисунок. Рисунок выбирается с помощью свойства Picture, в которое вводится имя файла или выбирается с помощью кнопки . Рамка - Frame - используется для оформления, а также для группировки переключателей. Сверху на рамке можно сделать надпись с помощью свойства Caption. Если нужно создать элемент внутри рамки, то перед их рисованием рамку выделяют, тогда рамка может служить контейнером для группы переключателей. Кнопка Command Button. Свойства:    Caption - надпись на кнопке. Enabled - доступность элемента. С помощью этого свойства блокируются элементы, которые пользователю нельзя использовать в данный момент. Заблокированные элементы отображаются серым цвом. В заблокированное текстовое поле не получится ввести текст, а заблокированную кнопку нельзя нажать. Выбирают из двух значений:                                              § True (Да) - элемент управления доступен пользователю.                                              § False (Нет) - элемент управления не доступен. o                     Visible - видимость элемента управления:                                              § True (Да) - виден.                                              § False (Нет) - не виден.

19. VB. Конструкции принятия решений.

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

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

IF < условие > THEN < оператор (код) >

Позволяет выполнить один или несколько операторов, если условие истинно. Можно использовать однострочный или блочный вариант. Если необходимо выполнить более одной строки кода, нужно использовать блочный вариант с оператором End IF.

Синтаксис:

IF < условие > Then < оператор (код) >

IF < условие > Then

< блок кода >

End IF

IF <условие> THEN <оператор 1> ELSE <оператор 2> End IF

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

В блоке IF допускается любое кол-во предложений ElseIF, но ни одно не может находиться после предложения Else.

Оператор выбора (варианта)

При выборе для выполнения одного из нескольких операторов (блоков операторов) целесообразно и удобно использовать инструкцию Select Case.

Синтаксис:

Select Case <переменная или выражение>

Case <значение 1>

<оператор (блок операторов) 1>

Case <значение 2>

<оператор (блок операторов) 2>

Case <значение 3>

<оператор (блок операторов) 3>

End Select

Допускается вложенность инструкций Select Case. При этом каждой вложенной инструкции Select Case должна соответствовать инструкция End Select.

Флажок - Check Box Используется, когда пользователь должен ввести Да (флажок установлен ) или Нет (флажок снят ) Свойства: Value - содержит значение элемента управления. Имеются следующие значения: 1.                  - нет, флажок снят; 2.                  - есть, флажок установлен; 3.                  - флажок недоступен. Переключатель - Option Button Позволяет пользователю выбрать один вариант из нескольких. Свойства: Value - показывает выбрана опция (1) или нет (0). 7.                  Поле со списком ComboBox В это поле пользователь может вводить текст так же, как и в TextBox, а кроме этого, если нажать , то откроется список, из которого можно выбрать нужную строку. Свойства: o                     Text - содержимое строки, введенное пользователем или выбранное из списка. o                     List - строки списка (многострочное свойство). o                     ListIndex - номер выбранной пользователем строки (нумерация начинается с нуля, если никакая строка не была выбрана, то свойство равно 1). 8.                  Список ListBox Cодержит список строк, в котором пользователь может выбрать одну или несколько строк. Свойства элемента аналогичны элементу ComboBox, за исключением свойства Text, которое здесь отсутствует. 9.                  Рамка для рисунка PictureBox Содержит рисунок. Рисунок выбирается с помощью свойства Picture, в которое вводится имя файла или выбирается с помощью кнопки .

Область действия

Private

Public

Уровень процедуры

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

Не применяется. Вы не можете объявлять общие переменные в процедуре.

Уровень модуля

Переменные, приватные в модуле, в котором они появляются

Переменные доступны всем модулям.



Dim имяПеременной As типДанных Private имяПеременной As типДанных Static имяПеременной As типДанных Public имяПеременной As типДанных С помощью одного оператора можно объявить сразу несколько перменных, разделенных «,»ой. ПРИМ: Dim intЧсло As Integer, strX As Stping, Y As Double, A As Integer Для объявления строки с фиксированной длиной используется следующий синтаксис: Dim имяПеременной As String * длинаПеременной Если длина переменной меньше объявленной, то оставшаяся часть заполняется пробелами; если - больше, то отсекается. Для создания переменной, которую хотите определить как глобальную нужно в раздел General Declarations главного модуля проекта написать оператор Public по следующему синтаксису Public имяПеременной As типДанных Для объявления переменной, локальной внутри модуля или формы используй оператор Private или Dim в разделе General Declarations модуля или ФОРМЫ, тогда эта переменная будет доступна для всех процедур этой ФОРМЫ или этого модуля, и недоступна из других форм и модулей. Если вы, используя операторы Dim или Static, напишете объявление переменной внутри процедуры, то эта переменная будет доступна, только в этой процедуре. Область действия переменной определяет, какие разделы вашего кода знают о ее существовании. Когда вы объявляете переменную в пределах процедуры, только код этой процедуры может обращаться к ней или изменять ее значение; ее область действия является местной к этой процедуре. Иногда, однако, вам необходимо использовать переменную с более широкой областью действия, чтобы ее значение было доступно всем процедурам в этои модуле или даже всем процедурам в приложении. Visual Basic позволяет вам определить область действия переменной при ее объявлении.Определение области действия переменныхВ зависимости от того, как она объявлена, переменная определяется как действующая или на уровне процедуры (местная), или на уровне модуля.Переменные, используемые в процедуреПеременные уровня процедуры признаются только в процедуре, в которой они объявлены. Они также известны как местные переменные. Они объявляются ключевыми словами Dim или Static. Наприм:

Dim intTemp As Integer

Static intPermanent As IntegerЗначения в местных переменных, объявленных со словом Static, существуют всё время, пока выполняется приложение, а переменные, объявленные со словом Dim, существуют только во время выполнения процедуры.Местные переменные хороши для любого вида временных вычслений. Наприм, вы можете создавать дюжину различных процедур, содержащих переменную, называемую intTemp. Пока каждая intTemp объявлена как местная переменная, каждая процедура признает только свою версию intTemp. Любая процедура может изменять значение в своей местной intTemp, не воздействуя на переменные intTemp в других процедурах.Переменные, используемые в модулеПо умолчанию переменная уровня модуля доступна всем процедурам в этом модуле, но не в кодах других модулей. Вы создаете переменные уровня модуля, объявляя их ключевым словом Private в секции Declarations в верхней части кода модуля. Наприм:Private intTemp As IntegerНа уровне модуля нет никакого различия между Private и Dim, но Private предпочтительнее, потому что это более явно контрастирует с Public и делает код проще для понимания.Переменные, используемые во всех модуляхЧтобы сделать переменную уровня модуля доступной другим модулям, используйте для объявле-ния переменной ключевое слово Public. Значения общих переменных доступны всем процедурам в приложении. Подобно всем переменным уровня модуля, общие переменные объявляются в секции Declarations в верхней части кода модуля. Наприм: Public intTemp As Integer

20Цикл - это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов.

В языке Visual Basic существует три основных вида циклов, которые реализуется при помощи конструкций For:Next, Do:Loop и While:Wend.

Цикл For:Next. Используется в том случае, когда кол-во повторов заданного блока операторов известно заранее. Данная конструкция выглядит следующим образом:

For счетчик = начальное значение To конечное значение [Step шаг]

Операторы1

[Exit For]

Операторы2

Next [счетчик]

Когда приведенные операторы выполняются первый раз, то переменной счетчику присваивается начальное значение, после чего возможны два варианта действий. Если в результате проверки условия счетчик > конечное значение было получено значение True, то происходит завершение цикла, при этом блоки операторы1 и операторы2 ни разу не выполняются. С другой стороны, если результатом проверки условия является False, то в этом случае блоки операторов выполняются первый раз, после чего происходит переход на начало цикла. Далее значение переменной-счетчика увеличивается на шаг, расположенный после ключевого слова Step (в случае его отсутствия устанавливается шаг = 1). После этого снова проверяется истинность условия счетчик > конечное значение и т.д., окончание цикла происходит в тот момент, когда результатом данной проверки станет значение True.

Зачастую бывает необходимо "аварийно" завершать работу цикла при выполнении какого-либо доп-ьного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit:For, которое обычно располагают в управляющей конструкции, наприм:

If условие Then Exit For

Если результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок операторы1 будет выполнен очередной раз, а блок операоры2 - нет.

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

Do Until условие

Операторы

Loop

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

21 VB. Массивы данных. Статические и динамические массивы. Массивы элементов управления.Массив — это набор элементов определенного типа, каждый из которых имеет свой порядковый номер, называемый индексом. Различают статические и динамические массивы. Границы статического массива устанавливаются на этапе разработки и могут изменяться только в новой версии программы. Массив - это сколько угодно значений, объединенных одним именем.

Массив, прежде чем использовать, надо объявить. Объявляется он совершенно также как и переменная. Если ты объявишь его локально в процедуре (здесь можно использовать ключевое словоStatic), то он будет доступен только в этой процедуре и нигде больше, если в разделе (General)-(Daclarations) формы (c оператором Dim) - то во всей форме, а если тебе нужно объявить его глобально, так, чтобы он был доступен всему проекту, то в стандартном модуле с ключевым словом Public.Динамические массивы изменяют свои границы в ходе выполнения программы. С их помощью можно динамически задавать размер массива в соответствии с конкретными условиями. Динамический массив создается в два этапа. Сначала массив определяют в секции (General) (Declarations) контейнера (формы, модуля, класса) без указания размера:

' (General)(Declarations)

Dim aArrayO As Variant

Затем с помощью оператора Re Dim устанавливают фактический размер массива:

'(General)(Declarations)

Dim aArray () As Variant Private

Sub Commandl_Click()

ReDim aArray (50, 10)

'Код

End Sub

Синтаксис оператора ReDim:

ReDim (Preserve] Имя_переменной (Границы) [As Гип_данных]

В отличие от обычного Dim, оператор ReDim используется только в процедурах. При этом тип данных указывать не обязательно, особенно если онуже определен оператором Dim. Вы можете использовать оператор ReDim для изменения чсла элементов или размерности массива. Однако вы не можете объявить массив с данными одного типа, а затем использовать ReDim для приведения массива к другому типу, за исключением случая, если массив содержит переменные типа Variant. В этом случае приведение массива к явному типу данных допустимо.

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

Однако Visual Basic предоставляет возможность изменять размерность массива без потери содержимого. Для этого следует использовать ReDim вместе с ключевым словом Preserve:

'(General)(Declaration) Dim aArray ()

As Variant Private SubComroandl_Click()

ReDim Preserve aArray (50, 15)

'Код

End Sub В качестве значений элементов массива могут выступать как значения определенного типа, так и другие массивы, которые могут иметь разные типы. При этом в последнем случае объявляемый массив должен иметь тип Variant.  Наприм: 

Код:

Option Explicit  Private Sub Form_Load()  Dim arrA(1 To 3) As Variant  Dim arrB1(1 To 5) As Byte  Dim arrB2(1 To 5) As Integer  Dim arrB3(1 To 5) As Long  Dim intI As Byte  For intI = 1 To 5      'Заполнение массива степеней      arrB1(intI) = intI      arrB2(intI) = intI ^ 2      arrB3(intI) = intI ^ 3  Next  'Присвоение массивов элементам  arrA(1) = arrB1  arrA(2) = arrB2  arrA(3) = arrB3  End Sub

В рассмотренном приме элементами arrA являются в результате три массива, содержащие, соответственно, первую, вторую и третью степени чсл от 1 до 5.Элементы управленияЭлементы управления используются, чтобы дать пользователю возможность ввода и отобразить вывод. Некоторые из элементов управления, которые вы можете использовать в приложениях, включают текстовые поля, кнопки и списки. Другие элементы управления позволяют вам обращаться к другим приложениям и обрабатывать данные, как если бы отдаленное приложение было частью вашего кода. У каждого элемента управления есть собственный набор свойств, методов и событий.Обычные элементы управления:

  • Text box - текстовое окно,

  • Label - метка,

  • Check box - контрольный индикатор,

  • Image - изображение,

  • Picture box, - графическое окно

  • List box - список,

  • Combo box - комбинированное окно,

  • OLE container control - OLE-контейнер.

  • Data-bound list box - связанный с данными список,

  • Data-bound combo box - связанное с данными комбинированное окно,

  • MSFlexGrid - сетка,

  • Data-Bound Grid (DBGrid) - связянная с данными сетка,

  • MaskedEdit - окно редактирования с маской,

  • RichTextBox - улучшенное окно редактирования.

Все эти объекты, за исключением MaskedEdit и RichTextBox позволяют отображать на экране целые группы записей в виде списков или таблиц.Общие свойства связанных элементов управленияБольшинство связанных с данными элементов управления имеют три свойства, само название которых определяет их принадлежность к группе объектов, имеющих самое непосредственное отношение к данным - DataField, DataSource и DataChanged. Во всех названиях свойств присутствует слово Data. В следующей таблице приведено их краткое описание.

Свойство

Описание

DataField

Этим свойством определяется имя поля в наборе записей, созданном объектом управления данными

DataSource

Этим свойством определяется имя объекта управления данными, с которым связывается данный элемент управления

DataChanged

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

Чтобы использовать возможности связанных элементов управления вам необходимо: во-первых - определить источник данных указанием имени объекта управления данными в свойстве DataSource и, во-вторых - связать его с требуемым полем базы данных соответствующей установкой свойства DataField. Если база данных доступна во время разработки приложения, то список допустимых полей отображается в окне Properties (Свойства) связанного элемента управления

Использование с оператором ReDim зарезервированного слова preserve позволяет сохранить содержимое массива при изменении его размера или размерности. Но следует учитывать, что для многомерных массивов можно изменять только последнее измерение:

'(General)(Declarations)

Dim aArray () As Variant Private Sub Cornmandl_Click()

ReDim aArray (10, 10)

ReDim Preserve aArray (10, 15) 'действует

ReDim Preserve aArray (15, 15) 'ошибка End Sub

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

'(General)(Declarations)

Dim aArray () As Variant Private Sub Commandl_Click()

ReDim aArray (10 To 20)

ReDim Preserve aArray (10 To 25). 'действует

ReDim Preserve aArray (15 To 25) 'ошибка End Sub

Область видимости динамических массивов (контейнерных, глобальных) определяется способом их объявления — если с помощью оператора Public, то массив будет глобальным, если с помощью Dim, то контейнерным.

Статические массивы. При объявлении такого массива значения его верхней и нижней границ не могут быть изменены в программе.  Данный вид массивов описывается в программе так же, как и переменные – при помощи одного из служебных слов: Dim, Private, Public или Static с последующим указанием типа после служебного слова As. При этом может быть указана как верхняя, так и обе границы одновременно, наприм: 

Код:

Dim arrA(9) As Byte  Dim arrB(1 To 10) As Byte

В данном случае оба массива содержат одно и тоже кол-во элементов одинакового типа. Однако нумерация элементов arrA начинается с нуля, в то время как нумерация arrB – с единицы. Для явного указания границ следует использовать служебное слово To, в то время как при описании стандартного массива с нумерацией элементов от нуля необходимо просто указать значение верхней границы.  Значения границ не должны выходить за пределы диапазона, используемого для типа Long, в противном случае компилятор выдаст ошибку переполнения.  Заполнение элементов массива, как правило, выполняется в цикле, наприм: 

Код:

Option Explicit  Private Sub Form_Load()  Dim arrA(1 To 10) As Integer  Dim bytI As Byte  For bytI = 1 To 10      arrA(bytI) = bytI ^ 2      Debug.Print arrA(bytI)  Next  End Sub

другой стороны, если первая проверка условия даст результат True, то цикл не выполнится ни разу.

Do While условие

Операторы

Loop

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

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

Do

Операторы

Loop Until условие

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

Do

Операторы

Loop While условие

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

Цикл While:Wend. Также используется в том случае, когда чсло повторений операторов тела цикла заранее неизвестно, и имеет следующий синтаксис:

While условие

Операторы

Wend

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

22. VB. Функции обработки строк.

Строка - это значение переменной типа String. Для обозначения строки использу-ются кавычки.

Для работы со строками используется оператор объединения, называемый опера-тором конкатенации. Знак объединения в VB + или & (амперсанд).

Основные функции:

Asc - возвращает ASCII - код символа, Asc (string);Chr - преобразовывает ASCII - код в символ, Chr (код);Lcase - преобразует строку к нижнему регистру, Lcase (string);Ucase - преобразует строку к верхнему регистру, Ucase (string);Left - возвращает подстроку, состоящую из заданного чсла первых символов исход-ной строки, Left (string, length), где length - чсло символов;Right - возвращает подстроку, состоящую из заданного чсла последних символов ис-ходной строки, Right (string, length), где length - чсло символов;Mid - возвращает подстроку строки, содержащую указанное чсло символов, Mid (string, start [, length]), где start - позиция символа в строке, с которого начинается нужная подстрока; length - чсло возвращаемых символов.Len - возвращает чсло символов строки Len (string);LTrim - возвращает копию строки без пробелов в начале, LTrim (string);Rtrim - возвращает копию строки без пробелов в конце, RTrim (string);Trim - возвращает копию строки без пробелов в начале и в конце, Trim (string);

Space - возвращает строку, состоящую из указанного чсла пробелов, Space (string);

StrComp - возвращает результат сравнения двух строк, StrComp (string1, string2 [, compare]), где compare - указывает способ сравнения строк. Допустимые значения: 0 - двоичное сравнение, 1 - посимвольное сравнение без учета регистра. Возвращаемые зна-чения: если string1 < string2, то -1; если string1 = string2, то 0; если string1 > string2, то 1.

•InStr - возвращает позицию первого вхождения одной строки внутри другой строки, InStr ([start, ] string1, string2 [, compare]), где start - чсловое выражение, задающее пози-цию, с которой начинается поиск. Если этот аргумент опущен, поиск начинается с первого символа строки. string1 - строковое выражение, в котором выполняется поиск, string2 - искомое строковое выражение. compare - указывает способ сравнения строк. Допустимые значения: 0 - двоичное сравнение, 1 - посимвольное сравнение без учета регистра.

•Str, CStr - преобразовывает чсловое выражение в строку;

•StrReverse - изменяет порядок следования символов в строке на обратный;

Val - преобразовывает строку в чсловое выражение;

StrConv - изменяет регистр букв символьной строки, StrConv (string, const), где const - задает вид изменений (имеет ряд констант).

23 VB. Общие процедуры и функции. Аппарат аргументов-параметров.

Функции и процедуры в VBПроцедуры и функции представляют собой отдельные блоки, из которых складывается код программы, каждая процедура выполняет какую-то задачу или ее часть.Процедуры обработки событий после вызова постоянно находятся в ожидании событий.Кроме процедур обработки событий в программу можно включить процедуры и функции не связанные с событиями. Они выполняют отдельные действия и могут быть использованы неоднократно. Назовем их общими. Процедуры общего назначения вызываются на выполнение в коде программы. Использование процедур экономит время и позволяет избежать лишних ошибок. Функции отличаются от процедур тем, что возвращают какое-то значение.Под процедурой или функцией понимается последовательность операций, которую нужно многократно выполнять в различных местах приложения. При этом требуемый блок команд записывается в коде только один раз, после чего к нему можно обращаться из любой части программы.Функция - это подпрограмма, которую вызывают, чтобы выполнить какие-то расчеты или проверки. Когда она завершает работу, то возвращает управление вызывающей программе и передает ей результат расчета.Процедура - это тоже подпрограмма. Ее тоже вызывают, чтобы выполнить какие-то действия, но от нее не требуется возвращать основной программе какие-либо значения.Синтаксис объявления процедуры и функции:

[Public/Private][Static] Sub <Имя процедуры>(<Параметры>)

<Операторы>

End Sub

Function <Имя функции> [As тип]

<Операторы>

End Function

Процедуры, объявленные с ключевым словом Public, можно вызвать в любом модуле приложения (каждая форма - это отдельный модуль).Процедуры объявленные как Private, можно вызывать только в текущем модуле.Слово Static означает, что все переменные, объявленные в процедуре, будут статическими, т.е. их значения сохраняются между вызовами.Параметры обеспечивают связь процедуры с приложением. Это данные, передаваемые в процедуру при вызове.Процедуры обработки событий. Вызываются в том, случае если произошло какое-либо событие. При этом существенным является как имя элемента, та и вид события, который с ним произошел.

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

24. Обработка текстовых документов (файлы последовательного доступа).Иногда от программы требуется обработка и хранение некоторой информации, однако использование баз данных является излишним (т.к. это приведет к усложнению программы, увеличению его размера и замедлению выполнения). В таком случае можно использовать текстовые файлы. Самый простой тип файла - текстовый файл последовательного доступа. Причем последовательный доступ означает, что считывание информации идет последовательно байт за байтом и порядок считывания изменить нельзя.Для открытия файлов используется конструкция Open:

Open <имя_файла> For <режим> [Access <доступ>] [<блокировка>] As [#]<номер_файла>[Len=<длина_записи>]

<режим> - режим в котором открывается файл:

Append - для добавления в конец файла

Binary - для работы с файлом в бинарном режиме (см. ниже)

Input - для чтения файла (файл не перезаписывается)

Output - для вывода в файл с созданием или перезаписью файла

Random - для произвольного доступа (по умолчанию)

<доступ> - операции, которые можно проводить с файлом:

Read - можно только читать

Write - можно только записывать

Read Write - можно все

<блокировка> - тип блокировки файла:

Shared - другие процессы могут делать с файлом все, что угодно

Lock Read - блокировка чтения

Lock Write - блокировка записи

Lock Read Write - полная блокировка (другие процессы не могут даже открыть файл)

<номер_файла> - дальнейшая работа с этим файлом производится по номеру, под которым он открыт, причем под одним номером может быть открыт только 1 файл. Для получения свободного номера рекомендуется использовать функцию FreeFile (без параметров).

<длина_записи> - используется в файлах прямого доступа (см. ниже).Если файл уже открыт или заблокирован другим процессом или произошла другая ошибка, Open генерирует ошибку (которую можно обработать с помощью OnError ...).

После того, как файл открыт, с ним можно начать работать.

Оператор Line Input #номер_файла, <строковая_переменная> позволяет считать следующую строку из файла. Достигнут ли конец файла, нужно применять функцию EOF(номер_файла).

Иногда необходимо считать не всю строку. В этом случае используется оператор Input # или функция Input.

Оператор Input # предназначен для файлов, в котором данные хранятся с разделителями:

«Строка», 100, #2002-10-10#

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

Dim StringVar As String

Dim IntVar As Integer

Dim DateVar As Date

Input #1, StringVar, IntVar, DateVar

Другой способ считывания информации - использование функции Input (не путать с оператором Input #). Эта функция считывает указанное чсло символов в строковую переменную:

Input (<кол-во символов>,#номер_файла)

После работы с файлом его нужно закрыть с помощью оператора Close #номер_файла.

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

Print # и Write #.

Оператор Print #номер_файла, <выражение> записывает <выражение> в файл в текущую позицию. Если в конце оператора стоит ‘;', то производится перевод на новую строку.

Оператор Write #номер_файла, <список_вывода> противоположен оператору Input # - т.е. выводит инфо в файл с разделителями.

Встроенные функции. Определенные наборы команд, имеющиеся в языке Visual Basic и в предназначенные для вычсления тех или иных значений на основании исходных данных. Встроенными являются, в частности, как математические, так и строковые функции (Abs, Cos, Sin, Mid, Len и т.д.)Пользовательские функции. Группы операторов, аналогичные пользовательским процедурам.Однако между ними есть ряд отличий.Основные отличия функции от процедуры состоят в следующем.1. Функция имеет тип (аналогично переменной) и может возвращать в программу значение, которое присваивается функции при помощи оператора:<Имя функции> = значение2. Вызов функции, как правило, осуществляется посредством указания в правой части какого-либо оператора ее имени и параметров. С другой стороны, процедура вызывается при помощи отдельного оператора:Call <Имя процедуры> (Параметры) или<Имя процедуры> (Параметры)Если при вызове процедуры используется ключевое слово Call, то список параметров должен быть указан в скобках. Если же процедура вызывается без использования Call, то ее параметры перечсляются без скобок.Необходимо отметить, что вызываемая процедура может не иметь параметров. В этом случае (если использовалось служебное слово Call) после имени процедуры следует ставить пустые скобки.Пользовательские процедуры обычно используются при необходимости выполнения одной и тоже последовательности операций. Наприм, в программе требуется неоднократно вводить в цикле значения массива arrA, состоящего из пяти элементов. В этом случае заполнение массива лучше всего оформить в виде процедуры.

Команда Add Procedure меню Tools позволяет добавить процедуру или функцию.

Пусть процедура Cir вычерчивает эллипс с координатами x, y, которые передаются в процедуру как параметры. Создавая процедуру Cir командой Add Procedure, нужно указать имя процедуры и выбрать область видимости Public или Private.

Завершив диалог, получим объявление процедуры:

Private Sub Cir()

:

End Sub

Теперь нужно вписать параметры в скобки и написать текст процедуры. В списке параметров рекомендуется указывать тип переменных.

Private Sub Cir(x As Integer, y As Integer)

Circle (x,y),500,,,2

End Sub

25Файлы произвольного (прямого) доступаФайлы с последовательным доступом не имеют какой-либо структуры, структура определятся самим считывающим кодом. Это способствует удобочитаемости файла, однако поиск и перемещения по файлу осложнены. Один из способов создания файла с какой-либо структурой в VB состоит в использовании файлов произвольного (прямого) доступа.Для работы с таким файлом необходимо сначала создать пользовательский тип (UDT), который представляет собой шаблон структуры вашего файла.Прим:

Private Type MyRecord

FIO As String

Birth As Date

Salary As Integer

End Type

Потом необходимо открыть файл с помощью оператора Open. Отличие от открытия файлов последовательного доступа заключается в использовании специального режима открытия - Random и задании в конце конструкции длины структурной единицы файла прямого доступа с помощью Len = <длина_в_байтах>

Прим:

Dim tmprec As MyRecord

Open "c:\tmp.mmm" For Random As #1 Len = Len (tmprec)

Чтение записей осуществляется с помощью оператора

Get #номер_файла, [<номер_записи>], <переменная>

Если параметр <номер_записи> опускается, то просто происходит чтение следующей записи. Переменная имеет тип, заданный пользователем (UDT).

Для записи и добавления новых записей используется

Put #номер_файла, [<номер_записи>], <переменная>

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

Перемещение по файлу осуществляется с помощью оператора

Seek #номер_файла, <номер_записи>

После этого Get и Put без второго параметра будут работать с записью, на которую вы переместились.

26 VB Графические методы

Графические методы – это функции, которые содержатся в языке Visual Basic и вызываются во время работы приложения. Их можно применять для рисования изображений в форме, в графическом поле PictureBox, а также для объекта Printer. В среде Visual Basic с помощью графических методов можно решать уже ставшие традиционными графические задачи: «Неоновая реклама», «Мыльные пузыри», «Конфетти», «Падающий снег», «Змейка», строить орнаменты, имитировать движение геометрических фигур по разным траекториям и многое другое (как, наприм, в языке Basic). В то же время Visual Basic предоставляет новые возможности при работе с графикой (наприм, богатая цвовая палитра, разнообразные способы закраски, выбор единиц измерения, возможность установить новый масштаб, более простой способ создания анимации и др.).

Основные графические методы:

  1. Сls: объект.Cls

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

  1. Pset: объект.Pset(X,y) [, цв]

Построение «.»и, наприм, команда Pset (300,100), RGB(0, 0, 255) строит «.»у на текущей форме с координатами x = 300, y = 100 ярко-синего цва.

  1. Point: объект.Point(X,Y) Возвращает RGB-цв «.»и.

  2. Line: объект.Line(x1,y1)-(x2,y2) [, цв, b/bf]

Построение линии, прямоугольника (если указан параметр B), закрашенного прямоугольника (если указан параметр BF), наприм:

Команда Line(200, 300) – (600, 800), vbRed строит на форме линию красным цвом, а команда Line(200, 300) – (600, 800), vbBlue, В строит на форме прямоугольник (прямоугольник задается своей диагональю).

Если значения (X1,Y1) в команде не указано, то построение начнется в текущей «.»е, наприм, Line - (2000, 300).

  1. Circle: Построение окружности, эллипса, дуги, сектора.

объект.Circle(X,Y), радиус [, цв, начальн. угол, конечн. угол, коэффициент сжатия]

Здесь (X,Y) – координаты центра, начальный и конечный углы задаются в радианах для построения дуг (от 0 до 2p или от 0 до -2p) и секторов (углы должны принимать отрицательные значения), коэффициент сжатия задается для построения эллипса.

Прим: Команда Circle(1000, 1000), 300, , 3*Pi/4, Pi/3 строит дугу окружности, а команда Circle(1000, 1000), 300, , , , 2 строит вытянутый по вертикальной оси эллипс.

27 VB Интерфейс. Разработка с «.»и зрения пользователя.Интерфейсы определяют свойства, методы и события, которые классы могут реализовывать. Интерфейсы позволяют определить внешние представления в виде небольших групп тесно связанных свойств, методов и событий; при этом уменьшается кол-во проблем совместимости, поскольку. можно создавать усовершенствованные реализации интерфейсов без вмешательства в существующий код.Объявление интерфейсов Определения интерфейсов находятся между операторами Interface и End Interface. После оператора Interface можно добавить необязательный оператор Inherits, в котором представлен один или несколько наследуемых интерфейсов. Оператор Inherits предшествуют всем другим операторам в объявлении за исключением комментариев. Остальные операторы в определении интерфейса должны быть следующими: EventSubFunctionPropertyInterfaceClassStructure и Enum. В интерфейсах не содержатся коды реализаций или операторы, связанные с кодом реализации, такие как End Sub или End Property.В пространстве имен операторы интерфейса по умолчанию Friend, но также их можно явно объявить как Public или Friend. Интерфейсы, определенные в классах, модули, интерфейсы и структуры являются Public по умолчанию, но также их можно объявить явно как PublicFriendProtected или Private.Наприм, следующий код определяет интерфейс с одной функцией, одним свойством и одним событием

Interface IAsset

Event ComittedChange(ByVal Success As Boolean)

Property Division() As String

Function GetID() As Integer

End Interface

Реализация интерфейсов

Оператор ImplementsЕсли класс или структура реализуют один или несколько интерфейсов, он должно включать инструкцию Implements сразу после инструкции Class или Structure.Инструкция Implements требует разделенный «,»ыми список интерфейсов, внедряемый с помощью класса. Класс или структура должны реализовать все элементы интерфейса с помощью ключевого слова Implements.Ключевое слово ImplementsКлючевое слово Implements требует разделенный «,»ыми список элементов интерфейса для внедрения. Как правило, указывается только один элемент интерфейса, но можно указать и несколько элементов. Спецификация элемента интерфейса обязательно состоит из имени интерфейса, которое должно быть указано в операторе implements внутри класса, «.»и и имени реализуемой функции, свойства или события элемента. Для имени элемента класса, который реализует элемент интерфейса, можно использовать любой допустимый идентификатор, не ограничиваясь требованием InterfaceName_MethodName, как это было в более ранних версиях Visual Basic.Наприм следующий код показывает способ объявления подпрограммы с именем Sub1, которая реализует метод интерфейса:VB

Class Class1

Implements interfaceclass.interface2

Sub Sub1(ByVal i As Integer) Implements interfaceclass.interface2.Sub1

End Sub

End Class

Необходимо, чтобы типы параметров и возвращаемые типы элемента реализации соответствовали свойствам интерфейса или объявлению элементов в интерфейсе.Обычным способом реализации элемента интерфейса является способ с использованием элемента, имя которого совпадает с именем интерфейса (см. предыдущий прим).Для объявления реализации метода интерфейса можно использовать любые допустимые атрибуты в объявлении метода экземпляра, включая OverloadsOverrides,OverridablePublicPrivateProtectedFriendProtected FriendMustOverrideDefault и Static. Атрибут Shared не является допустимым, поскольку он определяет класс, а не метод экземпляра.

С помощью Implements можно также задать единственный метод, который реализует несколько методов, определенных в интерфейсе, как в следующем приме:

VB

Class Class2

Implements I1, I2

Protected Sub M1() Implements I1.M1, I1.M2, I2.M3, I2.M4

End Sub

End Class

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