7
4.6. Тип, имя и значение переменной
В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют такую же важнейшую роль, как и в процедурных языках программирования. Переменные предназначены для хранения и обработки данных.
Переменные задаются именами, определяющими области памяти, в которых хранятся значения переменных. Значениями переменных могут быть данные различных типов (целые или вещественные числа, последовательности символов, логические значения и так далее).
Переменная в программе представлена именем и служит для обращения к данным определенного типа. Конкретное значение переменной хранится в ячейках оперативной памяти.
Тип переменной. Тип переменной определяется типом данных, которые могут быть значениями переменной. Значениями переменных числовых типов (Byte, Integer, Long, Single, Double) являются числа, логических (Boolean) — True или False, строковых (String) — последовательности символов и так далее. Обозначения типов переменных являются ключевыми словами языка и поэтому выделяются.
Над различными типами данных (различными типами переменных) допустимы различные операции. Над числовыми переменными возможны арифметические операции, над логическими переменными — логические операции, над строковыми — операции преобразования символьных строк и так далее.
Различные типы данных требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов). Для хранения целых чисел в интервале от 0 до 255 в переменных типа Byte достаточно одного байта; для хранения вещественного числа с двойной точностью в переменных типа Double требуется уже восемь байтов, а для хранения символьных строк в переменных типа String требуется один байт на каждый символ (табл. 4.3).
О
Таблица 4.3. Типы переменных
Тип переменной Возможные значения Объем занимаемой памяти Приставка к имени
Byte Целые числа от 0 до 255 1 байт byt
Integer Целые числа от -32768 до 32767 2 байта int
Long Целые числа двойной длины 4 байта lng
Single Десятичные числа одинарной точности от1,401298Е-35 до 3.4022823Е38 4 байта sng
Double Десятичные числа 8 байтов dbl
двойной точности от 1,94065645841247Е-324 до 1,79769313486232Е+308
Boolean Логическое значение True или False 2 байта bin
String Строка символов 1 байт на каждый символ str
Currency Число в денежном формате 8 байтов cur
Date Дата от 1 января 100 г. до 31 декабря 9999 г. 8 байтов dtm
Object ~~ Ссылки на любой объект 4 байта obj
Variant . vnt
Любые значения 3*16 байтов
Имя переменной. Имя каждой переменной (идентификатор) уникально и не может меняться в процессе выполнения программы. Имя переменной может состоять из различных символов (латинские и русские буквы, цифры и так далее), но должно обязательно начинаться с буквы и не должно включать знак «.» (точка). Количество символов в имени не может быть более 255.
Числовую переменную можно назвать, например, А или Число, а строковую — А или Строка. Однако разработчик языка Visual Basic — фирма Microsoft — рекомендует для большей понятности текстов программ для программиста в имена переменных включать особую приставку, которая обозначает тип переменных. Тогда имена целочисленных переменных целесообразно записывать как int А или л.г^Число, а строковых — strA и strdpoKa.
Объявление типа переменной. Важно, чтобы не только разработчик программы (программист) понимал, переменные какого типа используются в программе, но чтобы это мог учесть и исполнитель программы (компьютер). Второе даже еще более важно, так как, если компьютер не будет «знать», переменная какого типа используется в программе, он будет считать ее переменной универсального типа Variant и отведет для ее хранения в памяти 16 или более байтов. Это будет приводить к неэффективному использованию памяти и замедлению работы программы.
Для объявления типа переменной используется оператор определения переменной. Синтаксис этого оператора следующий:
Dim ИмяПеременной [As ТипПеременной]
С помощью одного оператора можно объявить сразу несколько переменных, например:
Dim int4nc^o As Integer, strCTpoica As String
Переменные, значения которых не меняются в процессе выполнения программы, называются константами. Синтаксис объявления констант следующий:
Const ИмяКонстанты [As Тип]= ЗначениеКон-станты
4.7. Арифметические, строковые и логические выражения. Присваивание
Из переменных можно образовывать арифметические, строковые и логические выражения.
Арифметические выражения. В состав арифметических выражений могут входить кроме переменных числового типа также и числа, над переменными и числами могут производиться различные арифметические операции, а также математические операции, выраженные с помощью функций.
Порядок вычисления арифметических выражений соответствует общеизвестному порядку выполнения арифметических операций (возведение в степень, умножение или деление, сложение или вычитание), который может изменяться с помощью скобок.
Строковые выражения. В состав строковых выражений могут входить переменные строкового типа, строки и строковые функции.
Строками являются любые последовательности символов, заключенные в кавычки. Например:
"информатика", "2000", "2*2"
Над переменными и строками может производиться операция конкатенации. Операция конкатенации заключается в объединении строки или значения строковых переменных в единую строку. Операция конкатенации обозначается знаком « + », который не следует путать со знаком сложения чисел в арифметических выражениях.
Логические выражения. В состав логических выражений кроме логических переменных могут входить также числа, числовые или строковые переменные или выражения, которые сравниваются между собой с использованием операций сравнения (>, <, =, >=, <= и пр.).
Логическое выражение может принимать лишь два значения: «истина» или «ложь». Например:
5 > 3 — истинно;
2*2 = 5 — ложно.
Над элементами логических выражений могут производиться логические операции, которые на языке Visual Basic обозначаются следующим образом: логическое умножение — And, логическое сложение — Or и логическое отрицание Not. При записи сложных логических выражений часто используются скобки. Например:
(5 > 3) And (2*2 = 5)— ложно; (5 > 3) Or (2*2 = 5)— истинно.
Присваивание переменным значений. Переменная может получить или изменить значение с помощью оператора присваивания. Синтаксис этого оператора следующий:
[Let] ИмяПеременной = Выражение
Ключевое слово Let в большинстве случаев не используется.
При выполнении оператора присваивания переменная, имя которой указано слева от знака равенства, получает значение, равное значению выражения (арифметического, строкового или логического), которое находится справа от знака равенства.
Создадим проект, который позволит продемонстрировать использование переменных различных типов, арифметических, строковых и логических выражений и операции присваивания.
Сначала произведем деление двух целых чисел, а для хранения результата будем использовать различные типы числовых переменных, то есть результаты будут вычисляться с различной точностью.
J5j Проект «Переменные»
1. Создать новый проект. Для создания графического интерфейса разместить на форме (f rml) управляющий элемент командная кнопка (cmdl). В качестве аргументов программы пусть выступают две целочисленные переменные intA и intB, ав качестве резуль-
татов неотрицательная целочисленная переменная byte, вещественная переменная одинарной точности sngD и вещественная переменная двойной точности dblE.
2. Объявить переменные для их использования в программе:
Dim intA, intB As Integer, bytC As Byte, sngD As Single, dblE As Double
Создадим заготовку событийной процедуры, в которой в качестве объекта будет использоваться кнопка cmdl, а в качестве события щелчок — Click ().
3. Произвести двойной щелчок по кнопке cmdl, в окне Программный код появится заготовка событийной процедуры:
Sub cmdl_Click()
End Sub
Теперь необходимо разработать программный модуль, реализующий следующий алгоритм деления двух чисел:
1. Присвоить аргументам алгоритма, переменным intA и intB конкретные значения.
2. Присвоить каждой из переменных bytC, sngD и dblE результат деления аргументов.
3. Напечатать результаты (значения переменных) на форме.
Реализацию первых двух инструкций (команд) алгоритма произведем с помощью операторов присваивания. В качестве исходных чисел возьмем целые числа 2 и 3. Печать результатов алгоритма осуществим с помощью метода Print, которым обладает объект frml.
Метод Print используется для печати на форме чисел и строк, а также значений числовых и строковых переменных или выражений, которые образуют список печати. В качестве разделителей списка печати используется либо запятая, либо точка с запятой. В первом случае элементы списка печатаются каждый в своей зоне (каждая зона имеет длину 14 символов), во втором случае элементы списка печатаются вплотную друг к другу. В случае отсутствия списка печати на форму выводится пустая строка.
Синтаксис метода Print следующий:
■Ш
Объект.Print [СписокПечати]
4. В окне Программный код ввести первую событийную процедуру целиком:
Dim intA, intB As Integer, byte As Byte, sngD As Single, dblE As Double
Sub cmdl Click()
intA = 2
intB = 3
bytC = intA / intB
sngD = intA / intB
dblE = intA / intB
frml Print bytC , sn
End Sub
frml.Print bytC, sngD, dblE End Sub
Теперь создадим событийную процедуру, реализующую операцию конкатенации строк и строковой переменной.
5. Разместить на форме (frml) управляющий элемент командная кнопка (cmd2).
Создадим заготовку событийной процедуры, в которой в качестве объекта будет использоваться кнопка cmd2, а в качестве события — щелчок Click ().
Объявим строковые переменные и произведем конкатенацию двух строковых выражений и строковой переменной.
6. В окне Программный код ввести вторую событийную процедуру целиком:
Dim strA, strB As String
Sub cmd2_Click()
strA = "форма"
strB = "ин" + strA + "тика"
frml.Print strB
End Sub
Затем создадим событийную процедуру, реализующую логические операции с логическими переменными.
7. Разместить на форме (frml) управляющий элемент командная кнопка (cmd3).
Создадим заготовку событийной процедуры, в которой в качестве объекта будет использоваться кнопка cmd3, а в качестве события щелчок Click ().
Объявим логические переменные, присвоим им значения логических выражений, в которые входят операции сравнения, и произведем операцию логического умножения двух логических переменных.
8. В окне Программный код ввести третью событийную процедуру целиком:
blnC As Boolean
Dim blnA, blnB, Sub cmd3_Click() blnA = 5 > 3 blnB = 2*2 = 5 blnC = blnA And frml.Print blnC End Sub
blnB
информатика False
10ЧИЯ
9. После запуска проекта на экране появится его графический интерфейс (форма с размещенными на ней командными кнопками). Последовательные щелчки по кнопкам вызовут выполнение событийных процедур и на форме будут напечатаны результаты выполнения проекта.
В первой событийной процедуре производится деление двух чисел с различной точностью, которая зависит от типа переменной, используемой для хранения результатов вычислений.
После выполнения второй событийной процедуры строковая переменная strC примет значение "информатика".
После выполнения третьей событийной процедуры логическая переменная ЫпС примет значение False {Ложь).