Пример 4.2.2-1. Создать проект, в котором изменяются значения переменных
Тема 2
Основные средства языка
программирования VB .NET.
Типы данных
4.2.1. Синтаксис, семантика, алфавит и лексемы
языка VB
Содержательно язык программирования – это средство общения между человеком (разработчиком программ) и компьютером (исполнителем программ). Рассматривая любую знаковую систему (в том числе и язык программирования), обычно выделяют синтаксис – правила построения сообщений в этой системе, семантику – правила истолкования сообщений тем, кому они адресованы, а также прагматику, сопоставляющую сообщения желаниям того, от кого они исходят.
Всякий язык программирования, в частности, VB, можно определить, как множество предложений (строк) – т.е. некоторое множество конечных последовательностей элементарных единиц из некоторого непустого конечного множества символов (алфавита), называемого словарем языка. Понятно, что при таком рассмотрении языка программирования мы только фиксируем множество символов, которые можно использовать для записи программ, а также класс допустимых (или, как принято говорить, синтаксически правильных) программ, не сопоставляя никакого смысла этим синтаксически правильным программам. Ясно, что задавать множество допустимых программ исчерпывающим их перечислением невозможно. Желательно, чтобы описание языка было обозримым (заведомо конечным). Обычный подход, удовлетворяющий этому требованию, состоит в том, что предложения (строки) языка строятся по определенным правилам, в совокупности составляющим то, что называют грамматикой языка. Эти грамматические правила приписывают предложениям языка некоторую синтаксическую структуру, которая используется при определении смысла предложений.
Грамматика языка может быть описана различными способами. Например, ее можно задавать в виде порождающей системы формальных и неформальных правил, т.е. набора правил, применением которых можно породить все предложения языка и только их. При описании конструкций языка VB мы будем применять способ, использующий неформальные правила описания предложений языка VB.
Семантика языка программирования – это правила придания смысла синтаксически правильным программам. В конечном счете, эти правила определяют ту последовательность действий вычислительной машины, которую она должна выполнить, работая по данной программе. Например, семантика языка команд компьютера определяется самим компьютером: машинная программа описывает в точности то, что реализует вычислительная машина при работе по данной программе. Аналогично семантика языка программирования высокого уровня может быть определена через описание правил выполнения соответствующей виртуальной машины.
Алфавит языкаиспользует для записи программ сравнительно небольшое множество литер (символов), доступных на устройствах ввода-вывода реальных ПК. Предполагается, что входной алфавит содержит буквы русского и латинского алфавитов, десятичные арабские цифры и некоторое количество специальных литер, таких как пробел, точка, запятая и т.п.
Таким образом, в алфавит языка программирования VBвходят:
· прописные (A – Z) и строчные (a – z) буквы латинского алфавита;
· прописные (А – Я) и строчные (а – я) буквы кириллицы;
· цифры от 0 до 9;
· символ подчеркивания – _;
· неотображаемые символы (пробел, табуляция, переход на новую строку);
· специальные символы, участвующие в построении конструкций языка: +- */; \^ =><[ ] () . :{} ’ ”& @;
· составные символы, воспринимаемые как один символ: <=, >=, <>.
Для записи даже элементарных конструкций языка VBиспользуются не отдельные литеры (символы) входного алфавита, а слова, называемые лексемами. При этом символы, образующие лексему, теряют свою индивидуальность: смысловое значение, приписываемое лексеме семантикой, не обязано вытекать из смысловых значений составляющих ее символов.
Множество лексем образует словарь языка. Он включает в себя следующие четыре группы лексем:
· множество специальных символов, состоящее из знаков операций (например, +, *) и ограничителей (например, точка, запятая);
· множество зарезервированных (ключевых) слов (например, Sub, End, If);
· множество идентификаторов, используемых в качестве имен констант, переменных, типов, объектов, модулей, процедур и функций и т.д.;
· множество изображенийконстантных значений, состоящее из целых и вещественных чисел и символьных и строковых констант и т.д.
Рассмотрим правила использования некоторых лексических элементов.
Идентификаторы– это имена лексического элемента языка программирования. Для выбора имен и лексического элемента языка следует придерживаться следующих правил:
· имя должно состоять только из символов латинского алфавита или кириллицы (регистр значения не имеет), цифр и подчеркивания;
· имя должно начинаться с буквы;
· имена не могут совпадать с зарезервированными словами;
· имена не должны содержать более 255 символов;
· не следует использовать имена, совпадающие с названиями функций, и методов языка;
· нельзя использовать одни и те же имена переменных, отличающихся типом;
· не допускается использование повторяющихся имен на одном уровне области определения.
Ключевые слова– это идентификаторы, зарезервированные для специального использования (например, Const, Do, For, If, While) и не использующиеся как имена для программных элементов, таких, например, как переменные и процедуры.
Операторыязыка программирования – это последовательности команд, из которых состоит программный код(текст программы). В тоже время оператор– это синтаксическая единица языка программирования, которая определяет некоторое действие. Операторы описывают алгоритмические действия, которые должны выполняться. Каждый оператор представляет собой законченную фразу (предложение, строку) языка программирования и может содержать ключевые слова, переменные, константы, выражения, разделители др. Операторы могут быть простыми и структурированными. Простым оператором является такой оператор, который не содержит в себе других операторов. Структурированные операторы строятся из других операторов, порядок выполнения которых должен быть последовательным, определяемым условной передачей управления (условными операторами) или повторяющимся (определяется операторами цикла). Обычно оператор располагается на одной строке, но его можно продолжить на другой строке с помощью символа продолжения строки – знака – ''_''(подчеркивание), причем символу продолжения должен предшествовать пробел; или на одной строке можно записать и несколько операторов, разделяя их знаком – : (двоеточие).
Комментарии– это пояснения отдельных конструкций и их действий в программе. Строки комментария начинаются со знака –' (апостроф).Комментарии обычно вставляют в начале или в конце строки программного кода. При выполнении программы комментарии игнорируется. В программном коде по умолчанию комментарий выделяется зеленым цветом. В нашем пособии в отдельных фрагментах, процедурах и проектах комментарии будем писать курсивом.
Данные– это информация, представленная в формальном виде, который обеспечивает возможность ее хранения, обработки и передачи. В основе любого языка программирования лежит конечное множество данных, неделимых (простых) с точки зрения имеющихся в языке операций. Это множество распадается на четыре подмножества, состоящих соответственно из целых чисел, вещественных чисел, логических значений и литерных (строковых) значений. Каждое из перечисленных подмножеств – это стандартный тип данных, который имеет свое имя (идентификатор), характеризуется множеством значений и набором операций, определяемых языком программирования над этими значениями (например, числа можно складывать, а логические или литерные значения – нет). Как известно, данные в программе могут быть двух видов: постоянные величины (константы) и переменные величины (переменные). Предполагается, что каждая переменная в программе (переменная – это элемент памяти ПК; адрес элемента памяти – это имя переменной; а его содержимое – значение переменной) может получать значения только определенного заранее типа, в то время как элементы памяти могут хранить любое по типу значение – его трактовка определяется только выполняемой операцией. Помимо переменных программа может содержать константы – элементы памяти ПК, которые постоянно хранят заданные значения. В VBзначение константы может использоваться двумя способами: или неявно, своим именем – адресом соответствующего элемента памяти, или явно, изображением значения содержимого соответствующего элемента памяти. Например, True– это имя значения «истина», а 25 – изображение значения числа «двадцать пять».
4.2.2. Типы данных, способы их объявления,
переменные, константы и оператор присваивания
Итак, переменные используются во время выполнения программы для временного хранения данных в памяти компьютера. Для определения (объявления) переменных компилятору нужно следующее:
· имя переменной – по имени компилятор осуществляет связь переменной в программе с областью оперативной памяти компьютера;
· тип переменной– тип позволяет компилятору определить, какого вида информация хранится в переменной;
· значение переменной– определяет содержание информации, которая хранится в памяти компьютера.
При выборе имен переменных следует использовать имена, которые являются короткими и, в то же время, интуитивно понятными и простыми для запоминания. Чтобы избежать противоречий, рекомендуется использовать при создании имен переменных следующие соглашения:
· начинать имя каждой переменной с буквы или знака подчеркивания. (это требование VB – имена переменных могут содержать только буквы, цифры и знак подчеркивания);
· выбирать имена переменных не длиннее 33 символов;
· делать имена своих переменных описательными, комбинируя, когда это имеет смысл, одно или несколько слов;
· использовать комбинации заглавных и строчных символов и цифр, то есть первую букву каждого слова имени переменной делать заглавной;
· не использовать в качестве имен переменных ключевые слова VB, имена объектов или свойств (если вы это сделаете, то при попытке запуска программы получите сообщение об ошибке).
Какими бы типами объектов, мы не пользовались при написании программы, следует помнить, что основой их являются простейшие (базовые) типы. Это основные элементы информации, из которых будет формироваться впоследствии сложная структура объектов. Следует точно знать, какой именно вид информации хранится в той или иной переменной, и в соответствии с этим знанием применять к ней те или иные операции или функции обработки. Обратите внимание, что VB имеет достаточно хорошую типизацию данных.
Таблица 4.2.2-1 содержит перечень базовых (простых) типов данных VB. Причем каждый базовый тип языка VB соответствует типу данных .NET Framework.
Таблица 4.2.2-1
Тип данных | бит | Диапазон | Пример использования | Что хранит (Тип .NET) |
Short | 16 | от-32768 до 32767 | Dim Birds As Short Birds = 12500 | Целые числа (System. Int) |
UShort | 16 | от 0 до 65535 | DimDays As UShort Days = 55000 | Целые числа (System.UInt) |
Integer | 32 | от-2147483648 до 2147483647 | DimInsects As Integer Insects = 37500000 | Целые числа (System.Int32) |
UInteger | 32 | от 0 до 4294967295 | DimJoys As UInteger Joys = 3000000000 | Целые числа (System.UInt32) |
Long | 64 | от-9223372036854775808 до 9223372036854775807 | DimWorldPopAs Long WorldPop = 4800000004 | Целые числа (System.Int64) |
ULong | 64 | от 0 до 18446744073709551615 | Dim Stars As ULong Stars= | Целые числа (System.UInt64) |
Single | 32 | от -3.4028235Е38 до 3.4028235Е38 | DimPrice As Single Price = 899.99 | Числа с пл. точкой (System.Single) |
Double | 64 | от -1.79769313486231Е308 до 1.79769313486231Е308 | DimPi As Double Pi = 3.1415926535 | Числа с пл. точкой (System.Double) |
Decimal | 128 | Полож. и отриц. значения до 29 знаков | DimDebt As Decimal Debt =7600300.50 | Числа с фик. Точкой (System.Decimal) |
Byte | 8 | от 0 до 255 без знака | DimRetKeyAs Byte RetKey = 13 | Десятичные числа (System.Byte) |
SByte | 8 | от-128 до127 | DimNegValAsSByte NegVal = -20 | Целые числа (System.SByte) |
Char | 16 | любой символ Unicode в диапазоне 0 - 65535 | DimUCharAsCharUChar="A" | Один символ (System.Char) |
String | 16 | от0 до ≈ 2 миллиардов символов Unicode | Dim Dog As String Dog ="pointer" | Текст (System.String) |
Boolean | 16 | True или False (при преобразовании типов 0 преобразуется в False, а все другие значения в True) | DimFlag As Boolean Flag = True | Логические знач. (System.Boolean) |
Data | 64 | от 1 января 0001 до 31 декабря 9999 | DimBirthday As Date Birthday=#3/1/1963# | Дату и время (System.DateTime) |
Object | 32 | любой тип, который может быть сохранен в переменной типа Object | DimApp As Object App = CreateObject _ ("Word.Application") | Ссылка на объект (System.Object) |
В программном коде может использоваться любое количество переменных, и они могут содержать слова, числа, даты, свойства или другие значения. Использование переменных позволяет присвоить каждой части данных, с которыми вы работаете, короткие и легко запоминаемые имена. Переменные могут хранить информацию, введенную пользователем при выполнении программы, результат некоторого вычисления или данные, которые отображаются на форме. Если коротко, то переменные являются удобными контейнерами, которые используются для хранения информации почти любого типа.
Как было отмечено ранее, использование переменных в программе на VBтребует некоторого планирования. Прежде чем использовать переменную, необходимо выделить в компьютере память, которую эта переменная будет занимать. Этот процесс несколько напоминает бронирование мест в театре или на спортивном матче.
Для каждого типа переменных выделяется определенное количество оперативной памяти, и тип данных надо выбирать, исходя из задания на решение конкретной задачи. Если данные должны принимать только целые значения, то тип соответствующих переменных в программе должен быть Integer, но никак не Single, поскольку в этом случае мы увеличиваем объем используемой оперативной памяти и не гарантируем получение правильного (точного) результата. Если из постановки задачи известно, что данные могут принимать дробные значения, то соответствующим переменным в программе необходимо назначить тип Single или Double, поскольку любой другой тип переменных может привести к непредвиденным результатам. Поэтому в VBследует всегда явно объявлять переменные до их использования. А для того чтобы VB информировал программистов о том, что переменная явно необъявлена до ее использования, необходимо в начале программного кода (перед всеми процедурами) и объявлениями поместить оператор: OptionExplicit Оn.
Чтобы в VBявно объявить переменную, необходимо ввести имя переменной после оператора Dim(Dim означает dimension– размер), а тип переменной после слова As. При этом оператор объявления выделяет для переменной место в памяти, по которому компилятор VBузнает тип данных, связанный с этой переменной.
Оператор Dimзаписывается по следующим правилам:
Dimимена_переменныхAsтип, имена_переменныхAsтип,… |
Например, следующие операторы резервируют «место» в памяти ПКдля различных типов переменных:
DimLNameAs String Dim КолAs Integer, b As Single Dim Ном, d As Integer |
Таким образом, для переменной с именем LNameрезервируется оперативная память, которая будет хранить строковое значение; для переменных с именем Коли bрезервируется оперативная память,которая будет хранить, соответственно, целые и вещественные значения; для переменных с именем Номи dрезервируется оперативная память, которая хранит целые значения.
Кроме оператора Dim, переменные можно объявить и с помощью операторов Privateи Public:
Privateимена_переменныхAsтип,имена_переменныхAsтип… Publicимена_переменныхAsтип,имена_переменныхAsтип… |
Выбор ключевого слова Dim, Private или Publicопределяется необходимой областью видимости переменной.
Более подробно области видимости переменных и, соответственно, использование операторов Private и Publicбудут рассмотрены далее.
После создания переменной ей можно присваивать конкретные значения, используя оператор присваивания (символ равенства =).
Оператор присваивания– это фундаментальный оператор любого языка программирования. Он заменяет текущее значение переменной, стоящей слева от знака равенства, новым значением, которое определяется значением выражения, стоящим справа от знака равенства. Оператор присваивания позволяет также изменять значения свойств формы и размещенных на ней управляющих элементов. Синтаксис оператора имеет следующий вид:
Идентификатор = выражение.
Res = 20.56 X1 = А + 5 / sin(x^ 2) |
Следующий оператор программы присваивает переменной LNameзначение «Иванов»:
LName = "Иванов" |
После того, как переменной LNameприсвоено значение, она может использоваться в программном коде вместо имени «Иванов».
Например, оператор присваивания
Label1.Text = LName |
отобразит «Иванов» в первой надписи (Label1)на форме.
Переменные могут хранить одно и то же значение на протяжении всей программы, а могут несколько раз изменять свое значение, в соответствии с программным кодом.
Следующий пример демонстрирует, как переменная с именем LNameможет содержать различные текстовые значения и как значение этой переменной может присваиваться свойствам объектов.
Пример 4.2.2-1. Создать проект, в котором изменяются значения переменных.
1)Запустить VS.
2)Выполнить команды, позволяющие создавать новый проект с именем Пример 2.2-1.
В окне Конструктор появится пустая форма Пример 2.2-1.
3)На ней создать интерфейс проекта Пример 2.2-1 (рис.4.2.2-1).
Эта форма содержит две надписи и две кнопки. Для отображения информации в каждой из этих надписей необходимо использовать переменные. Объекты надписей выглядят как поля потому, что свойства BorderStyle установлены в значение Fixed3D.
Рис. 4.2.2-1. Исходная форма проекта Пример 2.2-1
4)Дважды щелкнуть мышью на кнопке формы Показать.
В окне Редактор кода появится процедура события Button1_Click(…).
5)Чтобы объявить и использовать переменную Name, необходимо ввести следующие операторы:
Dim Name As String Name = "Петров" Label1.Text = Name Name ="проф. Сидоров" Label4.2.Text = Name |
Эти операторы разбиты на три группы. Первый оператор объявляет переменную Nameтипа String, используя для этого, оператор Dim. После ввода этой строки VS выведет под переменной Name волнистую линию, указывающую, что она была объявлена, но не используется в программе. Здесь нет ошибки – VS просто напоминает, что была создана новая переменная, которую следует использовать.
Если написание программы закончено, а имя переменной останется подчеркнутым, то, возможно, где-то в коде программы неправильно написано ее имя или эта переменная действительно не использовалась.
Вторая и третья строки присваивают переменной Name имя «Петров», а затем отображают это имя в первой надписи формы. Этот пример демонстрирует одно из наиболее частых применений переменных в программе – передачу информации в свойство. На экране все строковые значения, присваиваемые переменным, отображаются красным цветом.
Четвертая строка присваивает переменной Nameзначение
«проф. Сидоров» (другими словами, она изменяет содержимое этой переменной). Обратите внимание, что вторая строка длиннее, чем первая, и содержит пробелы. Когда переменным присваиваются текстовые строки или, когда строки используются в других местах, текст этих строк требуется заключать в двойные кавычки.
Наконец, необходимо помнить еще об одной важной характеристике переменных, объявленных в этой процедуре события: они поддерживают область видимости или хранят свои значения только внутри той процедуры события, в которой они используются. Далее мы узнаем о том, как объявлять переменные так, чтобы их можно было использовать в любой из процедур событий формы или других процедурах.
6)Чтобы отобразить форму, щелкнуть на вкладке Form1.vb[Конструктор].
7)Дважды щелкнуть мышью на кнопке Выход.
В окне Редактор кода появится процедура события Button2_Click(…).
8)Чтобы обозначить точку конца программы, где она остановит свое выполнение, ввести оператор End.
Окно редактора кода будет таким, как показано на рис. 4.2.2-2.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button1.Click Dim LName As String LName = "Петров" : Label1.Text = LName LName = "проф. Сидоров" :Label4.2.Text = LName End Sub Private Sub Button2_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button4.2.Click End End Sub End Class |
Рис. 4.2.2-2. Программный код проекта Пример 2.2-1
9)Чтобы сохранить изменения в проекте, необходимо щелкнуть на кнопке Сохранить всеГлавной панели инструментов.
10)Далее, чтобы запустить программу – необходимо щелкнуть на кнопке
Начать отладку, расположенной на Главной панели инструментов.
Программа начнет выполняться, и на экране отобразится
первоначальное состояние формы.
11)Щелкнуть на кнопке приложения Показать.
Программа продолжит выполнение: объявляется переменная, которойпоочередно присваиваются два значения, и каждое из значений копируется в соответствующую надпись на форме. Результат работы программы отображается на экранной форме, показанной на
рис. 4.2.2-3.
Рис. 4.2.2-3. Форма проекта Пример 4.2.2-1с результатом
работы проекта
12)Чтобы завершить выполнение программы, щелкнуть на кнопке
Выход.