Лекция 3. Язык Visual Basic

advertisement
Информатика
Семестр 2
Лекция 3
Язык Visual Basic
• Текст программы, который пишется в окне кода, принято
называть исходным кодом или просто кодом. Он состоит из
операторов, который преобразуются затем компилятором в
машинные команды. Чтобы компилятор понимал исходный код,
следует придерживаться определенных правил написания
программ.
• В каждой строке помещается оператор, который может иметь
дополнительные параметры.
• После ввода оператора и нажатия Enter автоматически
проверяется правильность написания кода. Если код
некорректен, то выдается сообщение об ошибке.
• Слишком длинные строки оператора можно разделить на
несколько. Разделителем строк служит пробел и , следующий за
ним символ подчеркивания (_).
• Строка программы в VB может содержать максимум 1023
символа. (в одной строке на экране обычно помещается 80
символов).
• Для выделения комментариев в VB используется символ
апостроф (‘) или оператор Rem.
• Число строк программного кода не должен быть больше 65634.
Гаврилов А.В.
НГТУ, кафедра АППМ
2
Типы переменных
Ключевое
поле
Размер памяти
Диапазон значений
Integer
2 байта
от -32 768 до 32 767
Целый
Byte
1 байт
от 0 до 255
Целый двойной точности
Long
4 байта
от -2 147 483 648 до
2 147 483 647
Вещественный одинарной точности
Single
4 байта
8 значащих цифр
Вещественный двойной точности
Double
8 байта
15 значащих цифр
Currency
8 байта
15 значащих цифр
String
1 байт \ 1символ
До 65000 символов
Логический
Boolean
2 байта
True или False
Дата и время
Date
8 байта
Variant
16 байта
Название типа
Целый одинарной точности
Денежный
Текстовый (строковый)
Универсвльный
Гаврилов А.В.
НГТУ, кафедра АППМ
3
• В VB есть два способа объявления
переменных: явное и неявное.
• При неявном объявлении переменная просто
используется в программе, однако при
первом обращении к ней нужно в конец
имени переменной поместить специальный
символ обозначения типа. С точки зрения
читаемости кода программы, этот способ
менее удобен.
• Вы должны использовать только явное
объявление типа
Гаврилов А.В.
НГТУ, кафедра АППМ
4
Формат записи явного
объявления переменной
Dim
<Имя_переменной> As <Тип_переменной>
[, <Имя_переменной> As <Тип_переменной>…]
Условные обозначения.
Dim – оператор объявления (ключевое слово, указывающее
компилятору, что объявляется переменная).
<Имя_переменной> – идентификатор области памяти, в которой будут
храниться значения переменной. При назначении имени
переменной желательно использовать специальные символы
(префиксы), по которым затем в тексте программы легко
определить ее тип. Обычно префикс состоит из одной буквы,
который указывается перед произвольным именем переменной,
написанным с прописной буквы.
<Тип_переменной> – одно из ключевых слов, с помощью которых
задается тип переменной. При указании типа перед ним всегда
следует указывать ключевое слово As. Если при объявлении
переменной ее тип не указать, то по умолчанию будет
использоваться ип Variant.
Гаврилов А.В.
НГТУ, кафедра АППМ
5
Примеры описания переменных
Dim sStroka As String
Dim dMassa As Double, nIndex As Integer
Гаврилов А.В.
НГТУ, кафедра АППМ
6
Глобальные, контейнерные и
локальные переменные
Form1
General Declarations
Dim kon As Integer
Контейнерная
переменная
Проект
Module
General Declarations
Public glo As Integer
Dim kon As Integer
Процедура
Dim lok As Integer
Глобальная
переменная
Процедура
Локальные
переменная
Dim loc As Integer
Функция
Dim loc As Integer
Локальные
переменная
Функция
Гаврилов А.В.
НГТУ, кафедра АППМ
7
Глобальные, контейнерные и
локальные переменные (2)
• Локальные переменные объявляются внутри процедуры или
функции и доступны только в текущей процедуре или функции.
• Переменные контейнера определяются в разделе General
Declaration окна кода. Такие переменные доступны только в
текущей форме или модуле.
• Глобальные переменные определяются в разделе General
Declaration окна кода модуля. При этом вместо оператора Dim
используется оператор Public. Глобальные переменные доступны
во всех модулях и процедурах проекта и могут объявляться только
в модулях. В других компонентах проекта глобальные переменные
объявляться не могут.
• Общедоступные переменные используются для обмена данными
между формами и другими компонентами проекта.
Гаврилов А.В.
НГТУ, кафедра АППМ
8
Константы
•
•
•
•
•
Константы – это величины, которые при исполнении программы своего
значения не меняют. При объявлении констант используется ключевое
слово Const. Одновременно с объявлением константе присваивается и
ее значение. В качестве значения допускается использовать только
постоянные величины и их комбинации.
Синтаксис объявления константы.
Const <Имя_константы> [As <Тип_константы>] = <Значение>
Для указания типа константы можно использовать те же ключевые
слова, что и при объявлении переменных. Если тип константы в ее
объявлении не указывается, то компилятор устанавливает его по
значению, которое присваивается одновременно с объявлением.
Для отличия строковой константы от имени переменной, строка
заключается в кавычки. Например,
Const Name As String = “Иванов”
Для определения переменной типа дата, значение должно помещаться
между двумя знаками решетки #. Например,
Const Data1 As Date = #01.01.2008#
Const Data1 As Date = #01:45.12#
Гаврилов А.В.
НГТУ, кафедра АППМ
9
Массивы
• Массив – это упорядоченная последовательность
переменных одного типа. Его можно представить
себе как совокупность определенного числа ячеек
памяти, в каждой из которых хранится свое значение
одной и той же величины (элемент массива).
• Различают статические и динамические массивы.
– Размеры статического массива устанавливаются при
разработки программы, и в процессе ее исполнения
изменяться не могут.
– Динамические массивы могут менять свои размеры в ходе
выполнения программы.
Гаврилов А.В.
НГТУ, кафедра АППМ
10
Описание статического массива
• Формат записи объявления массива имеет вид:
Dim <Имя_массива> (<Н_граница> To <В_граница>) As
<Тип_переменной>
Условные обозначения
• Имя_массива – оператор области памяти, в которой хранятся значения
•
элементов массива.
• Н_граница – номер, с которого начинается отсчет элементов массива
• В_граница – номер, которым заканчивается отсчет элементов массива.
• Тип_переменной – одно из ключевых слов, с помощью которых
задается тип элементов массива.
• Важно заметить, что индексирование массивов начинается с нуля.
• Примеры объявления массивов,
Dim nNumber(2 To 10) As Integer
Dim dMassa(10) As Double
Гаврилов А.В.
НГТУ, кафедра АППМ
11
Статические массивы
• Существуют одномерные и многомерные массивы.
При объявлении многомерных массивов верхние
границы каждой размерности разделяются запятыми.
Например,
Dim nStudent(5,15) As Integer – двумерный массив,
который содержит 75 элементов. Первый индекс –
количество студенческих групп. Второй – количество
студентов в группе. Пример обращения к элементу
двумерного массива.
nStudent(3,11) – 4 студент в 12-й группе
• Объявляются статические массивы только глобально
или для контейнера, локально их определять нельзя.
Гаврилов А.В.
НГТУ, кафедра АППМ
12
Динамические массивы
• В ряде случаев при объявлении массива его
размер неизвестен. В этом случае
используют динамические массивы. Сначала
его определяют без указания размера.
Dim Array() As Variant
• Затем в какой-либо процедуре обработки
события с помощью оператора ReDim
устанавливают фактический размер массива.
• Синтаксис оператора ReDim имеет вид:
ReDim [Preserve] <Имя_массива>(Границы) As
[Тип_данных]
Гаврилов А.В.
НГТУ, кафедра АППМ
13
Преобразования типов
• Практически любая программа работает в
диалоговом режиме, при котором в процессе
выполнения программы от пользователя требуется
задавать значения данных.
• Для ввода данных используется такой элемент
интерфейса как текстовое поле. В нем вводимое
значение представляется как строка текста, т.е. тип
String. В тоже время, вводимое данное может иметь
другой тип. Таким образом, возникает задача
преобразования одного типа в другой.
• Для этого используются в VB специальные
встроенные функции. С их помощью можно
проверять преобразования одного типа в другой, а
также производить само преобразование.
Гаврилов А.В.
НГТУ, кафедра АППМ
14
Преобразования типов (2)
• Например, функция IsNumeric проверяет,
может ли переменная быть преобразованной
в число. Синтаксис этой функции
IsNumeric(expression)
• Аргумент expression это обозначение любой
переменной. Функция возвращает true, если
аргумент является числовым выражением, и
false, в противном случае.
• Функция Val возвращает число,
содержащееся в строке. Синтаксис функции:
Val(string).
Гаврилов А.В.
НГТУ, кафедра АППМ
15
Форматирование
• При выводе данных на экран используют
специальные встроенные функции форматирования.
Они позволяют задать вид отображения данных
любых типов. Имеется несколько функций
форматирования. Наиболее универсальной является
функция Format. Ee синтаксис
Format(expression [,fmt])
• Аргумент expression представляет собой
форматируемое выражение.
• Аргумент fmt содержит название шаблона формата,
определяющего вид отображаемого данного.
Имеются стандартные шаблоны для
форматирования чисел, даты и времени.
Гаврилов А.В.
НГТУ, кафедра АППМ
16
Оператор присваивания
• Синтаксис оператора присваивания прост.
<Имя_переменной> = <Значение_переменой>
• В правой части оператора присваивания
могут содержаться не только константы, но и
выражения, а также функции, возвращающие
значения. При этом должно быть соблюдено
условие: тип результата вычисления
выражения или тип возвращаемого значения
должен совпадать с типом переменной,
находящейся в левой части оператора.
Гаврилов А.В.
НГТУ, кафедра АППМ
17
Математические операторы VB
Оператор
^
*
/
\
mod
+
-
Назначение
возведение в степень
смена знака
умножение
деление
целочисленное деление
остаток от деления нацело
сложение
вычитание
Гаврилов А.В.
НГТУ, кафедра АППМ
Приоритет
1
2
3
4
5
6
18
Оператор объединения строк
• С его помощью можно слить (соединить) несколько
строк в одну большую. Знаком объединения строк
является символ амперсанта (&).
• Синтаксис оператора объединения строк выглядит
следующим образом.
<Новая_строка> = <Строки1> & <Строка2> & [ &
<Строка3>…]
• Символ & отделятся от операндов пробелами. В
качестве операндов могут использоваться любые
строковые литеры, строковые переменные, а так же
функции. Количество операндов в операторе не
ограничено.
Гаврилов А.В.
НГТУ, кафедра АППМ
19
Наиболее часто используемые функции
работы со строками и символами
•
Chr(ansicode) возвращает символ, соответствующий ANSI-коду,
указанному в аргументе. Аргумент может быть целым числом от 0 до
255. В диапазоне от 0 до 31 расположены ANSI-символы, которые на
экране не отображаются.
Например: 9 перевод курсора на восемь позиций вправо (табуляция).
10 возврат курсора в начало строки.
12 перевод курсора на начало новой страницы
13 перевод курсора на новую строку (перевод каретки).
Эти символы можно использовать для управления расположением текста
на экране.
• Len(string) возвращает размер строки (количество символов в строке)
• Str(number) преобразует числовое выражение в строку. Аргумент
number любое число. При преобразовании положительных чисел перед
первой цифрой помещается пробел, перед отрицательными – символ
минус.
• Val(string) возвращает значение числа, представленного в виде строки,
для использования далее в вычислениях
Гаврилов А.В.
НГТУ, кафедра АППМ
20
Логические операторы
• Not - логическое НЕ. Это унарный оператор, т.е.
используемый с одним операндом. Результатом
логического выражения с этим оператором является
значение, противоположное операнду.
• Все остальные логические операторы VB –
бинарные, т.е. используемые с двумя операндами.
<
меньше
<=
меньше или равно
>
больше
>=
больше или равно
=
равно
<>
не равно
Гаврилов А.В.
НГТУ, кафедра АППМ
21
Логические операторы (2)
• Для построения более сложных логических выражений
наряду с операторами сравнения используются
следующие операторы.
• And
- логическое И. Используется для логического
объединения двух логических выражений. Например:
nA <= nB And nC <> 12.
• Если оба условия выполняются, то результатом всего
выражения является True, в противном случае – False.
• Or - логическое ИЛИ. Также используется для
логического объединения двух логических выражений.
Например:
nA <= nB Or nC <> 12.
• Если хотя бы одно из условий выполняется, то
результатом всего выражения является True, в противном
случае – False.
Гаврилов А.В.
НГТУ, кафедра АППМ
22
Условный оператор
If <Условие> Then
< Блок операторов, выполняемых в случае
истинности условия>
Else
< Блок операторов, выполняемых в случае
ложности условия>
End If
В качестве условия могут использоваться
любые переменные и выражения логического
типа.
Гаврилов А.В.
НГТУ, кафедра АППМ
23
Оператор выбора
Select Case <Тестируемое значение>
Case <Значение1>
Блок операторов 1
Case <Значение2>
Блок операторов 2
…………………………………..
[ Case Else
Блок операторов, выполняемых по умолчанию ]
End Select
Параметры <Тестируемое значение> и <Значение№>, должны иметь один
и тот же тип.
В секциях Case, кроме дискретных значений можно также указывать
списки, диапазоны значений и операторы сравнения, в которых
используется ключевое слово Is. Например:
Case 1, 2, 3
использование списка;
Case 1, To 3
использование диапазона значений;
Case Is > 3
использование оператора сравнения.
Гаврилов А.В.
НГТУ, кафедра АППМ
24
Пример:
Задание надписи на форме
Select Case I
Case 0
Label1="ноль"
Case 1
Label1="один"
Case Else
Label1="больше одного"
End Select
Гаврилов А.В.
НГТУ, кафедра АППМ
25
Операторы цикла
• В Visual Basic поддерживаются две
разновидности циклов:
– с известным количеством итераций (с
использованием счетчика);
– с неизвестным количеством итераций (до
выполнения определенного условия).
Гаврилов А.В.
НГТУ, кафедра АППМ
26
Оператор цикла с известным количеством
итераций
For <Счетчик> = <Нчн_значение> To <Кнч_значение> [Step <Приращение>]
Операторы тела цикла
Next <Счетчик>
Условные обозначения:
• Счетчик – переменная цикла;
• Нчн_значение – величина, с которой начинается отсчет итераций
• Кнч_значение – величина, которой заканчивается отсчет итераций
• Приращение - величина, на которую увеличивается значение счетчика
при переходе к следующей итерации.
• Ключевое слово Step можно не указывать. В этом случае приращение по
умолчанию принимается равным единице. В качестве счетчика могут
использоваться переменные любого числового типа (не только целые).
Приращение может быть отрицательным.
• Для прерывания цикла используется оператор Exit For. Обычно он
применяется совместно с оператором If, с помощью которого
определяется условие досрочного завершения цикла.
Гаврилов А.В.
НГТУ, кафедра АППМ
27
Операторы цикла с неизвестным
количеством итераций
Оператором DO While организуются циклы, которые выполняются
пока некоторое условие истинно. Его синтаксис
DO While <условие>
Операторы тела цикла
Loop
Оператором DO Until организуются циклы, которые выполняются
если некоторое условие ложно. Его синтаксис
Синтаксис оператора DO Until
DO Until <условие>
Операторы цикла
Loop
• В операторах цикла <условие> – любое выражение логического
типа, значением которого может быть True или False.
Гаврилов А.В.
НГТУ, кафедра АППМ
28
Операторы цикла с неизвестным
количеством итераций и с
постусловием(2)
Do
тело цикла
Loop {While|Until} условие
Такой цикл выполняется всегда хотя бы 1
раз
Гаврилов А.В.
НГТУ, кафедра АППМ
29
Процедуры
В зависимости от назначения различают процедуры обработки событий и
процедуры общего назначения. Шаблон процедуры обработки событий
создаются Visual Basic автоматически при двойном щелчке мыши по
элементу интерфейса. Он выглядит:
Private Sub <имя процедуры> (<аргументы>)
End Sub
В нем:
Private – ключевое слово, определяющее зону видимости процедуры
только внутри контейнера (формы или модуля), в котором она описана;
Sub
– оператор начала процедуры;
<имя процедуры> – идентификатор, по которому происходит обращение к
процедуре из программы. Процедуры обработки событий состоит из
имени объекта и имени события, разделенных знаком подчеркивания;
End Sub – оператор конца процедуры;
(<аргументы>) – аргументы – величины, при помощи которых процедуре
передаются необходимые ей значения. Для процедур обработки
событий
аргументы устанавливаются средой Visual Basic
Гаврилов А.В.
НГТУ, кафедра АППМ
30
Процедуры (2)
• Процедуры общего назначения не связаны с каким-либо
событием и их вызов программист осуществляет по своему
усмотрению. Для создания такой процедуры достаточно в окне
кода (но не внутри другой процедуры или функции) ввести
ключевое слово Sub и имя процедуры, а затем нажать клавишу
Enter. После этого Visual Basic автоматически дополнит
введенный текст оператором конца процедуры End Sub и внесет
имя создаваемой процедуры в список процедур окна кода для
секции General, т. е. будет создан шаблон процедуры, который
выглядит:
Sub <имя процедуры> ()
End Sub
• Так же как и переменные, процедуры имеют различные области
определения, т. е. различные возможности доступа к ним. В
зависимости от области определения процедуры бывают
закрытые и общедоступные.
Гаврилов А.В.
НГТУ, кафедра АППМ
31
Процедуры (3)
•
Закрытыми называются процедуры, доступные только внутри контейнера, в
котором они содержатся. В Visual Basic все процедуры формы являются
закрытыми и перед ключевым словом Sub всегда имеют другое ключевое слово
Private. Процедуры общего назначения формы могут не иметь ключевого слова
Private, но по умолчанию также являются закрытыми процедурами.
• Открытыми или общедоступными процедурами называются процедуры,
которые могут быть вызваны из другой формы или программного модуля. Это
возможно только в том случае, когда процедура содержится в модуле и в ее
заголовке указано ключевое слово Public.
• Процедуры могут иметь аргументы – величины, значения которых
используются при выполнении действий, задаваемых процедурой. При
создании процедуры аргументы перечисляются через запятую в круглых
скобках, следующих сразу же за именем процедуры. При этом указывается и
тип аргументов. Например,
Private Sub txtText1_KeyPress(KeyAscii As Integer)
End Sub
Здесь описан шаблон процедуры обработки события, возникающего в
момент нажатия какой-либо клавиши клавиатуры, когда активно
текстовое поле. Этой процедуре передается один аргумент типа
Integer по имени KeyAscii. Значением аргумента является код нажатой
клавиши.
Гаврилов А.В.
НГТУ, кафедра АППМ
32
Процедуры (4)
•
В процедурах обработки событий набор аргументов определяется
характером события и не может быть изменен программистом. В
процедурах общего назначения количество и порядок записи используемых
аргументов задаются программистом, исходя из ее функционального
назначения. Например,
Sub Summa (Chislo1 As Double, Chislo2 As Double)
Summa = Chislo1 + Chislo2
End Sub
• Здесь описана процедура общего назначения, содержанием которой
является суммирование двух переменных по имени Chislo1 и Chislo2.
Значения этих переменных задаются при обращении к этой процедуре.
• При вызове процедуры в программе нужно указать ее имя и, при
необходимости, список аргументов. Например,
Summa Chislo1, Chislo2
• Аргументы, передаваемые процедурам, в скобки не заключаются. В списке
аргументов один аргумент от другого отделяется запятой. Количество и
последовательность аргументов, передаваемых процедуре при ее вызове,
должны быть точно такими же, которые были указаны при ее определении.
Кроме того, типы передаваемых аргументов должны соответствовать типам
аргументов, указанных при определении процедуры.
Гаврилов А.В.
НГТУ, кафедра АППМ
33
Пример
Private Sub Summa()
Label1.Caption = Val(Text1.Text) +
Val(Text2.Text)
End Sub
Гаврилов А.В.
НГТУ, кафедра АППМ
34
Функции
•
Функции во многом аналогичны процедурам и отличаются от последних тем, что
возвращает в вызвавшую их программу определенное значение. Его затем
можно присвоить некоторой и/или использовать для дальнейших вычислений.
Общий вид записи функции в программе выглядит:
[Public|Private] Function <Имя функции> (<аргументы>) As <Тип возвращаемого
значения>
<Операторы, определяющие содержание процедуры>
<Имя функции> = <возвращаемое значение>
• End Function
Условные обозначения:
Public, Private – необязательные ключевые слова, определяющие зону видимости
функции;
Function – оператор начала функции;
Имя_функции –идентификатор, по которому происходит обращение к функции из
программы;
(<аргументы>)
– аргументы функции – величины, при помощи которых
функции передаются необходимые ей значения;
As <Тип_возвращаемого_значения> – выражение, задающее тип возвращаемого
значения;
End Function
– оператор конца функции.
Гаврилов А.В.
НГТУ, кафедра АППМ
35
Функции (3)
• Важной особенностью описания функции является
то, что в теле самой функции обязательно должен
быть оператор присваивания возвращаемого
значения имени функции. Например,
Function Summa (Chislo1 As Double, Chislo2 As Double)
Dim Result
Result = Chislo1 + Chislo2
Summa = Result
End Function
• В отличие от процедур при вызове функций
передаваемые им аргументы, заключаются в круглые
скобки. Например,
Summa (Chislo1, Chislo2)
Гаврилов А.В.
НГТУ, кафедра АППМ
36
Пример функции замены числа на одно из
фиксированных значений
Private Function Lmax(Pp As Integer)
Select Case Pp
Case Pp <= 15
Lmax = 150
Case Pp <= 25
Lmax = 120
Case Pp <= 50
Lmax = 100
Case Pp <= 100
Lmax = 80
Case Else
Lmax = 0
End Select
End Function
Гаврилов А.В.
НГТУ, кафедра АППМ
37
Пример проекта с циклом и
процедурой
Option Explicit
Private Sub CMDExit_Click()
End
End Sub
Private Sub CmdSumit_Click()
Dim i
Dim r
For i = 1 To vsbNum.Value Step 1
r=r+i
Next
txtResult.Text = Str(r)
End Sub
Private Sub vsbNum_Change()
LbLNum = "âûáðàííîå ÷èñëî: " + Str(vsbNum.Value)
End Sub
Private Sub vsbNum_Scroll()
vsbNum_Change
End Sub
Гаврилов А.В.
НГТУ, кафедра АППМ
38
Гаврилов А.В.
НГТУ, кафедра АППМ
39
Download