Visual Basic .NET на уроках информатики

Переменные и операторы Visual Basic .NET

Разбить на страницы
Показывать лекцию целиком

В этой лекции вы узнаете, как:

  • использовать переменные для хранения данных вашей программы;
  • запрашивать данные с помощью функции InputBox ;
  • отображать сообщения с помощью функции MsgBox ;
  • работать с различными типами данных;
  • использовать в формулах математические операторы и функции;
  • использовать математические методы класса System.Math из .NET Framework;
  • использовать переменные и операторы.
  • В части 1 вы узнали, как создавать интерфейс пользователя программы на Visual Basic .NET и как компилировать и запускать программу в среде разработки Microsoft Visual Basic. В следующих пяти лекциях вы узнаете о коде программы на Visual Basic - операторах и ключевых словах, которые составляют ядро программы, написанной на Visual Basic. Прочитав часть 2, вы будете готовы к изучению более сложных вопросов.

    В этой лекции вы узнаете о том, как использовать переменные для временного хранения данных вашей программы, и как использовать математические операторы для выполнения сложения и умножения. Вы также узнаете, как использовать для вычислений математические функции, и использовать функции InputBox и MsgBox для сбора и представления информации с помощью диалоговых окон. Наконец, вы впервые посмотрите на использование в .NET Framework классов, которые выполняют в программе различную полезную работу.

    Что нового в Visual Basic .NET?

  • Чтобы обеспечить соблюдение правильных методов программирования и большую ясность кода, все переменные Visual Basic .NET перед их использованием должны быть объявлены. Неявное объявление переменных (использование переменных без их объявления) возможно только при использовании оператора Option Explicit Off - но эта практика крайне не рекомендуется.
  • Visual Basic больше не поддерживает тип данных Variant. Чтобы определить тип данных, который могут хранить переменные, вы должны объявить все переменные с помощью Dim и ключевого слова As.
  • Имеется несколько новых базовых типов данных, а некоторые старые типы данных теперь имеют другие диапазоны допустимых значений. Например, 16-битный тип данных Short, 32-битный тип данных Integer и 64-битный тип данных Long. Тип данных Currency из Visual Basic 6 был заменен типом данных Decimal.
  • Visual Basic .NET содержит новую опцию Option Strict. Когда Option Strict включена переменные при их сложении, сравнении или объединении обычно должны иметь один и тот же тип данных. Иногда переменные могут иметь различные типы, но только при условии, что при этом не произойдет потеря данных. Это означает, что преобразование типов в Visual Basic .NET более важно, чем в Visual Basic 6, и чтобы сделать различные типы совместимыми друг с другом, вы должны знать о функциях преобразования типов, таких, как CInt, CLng и CType. При обновлении приложений используйте команду Option Strict Off для продолжения комбинирования типов данных, как это делалось в Visual Basic 6 (разрешив то, что известно как автоматическая коррекция типов). Но эта функция должна использоваться очень редко, и не стоит полагать, что она будет поддерживаться в будущих версиях Visual Basic .NET.
  • Теперь имеется несколько кратких записей математических выражений с использованием арифметических операторов, таких, как сложение (+), вычитание (-) и умножение (*). Это краткие записи позволяют вам записать такую формулу, как X = X + 2, с помощью синтаксиса X += 2.
  • Visual Basic .NET больше не предоставляет для математических операций встроенных ключевых слов (таких как Abs или Cos ). Вместо этого для математических функций используются методы библиотеки классов System.Math, являющейся частью .NET Framework. Функциональность этих методов аналогична функциям Visual Basic 6, хотя некоторые имена изменились (например, Sqr теперь называется Sqrt ).
  • Visual Studio содержит объект MessageBox, который является альтернативой MsgBox для отображения окон сообщений. Чтобы вывести окно сообщения, используйте метод MessageBox.Show.
  • Оператор программы в Visual Basic

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

    End

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

    Label1.Text = TimeString

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

    В следующих лекциях вы узнаете о наиболее важных ключевых словах и операторах программы, об объектах, свойствах и методах, предоставляемых элементами управления Visual Studio и .NET Framework. Эти ключевые слова и объекты прекрасно дополнят те навыки программирования, которые вы уже получили, и помогут вам писать по-настоящему мощные программы. При написании почти каждой программы вам потребуется знакомство с переменными и типами данных.

    Использование переменных для хранения информации

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

    Использование переменных в программе на Visual Basic .NET требует некоторого планирования. Прежде чем вы сможете использовать переменную, вы должны выделить память, которую эта переменная будет использовать. Этот процесс несколько напоминает бронирование мест в театре или на спортивном матче. Процесс резервирования - или объявления - переменных описан в следующем разделе.

    Выделение пространства для переменных: оператор Dim

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

    Чтобы в Visual Basic .NET объявить переменную, введите имя переменной после оператора Dim. ( Dim означает dimension - величина.) Это объявление при выполнении программы выделяет для переменной место в памяти и дает возможность компилятору Visual Basic узнать тип данных, который он может ожидать встретить в дальнейшем. Хотя это объявление можно сделать в любом месте кода программы (при условии, что оно появляется до использования переменной), большинство программистов объявляют переменные в одном месте в начале их процедур обработки событий или модулей кода.

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

    Dim LastName As String

    Заметьте, что в дополнение к указанию имени переменной, я использовал ключевое слово As, которое присваивает переменной определенный тип, и я определил этот тип с помощью ключевого слова String. (Далее в этой лекции вы узнаете о других типах данных.) Строковая переменная содержит текстовую информацию: слова, буквы, символы - даже цифры. Я обнаружил, что очень часто использую строковые переменные; они хранят имена, места, строки из стихотворений, содержимое файла и много других "словесных" данных. Почему необходимо объявлять переменные? Visual Basic требует указания имен и типов переменных заранее, чтобы компилятор смог выделить память программы, которая понадобится для хранения и обработки информации, хранящейся в этих переменных. Управление памятью для вас может не представлять никакой проблемы (в конце концов, современные персональные компьютеры имеют большой объем RAM и гигабайты свободного дискового пространства), но в некоторых программах свободная память может очень быстро заполниться, и считается хорошей практикой воспринимать распределение памяти всерьез, даже если вы делаете в программировании первые шаги. Различные типы переменных требуют различные объемы памяти и имеют ограничения на размеры.

    Примечание. В некоторых предыдущих версиях Visual Basic конкретные типы переменных (такие, как String или Integer ) не требовались - информация просто хранилась в общем типе данных, который назывался Variant. Он мог хранить данные любого размера и формата. В Visual Basic .NET этот тип данных не поддерживается. Хотя он и был удобен для начинающих программистов, его реализация делала его медленным и неэффективным, и он позволял слишком легко производить преобразования из одного типа в другой - что приводило к непредсказуемым результатам.

    После того, как вы создали переменную, вы можете присвоить ей информацию, используя оператор присвоения (=). Например, следующий оператор программы присваивает переменной LastName имя "Иванов":

    LastName = "Иванов"

    Обратите внимание, что я присвоил переменной LastName текстовое значение, так как она имеет тип String. Этой переменной также можно присвоить значения с пробелами, символами или числами, такие как

    LastName = "1313 Петров Вася"

    но переменная по-прежнему будет рассматриваться как строковое значение. Числовая часть может использоваться в математических вычислениях, только если с помощью одной из набора функций преобразования преобразовать ее в целое значение или значение с плавающей точкой. Это обсуждается далее.

    После того, как переменной LastName присвоено значение, она может использоваться в коде вместо фамилии "Иванов". Например, оператор присвоения

    Label1.Text = LastName

    отобразит слово "Иванов" в первой метке ( Label1 ) на вашей форме.

    Примечание. Если в Visual Basic .NET вы все же хотите объявить переменные по-старому, то есть без явного их объявления с помощью оператора Dim, то можете поместить в самом верху вашего модуля кода программы (перед всеми процедурами событий) оператор Option Explicit Off. Он отменит требование Visual Basic по умолчанию, чтобы все переменные были объявлены перед их использованием. Я не рекомендую использовать этот оператор как постоянное добавление к вашему коду, но он (временно) может быть полезен при переносе старых программ на Visual Basic в Visual Studio .NET.

    Использование переменных в программе

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

    Изменение значения переменной

  • Запустите Visual Studio.
  • В меню File (Файл) выберите пункт Open (Открыть), а затем щелкните на Project (Проект). Откроется диалоговое окно Open Project (Открытие проекта).
  • Откройте проект Variable Test, расположенный в папке c:\vbnet03sbs\Гл.5\variable test.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор) . В Windows Forms Designer (Конструкторе Windows Forms) появится форма Variable Test. Variable Test - это "скелет" программы - он содержит форму с метками и кнопками для отображения вывода, но почти не содержит кода программы. В этом упражнении вы добавите этот код. Форма Variable Test выглядит так.

    Эта форма содержит две метки и две кнопки. Для отображения информации в каждой из этих меток вы будете использовать переменные.

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

  • Сделайте двойной щелчок мышью на кнопке Показать. В Редакторе кода появится процедура события Button1_Click.
  • Чтобы объявить и использовать переменную LastName, введите следующие операторы программы:

    Dim LastName As String
    
    LastName = "Сидоров"
    Label1.Text = LastName
    
    LastName = "Боденштейн фон Карлштадт"
    Label2.Text = LastName

    Эти операторы программы разбиты на три группы. Первый оператор объявляет переменную LastName с помощью оператора Dim и типа String. Вторая и третья строки присваивают переменной LastName фамилию "Сидоров", а затем отображают это имя в первой метке формы. Этот пример демонстрирует одно из наиболее частых случаев использования переменных в программе - передачу информации в свойство.

    Четвертая строка присваивает переменной LastName фамилию "Боденштейн фон Карлштадт" (другими словами, она изменяет содержимое этой переменной). Обратите внимание, что вторая строка длиннее, чем первая и содержит несколько пробелов. Когда вы присваиваете переменным текстовые строки, или используете строки в других местах, вы должны заключать текст этих строк в кавычки. (Для чисел этого делать не требуется.)

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

  • Чтобы снова отобразить форму, щелкните на закладке Form1.vb [Design].
  • Сделайте двойной щелчок мышью на кнопке Выход. В Редакторе кода появится процедура события Button2_Click.
  • Чтобы остановить программу, введите оператор

    End

    Ваш экран должен выглядеть примерно так.

  • Чтобы сохранить изменения, щелкните на кнопке Save All (Сохранить все).
  • Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Щелкните на кнопке Показать. Программа объявляет переменную, присваивает ей два значения и копирует каждое из значений в соответствующую метку на форме. Программа производит следующий вывод:

  • Чтобы остановить программу, щелкните на кнопке Выход. Программа остановится, и вы вернетесь в среду разработки.
  • Соглашения об именах переменных

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

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

    Хотя имена переменных могут быть практически любой длины, старайтесь делать их не длиннее 33 символов, чтобы их было легко читать. (В Visual Basic 6 имена переменных были ограничены 255 символами, но это ограничение теперь отсутствует.)

    Назначайте переменным информативные имена, комбинируя, когда это имеет смысл, одно или несколько слов. Например, имя переменной SalesTaxRate гораздо яснее, чем Tax или Rate.

    Можно использовать комбинации заглавных и строчных символов и цифр. Приемлемый вариант - делать заглавной первую букву каждого слова имени переменной; например, DateOfBirth. Однако некоторые программисты предпочитают использовать так называемую "верблюжью" нотацию (делая первую букву имени переменной маленькой), чтобы различать имена переменных и имена функций и модулей (которые обычно начинаются с большой буквы). Примерами верблюжьей нотации могут служить имена dateOfBirth, employeeName и counter.

    Не используйте в качестве имен переменных ключевые слова Visual Basic, имена объектов или свойств. Если вы это сделаете, то при попытке запуска программы получите сообщение об ошибке.

    Начинайте каждое имя переменной с двух- или трехсимвольной аббревиатуры, которая обозначает тип данных, хранимый в этой переменной. Например, чтобы показать, что переменная Name содержит строковые данные, используйте strName. Хотя сейчас вам не стоит об этом сильно беспокоиться, в дальнейшем вы должны обратить на это соглашение внимание - вы увидите его в справочной системе Visual Studio и во многих книгах по программированию на Visual Basic. (Это соглашение и схема сокращений для аббревиатур были созданы инженером Microsoft Чарльзом Симони и иногда называется венгерской нотацией.)

    Использование переменных для хранения введенных данных

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

    Получение ввода с помощью InputBox

  • В меню File (Файл) выберите Open (Открыть), а затем Project (Проект). Появится диалоговое окно Open Project (Открыть проект).
  • Откройте проект Input Box, расположенный в папке c:\vbnet03sbs\Гл.5\input box. В среде разработки откроется проект Input Box. Input Box - это "скелет" программы.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). Эта форма содержит одну метку и две кнопки. Для ввода данных пользователем, используйте функцию InputBox, а затем отобразите эти данные в метке формы.
  • Дважды щелкните на кнопке Ввести данные. В Редакторе кода появится процедура обработки события Button1_Click.
  • Чтобы объявить две переменных и использовать функцию InputBox, введите следующие операторы программы:

    Dim Prompt, FullName As String
    Prompt = "Введите свое имя, пожалуйста."
    
    FullName = InputBox(Prompt)
    Label1.Text = FullName

    На этот раз с помощью оператора Dim вы объявляете сразу две переменные: Prompt и FullName. Обе переменные объявляются с использованием типа String. (Вы можете объявить в одной строке столько переменных, сколько хотите, но при условии, что они имеют один и тот же тип.) Заметьте, что в Visual Basic 6 эта запись привела бы к другому результату. Оператор Dim создал бы переменную Prompt типа Variant (так как никакого типа не указано), а затем создал бы переменную FullName типа String. Но эта логическая несообразность в Visual Basic .NET была устранена.

    Вторая строка процедуры присваивает переменной Prompt текстовую строку. Это сообщение будет использовано как текстовый аргумент для функции InputBox. (Аргумент - это значение или выражение, передаваемое в процедуру или функцию.) Следующая строка вызывает функцию InputBox и присваивает результат этого вызова (текстовую строку, введенную пользователем) переменной FullName. InputBox - это специальная функция Visual Basic, которая отображает на экране диалоговое окно, в котором запрашивает пользовательский ввод. В дополнение к строке запроса функция InputBox поддерживает другие аргументы, которые вы иногда будете использовать. За подробностями обратитесь к справочной системе Visual Basic.

    После того, как InputBox возвратит в программу текстовую строку, четвертый оператор этой процедуры помещает имя пользователя в свойство Text объекта Label1 и, таким образом, отображает его в форме.

    Примечание. В предыдущих версиях BASIC функция InputBox писалась с символом $ на конце, чтобы помочь программистам запомнить, что функция возвращает информацию в виде строкового ($) типа данных. Строковые переменные также определялись с помощью символа $. В настоящее время мы не используем символ типа. Строковый ($), целочисленный (%) и другие символы типов устарели.

  • Сохраните ваши изменения. Помните, на какой кнопке панели инструментов надо щелкнуть, чтобы сохранить ваш проект? Если забыли, то обратитесь к шагу 10 предыдущего упражнения.
  • Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Щелкните на кнопке Ввести данные. Visual Basic выполнит процедуру события Button1_Click, и на экране откроется диалоговое окно Input Box, как показано здесь.

  • Введите ваше полное имя, а затем щелкните на OK. Функция InputBox возвращает ваше имя в программу и помещает его в переменную FullName. Затем программа использует эту переменную для отображения вашего имени в форме, как показано здесь:

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

  • Чтобы завершить выполнение программы, щелкните на кнопке Выход формы. Программа закроется, и вернется среда разработки.
  • Что такое функция?

    InputBox - это специальное ключевое слово или функция, Visual Basic. Функция - это совокупность операторов, которые выполняют некую работу (например, запрашивают информацию у пользователя или вычисляют число по формуле), а затем возвращают результат в основную программу. Значение, возвращаемое функцией, может быть присвоено переменной, как это сделано в программе Input Box, а может быть присвоено свойству, другому оператору или функции. Функции Visual Basic часто используют один или более аргументов, определяющих их действия. Например, только что использованная функция InputBox использовала переменную Prompt для отображения в диалоговом окне инструкций для пользователя. Когда функция использует более одного аргумента, эти аргументы разделаются запятыми, а вся группа аргументов заключается в круглые скобки. Следующий оператор показывает вызов функции с двумя аргументами:

    FullName = InputBox(Prompt, Title)

    Использование переменной для вывода

    Вы можете отображать содержимое переменной, присваивая значение этой переменной свойству (такому, как свойство Text объекта метки), или передавая переменную как аргумент в функцию диалогового окна. Одной из функций диалоговых окон для отображения вывода является функция MsgBox. Когда вы вызываете эту функцию, она отображает диалоговое окно, иногда называемое окном сообщения. Вы можете определить различные опции этого окна. Аналогично функции InputBox, функция MsgBox имеет один или несколько аргументов, а ее результат работы может быть присвоен переменной. Синтаксис функции MsgBox имеет вид

    ButtonClicked = MsgBox(Prompt, Buttons, Title)

    где Prompt - это текст, отображаемый в окне сообщения, Buttons - это число, определяющее кнопки, значки и другие опции отображения окна сообщения, а Title - это текст заголовка окна сообщения. Результат работы эта функция возвращает в переменную ButtonClicked, и будет соответствовать кнопке диалогового окна, которую нажал пользователь.

    Если вы просто выводите сообщение с помощью функции MsgBox, то переменная ButtonClicked, оператор присвоения (=), аргумент Buttons и аргумент Title необязательны. В следующем упражнении вы будете использовать только аргумент Title. За дополнительной информацией по аргументам (включая различные кнопки, которые вы можете включить в MsgBox и некоторые другие возможности) обратитесь к справочной системе Visual Basic.

    Примечание. Visual Basic .NET предоставляет для отображения текста с помощью диалогового окна одновременно функцию MsgBox и класс MessageBox. Класс MessageBox является частью пространства имен System.Windows.Forms, принимает аргументы, как и MsgBox, и отображается с помощью метода Show. В этой книге я буду использовать как MsgBox, так и MessageBox.

    Теперь добавьте в программу Input Box функцию MsgBox, чтобы отобразить имя, которое пользователь ввел в диалоговом окне Input Box.

    Отображение сообщения с помощью MsgBox

  • Если Редактор кода не открыт, сделайте двойной щелчок мышью на кнопке Ввести данные формы Input Box. В Редакторе кода появится процедура события Button1_Click. (Это код, который вы ввели в предыдущем упражнении.)
  • Выделите в процедуре события следующий оператор (последняя строка):

    Label1.Text = FullName

    Этот оператор отображает в метке содержимое переменной FullName.

  • Нажмите клавишу (Delete), чтобы удалить эту строку. Оператор будет удален из Редактора кода.
  • Введите вместо него в процедуре события следующую строку:

    MsgBox(FullName, , "Результат ввода")

    Этот новый оператор вызывает функцию MsgBox, отображает в диалоговом окне содержимое переменной FullName и помещает в его строку заголовка слова из Input Results. (Необязательный аргумент Buttons и переменная ButtonClicked здесь не имеют значения и были опущены.) Ваша процедура события должна выглядеть так.

  • Щелкните на кнопке Start (Начать) стандартной панели инструментов.
  • Щелкните на кнопке Ввести данные, введите в поле ввода свое имя, а затем щелкните на OK. Visual Basic сохранит ввод в переменной FullName, а затем отобразит его в окне сообщения. Ваш экран должен выглядеть примерно так.

  • Чтобы закрыть окно сообщения, щелкните на OK. Затем щелкните на Выход, чтобы закрыть программу. Программа закроется, и вернется среда разработки.
  • Примечание. Когда вы запускаете программу на Visual Basic, Visual Studio .NET автоматически сохраняет ваш проект перед тем, как запустить компилятор и отобразить главную форму. Это сделано в целях безопасности, чтобы предотвратить потерю данных при возникновении каких-либо неожиданных событий в процессе компиляции.

    Работа с конкретными типами данных

    Тип данных String полезен при обработке текста. Но как насчет чисел, дат и информации других типов? Чтобы обеспечить эффективное управление памятью для всех типов данных, Visual Basic предоставляет несколько дополнительных типов данных, которые вы можете использовать для ваших переменных. Многие из них являются уже знакомыми вам по предыдущим версиям BASIC или Visual Basic, а некоторые из этих типов данных являются новыми или были в Visual Studio .NET изменены, чтобы обеспечить более эффективную обработку данных на новых 64-разрядных компьютерах.

    Следующая таблица содержит перечень базовых (или простых) типов данных Visual Basic .NET. Если вы будете выбирать для переменных правильные типы данных (размер которых не слишком маленький, но и не очень велик), то получите дополнительное преимущество в производительности. В следующем упражнении вы увидите, как работают некоторые из этих типов данных.

    Примечание. Размер области хранения переменной измеряется в битах. Объем пространства, необходимый для хранения одного стандартного (ASCII) символа клавиатуры в памяти, составляет 8 бит, что равняется одному байту.

    Использование базовых типов данных в коде

  • В меню File (Файл) укажите на Open (Открыть), а затем щелкните на Project (Проект). Появится диалоговое окно Open Project (Открыть проект).
  • Откройте проект Data Types, расположенный в папке c:\vbnet03sbs\ Гл.5\data types.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). Data Types - это законченная программа на Visual Basic, которая демонстрирует, как работают некоторые из основных типов данных. Вы должны запустить эту программу, чтобы посмотреть, как выглядят эти типы данных, а затем увидеть, как в коде программы объявлены и используются переменные. Вы также узнаете, где следует располагать объявления переменных так, что они будут доступны для всех процедур событий вашей программы.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Появится следующее окно приложения.

    Программа Data Types позволяет вам экспериментировать с 11 типами данных, включая целый тип, тип значений с плавающей точкой одинарной точности и тип дат. Когда вы выделяете название типа в поле списка, программа отображает пример данных этого типа.

  • Щелкните в поле списка на типе Integer. В поле Пример данных появится число 37 500 000, как показано на следующей иллюстрации. Заметьте, что ни один из типов данных Short, Integer и Long не позволяет вводить или отображать в их значениях десятичные точки. Чтобы отобразить точки, нужно использовать функцию Format.

  • Щелкните в поле списка на типе Date. В поле Пример данных появится дата 3/1/1963.
  • Чтобы увидеть, как Visual Basic отображает типы данных в поле Пример данных, щелкните в поле списка на каждом из них.
  • Чтобы остановить программу, щелкните на кнопке Выход. Теперь изучите, как в форме объявляются базовые типы данных, и как они используются в процедуре события ListBox1.SelectedIndex.
  • Сделайте двойной щелчок мышью на самой форме (но не на одном из ее объектов), а затем увеличьте окно Редактора кода так, чтобы видеть как можно больше кода. Редактор кода будет иметь следующий вид.

    В верхней части Редактора кода вы увидите строку, которая гласит: "Windows Form Designer generated code" (Код, автоматически созданный конструктором форм Windows). Если вы щелкните на знаке "плюс" рядом с этой строкой, то вы увидите операторы, добавленные в ваш проект самим Visual Basic, и которые гарантируют, что объекты, которые вы разместили в форме, имеют корректные свойства и форма загружается корректно. В предыдущих версиях Visual Basic этот "настроечный" код был недоступен, но теперь он существует в каждом файле формы, и вы можете изучить внутреннюю работу формы и, если хотите, настроить ее. (Я не рекомендую настраивать код, сгенерированный Windows Forms Designer (Конструктором Windows Forms), до тех пор, пока вы не закончите читать эту книгу и не будете чувствовать себя в программировании на Visual Basic достаточно уверенно.) Под кодом, сгенерированным Windows Forms Designer (Конструктор Windows Forms), вы увидите около десятка операторов программы, которые я добавил для объявления в вашей программе 11 переменных - по одной для каждого из базовых типов данных Visual Basic. (Я не создал примера для типа Object, но мы будем экспериментировать с ним в последующих лекциях.) Разместив все операторы Dim здесь - в верхней части области инициализационного кода формы, я гарантировал, что все переменные будут доступны - или будут иметь область видимости - во всех процедурах событий формы. Таким образом, я могу установить значение переменной в одной процедуре события, а прочитать его - в другой. Обычно переменные доступны только в той процедуре события, в которой они объявлены. Чтобы сделать их доступными для всей формы, необходимо объявить переменные в верхней части кода формы.

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

  • Прокрутите Редактор кода вниз и изучите процедуру события Form1_Load. Вы увидите следующие операторы, которые добавляют элементы в объект списка программы. (Вы должны помнить этот синтаксис по лекции 3 - я использовал здесь несколько аналогичных операторов.)

  • Прокрутите вниз и изучите процедуру события ListBox1_SelectedIndexChanged. Процедура события ListBox1_SelectedIndexChanged обрабатывает выбор, который вы делаете в поле списка и выглядит так.

    Сердцем этой процедуры события является структура выбора Select Case. В следующей лекции мы обсудим, как эта группа операторов программы из нескольких вариантов выбирает только один. А сейчас обратите внимание, как каждый выбор блока Select Case присваивает заданное значение одной из переменных базового типа данных, а затем присваивает значение этой переменной свойству Text объекта Label4 формы. В лекции 3 я использовал код, аналогичный этому, для обработки выбора из списка, и вы также можете использовать эту методику для работы в ваших собственных программах с полями списков и типами данных.

    Примечание. Если в вашем проекте более одной формы, то, чтобы сделать переменные доступными для всей программы (то есть, для всех форм, содержащихся в вашем проекте), вы должны объявлять их несколько иначе (и в другом месте). Типом объявляемой переменной будет public (открытый), а объявляется она в коде модуля (специальном файле, который содержит объявления и процедуры, не связанные с конкретной формой). За информацией о создании открытых переменных в коде модулей обратитесь к лекции 10 .

  • Прокрутите процедуру события ListBox1_SelectedIndexChanged и внимательно изучите каждое из присвоений переменных. Попробуйте изменить данные в нескольких операторах присвоения переменных и запустить эту программу, чтобы увидеть, как изменились данные. В частности, вы можете попробовать присвоить переменным значения, которые находятся вне области их допустимых значений, показанных в приведенной ранее таблице типов данных. Если вы сделаете такую ошибку, Visual Basic подчеркнет некорректное значение волнистой линией, и программа не запустится до тех пор, пока вы не исправите это значение. Чтобы узнать об ошибке поподробнее, поместите мышь над подчеркнутым волнистой линией значением и прочитайте всплывающую подсказку, содержащую сообщение об этой ошибке.
  • Если вы сделали какие-то изменения, которые вы хотите записать на диск, щелкните на кнопке Save All (Сохранить все) стандартной панели инструментов.
  • Типы данных, определяемые пользователем

    Visual Basic также позволяет создавать собственные типы данных. Эта возможность важна тогда, когда вы имеете дело с группой элементов данных, которые связаны друг с другом, но при этом относятся к разным категориям данных. Вы можете создавать собственные типы (UDT - user-defined type (тип, определяемый пользователем)) с помощью оператора Structure, а объявлять переменные, относящиеся к этим новым типам с помощью оператора Dim. Но имейте в виду, что оператор Structure не может быть расположен в процедуре события - он должен располагаться в верхней части кода формы вместе с другими объявлениями переменных, либо в коде модуля.

    Например, следующее объявление создает пользовательский тип данных с именем Employee, который может хранить имена, дату рождения и дату найма на работу, относящиеся к данному сотруднику:

    Structure Employee
    Dim Name As String
    Dim DateOfBirth As Date
    Dim HireDate As Date
    End Structure

    После создания типа данных, вы можете использовать его в коде программы для формы или в процедурах событий модуля. Следующие операторы используют новый тип Employee. Первый оператор создает переменную с именем ProductManager и имеющую тип Employee, а второй оператор присваивает компоненте Name этой переменной имя "Эрик Коди":

    Dim ProductManager As Employee
    ProductManager.Name = "Эрик Коди"

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

    Константы: переменные, которые не изменяются

    Если переменная в вашей программе содержит значение, которое никогда не меняется (такое, как число рi, являющееся фиксированной математической сущностью), вы можете рассмотреть возможность хранения такого значения в виде константы, а не переменной. Константа - это осмысленное имя, которое заменяет число или тестовую строку, которое никогда не изменяются. Константы полезны тем, что они увеличивают читаемость кода программы, снижают количество программных ошибок и облегчают внесение глобальных изменений в коде. Константы действуют как переменные, но вы не можете изменять их значение при работе программы. Они объявляются с помощью ключевого слова Const, как показано в следующем примере:

    Const Pi As Double = 3.14159265

    Этот оператор создает константу с именем Pi, которая может быть использована в коде программы вместо значения рi. Чтобы сделать константу доступной для всех объектов и процедур событий вашей формы, поместите этот оператор в верхней части кода вашей формы вместе с другими объявлениями переменных и структур, которые имеют область видимости, распространяющуюся на все процедуры событий формы. Чтобы сделать константу доступной из всех форм и модулей программы (а не только из Form1 ), создайте константу в коде модуля, указав перед ней ключевое слово Public. Например:

    Public Const Pi As Double = 3.14159265

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

    Использование константы в процедуре события

  • В меню File (Файл) выберите Open (Открыть), а затем щелкните на Project (Проект). Появится диалоговое окно Open Project(Открыть проект).
  • Откройте проект Constant Tester, расположенный в папке c:\vbnet03sbs\Гл.5\constant tester.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем щелкните на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) появится форма Тест константы. Constant Tester - это "скелет" программы. Интерфейс пользователя завершен, но вы должны ввести код программы.
  • Сделайте двойной щелчок мышью на кнопке Показать константу формы. В Редакторе кода появится процедура события Button1_Click.
  • Введите в процедуре события Button1_Click следующие операторы:

    Const Pi As Double = 3.14159265
    Label1.Text = Pi

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

    Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов.

  • Щелкните на кнопке Показать константу. В поле метки появится константа Pi, как показано ниже.

  • Чтобы остановить программу, щелкните на кнопке Выход.

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

  • Работа с операторами Visual Basic

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

    Оператор Описание
    + Сложение
    - Вычитание
    * Умножение
    / Деление
    \ Целочисленное деление (без остатка)
    Mod Остаток от деления
    ^ Возведение в степень
    Объединение (конкатенация) строк

    Основы математики: операторы +, -, *, и /

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

    Работа с основными операторами

  • В меню File (Файл) укажите на Open (Открыть), а затем щелкните на Project (Проект).
  • Откройте проект Basic Math, расположенный в папке c:\vbnet03sbs\ Гл.5\basic math.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) появится форма Basic Math. Программа Basic Math демонстрирует, как работают с вводимыми числами операторы сложения, вычитания, умножения и деления. Она также демонстрирует, как можно использовать для обработки в программе ввода объекты текстового поля, переключателя и кнопки.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа Basic Math запустится на выполнение в среде разработки. Эта программа отображает два текстовых поля, в которых вы вводите числовые значения, группу переключателя операторов, поле, которое отображает результаты и два объекта кнопок ( Вычислить и Выход ).
  • Введите в текстовом поле Переменная 1 число 100, а затем нажмите клавишу (Tab). Курсор перейдет во второе текстовое поле.
  • Введите в текстовом поле Переменная 2 число 17. Теперь вы можете применить к этим двум значениям любой из математических операторов.
  • Щелкните на переключателе Сложение, а затем на кнопке Вычислить. К этим двум переменным применится оператор, и в поле Результат появится число 117, как показано здесь.

  • Попрактикуйтесь в использовании для чисел, указанных в полях переменных, операторов вычитания, умножения и деления. (Для вычисления каждой из формул щелкайте на Вычислить.) Результат появляется в поле Результат. Вы также можете поэкспериментировать с другими числами, введя их в текстовые поля переменных. (Если хотите, можете попробовать использовать числа с десятичными точками.) Для объявления соответствующих переменных я использовал тип данных Double, так что если хотите, то можете использовать очень большие числа. Теперь попробуйте следующий тест и посмотрите, что произойдет.
  • Введите в текстовом поле Переменная 1 число 100, в текстовом поле Переменная 2 число 0, щелкните на переключателе Деление, а затем щелкните на Вычислить. Деление на ноль при математических вычислениях запрещено, так как оно дает бесконечный результат. Но Visual Basic может справиться с таким вычислением и отобразить в текстовом поле Результат значение Infinity (Бесконечность). Способность обрабатывать некоторые условия деления на ноль является новой автоматически предоставляемой функцией Visual Basic .NET.
  • Когда вы закончите изучать этот и другие тесты, щелкните на кнопке Выход. Выполнение программы завершится, и появится среда разработки.
  • Теперь, чтобы узнать, как эти результаты были получены, посмотрите на код программы. Basic Math использует несколько стандартных элементов управления вводом, с которыми вы экспериментировали в лекции 3, и содержит процедуру события, которая использует переменные и операторы для обработки простых математических формул. Программа объявляет свои переменные в верхней части кода формы, и, таким образом, они могут быть использованы во всех процедурах событий формы Form1.

    Изучение кода программы Basic Math

  • Сделайте двойной щелчок мышью на кнопке Вычислить формы. Редактор кода отобразит процедуру события Button1_Click. В верхней части кода формы вы увидите следующий оператор, который объявляет две переменные типа Double:

    ' Объявляем переменные FirstNum и SecondNum
    Dim FirstNum, SecondNum As Double

    Я использовал тип Double потому, чтобы использовать тип переменных общего назначения, который может работать с различными числами - целыми, числами с десятичной точкой, очень большими числами, малыми числами и т.п. Переменные объявлены в одной и той же строке для сокращения записи. Обе переменные FirstNum и SecondNum имеют тип Double, и будут использоваться для хранения значений, вводимых в первом и втором текстовых полях соответственно.

  • Прокрутите Редактор кода вниз, чтобы увидеть содержимое процедуры события Button1_Click. Ваш экран будет выглядеть примерно так.

    Первые два оператора в этой процедуре события передают данные, введенные в объектах текстовых полей, в переменные FirstNum и SecondNum.

    ' Присваиваем значения текстовых полей переменным
    FirstNum = TextBox1.Text
    SecondNum = TextBox2.Text

    Элемент управления TextBox осуществляет передачу с помощью свойства Text - свойства, которое принимает текст, введенный пользователем, и делает его доступным для использования в программе. В этой книге я очень часто использую элемент управления TextBox. Когда он настроен на отображение нескольких строк и может изменять размеры, то может отображать очень много строк текста - даже целый файл!

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

    ' Определяем выбранную кнопку и вычисляем
    If RadioButton1.Checked = True Then
    TextBox3.Text = FirstNum + SecondNum
    End If

    Вспомните из лекции 3, что в каждый момент времени может быть выбран только один объект переключателя из группы объектов. Вы можете определить, выбран ли переключатель, проверив значение свойства Checked. Если оно равно True, то переключатель был выбран. Если свойство Checked равно False, то переключатель не был выбран. После этого простого теста вы готовы вычислить результат и отобразить его в объекте третьего текстового поля. Пока что это все об использовании базовых математических операторов. (Подробности о синтаксисе проверки If $$\dots$$ Then или структурах выбора вы узнаете в лекции 6 .)

  • Использование расширенных операторов: \, Mod, ^ и

    В дополнение к четырем базовым математическим операторам, Visual Basic содержит четыре дополнительных оператора, которые выполняют целочисленное деление (\), остаток от деления ( Mod ), возведение в степень (^) и слияние (конкатенацию) строк (). Эти операторы применяются в специальных математических формулах и приложениях, обрабатывающих строки. Следующая утилита (небольшая модификация программы Basic Math) показывает, как можно использовать в программе каждый из этих операторов.

    Новые сокращенные операторы

    Одна из новых функций Visual Basic .NET позволяет использовать в математических и строковых операциях, выполняющих изменение значения существующей переменной, сокращенные операторы. Например, если вы объединяете символ + и символ =, то вы можете прибавить к переменной какое-либо значение без необходимости повторять ее имя в формуле дважды. Таким образом, можно записать формулу X = X + 6 в виде X += 6. В следующей таблице показаны примеры таких сокращенных операторов:

    Операция Длинная запись Короткая запись
    Сложение (+) X = X + 6 X += 6
    Вычитание (-) X = X - 6 X -= 6
    Умножение (*) X = X * 6 X *= 6
    Деление (/) X = X / 6 X /= 6
    Целочисленное деление (\) X = X \ 6 X \= 6
    Возведение в степень (^) X = X ^ 6 X ^= 6
    Конкатенация строк () X = X "ABC" X = "ABC"

    Работа с расширенными операторами

  • В меню File (Файл) выберите Open (Открыть), а затем Project (Проект). Появится диалоговое окно Open Project (Открыть Проект).
  • Откройте проект Advanced Math, расположенный в папке c:\vbnet03sbs\Гл.5\advanced math.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем щелкните на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) откроется форма Advanced Math. Программа Advanced Math идентична программе Basic Math, за исключением операторов, показанных в переключателях и в программе.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Эта программа отображает два текстовых поля, в которых вы вводите числовые значения, группу переключателя операторов, поле, которое отображает результаты и две кнопки.
  • Введите в текстовом поле Переменная 1 число 9, а затем нажмите на (Tab).
  • Введите в текстовом поле Переменная 2 число 2. Теперь вы можете применить к этим двум значениям любой из дополнительных операторов.
  • Щелкните на переключателе Целочисленное деление, а затем щелкните на кнопке Вычислить. К этим двум переменным применится оператор, и в поле Результат появится число 4, как показано здесь.

    Целочисленное деление дает в результате операции деления только целое число. Хотя 9, деленное на 2, будет 4.5, операция целочисленного деления возвращает только первую - целую часть (целое число 4). Эта функция полезна, если вы работаете с чем-то, что не может быть легко разделено на дробные части, например, с количеством человек, которые помещаются в автомобиль.

  • Щелкните на переключателе Остаток от деления, а затем на кнопке Вычислить. В поле Результат появится число 1. Остаток от деления (Арифметический модуль) возвращает остаток после того, как одно число будет разделено на другое. Так как 9, деленное на 2, равно 4 с остатком 1 ( 2 * 4 + 1 = 9 ), то результат, производимый оператором Mod, равен 1. Помимо всего прочего, оператор Mod может помочь вам в отслеживании "остатков" в ваших вычислениях, таких как величина изменения, получившаяся после проведения финансовых транзакций.
  • Щелкните на переключателе Возведение в степень, а затем на кнопке Вычислить. В поле Результат появится число 81. Оператор возведения в степень (^) возводит число в указанную степень. Например, 9 ^ 2 равно 92, или 81. В Visual Basic формула 92 записывается как 9 ^ 2.
  • Щелкните на переключателе Конкатенация, а затем на кнопке Вычислить. В поле Результат появится число 92. Оператор конкатенации строк () объединяет две строки в одну, но не через операцию сложения. Результатом является комбинация символа "9" и символа "2". Конкатенация строк может выполняться с числовыми переменными - например, если вы отображаете счет бейсбольного матча так, как это делается в старых полях для отображения счета - но гораздо чаще конкатенация используется для строковых значений или переменных.

    Так как я объявил переменные FirstNum и SecondNum имеющими тип Double, вы не можете объединять с помощью написанного здесь кода программы слова или буквы. Попробуйте, например, следующий тест, который приводит к возникновению ошибки и завершению программы.

  • Введите в текстовом поле Переменная 1 слово birth, в текстовом поле Переменная 2 введите слово day, убедитесь, что выбран переключатель Конкатенация, а затем щелкните на Вычислить. Visual Basic не сможет обработать введенные вами текстовые значения; программа остановится, а на экране появится показанное на рисунке сообщение об ошибке.

    Этот тип ошибки называется ошибкой времени исполнения - ошибкой, которая проявляется не на стадии проектирования и компиляции программы, а позднее, когда программа выполняется и наталкивается на условия, которые она не знает, как обрабатывать. Если это непонятно, вы можете представить, что Visual Basic просто предлагает вам современную интерпретацию заявления роботов "Нет решения!" из научно-фантастических фильмов 50-х годов. Новое произносимое компьютером сообщение "Cast from string ("birth") to Double is not valid" ("Приведение строки ("birth") к типу Double является недопустимым") означает, что слова, которые вы ввели в текстовые поля (birth и day) не могут быть присвоены - или преобразованы - компилятором Visual Basic переменным типа Double. Типы Double могут содержать только числа. Точка.

  • Щелкните в диалоговом окне среды разработки Microsoft на кнопке Continue (Продолжить). Если появляется еще одно диалоговое окно среды разработки, которое указывает, что для текущего места программы нет исходного кода, щелкните на OK.

    Ваша программа завершится и возвратит вас в среду разработки. Кнопка Break (Прервать), о которой пойдет речь в лекции 8, позволяет использовать инструменты Visual Studio для отладки, чтобы узнать об имеющихся в вашем программном коде дефектах или ошибках.

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

  • Прокрутите код в Редакторе кода к самому его началу. Вы увидите следующие комментарий и оператор программы:

    ' Объявляем переменные FirstNum и SecondNum
    Dim FirstNum, SecondNum As Double

    Как вы можете вспомнить из предыдущего упражнения, FirstNum и SecondNum - это переменные, которые хранят числа, получаемые из объектов TextBox1 и TextBox2.

  • Теперь смените тип данных с Double на String так, что вы сможете протестировать, как работает оператор конкатенации () строк.
  • Теперь прокрутите Редактор кода вниз, чтобы увидеть, как в коде программы использованы дополнительные операторы. Вы увидите следующий код:

    ' Присваиваем значения текстовых полей переменным
    FirstNum = TextBox1.Text
    SecondNum = TextBox2.Text
    
    ' Определяем выбранную кнопку и вычисляем
    If RadioButton1.Checked = True Then
    TextBox3.Text = FirstNum \ SecondNum
    End If
    If RadioButton2.Checked = True Then
    TextBox3.Text = FirstNum Mod SecondNum
    End If
    If RadioButton3.Checked = True Then
    TextBox3.Text = FirstNum ^ SecondNum
    End If
    If RadioButton4.Checked = True Then
    TextBox3.Text = FirstNum  SecondNum
    End If

    Аналогично программе Basic Math, эта программа загружает данные из текстовых полей и помещает их в переменные FirstNum и SecondNum. Затем программа проверяет, какой переключатель выбрал пользователь, и вычисляет требуемую формулу. В этой процедуре события использованы операторы целочисленного деления (\), остатка от деления ( Mod ), возведения в степень (^) и конкатенации строк. Теперь, когда вы изменили тип данных переменных на String, снова запустите программу и посмотрите, как работает с текстом оператор .

  • Щелкните на кнопке Start (Начать).
  • Введите в текстовом поле Переменная 1 слово birth, в текстовом поле Переменная 2 введите слово day, щелкните на Конкатенация, а затем щелкните на Вычислить. Теперь программа объединит строковые значения и не выдаст ошибки времени выполнения, как показано ниже.

  • Чтобы закрыть программу, щелкните на кнопке Выход.

    Совет. Избежать ошибок времени исполнения очень сложно - даже наиболее продвинутые приложения, такие как Microsoft Word или Microsoft Excel, иногда наталкиваются на ошибочные ситуации, с которыми они не могут справиться, что приводит к возникновению ошибок времени выполнения и программа рушится. В создании целостных и надежных приложений вам может помочь проектирование ваших программ так, чтобы они обрабатывали множество различных типов данных и условий работы. В лекции 9 вы узнаете о еще одном полезном инструменте для предотвращения обрушений из-за ошибок выполнения - структурном обработчике ошибок (structured error handler).

  • Работа с математическими методами среды .NET Framework

    Иногда в программах приходится выполнять более сложные действия с числами: округлить число, вычислить сложное математическое выражения или использовать случайные числа. Математические методы, показанные в следующей таблице, помогут вам работать с числами в формулах. Эти методы предоставляются .NET Framework, библиотекой классов, которая позволяет воспользоваться мощью операционной системы Microsoft Windows и выполнить множество часто возникающих задач программирования. .NET Framework - это новая функция Visual Studio .NET, которая совместно используется Microsoft Visual Basic, Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual J# и другими инструментами Visual Studio. Это базовый интерфейс, который становится частью самой операционной системы Windows. .NET Framework организована в виде классов, которые вы можете включать в ваши проекты программирования по их именам с помощью оператора Imports. Этот процесс достаточно прост, и сейчас вы поэкспериментируете с ним на примере математического метода из класса System.Math среды .NET Framework.

    Следующая таблица предлагает неполный список математических методов класса System.Math. Аргумент n в этой таблице представляет число, переменную или выражение, которое вы хотите передать в метод для обработки. Если вы используете какие-либо из этих методов, убедитесь, что вы поместили оператор

    Imports System.Math

    в Редакторе кода в самое начало кода вашей формы.

    Метод Назначение
    Abs(n) Возвращает абсолютное значение числа n.
    Atan(n) Возвращает арктангенс числа n в радианах.
    Cos(n) Возвращает косинус угла n. Угол n задается в радианах.
    Exp(n) Возвращает константу e, возведенную в степень n.
    Sign(n) Возвращает -1, если n меньше 0, 0 - если равно 0, и +1, если n больше 0.
    Sin(n) Возвращает синус угла n. Угол n задается в радианах.
    Sqrt(n) Возвращает квадратный корень из числа n.
    Tan(n) Возвращает тангенс угла n. Угол n задается в радианах.

    Использование класса System.Math для вычисления квадратного корня

  • В меню File (Файл) выберите New (Создать), а затем на Project (Проект). Появится диалоговое окно New Project (Создать проект).
  • В папке c:\vbnet03sbs\Гл.5 создайте новый проект Windows Application на Visual Basic с именем My Framework Math. Будет создан новый проект и в Windows Forms Designer (Конструкторе Windows Forms) появится пустая форма.
  • Щелкните на элементе управления Button на закладке Windows Forms окна Toolbox (Область элементов) и создайте в верхней части вашей формы объект кнопки.
  • Щелкните в области элементов на элементе управления TextBox и нарисуйте под объектом кнопки текстовое поле.
  • В свойстве Text объекта кнопки напишите Квадратный корень, а свойство Text текстового поля сделайте пустым.
  • Чтобы вызвать окно Редактора кода, сделайте двойной щелчок мышью на объекте кнопки.
  • В самом верху Редактора кода, над оператором Public Class Form1, введите следующий оператор программы:

    Imports System.Math

    Оператор Imports добавляет в ваш проект библиотеку объектов, свойств и методов. Этот оператор должен быть первым оператором программы - он должен идти даже перед переменными, которые вы объявляете для всей формы, и оператором Public Class Form1, который создается автоматически. Мы выбрали библиотеку System.Math, предоставляемую .NET Framework, в которой собраны объекты, свойства и методы для выполнения математических операций.

  • В Редакторе кода спуститесь вниз и добавьте в процедуру события Button1_Click между операторами Private Sub и End Sub следующий код:

    Dim Result As Double
    Result = Sqrt(625)
    TextBox1.Text = Result

    Эти три оператора объявляют переменную типа Double с именем Result, используют метод Sqrt для вычисления квадратного корня из числа 625, и присваивают значение переменной Result свойству Text объекта текстового поля так, что в нем отображается ответ вычисления.

  • Чтобы сохранить ваши изменения, щелкните на кнопке Save All (Сохранить все) на стандартной панели инструментов.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа Framework Math запустится на выполнение в среде разработки.
  • Щелкните на кнопке Квадратный корень. Visual Basic вычислит квадратный корень из 625 и, как показано ниже, отобразит в текстовом поле результат этого вычисления (25). Метод Sqrt работает!

  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.
  • Чтобы использовать в вашей программе какой-либо класс .NET Framework, включите оператор Imports и укажите требуемую библиотеку классов. Вы можете использовать эту методику для использования любого класса .NET Framework. В этой книги вы встретите еще несколько примеров на эту тему.

    Старшинство операторов

    В последних упражнениях вы экспериментировали с несколькими математическими и одним строковым оператором. Visual Basic позволяет смешивать использование нескольких математических операторов так, как вы делаете это в формулах, при условии, что каждая числовая переменная и выражение отделены от других оператором. Например, вот допустимая формула Visual Basic:

    Total = 10 + 15 * 2 / 4 ^ 2

    Эта формула обрабатывает несколько значений и присваивает результат переменной с именем Total. Но как Visual Basic вычисляет это выражение? Другими словами, в какой последовательности математические операторы используются Visual Basic при решении этой формулы? Возможно, вы не заметили, но порядок вычисления в этом примере имеет огромное значение.

    Visual Basic решает эту дилемму, устанавливая определенный порядок старшинства математических операций. Этот список правил говорит Visual Basic, какой оператор при вычислении выражения, содержащего более одного оператора, должен использоваться первым, какой - вторым, и т.д. Следующая таблица содержит перечень операторов с первого до последнего в порядке, в котором они вычисляются. (Операторы на одном уровне этой таблицы вычисляются слева направо в том порядке, в котором они появляются в выражении.)

    Операторы Порядок вычисления
    ( ) Первыми всегда вычисляются значения в круглых скобках.
    ^ Возведение числа в степень вычисляется во вторую очередь.
    - Создание отрицательного числа (смена знака) идет третьим.
    * / Четвертыми идут умножение и деление.
    \ Пятое - целочисленное деление.
    Mod Шестое - остаток от деления.
    + - Последние - это сложение и вычитание.

    Имея порядок приоритетов из этой таблицы, выражение

    Total = 10 + 15 * 2 / 4 ^ 2

    будет вычислено Visual Basic по следующим шагам.

    Total = 10 + 15 * 2 / 4 ^ 2
    Total = 10 + 15 * 2 / 16
    Total = 10 + 30 / 16
    Total = 10 + 1.875
    Total = 11.875

    Следующий шаг: использование в формулах круглых скобок

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

    Number = (8 - 5 * 3) ^ 2

    определив сначала значение в скобках (-7), а уже затем выполнит возведение в степень - хотя даже и возведение в степень имеет в соответствии с приведенной выше таблицей более высокий приоритет, чем вычитание и умножение. Чтобы еще больше изменить порядок вычисления, вы можете использовать в формуле вложенные скобки. Например,

    Number = ((8 - 5) * 3) ^ 2

    указывает Visual Basic вычислить сначала разницу внутренних скобок, затем выполнить операцию во внешних скобках, и только затем определить степень. Результат, полученный по обеим формулам, будет различным: первая формула даст в результате 49, а вторая - 81. Скобки могут как изменить результат математической операции, так и сделать ее более легко читаемой.

    Краткая справка по лекции 5

    Чтобы Сделайте следующее
    Объявить переменную

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

    Dim Country As String
    Изменить значение переменной

    Присвойте новое значение с помощью оператора присвоения (=). Например:

    Country = "Япония"
    Получить ввод с помощью диалогового окна

    Используйте функцию InputBox и присвойте ее результат переменной. Например:

    UserName = InputBox("Как тебя зовут?")
    Отобразить вывод в диалоговом окне

    Используйте функцию MsgBox. (Строка, отображаемая в этом диалоговом окне, может быть сохранена в переменной.) Например:

    Forecast = "Переменная облачность, возможны осадки."
    MsgBox(Forecast, , "Погода в Испании")
    Создать константу

    Введите ключевое слово Const, за которым будет следовать имя константы, оператор присвоения (=), тип данных константы и фиксированное значение. Например:

    Const JackBennysAge As Short = 39
    Создать формулу

    Объедините вместе числовые переменные или значения и один или несколько математических операторов, а затем присвойте результат переменной или свойству. Например:

    Result = 1 ^ 2 * 3 \ 4 'this equals 0
    Объединить текстовые строки

    Используйте оператор конкатенации строк (). Например:

    Msg = "Здравствуй"  ","  " мир!"
    Включить библиотеку классов из .NET Framework

    Поместите в самом верху кода формы оператор Imports, который определяет библиотеку классов. Например:

    Imports System.Math
    Вызвать метод из включенной библиотеки классов

    Используйте имя метода, и, если необходимо, добавьте к нему аргументы так, чтобы использовать его в формуле или операторе программы. Например, чтобы вызвать метод Sqrt из библиотеки классов System.Math:

    Hypotenuse = Sqrt(x ^ 2 + y ^ 2)
    Управлять порядком вычисления формулы

    Используйте в формуле круглые скобки. Например:

    Result = 1 + 2 ^ 3 \ 4		' это равно 3
    Result = (1 + 2) ^ ( 3 \ 4)	' это равно 1
    Страницы:

    В этой лекции вы узнаете, как:

  • использовать переменные для хранения данных вашей программы;
  • запрашивать данные с помощью функции InputBox ;
  • отображать сообщения с помощью функции MsgBox ;
  • работать с различными типами данных;
  • использовать в формулах математические операторы и функции;
  • использовать математические методы класса System.Math из .NET Framework;
  • использовать переменные и операторы.
  • В части 1 вы узнали, как создавать интерфейс пользователя программы на Visual Basic .NET и как компилировать и запускать программу в среде разработки Microsoft Visual Basic. В следующих пяти лекциях вы узнаете о коде программы на Visual Basic - операторах и ключевых словах, которые составляют ядро программы, написанной на Visual Basic. Прочитав часть 2, вы будете готовы к изучению более сложных вопросов.

    В этой лекции вы узнаете о том, как использовать переменные для временного хранения данных вашей программы, и как использовать математические операторы для выполнения сложения и умножения. Вы также узнаете, как использовать для вычислений математические функции, и использовать функции InputBox и MsgBox для сбора и представления информации с помощью диалоговых окон. Наконец, вы впервые посмотрите на использование в .NET Framework классов, которые выполняют в программе различную полезную работу.

    Что нового в Visual Basic .NET?

  • Чтобы обеспечить соблюдение правильных методов программирования и большую ясность кода, все переменные Visual Basic .NET перед их использованием должны быть объявлены. Неявное объявление переменных (использование переменных без их объявления) возможно только при использовании оператора Option Explicit Off - но эта практика крайне не рекомендуется.
  • Visual Basic больше не поддерживает тип данных Variant. Чтобы определить тип данных, который могут хранить переменные, вы должны объявить все переменные с помощью Dim и ключевого слова As.
  • Имеется несколько новых базовых типов данных, а некоторые старые типы данных теперь имеют другие диапазоны допустимых значений. Например, 16-битный тип данных Short, 32-битный тип данных Integer и 64-битный тип данных Long. Тип данных Currency из Visual Basic 6 был заменен типом данных Decimal.
  • Visual Basic .NET содержит новую опцию Option Strict. Когда Option Strict включена переменные при их сложении, сравнении или объединении обычно должны иметь один и тот же тип данных. Иногда переменные могут иметь различные типы, но только при условии, что при этом не произойдет потеря данных. Это означает, что преобразование типов в Visual Basic .NET более важно, чем в Visual Basic 6, и чтобы сделать различные типы совместимыми друг с другом, вы должны знать о функциях преобразования типов, таких, как CInt, CLng и CType. При обновлении приложений используйте команду Option Strict Off для продолжения комбинирования типов данных, как это делалось в Visual Basic 6 (разрешив то, что известно как автоматическая коррекция типов). Но эта функция должна использоваться очень редко, и не стоит полагать, что она будет поддерживаться в будущих версиях Visual Basic .NET.
  • Теперь имеется несколько кратких записей математических выражений с использованием арифметических операторов, таких, как сложение (+), вычитание (-) и умножение (*). Это краткие записи позволяют вам записать такую формулу, как X = X + 2, с помощью синтаксиса X += 2.
  • Visual Basic .NET больше не предоставляет для математических операций встроенных ключевых слов (таких как Abs или Cos ). Вместо этого для математических функций используются методы библиотеки классов System.Math, являющейся частью .NET Framework. Функциональность этих методов аналогична функциям Visual Basic 6, хотя некоторые имена изменились (например, Sqr теперь называется Sqrt ).
  • Visual Studio содержит объект MessageBox, который является альтернативой MsgBox для отображения окон сообщений. Чтобы вывести окно сообщения, используйте метод MessageBox.Show.
  • Оператор программы в Visual Basic

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

    End

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

    Label1.Text = TimeString

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

    В следующих лекциях вы узнаете о наиболее важных ключевых словах и операторах программы, об объектах, свойствах и методах, предоставляемых элементами управления Visual Studio и .NET Framework. Эти ключевые слова и объекты прекрасно дополнят те навыки программирования, которые вы уже получили, и помогут вам писать по-настоящему мощные программы. При написании почти каждой программы вам потребуется знакомство с переменными и типами данных.

    Использование переменных для хранения информации

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

    Использование переменных в программе на Visual Basic .NET требует некоторого планирования. Прежде чем вы сможете использовать переменную, вы должны выделить память, которую эта переменная будет использовать. Этот процесс несколько напоминает бронирование мест в театре или на спортивном матче. Процесс резервирования - или объявления - переменных описан в следующем разделе.

    Выделение пространства для переменных: оператор Dim

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

    Чтобы в Visual Basic .NET объявить переменную, введите имя переменной после оператора Dim. ( Dim означает dimension - величина.) Это объявление при выполнении программы выделяет для переменной место в памяти и дает возможность компилятору Visual Basic узнать тип данных, который он может ожидать встретить в дальнейшем. Хотя это объявление можно сделать в любом месте кода программы (при условии, что оно появляется до использования переменной), большинство программистов объявляют переменные в одном месте в начале их процедур обработки событий или модулей кода.

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

    Dim LastName As String

    Заметьте, что в дополнение к указанию имени переменной, я использовал ключевое слово As, которое присваивает переменной определенный тип, и я определил этот тип с помощью ключевого слова String. (Далее в этой лекции вы узнаете о других типах данных.) Строковая переменная содержит текстовую информацию: слова, буквы, символы - даже цифры. Я обнаружил, что очень часто использую строковые переменные; они хранят имена, места, строки из стихотворений, содержимое файла и много других "словесных" данных. Почему необходимо объявлять переменные? Visual Basic требует указания имен и типов переменных заранее, чтобы компилятор смог выделить память программы, которая понадобится для хранения и обработки информации, хранящейся в этих переменных. Управление памятью для вас может не представлять никакой проблемы (в конце концов, современные персональные компьютеры имеют большой объем RAM и гигабайты свободного дискового пространства), но в некоторых программах свободная память может очень быстро заполниться, и считается хорошей практикой воспринимать распределение памяти всерьез, даже если вы делаете в программировании первые шаги. Различные типы переменных требуют различные объемы памяти и имеют ограничения на размеры.

    Примечание. В некоторых предыдущих версиях Visual Basic конкретные типы переменных (такие, как String или Integer ) не требовались - информация просто хранилась в общем типе данных, который назывался Variant. Он мог хранить данные любого размера и формата. В Visual Basic .NET этот тип данных не поддерживается. Хотя он и был удобен для начинающих программистов, его реализация делала его медленным и неэффективным, и он позволял слишком легко производить преобразования из одного типа в другой - что приводило к непредсказуемым результатам.

    После того, как вы создали переменную, вы можете присвоить ей информацию, используя оператор присвоения (=). Например, следующий оператор программы присваивает переменной LastName имя "Иванов":

    LastName = "Иванов"

    Обратите внимание, что я присвоил переменной LastName текстовое значение, так как она имеет тип String. Этой переменной также можно присвоить значения с пробелами, символами или числами, такие как

    LastName = "1313 Петров Вася"

    но переменная по-прежнему будет рассматриваться как строковое значение. Числовая часть может использоваться в математических вычислениях, только если с помощью одной из набора функций преобразования преобразовать ее в целое значение или значение с плавающей точкой. Это обсуждается далее.

    После того, как переменной LastName присвоено значение, она может использоваться в коде вместо фамилии "Иванов". Например, оператор присвоения

    Label1.Text = LastName

    отобразит слово "Иванов" в первой метке ( Label1 ) на вашей форме.

    Примечание. Если в Visual Basic .NET вы все же хотите объявить переменные по-старому, то есть без явного их объявления с помощью оператора Dim, то можете поместить в самом верху вашего модуля кода программы (перед всеми процедурами событий) оператор Option Explicit Off. Он отменит требование Visual Basic по умолчанию, чтобы все переменные были объявлены перед их использованием. Я не рекомендую использовать этот оператор как постоянное добавление к вашему коду, но он (временно) может быть полезен при переносе старых программ на Visual Basic в Visual Studio .NET.

    Использование переменных в программе

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

    Изменение значения переменной

  • Запустите Visual Studio.
  • В меню File (Файл) выберите пункт Open (Открыть), а затем щелкните на Project (Проект). Откроется диалоговое окно Open Project (Открытие проекта).
  • Откройте проект Variable Test, расположенный в папке c:\vbnet03sbs\Гл.5\variable test.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор) . В Windows Forms Designer (Конструкторе Windows Forms) появится форма Variable Test. Variable Test - это "скелет" программы - он содержит форму с метками и кнопками для отображения вывода, но почти не содержит кода программы. В этом упражнении вы добавите этот код. Форма Variable Test выглядит так.

    Эта форма содержит две метки и две кнопки. Для отображения информации в каждой из этих меток вы будете использовать переменные.

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

  • Сделайте двойной щелчок мышью на кнопке Показать. В Редакторе кода появится процедура события Button1_Click.
  • Чтобы объявить и использовать переменную LastName, введите следующие операторы программы:

    Dim LastName As String
    
    LastName = "Сидоров"
    Label1.Text = LastName
    
    LastName = "Боденштейн фон Карлштадт"
    Label2.Text = LastName

    Эти операторы программы разбиты на три группы. Первый оператор объявляет переменную LastName с помощью оператора Dim и типа String. Вторая и третья строки присваивают переменной LastName фамилию "Сидоров", а затем отображают это имя в первой метке формы. Этот пример демонстрирует одно из наиболее частых случаев использования переменных в программе - передачу информации в свойство.

    Четвертая строка присваивает переменной LastName фамилию "Боденштейн фон Карлштадт" (другими словами, она изменяет содержимое этой переменной). Обратите внимание, что вторая строка длиннее, чем первая и содержит несколько пробелов. Когда вы присваиваете переменным текстовые строки, или используете строки в других местах, вы должны заключать текст этих строк в кавычки. (Для чисел этого делать не требуется.)

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

  • Чтобы снова отобразить форму, щелкните на закладке Form1.vb [Design].
  • Сделайте двойной щелчок мышью на кнопке Выход. В Редакторе кода появится процедура события Button2_Click.
  • Чтобы остановить программу, введите оператор

    End

    Ваш экран должен выглядеть примерно так.

  • Чтобы сохранить изменения, щелкните на кнопке Save All (Сохранить все).
  • Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Щелкните на кнопке Показать. Программа объявляет переменную, присваивает ей два значения и копирует каждое из значений в соответствующую метку на форме. Программа производит следующий вывод:

  • Чтобы остановить программу, щелкните на кнопке Выход. Программа остановится, и вы вернетесь в среду разработки.
  • Соглашения об именах переменных

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

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

    Хотя имена переменных могут быть практически любой длины, старайтесь делать их не длиннее 33 символов, чтобы их было легко читать. (В Visual Basic 6 имена переменных были ограничены 255 символами, но это ограничение теперь отсутствует.)

    Назначайте переменным информативные имена, комбинируя, когда это имеет смысл, одно или несколько слов. Например, имя переменной SalesTaxRate гораздо яснее, чем Tax или Rate.

    Можно использовать комбинации заглавных и строчных символов и цифр. Приемлемый вариант - делать заглавной первую букву каждого слова имени переменной; например, DateOfBirth. Однако некоторые программисты предпочитают использовать так называемую "верблюжью" нотацию (делая первую букву имени переменной маленькой), чтобы различать имена переменных и имена функций и модулей (которые обычно начинаются с большой буквы). Примерами верблюжьей нотации могут служить имена dateOfBirth, employeeName и counter.

    Не используйте в качестве имен переменных ключевые слова Visual Basic, имена объектов или свойств. Если вы это сделаете, то при попытке запуска программы получите сообщение об ошибке.

    Начинайте каждое имя переменной с двух- или трехсимвольной аббревиатуры, которая обозначает тип данных, хранимый в этой переменной. Например, чтобы показать, что переменная Name содержит строковые данные, используйте strName. Хотя сейчас вам не стоит об этом сильно беспокоиться, в дальнейшем вы должны обратить на это соглашение внимание - вы увидите его в справочной системе Visual Studio и во многих книгах по программированию на Visual Basic. (Это соглашение и схема сокращений для аббревиатур были созданы инженером Microsoft Чарльзом Симони и иногда называется венгерской нотацией.)

    Использование переменных для хранения введенных данных

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

    Получение ввода с помощью InputBox

  • В меню File (Файл) выберите Open (Открыть), а затем Project (Проект). Появится диалоговое окно Open Project (Открыть проект).
  • Откройте проект Input Box, расположенный в папке c:\vbnet03sbs\Гл.5\input box. В среде разработки откроется проект Input Box. Input Box - это "скелет" программы.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). Эта форма содержит одну метку и две кнопки. Для ввода данных пользователем, используйте функцию InputBox, а затем отобразите эти данные в метке формы.
  • Дважды щелкните на кнопке Ввести данные. В Редакторе кода появится процедура обработки события Button1_Click.
  • Чтобы объявить две переменных и использовать функцию InputBox, введите следующие операторы программы:

    Dim Prompt, FullName As String
    Prompt = "Введите свое имя, пожалуйста."
    
    FullName = InputBox(Prompt)
    Label1.Text = FullName

    На этот раз с помощью оператора Dim вы объявляете сразу две переменные: Prompt и FullName. Обе переменные объявляются с использованием типа String. (Вы можете объявить в одной строке столько переменных, сколько хотите, но при условии, что они имеют один и тот же тип.) Заметьте, что в Visual Basic 6 эта запись привела бы к другому результату. Оператор Dim создал бы переменную Prompt типа Variant (так как никакого типа не указано), а затем создал бы переменную FullName типа String. Но эта логическая несообразность в Visual Basic .NET была устранена.

    Вторая строка процедуры присваивает переменной Prompt текстовую строку. Это сообщение будет использовано как текстовый аргумент для функции InputBox. (Аргумент - это значение или выражение, передаваемое в процедуру или функцию.) Следующая строка вызывает функцию InputBox и присваивает результат этого вызова (текстовую строку, введенную пользователем) переменной FullName. InputBox - это специальная функция Visual Basic, которая отображает на экране диалоговое окно, в котором запрашивает пользовательский ввод. В дополнение к строке запроса функция InputBox поддерживает другие аргументы, которые вы иногда будете использовать. За подробностями обратитесь к справочной системе Visual Basic.

    После того, как InputBox возвратит в программу текстовую строку, четвертый оператор этой процедуры помещает имя пользователя в свойство Text объекта Label1 и, таким образом, отображает его в форме.

    Примечание. В предыдущих версиях BASIC функция InputBox писалась с символом $ на конце, чтобы помочь программистам запомнить, что функция возвращает информацию в виде строкового ($) типа данных. Строковые переменные также определялись с помощью символа $. В настоящее время мы не используем символ типа. Строковый ($), целочисленный (%) и другие символы типов устарели.

  • Сохраните ваши изменения. Помните, на какой кнопке панели инструментов надо щелкнуть, чтобы сохранить ваш проект? Если забыли, то обратитесь к шагу 10 предыдущего упражнения.
  • Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов. Программа запустится на выполнение в среде разработки.
  • Щелкните на кнопке Ввести данные. Visual Basic выполнит процедуру события Button1_Click, и на экране откроется диалоговое окно Input Box, как показано здесь.

  • Введите ваше полное имя, а затем щелкните на OK. Функция InputBox возвращает ваше имя в программу и помещает его в переменную FullName. Затем программа использует эту переменную для отображения вашего имени в форме, как показано здесь:

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

  • Чтобы завершить выполнение программы, щелкните на кнопке Выход формы. Программа закроется, и вернется среда разработки.
  • Что такое функция?

    InputBox - это специальное ключевое слово или функция, Visual Basic. Функция - это совокупность операторов, которые выполняют некую работу (например, запрашивают информацию у пользователя или вычисляют число по формуле), а затем возвращают результат в основную программу. Значение, возвращаемое функцией, может быть присвоено переменной, как это сделано в программе Input Box, а может быть присвоено свойству, другому оператору или функции. Функции Visual Basic часто используют один или более аргументов, определяющих их действия. Например, только что использованная функция InputBox использовала переменную Prompt для отображения в диалоговом окне инструкций для пользователя. Когда функция использует более одного аргумента, эти аргументы разделаются запятыми, а вся группа аргументов заключается в круглые скобки. Следующий оператор показывает вызов функции с двумя аргументами:

    FullName = InputBox(Prompt, Title)

    Использование переменной для вывода

    Вы можете отображать содержимое переменной, присваивая значение этой переменной свойству (такому, как свойство Text объекта метки), или передавая переменную как аргумент в функцию диалогового окна. Одной из функций диалоговых окон для отображения вывода является функция MsgBox. Когда вы вызываете эту функцию, она отображает диалоговое окно, иногда называемое окном сообщения. Вы можете определить различные опции этого окна. Аналогично функции InputBox, функция MsgBox имеет один или несколько аргументов, а ее результат работы может быть присвоен переменной. Синтаксис функции MsgBox имеет вид

    ButtonClicked = MsgBox(Prompt, Buttons, Title)

    где Prompt - это текст, отображаемый в окне сообщения, Buttons - это число, определяющее кнопки, значки и другие опции отображения окна сообщения, а Title - это текст заголовка окна сообщения. Результат работы эта функция возвращает в переменную ButtonClicked, и будет соответствовать кнопке диалогового окна, которую нажал пользователь.

    Если вы просто выводите сообщение с помощью функции MsgBox, то переменная ButtonClicked, оператор присвоения (=), аргумент Buttons и аргумент Title необязательны. В следующем упражнении вы будете использовать только аргумент Title. За дополнительной информацией по аргументам (включая различные кнопки, которые вы можете включить в MsgBox и некоторые другие возможности) обратитесь к справочной системе Visual Basic.

    Примечание. Visual Basic .NET предоставляет для отображения текста с помощью диалогового окна одновременно функцию MsgBox и класс MessageBox. Класс MessageBox является частью пространства имен System.Windows.Forms, принимает аргументы, как и MsgBox, и отображается с помощью метода Show. В этой книге я буду использовать как MsgBox, так и MessageBox.

    Теперь добавьте в программу Input Box функцию MsgBox, чтобы отобразить имя, которое пользователь ввел в диалоговом окне Input Box.

    Отображение сообщения с помощью MsgBox

  • Если Редактор кода не открыт, сделайте двойной щелчок мышью на кнопке Ввести данные формы Input Box. В Редакторе кода появится процедура события Button1_Click. (Это код, который вы ввели в предыдущем упражнении.)
  • Выделите в процедуре события следующий оператор (последняя строка):

    Label1.Text = FullName

    Этот оператор отображает в метке содержимое переменной FullName.

  • Нажмите клавишу (Delete), чтобы удалить эту строку. Оператор будет удален из Редактора кода.
  • Введите вместо него в процедуре события следующую строку:

    MsgBox(FullName, , "Результат ввода")

    Этот новый оператор вызывает функцию MsgBox, отображает в диалоговом окне содержимое переменной FullName и помещает в его строку заголовка слова из Input Results. (Необязательный аргумент Buttons и переменная ButtonClicked здесь не имеют значения и были опущены.) Ваша процедура события должна выглядеть так.

  • Щелкните на кнопке Start (Начать) стандартной панели инструментов.
  • Щелкните на кнопке Ввести данные, введите в поле ввода свое имя, а затем щелкните на OK. Visual Basic сохранит ввод в переменной FullName, а затем отобразит его в окне сообщения. Ваш экран должен выглядеть примерно так.

  • Чтобы закрыть окно сообщения, щелкните на OK. Затем щелкните на Выход, чтобы закрыть программу. Программа закроется, и вернется среда разработки.
  • Примечание. Когда вы запускаете программу на Visual Basic, Visual Studio .NET автоматически сохраняет ваш проект перед тем, как запустить компилятор и отобразить главную форму. Это сделано в целях безопасности, чтобы предотвратить потерю данных при возникновении каких-либо неожиданных событий в процессе компиляции.

    Работа с конкретными типами данных

    Тип данных String полезен при обработке текста. Но как насчет чисел, дат и информации других типов? Чтобы обеспечить эффективное управление памятью для всех типов данных, Visual Basic предоставляет несколько дополнительных типов данных, которые вы можете использовать для ваших переменных. Многие из них являются уже знакомыми вам по предыдущим версиям BASIC или Visual Basic, а некоторые из этих типов данных являются новыми или были в Visual Studio .NET изменены, чтобы обеспечить более эффективную обработку данных на новых 64-разрядных компьютерах.

    Следующая таблица содержит перечень базовых (или простых) типов данных Visual Basic .NET. Если вы будете выбирать для переменных правильные типы данных (размер которых не слишком маленький, но и не очень велик), то получите дополнительное преимущество в производительности. В следующем упражнении вы увидите, как работают некоторые из этих типов данных.

    Примечание. Размер области хранения переменной измеряется в битах. Объем пространства, необходимый для хранения одного стандартного (ASCII) символа клавиатуры в памяти, составляет 8 бит, что равняется одному байту.

    Использование базовых типов данных в коде

  • В меню File (Файл) укажите на Open (Открыть), а затем щелкните на Project (Проект). Появится диалоговое окно Open Project (Открыть проект).
  • Откройте проект Data Types, расположенный в папке c:\vbnet03sbs\ Гл.5\data types.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). Data Types - это законченная программа на Visual Basic, которая демонстрирует, как работают некоторые из основных типов данных. Вы должны запустить эту программу, чтобы посмотреть, как выглядят эти типы данных, а затем увидеть, как в коде программы объявлены и используются переменные. Вы также узнаете, где следует располагать объявления переменных так, что они будут доступны для всех процедур событий вашей программы.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Появится следующее окно приложения.

    Программа Data Types позволяет вам экспериментировать с 11 типами данных, включая целый тип, тип значений с плавающей точкой одинарной точности и тип дат. Когда вы выделяете название типа в поле списка, программа отображает пример данных этого типа.

  • Щелкните в поле списка на типе Integer. В поле Пример данных появится число 37 500 000, как показано на следующей иллюстрации. Заметьте, что ни один из типов данных Short, Integer и Long не позволяет вводить или отображать в их значениях десятичные точки. Чтобы отобразить точки, нужно использовать функцию Format.

  • Щелкните в поле списка на типе Date. В поле Пример данных появится дата 3/1/1963.
  • Чтобы увидеть, как Visual Basic отображает типы данных в поле Пример данных, щелкните в поле списка на каждом из них.
  • Чтобы остановить программу, щелкните на кнопке Выход. Теперь изучите, как в форме объявляются базовые типы данных, и как они используются в процедуре события ListBox1.SelectedIndex.
  • Сделайте двойной щелчок мышью на самой форме (но не на одном из ее объектов), а затем увеличьте окно Редактора кода так, чтобы видеть как можно больше кода. Редактор кода будет иметь следующий вид.

    В верхней части Редактора кода вы увидите строку, которая гласит: "Windows Form Designer generated code" (Код, автоматически созданный конструктором форм Windows). Если вы щелкните на знаке "плюс" рядом с этой строкой, то вы увидите операторы, добавленные в ваш проект самим Visual Basic, и которые гарантируют, что объекты, которые вы разместили в форме, имеют корректные свойства и форма загружается корректно. В предыдущих версиях Visual Basic этот "настроечный" код был недоступен, но теперь он существует в каждом файле формы, и вы можете изучить внутреннюю работу формы и, если хотите, настроить ее. (Я не рекомендую настраивать код, сгенерированный Windows Forms Designer (Конструктором Windows Forms), до тех пор, пока вы не закончите читать эту книгу и не будете чувствовать себя в программировании на Visual Basic достаточно уверенно.) Под кодом, сгенерированным Windows Forms Designer (Конструктор Windows Forms), вы увидите около десятка операторов программы, которые я добавил для объявления в вашей программе 11 переменных - по одной для каждого из базовых типов данных Visual Basic. (Я не создал примера для типа Object, но мы будем экспериментировать с ним в последующих лекциях.) Разместив все операторы Dim здесь - в верхней части области инициализационного кода формы, я гарантировал, что все переменные будут доступны - или будут иметь область видимости - во всех процедурах событий формы. Таким образом, я могу установить значение переменной в одной процедуре события, а прочитать его - в другой. Обычно переменные доступны только в той процедуре события, в которой они объявлены. Чтобы сделать их доступными для всей формы, необходимо объявить переменные в верхней части кода формы.

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

  • Прокрутите Редактор кода вниз и изучите процедуру события Form1_Load. Вы увидите следующие операторы, которые добавляют элементы в объект списка программы. (Вы должны помнить этот синтаксис по лекции 3 - я использовал здесь несколько аналогичных операторов.)

  • Прокрутите вниз и изучите процедуру события ListBox1_SelectedIndexChanged. Процедура события ListBox1_SelectedIndexChanged обрабатывает выбор, который вы делаете в поле списка и выглядит так.

    Сердцем этой процедуры события является структура выбора Select Case. В следующей лекции мы обсудим, как эта группа операторов программы из нескольких вариантов выбирает только один. А сейчас обратите внимание, как каждый выбор блока Select Case присваивает заданное значение одной из переменных базового типа данных, а затем присваивает значение этой переменной свойству Text объекта Label4 формы. В лекции 3 я использовал код, аналогичный этому, для обработки выбора из списка, и вы также можете использовать эту методику для работы в ваших собственных программах с полями списков и типами данных.

    Примечание. Если в вашем проекте более одной формы, то, чтобы сделать переменные доступными для всей программы (то есть, для всех форм, содержащихся в вашем проекте), вы должны объявлять их несколько иначе (и в другом месте). Типом объявляемой переменной будет public (открытый), а объявляется она в коде модуля (специальном файле, который содержит объявления и процедуры, не связанные с конкретной формой). За информацией о создании открытых переменных в коде модулей обратитесь к лекции 10 .

  • Прокрутите процедуру события ListBox1_SelectedIndexChanged и внимательно изучите каждое из присвоений переменных. Попробуйте изменить данные в нескольких операторах присвоения переменных и запустить эту программу, чтобы увидеть, как изменились данные. В частности, вы можете попробовать присвоить переменным значения, которые находятся вне области их допустимых значений, показанных в приведенной ранее таблице типов данных. Если вы сделаете такую ошибку, Visual Basic подчеркнет некорректное значение волнистой линией, и программа не запустится до тех пор, пока вы не исправите это значение. Чтобы узнать об ошибке поподробнее, поместите мышь над подчеркнутым волнистой линией значением и прочитайте всплывающую подсказку, содержащую сообщение об этой ошибке.
  • Если вы сделали какие-то изменения, которые вы хотите записать на диск, щелкните на кнопке Save All (Сохранить все) стандартной панели инструментов.
  • Типы данных, определяемые пользователем

    Visual Basic также позволяет создавать собственные типы данных. Эта возможность важна тогда, когда вы имеете дело с группой элементов данных, которые связаны друг с другом, но при этом относятся к разным категориям данных. Вы можете создавать собственные типы (UDT - user-defined type (тип, определяемый пользователем)) с помощью оператора Structure, а объявлять переменные, относящиеся к этим новым типам с помощью оператора Dim. Но имейте в виду, что оператор Structure не может быть расположен в процедуре события - он должен располагаться в верхней части кода формы вместе с другими объявлениями переменных, либо в коде модуля.

    Например, следующее объявление создает пользовательский тип данных с именем Employee, который может хранить имена, дату рождения и дату найма на работу, относящиеся к данному сотруднику:

    Structure Employee
    Dim Name As String
    Dim DateOfBirth As Date
    Dim HireDate As Date
    End Structure

    После создания типа данных, вы можете использовать его в коде программы для формы или в процедурах событий модуля. Следующие операторы используют новый тип Employee. Первый оператор создает переменную с именем ProductManager и имеющую тип Employee, а второй оператор присваивает компоненте Name этой переменной имя "Эрик Коди":

    Dim ProductManager As Employee
    ProductManager.Name = "Эрик Коди"

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

    Константы: переменные, которые не изменяются

    Если переменная в вашей программе содержит значение, которое никогда не меняется (такое, как число рi, являющееся фиксированной математической сущностью), вы можете рассмотреть возможность хранения такого значения в виде константы, а не переменной. Константа - это осмысленное имя, которое заменяет число или тестовую строку, которое никогда не изменяются. Константы полезны тем, что они увеличивают читаемость кода программы, снижают количество программных ошибок и облегчают внесение глобальных изменений в коде. Константы действуют как переменные, но вы не можете изменять их значение при работе программы. Они объявляются с помощью ключевого слова Const, как показано в следующем примере:

    Const Pi As Double = 3.14159265

    Этот оператор создает константу с именем Pi, которая может быть использована в коде программы вместо значения рi. Чтобы сделать константу доступной для всех объектов и процедур событий вашей формы, поместите этот оператор в верхней части кода вашей формы вместе с другими объявлениями переменных и структур, которые имеют область видимости, распространяющуюся на все процедуры событий формы. Чтобы сделать константу доступной из всех форм и модулей программы (а не только из Form1 ), создайте константу в коде модуля, указав перед ней ключевое слово Public. Например:

    Public Const Pi As Double = 3.14159265

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

    Использование константы в процедуре события

  • В меню File (Файл) выберите Open (Открыть), а затем щелкните на Project (Проект). Появится диалоговое окно Open Project(Открыть проект).
  • Откройте проект Constant Tester, расположенный в папке c:\vbnet03sbs\Гл.5\constant tester.
  • Если форма проекта не отображается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем щелкните на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) появится форма Тест константы. Constant Tester - это "скелет" программы. Интерфейс пользователя завершен, но вы должны ввести код программы.
  • Сделайте двойной щелчок мышью на кнопке Показать константу формы. В Редакторе кода появится процедура события Button1_Click.
  • Введите в процедуре события Button1_Click следующие операторы:

    Const Pi As Double = 3.14159265
    Label1.Text = Pi

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

    Чтобы запустить программу, щелкните на кнопке Start (Начать), расположенной на стандартной панели инструментов.

  • Щелкните на кнопке Показать константу. В поле метки появится константа Pi, как показано ниже.

  • Чтобы остановить программу, щелкните на кнопке Выход.

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

  • Работа с операторами Visual Basic

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

    Оператор Описание
    + Сложение
    - Вычитание
    * Умножение
    / Деление
    \ Целочисленное деление (без остатка)
    Mod Остаток от деления
    ^ Возведение в степень
    Объединение (конкатенация) строк

    Основы математики: операторы +, -, *, и /

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

    Работа с основными операторами

  • В меню File (Файл) укажите на Open (Открыть), а затем щелкните на Project (Проект).
  • Откройте проект Basic Math, расположенный в папке c:\vbnet03sbs\ Гл.5\basic math.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) появится форма Basic Math. Программа Basic Math демонстрирует, как работают с вводимыми числами операторы сложения, вычитания, умножения и деления. Она также демонстрирует, как можно использовать для обработки в программе ввода объекты текстового поля, переключателя и кнопки.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа Basic Math запустится на выполнение в среде разработки. Эта программа отображает два текстовых поля, в которых вы вводите числовые значения, группу переключателя операторов, поле, которое отображает результаты и два объекта кнопок ( Вычислить и Выход ).
  • Введите в текстовом поле Переменная 1 число 100, а затем нажмите клавишу (Tab). Курсор перейдет во второе текстовое поле.
  • Введите в текстовом поле Переменная 2 число 17. Теперь вы можете применить к этим двум значениям любой из математических операторов.
  • Щелкните на переключателе Сложение, а затем на кнопке Вычислить. К этим двум переменным применится оператор, и в поле Результат появится число 117, как показано здесь.

  • Попрактикуйтесь в использовании для чисел, указанных в полях переменных, операторов вычитания, умножения и деления. (Для вычисления каждой из формул щелкайте на Вычислить.) Результат появляется в поле Результат. Вы также можете поэкспериментировать с другими числами, введя их в текстовые поля переменных. (Если хотите, можете попробовать использовать числа с десятичными точками.) Для объявления соответствующих переменных я использовал тип данных Double, так что если хотите, то можете использовать очень большие числа. Теперь попробуйте следующий тест и посмотрите, что произойдет.
  • Введите в текстовом поле Переменная 1 число 100, в текстовом поле Переменная 2 число 0, щелкните на переключателе Деление, а затем щелкните на Вычислить. Деление на ноль при математических вычислениях запрещено, так как оно дает бесконечный результат. Но Visual Basic может справиться с таким вычислением и отобразить в текстовом поле Результат значение Infinity (Бесконечность). Способность обрабатывать некоторые условия деления на ноль является новой автоматически предоставляемой функцией Visual Basic .NET.
  • Когда вы закончите изучать этот и другие тесты, щелкните на кнопке Выход. Выполнение программы завершится, и появится среда разработки.
  • Теперь, чтобы узнать, как эти результаты были получены, посмотрите на код программы. Basic Math использует несколько стандартных элементов управления вводом, с которыми вы экспериментировали в лекции 3, и содержит процедуру события, которая использует переменные и операторы для обработки простых математических формул. Программа объявляет свои переменные в верхней части кода формы, и, таким образом, они могут быть использованы во всех процедурах событий формы Form1.

    Изучение кода программы Basic Math

  • Сделайте двойной щелчок мышью на кнопке Вычислить формы. Редактор кода отобразит процедуру события Button1_Click. В верхней части кода формы вы увидите следующий оператор, который объявляет две переменные типа Double:

    ' Объявляем переменные FirstNum и SecondNum
    Dim FirstNum, SecondNum As Double

    Я использовал тип Double потому, чтобы использовать тип переменных общего назначения, который может работать с различными числами - целыми, числами с десятичной точкой, очень большими числами, малыми числами и т.п. Переменные объявлены в одной и той же строке для сокращения записи. Обе переменные FirstNum и SecondNum имеют тип Double, и будут использоваться для хранения значений, вводимых в первом и втором текстовых полях соответственно.

  • Прокрутите Редактор кода вниз, чтобы увидеть содержимое процедуры события Button1_Click. Ваш экран будет выглядеть примерно так.

    Первые два оператора в этой процедуре события передают данные, введенные в объектах текстовых полей, в переменные FirstNum и SecondNum.

    ' Присваиваем значения текстовых полей переменным
    FirstNum = TextBox1.Text
    SecondNum = TextBox2.Text

    Элемент управления TextBox осуществляет передачу с помощью свойства Text - свойства, которое принимает текст, введенный пользователем, и делает его доступным для использования в программе. В этой книге я очень часто использую элемент управления TextBox. Когда он настроен на отображение нескольких строк и может изменять размеры, то может отображать очень много строк текста - даже целый файл!

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

    ' Определяем выбранную кнопку и вычисляем
    If RadioButton1.Checked = True Then
    TextBox3.Text = FirstNum + SecondNum
    End If

    Вспомните из лекции 3, что в каждый момент времени может быть выбран только один объект переключателя из группы объектов. Вы можете определить, выбран ли переключатель, проверив значение свойства Checked. Если оно равно True, то переключатель был выбран. Если свойство Checked равно False, то переключатель не был выбран. После этого простого теста вы готовы вычислить результат и отобразить его в объекте третьего текстового поля. Пока что это все об использовании базовых математических операторов. (Подробности о синтаксисе проверки If $$\dots$$ Then или структурах выбора вы узнаете в лекции 6 .)

  • Использование расширенных операторов: \, Mod, ^ и

    В дополнение к четырем базовым математическим операторам, Visual Basic содержит четыре дополнительных оператора, которые выполняют целочисленное деление (\), остаток от деления ( Mod ), возведение в степень (^) и слияние (конкатенацию) строк (). Эти операторы применяются в специальных математических формулах и приложениях, обрабатывающих строки. Следующая утилита (небольшая модификация программы Basic Math) показывает, как можно использовать в программе каждый из этих операторов.

    Новые сокращенные операторы

    Одна из новых функций Visual Basic .NET позволяет использовать в математических и строковых операциях, выполняющих изменение значения существующей переменной, сокращенные операторы. Например, если вы объединяете символ + и символ =, то вы можете прибавить к переменной какое-либо значение без необходимости повторять ее имя в формуле дважды. Таким образом, можно записать формулу X = X + 6 в виде X += 6. В следующей таблице показаны примеры таких сокращенных операторов:

    Операция Длинная запись Короткая запись
    Сложение (+) X = X + 6 X += 6
    Вычитание (-) X = X - 6 X -= 6
    Умножение (*) X = X * 6 X *= 6
    Деление (/) X = X / 6 X /= 6
    Целочисленное деление (\) X = X \ 6 X \= 6
    Возведение в степень (^) X = X ^ 6 X ^= 6
    Конкатенация строк () X = X "ABC" X = "ABC"

    Работа с расширенными операторами

  • В меню File (Файл) выберите Open (Открыть), а затем Project (Проект). Появится диалоговое окно Open Project (Открыть Проект).
  • Откройте проект Advanced Math, расположенный в папке c:\vbnet03sbs\Гл.5\advanced math.
  • Если форма проекта не открывается, щелкните в Solution Explorer (Обозревателе решений) на Form1.vb, а затем щелкните на кнопке View Designer (Просмотреть конструктор). В Windows Forms Designer (Конструкторе Windows Forms) откроется форма Advanced Math. Программа Advanced Math идентична программе Basic Math, за исключением операторов, показанных в переключателях и в программе.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Эта программа отображает два текстовых поля, в которых вы вводите числовые значения, группу переключателя операторов, поле, которое отображает результаты и две кнопки.
  • Введите в текстовом поле Переменная 1 число 9, а затем нажмите на (Tab).
  • Введите в текстовом поле Переменная 2 число 2. Теперь вы можете применить к этим двум значениям любой из дополнительных операторов.
  • Щелкните на переключателе Целочисленное деление, а затем щелкните на кнопке Вычислить. К этим двум переменным применится оператор, и в поле Результат появится число 4, как показано здесь.

    Целочисленное деление дает в результате операции деления только целое число. Хотя 9, деленное на 2, будет 4.5, операция целочисленного деления возвращает только первую - целую часть (целое число 4). Эта функция полезна, если вы работаете с чем-то, что не может быть легко разделено на дробные части, например, с количеством человек, которые помещаются в автомобиль.

  • Щелкните на переключателе Остаток от деления, а затем на кнопке Вычислить. В поле Результат появится число 1. Остаток от деления (Арифметический модуль) возвращает остаток после того, как одно число будет разделено на другое. Так как 9, деленное на 2, равно 4 с остатком 1 ( 2 * 4 + 1 = 9 ), то результат, производимый оператором Mod, равен 1. Помимо всего прочего, оператор Mod может помочь вам в отслеживании "остатков" в ваших вычислениях, таких как величина изменения, получившаяся после проведения финансовых транзакций.
  • Щелкните на переключателе Возведение в степень, а затем на кнопке Вычислить. В поле Результат появится число 81. Оператор возведения в степень (^) возводит число в указанную степень. Например, 9 ^ 2 равно 92, или 81. В Visual Basic формула 92 записывается как 9 ^ 2.
  • Щелкните на переключателе Конкатенация, а затем на кнопке Вычислить. В поле Результат появится число 92. Оператор конкатенации строк () объединяет две строки в одну, но не через операцию сложения. Результатом является комбинация символа "9" и символа "2". Конкатенация строк может выполняться с числовыми переменными - например, если вы отображаете счет бейсбольного матча так, как это делается в старых полях для отображения счета - но гораздо чаще конкатенация используется для строковых значений или переменных.

    Так как я объявил переменные FirstNum и SecondNum имеющими тип Double, вы не можете объединять с помощью написанного здесь кода программы слова или буквы. Попробуйте, например, следующий тест, который приводит к возникновению ошибки и завершению программы.

  • Введите в текстовом поле Переменная 1 слово birth, в текстовом поле Переменная 2 введите слово day, убедитесь, что выбран переключатель Конкатенация, а затем щелкните на Вычислить. Visual Basic не сможет обработать введенные вами текстовые значения; программа остановится, а на экране появится показанное на рисунке сообщение об ошибке.

    Этот тип ошибки называется ошибкой времени исполнения - ошибкой, которая проявляется не на стадии проектирования и компиляции программы, а позднее, когда программа выполняется и наталкивается на условия, которые она не знает, как обрабатывать. Если это непонятно, вы можете представить, что Visual Basic просто предлагает вам современную интерпретацию заявления роботов "Нет решения!" из научно-фантастических фильмов 50-х годов. Новое произносимое компьютером сообщение "Cast from string ("birth") to Double is not valid" ("Приведение строки ("birth") к типу Double является недопустимым") означает, что слова, которые вы ввели в текстовые поля (birth и day) не могут быть присвоены - или преобразованы - компилятором Visual Basic переменным типа Double. Типы Double могут содержать только числа. Точка.

  • Щелкните в диалоговом окне среды разработки Microsoft на кнопке Continue (Продолжить). Если появляется еще одно диалоговое окно среды разработки, которое указывает, что для текущего места программы нет исходного кода, щелкните на OK.

    Ваша программа завершится и возвратит вас в среду разработки. Кнопка Break (Прервать), о которой пойдет речь в лекции 8, позволяет использовать инструменты Visual Studio для отладки, чтобы узнать об имеющихся в вашем программном коде дефектах или ошибках.

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

  • Прокрутите код в Редакторе кода к самому его началу. Вы увидите следующие комментарий и оператор программы:

    ' Объявляем переменные FirstNum и SecondNum
    Dim FirstNum, SecondNum As Double

    Как вы можете вспомнить из предыдущего упражнения, FirstNum и SecondNum - это переменные, которые хранят числа, получаемые из объектов TextBox1 и TextBox2.

  • Теперь смените тип данных с Double на String так, что вы сможете протестировать, как работает оператор конкатенации () строк.
  • Теперь прокрутите Редактор кода вниз, чтобы увидеть, как в коде программы использованы дополнительные операторы. Вы увидите следующий код:

    ' Присваиваем значения текстовых полей переменным
    FirstNum = TextBox1.Text
    SecondNum = TextBox2.Text
    
    ' Определяем выбранную кнопку и вычисляем
    If RadioButton1.Checked = True Then
    TextBox3.Text = FirstNum \ SecondNum
    End If
    If RadioButton2.Checked = True Then
    TextBox3.Text = FirstNum Mod SecondNum
    End If
    If RadioButton3.Checked = True Then
    TextBox3.Text = FirstNum ^ SecondNum
    End If
    If RadioButton4.Checked = True Then
    TextBox3.Text = FirstNum  SecondNum
    End If

    Аналогично программе Basic Math, эта программа загружает данные из текстовых полей и помещает их в переменные FirstNum и SecondNum. Затем программа проверяет, какой переключатель выбрал пользователь, и вычисляет требуемую формулу. В этой процедуре события использованы операторы целочисленного деления (\), остатка от деления ( Mod ), возведения в степень (^) и конкатенации строк. Теперь, когда вы изменили тип данных переменных на String, снова запустите программу и посмотрите, как работает с текстом оператор .

  • Щелкните на кнопке Start (Начать).
  • Введите в текстовом поле Переменная 1 слово birth, в текстовом поле Переменная 2 введите слово day, щелкните на Конкатенация, а затем щелкните на Вычислить. Теперь программа объединит строковые значения и не выдаст ошибки времени выполнения, как показано ниже.

  • Чтобы закрыть программу, щелкните на кнопке Выход.

    Совет. Избежать ошибок времени исполнения очень сложно - даже наиболее продвинутые приложения, такие как Microsoft Word или Microsoft Excel, иногда наталкиваются на ошибочные ситуации, с которыми они не могут справиться, что приводит к возникновению ошибок времени выполнения и программа рушится. В создании целостных и надежных приложений вам может помочь проектирование ваших программ так, чтобы они обрабатывали множество различных типов данных и условий работы. В лекции 9 вы узнаете о еще одном полезном инструменте для предотвращения обрушений из-за ошибок выполнения - структурном обработчике ошибок (structured error handler).

  • Работа с математическими методами среды .NET Framework

    Иногда в программах приходится выполнять более сложные действия с числами: округлить число, вычислить сложное математическое выражения или использовать случайные числа. Математические методы, показанные в следующей таблице, помогут вам работать с числами в формулах. Эти методы предоставляются .NET Framework, библиотекой классов, которая позволяет воспользоваться мощью операционной системы Microsoft Windows и выполнить множество часто возникающих задач программирования. .NET Framework - это новая функция Visual Studio .NET, которая совместно используется Microsoft Visual Basic, Microsoft Visual C++, Microsoft Visual C#, Microsoft Visual J# и другими инструментами Visual Studio. Это базовый интерфейс, который становится частью самой операционной системы Windows. .NET Framework организована в виде классов, которые вы можете включать в ваши проекты программирования по их именам с помощью оператора Imports. Этот процесс достаточно прост, и сейчас вы поэкспериментируете с ним на примере математического метода из класса System.Math среды .NET Framework.

    Следующая таблица предлагает неполный список математических методов класса System.Math. Аргумент n в этой таблице представляет число, переменную или выражение, которое вы хотите передать в метод для обработки. Если вы используете какие-либо из этих методов, убедитесь, что вы поместили оператор

    Imports System.Math

    в Редакторе кода в самое начало кода вашей формы.

    Метод Назначение
    Abs(n) Возвращает абсолютное значение числа n.
    Atan(n) Возвращает арктангенс числа n в радианах.
    Cos(n) Возвращает косинус угла n. Угол n задается в радианах.
    Exp(n) Возвращает константу e, возведенную в степень n.
    Sign(n) Возвращает -1, если n меньше 0, 0 - если равно 0, и +1, если n больше 0.
    Sin(n) Возвращает синус угла n. Угол n задается в радианах.
    Sqrt(n) Возвращает квадратный корень из числа n.
    Tan(n) Возвращает тангенс угла n. Угол n задается в радианах.

    Использование класса System.Math для вычисления квадратного корня

  • В меню File (Файл) выберите New (Создать), а затем на Project (Проект). Появится диалоговое окно New Project (Создать проект).
  • В папке c:\vbnet03sbs\Гл.5 создайте новый проект Windows Application на Visual Basic с именем My Framework Math. Будет создан новый проект и в Windows Forms Designer (Конструкторе Windows Forms) появится пустая форма.
  • Щелкните на элементе управления Button на закладке Windows Forms окна Toolbox (Область элементов) и создайте в верхней части вашей формы объект кнопки.
  • Щелкните в области элементов на элементе управления TextBox и нарисуйте под объектом кнопки текстовое поле.
  • В свойстве Text объекта кнопки напишите Квадратный корень, а свойство Text текстового поля сделайте пустым.
  • Чтобы вызвать окно Редактора кода, сделайте двойной щелчок мышью на объекте кнопки.
  • В самом верху Редактора кода, над оператором Public Class Form1, введите следующий оператор программы:

    Imports System.Math

    Оператор Imports добавляет в ваш проект библиотеку объектов, свойств и методов. Этот оператор должен быть первым оператором программы - он должен идти даже перед переменными, которые вы объявляете для всей формы, и оператором Public Class Form1, который создается автоматически. Мы выбрали библиотеку System.Math, предоставляемую .NET Framework, в которой собраны объекты, свойства и методы для выполнения математических операций.

  • В Редакторе кода спуститесь вниз и добавьте в процедуру события Button1_Click между операторами Private Sub и End Sub следующий код:

    Dim Result As Double
    Result = Sqrt(625)
    TextBox1.Text = Result

    Эти три оператора объявляют переменную типа Double с именем Result, используют метод Sqrt для вычисления квадратного корня из числа 625, и присваивают значение переменной Result свойству Text объекта текстового поля так, что в нем отображается ответ вычисления.

  • Чтобы сохранить ваши изменения, щелкните на кнопке Save All (Сохранить все) на стандартной панели инструментов.
  • Щелкните на кнопке Start (Начать) стандартной панели инструментов. Программа Framework Math запустится на выполнение в среде разработки.
  • Щелкните на кнопке Квадратный корень. Visual Basic вычислит квадратный корень из 625 и, как показано ниже, отобразит в текстовом поле результат этого вычисления (25). Метод Sqrt работает!

  • Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы.
  • Чтобы использовать в вашей программе какой-либо класс .NET Framework, включите оператор Imports и укажите требуемую библиотеку классов. Вы можете использовать эту методику для использования любого класса .NET Framework. В этой книги вы встретите еще несколько примеров на эту тему.

    Старшинство операторов

    В последних упражнениях вы экспериментировали с несколькими математическими и одним строковым оператором. Visual Basic позволяет смешивать использование нескольких математических операторов так, как вы делаете это в формулах, при условии, что каждая числовая переменная и выражение отделены от других оператором. Например, вот допустимая формула Visual Basic:

    Total = 10 + 15 * 2 / 4 ^ 2

    Эта формула обрабатывает несколько значений и присваивает результат переменной с именем Total. Но как Visual Basic вычисляет это выражение? Другими словами, в какой последовательности математические операторы используются Visual Basic при решении этой формулы? Возможно, вы не заметили, но порядок вычисления в этом примере имеет огромное значение.

    Visual Basic решает эту дилемму, устанавливая определенный порядок старшинства математических операций. Этот список правил говорит Visual Basic, какой оператор при вычислении выражения, содержащего более одного оператора, должен использоваться первым, какой - вторым, и т.д. Следующая таблица содержит перечень операторов с первого до последнего в порядке, в котором они вычисляются. (Операторы на одном уровне этой таблицы вычисляются слева направо в том порядке, в котором они появляются в выражении.)

    Операторы Порядок вычисления
    ( ) Первыми всегда вычисляются значения в круглых скобках.
    ^ Возведение числа в степень вычисляется во вторую очередь.
    - Создание отрицательного числа (смена знака) идет третьим.
    * / Четвертыми идут умножение и деление.
    \ Пятое - целочисленное деление.
    Mod Шестое - остаток от деления.
    + - Последние - это сложение и вычитание.

    Имея порядок приоритетов из этой таблицы, выражение

    Total = 10 + 15 * 2 / 4 ^ 2

    будет вычислено Visual Basic по следующим шагам.

    Total = 10 + 15 * 2 / 4 ^ 2
    Total = 10 + 15 * 2 / 16
    Total = 10 + 30 / 16
    Total = 10 + 1.875
    Total = 11.875

    Следующий шаг: использование в формулах круглых скобок

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

    Number = (8 - 5 * 3) ^ 2

    определив сначала значение в скобках (-7), а уже затем выполнит возведение в степень - хотя даже и возведение в степень имеет в соответствии с приведенной выше таблицей более высокий приоритет, чем вычитание и умножение. Чтобы еще больше изменить порядок вычисления, вы можете использовать в формуле вложенные скобки. Например,

    Number = ((8 - 5) * 3) ^ 2

    указывает Visual Basic вычислить сначала разницу внутренних скобок, затем выполнить операцию во внешних скобках, и только затем определить степень. Результат, полученный по обеим формулам, будет различным: первая формула даст в результате 49, а вторая - 81. Скобки могут как изменить результат математической операции, так и сделать ее более легко читаемой.

    Краткая справка по лекции 5

    Чтобы Сделайте следующее
    Объявить переменную

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

    Dim Country As String
    Изменить значение переменной

    Присвойте новое значение с помощью оператора присвоения (=). Например:

    Country = "Япония"
    Получить ввод с помощью диалогового окна

    Используйте функцию InputBox и присвойте ее результат переменной. Например:

    UserName = InputBox("Как тебя зовут?")
    Отобразить вывод в диалоговом окне

    Используйте функцию MsgBox. (Строка, отображаемая в этом диалоговом окне, может быть сохранена в переменной.) Например:

    Forecast = "Переменная облачность, возможны осадки."
    MsgBox(Forecast, , "Погода в Испании")
    Создать константу

    Введите ключевое слово Const, за которым будет следовать имя константы, оператор присвоения (=), тип данных константы и фиксированное значение. Например:

    Const JackBennysAge As Short = 39
    Создать формулу

    Объедините вместе числовые переменные или значения и один или несколько математических операторов, а затем присвойте результат переменной или свойству. Например:

    Result = 1 ^ 2 * 3 \ 4 'this equals 0
    Объединить текстовые строки

    Используйте оператор конкатенации строк (). Например:

    Msg = "Здравствуй"  ","  " мир!"
    Включить библиотеку классов из .NET Framework

    Поместите в самом верху кода формы оператор Imports, который определяет библиотеку классов. Например:

    Imports System.Math
    Вызвать метод из включенной библиотеки классов

    Используйте имя метода, и, если необходимо, добавьте к нему аргументы так, чтобы использовать его в формуле или операторе программы. Например, чтобы вызвать метод Sqrt из библиотеки классов System.Math:

    Hypotenuse = Sqrt(x ^ 2 + y ^ 2)
    Управлять порядком вычисления формулы

    Используйте в формуле круглые скобки. Например:

    Result = 1 + 2 ^ 3 \ 4		' это равно 3
    Result = (1 + 2) ^ ( 3 \ 4)	' это равно 1
    Вернуться к учебному плану