Логические операции имеют один и тот же тип и операндов, и результата Boolean. Побитовые операции (как и операции сравнения) имеют числовые операнды, а в качестве результата — значение типа Boolean, но если в операциях сравнения анализируется лишь значение операнда, то в побитовых операциях задействован каждый бит операндов (или другими словами, каждая цифра двоичной записи операндов).
К логическим побитовым операциям относятся операции And, Or, AndAlso, OrElse, Xor и Not. Операция Not имеет только один операнд, остальные — по два операнда.
Операция And выполняет логическую конъюнкцию (И) двух выражений типа Boolean или побитовую конъюнкцию двух числовых выражений (точнее, их числовых результатов): Result = Exprl And Expr2
Если Exprl и Ехрг2 — выражения типа Boolean, то результат логической операции And вычисляется в соответствии со следующей таблицей
Пример логических и побитовых операций Dim A As Integer = 10 Dim В
... Читать дальше »
Оператор присваивания в языке Visual Basic имеет вид переменная = выражение (три из четырех записанных нами в приложениях предыдущего урока операторов — операторы присваивания).
Данный оператор выполняется в следующем порядке: сначала вычисляется выражение справа, затем оно присваивается переменной слева, то есть после выполнения оператора переменная будет иметь значение, которое получилось при вычислении выражения в правой части.
Важно представлять себе, что оператор присваивания не представляет собой равенство в алгебраическом смысле! Левую и правую части оператора нельзя менять местами1. В языке Pascal запись оператора присваивания отличается от приведенной выше записи Visual Basic как раз тем, что вместо знака «=» (равно) там используется знак присваивания «:=» (который в том числе подчеркивает несимметричность оператора).
Отметим, что когда-то в Visual Basic полагалось писать ключевое слово Let перед оператором присваивания. Нельзя сказать, что в VB.NET
... Читать дальше »
Под переменными и константами в языках программирования обычно понимаются именованные1 области памяти для хранения данных, с которыми работает программа. Различие между переменными и константами (как можно догадаться из названия) состоит в том, что значение переменной (то есть содержимое указанной выше области памяти) может меняться во время выполнения программы, значение константы же остается неизменным.
Прежде чем использовать переменную или константу в программе, ее нужно описать. Для описания используется оператор описания (declaration statement). В описании обязательно нужно указывать имя переменной или константы.
Кроме того, в описании могут быть указаны: О тип данных (Data Type); О права доступа к переменной или константе (Accessibility); О область видимости (Scope) — только для переменных; О период существования или время жизни (Lifetime); О уровень (Level).
При описании константы необходимо указывать ее значение. При описании переменно
... Читать дальше »
Конечно, при создании хоть сколько-нибудь серьезных приложений без написания кода не обойтись, и на следующем уроке мы познакомимся с основами языка Visual Basic.NET. Однако нужно четко представлять, что дает нам визуальное объектное программирование — если, скажем, лет десять назад до 90 % рабочего времени программиста могло затрачиваться на разработку пользовательского интерфейса, то теперь эти затраты, как правило, находятся в пределах 10 %.
За счет чего можно получить экономию труда разработчика при создании программ? В первую очередь, конечно, за счет повторного использования написанного кода. В 40-50 годы, на заре программирования, в эпоху первых компьютеров (которые назывались тогда электронно-вычислительными машинами, ЭВМ) повторное использование кода было весьма сложной задачей. Программирование велось в машинных кодах, а программист напоминал шифровальщика из старых шпионских фильмов — только он один чудесным образом мог превратить понят- ную всем информацию в колон
... Читать дальше »
Visual Basic пытается уберечь разработчиков от неприятностей, связанных с разработкой некоторых элементов, например ограничено использование отдельных функциональных возможностей Windows, к которым можно непосредственно обратиться из Visual Basic. К счастью, существуют способы получения доступа к подобным возможностям с помощью API Windows.
Кроме этого, разработчики могут вводить новые функциональные возможности, создавая компоненты на основе API в других языках, например С, Fortran, Pascal и т.д. Если созданные компоненты использовались дружественными типами данных, к ним можно обратиться из Visual Basic. Использование компонентов, созданных на основе API, в среде .NET Framework происходит с помощью технологии Platform Invoke (P/Invoke). В языке Visual Basic.NET технология P/Invoke, в свою очередь, реализуется с помощью хорошо знакомого оператора Declare. Обратите внимание, что в Visual Basic.NET непосредственные обращения к API Windows происходят гораздо реже
... Читать дальше »
Для размещения исключений в языке VB.NET следует воспользоваться оператором Throw. Этот оператор имеет один обязательный параметр, который является объектом, описываемым классом System. Exception. (В листинге 9.3 показан код, использующий исключение, размещенное в блоке Try.)
Если необходимо где-либо разместить исключение, его можно сгенерировать с помощью одного из методов
Перемещение исключений
'Создание и перемещение исключения в одном операторе Throw New System.Exception() 'Использование базового исключения 'Генерация исключения и его отдельное перемещение Dim oIOException As System.10.EndOfStreamException oIOException = new System.10.EndOfStreamException( "Sample End of Stream Exception") Throw oIOException
Обработка ошибок— это процесс устранения ситуаций, когда что-то происходит не так, как надо. Проблемы, с которыми придется столкнуться, могут быть сгруппированы по двум категориям: относящиеся к окружению и созданные разработчиками.
К проблемам окружения могут быть отнесены, например, дискета, отсутствующая в дисководе, неработающая сеть или недоступная база данных. Эти события не могут быть предусмотрены заранее, но так или иначе с ними придется столкнуться.
Зачастую проблемы, созданные разработчиком, представляют собой события, которых можно было бы избежать, приняв заранее соответствующие меры предосторожности. (Причем это предпочтительнее организации ловушек для перехвата непредвиденных ситуаций.) К примерам типичных программных ошибок можно отнести деление целого числа на нуль, обращение к элементу массива с несуществующим индексом или использование необъявленной объектной переменной.
Обработка ошибок является наиболее важным аспектом создания надежных прил
... Читать дальше »
В предыдущих версиях Visual Basic существовала возможность создания определяемых пользователем типов данных {User Defined Data Types, или UDT) с помощью оператора Туре. Определяемый пользователем тип данных, как показано в листинге 7.12, представляет собой объединение нескольких различных типов в один тип данных.
ТИП Employee в Visual Basic 6.0
Public Type Employee FirstName as String LastName as String SocialSecurityNumber as String BirthDate as Date Dependents as Integer End Type В VB.NET, как показано в листинге 7.13, оператор Туре заменен оператором Structure. ЛИСТИНГ 7.13. Структура типа Employee в VB.NET Public Structure Employee Public FirstName as String Public LastName as String Public SocialSecurityNumber as String Public BirthDate as Date Public Dependents as Integer End Structure
Оператор S t r u c t u r e фактически создает численный тип. В действительности структуры пр
... Читать дальше »
Одним из наиболее часто используемых типов переменных является целочисленный. В предыдущих версиях Visual Basic к целым числам были отнесены все целые числа из диапазона -32 768-32 767. В VB.NET этот диапазон был увеличен на несколько порядков.
Теперь к данным типа I n t e g e r относятся все целые числа в диапазоне -2 147 483 648- 2 147 483 647. Кроме этого, существует несколько вариантов типа I n t e g e r , которые также относятся к численным типам: Short, Long и Byte. Тип Integer, как и Boolean, обладает определенными методами, которые используются для обработки данных. Кроме того, тип данных Integer содержит метод Format, позволяющий заменить функцию Format, используемую в предыдущих версиях Visual Basic. Функция Format в языках Visual Basic 6.0 и VB.NET имеет соответственно следующий вид:
Булевы (или логические) переменные представляют собой базовый тип данных, который может принимать только одно из значений: истина или ложь (True или False). В среде .NET Framework данные типа Boolean являются объектами и обладают определенными методами, позволяющими манипулировать типом. В основном это методы преобразования, используемые для конвертирования данных типа Boolean в строковые, целочисленные или другие типы данных.
В Visual Basic версий 5.0 или 6.0 для преобразования данных типа Boolean в данные, например, строкового типа используется функция CSTR, синтаксис которой приведен в следующем примере:
sFlag = CSTR(bFlag)
В VB.NET для подобных целей можно обратиться к синтаксису предыдущих версий или использовать объектно-ориентированную версию языка:
В предыдущих версиях Visual Basic существовали объекты и встроенные переменные. Встроенные переменные представляют собой ячейки памяти с определенным содержимым; язык, в свою очередь, предусматривает функции, позволяющие работать с этим содержимым. Объекты также представляют собой ячейки памяти, обработка которых происходит с помощью средств СОМ-модели и виртуальных таблиц.
Обработка переменных и объектов осуществляется по-разному. Присвоение значения переменной в Visual Basic 6.0 происходит, например, следующим образом: SName = sFirstName При этом содержимое ячейки sFirstName копируется в ячейку sName. Следует заметить, что использование подобного выражения для объявления объектов приведет к тому, что объекты oSalariedEmployee и oEmployee будут ссылаться на один и тот же объект. В этом случае при изменении свойств одного из объектов (например, oSalariedEmployee.FirstName ="НовоеЗначение" или oEmployee.FirstName = "НовоеЗначение", где НовоеЗначение — произвольное зна
... Читать дальше »
В предыдущих версиях Visual Basic существовал только один способ создания обработчика событий — разработка процедуры
Синтаксис обработчика события в предыдущих версиях Visual Basic ObjectName_EventName(Event Parameters)
Например, событие, происходящее при щелчке мышью на кнопке, которой присваивалось имя Buttonl, определялось как событие Buttonl_Click. Синтаксис событий в среде .NET Framework и определяется так: SuB EventHandlerNaine(ByVal sender As Object, ByVal e As System.EventArgs) Handles Object.Event
В предыдущих версиях Visual Basic параметры событий передавались явно. В .NET Framework параметры включены во второй параметр, который фактически представля- ет собой коллекцию. В листинге 4.20 приведен пример обработчика события Form MouseDown приложения Windows Form. Класс System. EventArgs является подклас- сом, который вводит значения координат X и Y, а также свойства кнопки, позволяющие обеспечить функциональные возможности мыши.
Теперь модель события в Visual Basic.NET выполнена на основе концепции делегатов.
Делегат (delegate) — это объект, который может вызывать объектные методы. Делегат может быть представлен в виде указателей функции, обеспечивающих типовую безопасность. Процесс создания делегатов вручную в VB.NET достаточно прост.
Пример делегата
Delegate Function MyCompareDelegate(ByVal x As Integer, ByVal у As Integer) As Boolean Sub MySub(ByVal MyDelegate as MyCompareDelegate) MyDelegate.Invoke(5,3) End Sub Function CompareLow(ByVal X as Integer, ByVal Y as Integer) as Boolean If X > Y then Return True Else Return False End If End Function Function CompareHigh(ByVal X as Integer, ByVal Y as Integer) as Boolean > If X < Y then Return True Else Return False End If End Function Sub Main() Call MySub(AddressOf Me.CompareLow) Call MySub(AddressOf Me.CompareHigh) End Sub... Читать дальше »
Перегрузка позволяет разработчику определить несколько функций с одинаковым именем, но с разными параметрами. Списки параметров могут содержать одинаковое или разное число параметров, которые, в свою очередь, могут быть как одного, так и разных типов. На основании списка параметров компилятор определяет во время компиляции, какая из версий данной функции должна быть вызвана. В том случае, если функция возвращает какое-либо значение, типы данных списка параметров и возвращаемый тип образуют сигнатуру (signature). приведен пример двух функций, выполняющих совершенно разные действия, но имеющих одну и ту же сигнатуру.
Сигнатуры функций
Public Function FunctionOne(ByVal companyName as String, ByVal companylD as Integer) as String End Function Public Function FunctionTwo.(ByVal firstName as String, ByVal employeeID as Integer) as String End Function
Перегрузка функций является мощным средством, позволяющим с
... Читать дальше »
Перегрузка позволяет разработчику определить несколько функций с одинаковым именем, но с разными параметрами. Списки параметров могут содержать одинаковое или разное число параметров, которые, в свою очередь, могут быть как одного, так и разных типов. На основании списка параметров компилятор определяет во время компиляции, какая из версий данной функции должна быть вызвана. В том случае, если функция возвращает какое-либо значение, типы данных списка параметров и возвращаемый тип образуют сигнатуру (signature). приведен пример двух функций, выполняющих совершенно разные действия, но имеющих одну и ту же сигнатуру.
Сигнатуры функций
Public Function FunctionOne(ByVal companyName as String, ByVal companylD as Integer) as String End Function Public Function FunctionTwo.(ByVal firstName as String, ByVal employeeID as Integer) as String End Function
Перегрузка функций является мощным средством, позволяющим с
... Читать дальше »
Решения на основе компонентов имеют как положительные, так и отрицательные стороны. Одним из основных преимуществ является возможность создания приложе- ний "по частям". Идея такова: разработка программного обеспечения может выполняться по тем же принципам, что и изготовление каких-либо промышленных образцов, т.е. система создается в виде нескольких отдельных компонентов вместо единой монолитной конструкции.
Звучит заманчиво, но, подобно большинству грандиозных проектов, об этом легче сказать, чем сделать. В частности, это относится к более ранним версиям Visual Basic. Теоретически можно взять компонент, который выполняет те или иные действия, и заменить его другим, выполняющим те же действия. К сожалению, чаще всего этого не происходит.
В чем же причина? Чтобы улучшить качество функционирования, разработчики предпочитают использовать ранее связывание, что позволяет им связывать компоненты во время компиляции. В свою очередь, для того чтобы воспользоваться ран
... Читать дальше »
Сущность наследования выражается в том, что один класс, называемый подклассом (или дочерним классом), может быть создан на основе другого класса, который, в свою очередь, называется базовым (или родительским) классом. Наследование обеспечивает механизм для создания иерархий объектов. Например, собака (dog) принадлежит классу млекопитающих (mammal), а колли ( c o l l i e ) является представителем класса собак. Таким образом, класс dog наследует свойства и методы класса mammal, а класс c o l l i e , соответственно, наследует свойства и методы классов dog и mammal.
В объектно-ориентированном языке существует два типа связей между объектами иерархии — HasA (имеет) и IsA (является). Например, колли IsA собакой и HasA хвост. Реализация наследования является объектно-ориентированным свойством, поддерживающим связи типа IsA, и представляет собой еще один способ, используемый в VB.NET для поддержки полиморфизма. Функция может принимать параметр mammal, после чего объект, поро
... Читать дальше »
Сущность полиморфизма (polymorphism) заключается в том, что разные объекты могут иметь различные реализации одной и той же характеристики. В качестве примера рассмотрим два объекта, один из которых является автомобилем Porsche 911, а Другой — Toyota Corolla. Оба объекта — автомобили; т.е. оба происходят из класса Саг и содержат метод d r i v e . Но реализации методов, как видите, могут разительно отличаться друг от друга.
Судя по описанию, полиморфизм подобен инкапсуляции, но в то же время имеет некоторые существенные отличия. Инкапсуляция выражается в сокрытии внутренней реализации объекта. Полиморфизм, в свою очередь, проявляется в том, что различные классы могут иметь один и тот же интерфейс.
В Visual Basic 4.0 была реализована достаточно ограниченная поддержка полиморфизма, осуществленная с помощью динамического связывания. Динамическое или позднее связывание (late binding) представляет собой определенную технологию, позволяющую определять во время выполнения
... Читать дальше »
Объект должен скрывать детали своей реализации, открывая "внешнему миру" лишь методы и свойства. Инкапсуляция (encapsulation) представляет собой доступность свойств и методов объекта," в то время как сам объект фактически скрыт от внешнего мира. Другими словами, объект подобен "черному ящику", т.е. те разработчики, которые с ним работают, могут даже не знать о том, что в действительности происходит внутри данного объекта. Инкапсуляция позволяет разработчикам создавать объекты, которые могут быть из- менены без какого-либо воздействия на использующий их клиентский код. Самое главное в том, что интерфейс (interface) объекта, т.е. набор его доступных свойств и методов, не меняется даже при изменении внутренней реализации объекта. Visual Basic поддерживает инкапсуляцию начиная с версии 4.0. Рассмотрим два простых примера. В листингах 3.5 и 3.6 представлены две реализации класса Person, выполненные двумя различными способами.
ЛИСТИНГ 3.5. Первый способ реализации класс
... Читать дальше »
Абстрагирование (abstraction) — это возможность обобщения представлений объекта в виде типа данных, имеющего определенный набор характеристик и способного выполнить какой-либо набор действий. Например, абстрагирование объекта "собака" содержит характеристики c o l o r (цвет), height (рост) и weight (вес), а также набор действий, таких как run (бежать) и b i t e (кусать). В данном случае характеристики собаки называются свойствами {properties), а действия — методами (methods).
В объектно-ориентированных языках абстрагирование обеспечивается посредством классов (classes). Классы определяют свойства и методы объекта, но старайтесь не забывать о том, что разработчик не может использовать класс непосредственно; напротив, объект должен быть создан из класса — он должен быть реализован (instantiated).
В Visual Basic поддержка классов существует начиная с версии 4.0. Вплоть до появления VB.NET каждый класс был выполнен в виде отдельного файла, абстрагирующего данный объект. Пр
... Читать дальше »
За время своего существования Visual Basic превратился из объектного {object-based) в объектно-ориентированное (object-oriented) средство разработки. В ранних версиях Visual Basic некоторые ключевые особенности языка не были реализованы.
Предыдущие версии Visual Basic позволяли программистам создавать классы и использовать их при разработке приложений. При этом основные возможности объектно-ориентированного программирования практически не учитывались. Это не мешало разработчикам создавать надежные системы, формируемые на компонентной основе, однако препятствовало созда-
нию расширяемых конструкций.
К Visual Basic.NET это не относится. Объектно-ориентированное программирование в .NET Framework фактически является необходимым условием, поэтому Visual Basic превратился в многофункциональный объектно-ориентированный язык.
Новыми свойствами языка являются поддержка наследования, новые методы объявления объектов, а также возможности атрибутивного программ
... Читать дальше »
Обеспечивает многократное выполнение одной или нескольких операций. Описание.Цикл Do...Loop позволяет выполнять группу операций, пока заданное условие выполняется (While) или пока это условие не будет нарушено (Until). Синтаксис:
При проверке условия в начале цикла
Do [While | Until condition] [statements] [Exit Do] [statements] Loop При проверке условия в конце цикла Do [statements] [Exit Do] [statements] Loop [While | Until condition]
Аргументы: condition - условное выражение. Возвращает Значение недоступно.
Пример:
DimiAslnteger = 0 DoWhilei<5 Console.WriteLine(i) i+=1 Loop l = 0 Do Until i > 5 Console.WriteLJne(i) i = i+1 Loop
Программы, запускаемые из среды Windows, могут включать параметры командной строки или имена файлов, перетащенных на значок исполня- емого файла. Функция Command возвращает строку параметров, пере- данных файлу типа ЕХЕ. Этот пример извлекает строку параметров, пре- образует ее в массив с помощью функции Split() и выдает сообщение, в котором указано число переданных параметров. 1. Создайте новый проект Windows Application в Visual Basic. 2. Введите следующий код для события Load для главной формы:
Private Sub Form_Load() Dim fieldDelim As String = " Dim myCommands As String Dim myArgs() As String myCommands = Command() myArgs = myCommands.Split( _ fieldDelim.ToCharArray) МздВох("Исполняемому файлу был передано " & Umbound(myArgs) & _ " параметров") End Sub
3. Воспользуйтесь командой Build в меню Build, чтобы создать исполняе- мый файл.