Visual Basic для детей. Уроки 1-5

       

Dim VariableName As Type


Где оператор Dim – это Dimension (величина, размерность), As (как, в качестве). Нам нужно ввести подобный оператор для объявления всех переменных для нашего проекта. Это может показаться лишней работой, но дело того стоит. Такая, свойственная именно программированию вещь, как объявление переменных, делает работу с программой проще, уменьшает возможность ошибок, и облегчает последующее внесение изменений в программу.

            Итак, где же размещаются объявленные переменные? Откройте новый проект в Visual Basic и поместите сверху окно кода. В окне кода откройте список объектов. Там вы увидите две записи: (General) и Form. Где General – Общие.  Выберите (General).  Окно кода будет выглядеть так:

VB4:

VB5, VB6:

Та область в окне кода, куда мы можем вносить записи, в этом случае принято называть разделом общих объявлений

(general declarations). Это и есть то место, куда помещаются операторы с объявленными переменными. Всякая переменная, объявленная в разделе общих объявлений может использоваться в программе (значения, которые содержатся в переменных могут быть доступны и/или изменены) и в любых процедурах обработки событий формы.

            Ваш раздел общих объявлений может содержать запись Option Explicit (явный, определенный, точный вариант выбора). Эта строчка на языке BASIC сообщает среде программирования Visual Basic, что мы будем объявлять каждую используемую переменную (‘жесткий’ контроль). Откроем маленький секрет: на самом деле нет необходимости объявлять каждую используемую переменную, что, безусловно, является хорошей идеей. Но у всякой хорошей идеи есть свои недостатки. Поэтому мы поступим следующим образом. Если в вашем разделе общих объявлений отсутствует строка Option Explicit, то для того, чтобы она появилась, необходимо:

VB4:               В строке меню щелкните Tools, затем Options. Выберите закладку Environment и установите галочку напротив надписи Require Variable

Declaration (Требуется объявление переменных).


VB5, VB6:     В строке меню щелкните Tools, затем Options. Выберите вкладку Editor и установите галочку напротив надписи Require Variable Declaration.



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

            Заново запустите новый проект и попробуйте ввести с клавиатуры объявления переменных в окне кода. Ниже есть несколько примеров для этого (обратите внимание, что добавилась строка Option Explicit):

VB4:



VB5, VB6:



Математические операторы

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

            Сложение (addition) производится при помощи знака или символа плюс (+), а вычитание (subtraction) при помощи знака или символа минус (-) Простые примеры:

Операция                                     Пример               Результат

Сложение (addition)                   7 + 2                      9

Сложение (addition)                   3 + 8                      11

Вычитание (subtraction)            6 – 4                      2

Вычитание (subtraction)            11 – 7                    4





Умножение (Multiplication) осуществляется с помощью символа звездочка – asterisk (*), а деление (division) осуществляется с помощью символа косая черта – slash (/). Простые примеры:

Операция                                            Пример             Результат



Умножение (multiplication)               8 * 4                    32

Умножение (multiplication)               2 * 12                  24

Деление (division)                              12 / 2                   6

Деление (division)                              42 / 6                   7

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

            Рассмотрим следующую операцию, она называется возведение в степень (exponentiation), и она представляется в виде символа – carat (^) или как его еще называют ‘hat’ – ‘шапка’. Символ carat можно ввести с клавиатуры, - удерживая клавишу <Shift>, нажать на клавишу с цифрой 6. Возведение в степень используется для перемножения числа на самого себя.   Вы, наверное, уже встречали понятие ‘возведение в квадрат’ – это и есть пример возведения в степень. Если у вас есть переменная типа integer с именем A и другая с именем B, то величина A ^ B представляет собой не что иное, как  A, умноженное само на себя B раз. Приведем пример:

Пример                    Результат

5 ^ 2                            25

2 ^ 4                            16

3 ^ 3                            27

            Другие математические операторы имеют отношение к делению целых (integer) чисел. Операцию целочисленного деления

(integer division) можно осуществить с помощью символа обратной косой черты – backslash (\).  Эта операция похожа на обычное деление, за исключением того, что в результате деления получаются только целые числа, а любой остаток отбрасывается. И, наоборот, с помощью операции получения остатка от деления нацело (modulus operator), представленной на BASIC ключевым словом Mod, производится деление двух целых чисел, в полученном результате основная часть от деления отбрасывается, а выводится только остаток! На первый взгляд может показаться, что трудно найти применение оператору Mod, но на самом деле он довольно часто используется в компьютерных программах. Примеры:



Операция                Пример      Результат деления    Результат операции

Integer division        7 \ 2                3 Остаток 1                                3

Integer division        23 \ 10            2 Остаток 3                                2

Integer division        18 \ 3              6 Остаток 0                                6

Modulus                    7 Mod 4         1 Остаток 3                                3

Modulus                    14 Mod 3       4 Остаток 2                                2

Modulus                    25 Mod 5       5 Остаток 0                                0

Внимательно просмотрите эти примеры, чтобы хорошо понять, как осуществляется целочисленное деление на BASIC.

            Что получится, если выражение содержит более чем один математический оператор? Возможны ли разные ответы? Посмотрите на этот пример:

7 + 3 * 4

Каков же ответ? Смотря, с какой стороны рассматривать. Если мы начнем выполнять действия слева направо, то тогда вначале сложим 7 и 3, затем умножим на 4 и получим ответ 40. Если же вы сначала перемножите 3 на 4, а затем добавите 7, ответ будет 19. Мы вас еще не запутали? Ну, хорошо. В языке BASIC, чтобы избежать путаницы, существует правило старшинства или приоритета (precedence).  Это означает, что существует определенный порядок выполнения математических операций. Этот порядок таков:

1.      Возведение в степень (^)

2.      Умножение (*) и деление (/)

3.      Целочисленное деление (\)

4.      Получение остатка от деления нацело (Mod)

5.      Сложение (+) и вычитание (-)

Таким образом, в сложных выражениях, первой производится операция возведения в степень, после этого умножение и деление, затем целочисленное деление, потом следует получение остатка от деления нацело, и, наконец, сложение и вычитание. В нашем примере (7 + 3 * 4), мы видим, что операция умножения должна производиться раньше операции сложения, поэтому правильный ответ будет19. 



            Если два оператора имеют одинаковый уровень старшинства, к примеру, умножение и деление, то математические операции выполняются слева направо по очереди. Пример:

            24 / 2 * 3

В этом примере сначала производится деление (24 / 2), а полученный промежуточный результат 12 затем умножается на 3, в итоге получается 36. Но что, если нам понадобится сначала выполнить операцию умножения, а только затем – деление? В этом случае нам поможет еще одна возможность языка BASIC – это группирование операций (grouping operators), которое выполняется с помощью круглых скобок (). Используя при записи операций круглые скобки, вы указываете, что выражение в круглых скобках должно выполняться первым. Таким образом, если мы перепишем наш пример так:

            24 / (2 * 3)

то первой будет выполнена операция умножения (2 * 3), в результате которой мы получим промежуточный результат 6, после этого будет выполнено деление (24 / 6), в результате чего мы получим 4. Вы можете использовать столько круглых скобок, сколько необходимо, но каждый раз необходимо убедиться, что скобки расположены парами, то есть каждой левосторонней круглой скобке соответствует правосторонняя скобка. Если при введении операторов в окне кода Visual Basic вы неправильно согласовали количество скобок, то, когда вы попытаетесь перевести курсор с ошибочной строки, то на экране появится сообщение об ошибке (синтаксическая ошибка). Если у вас одно из выражений в круглых скобках находится внутри другого выражения в круглых скобках, то вначале вычисляется выражение во внутренних скобках, а затем в наружных. Например:

            ((2 + 4) * 6) + 7

Вначале складываются 2 и 4, в результате чего получается 6, затем 6 умножается на 6, получается 36. И к этому результату прибавляется 7, в итоге получаем 43. Вы можете использовать круглые скобки, даже если запись выражения подходит по приоритету. Это позволит вам внести полную ясность в очередность выполнения операций.



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

Функции Val и Str

            Одной из наиболее распространенных задач при создании проекта на Visual Basic, является задача ввода (input) чисел пользователем, после чего над ними будут произведены какие-либо математические операции, а результат операций выведен (output) в том или ином виде. Как осуществить ввод чисел? В принципе, вы уже сейчас можете догадаться, что для ввода пользователем различных символов, в том числе и цифр, можно использовать элементы управления типа текстовое поле (text box). Затем вы с помощью математических операций выполняете вычисления, а результат выводите с помощью элемента управления label. И это было бы правильно. Но существуют две проблемы:

Первая проблема:  Математические операции могут производиться только с числами (например, переменными типа integer, свойствами типа integer), но значения, с которыми работает элемент управления text box (свойство text) имеет строковый тип (string). Вы не можете складывать или перемножать переменные и свойства типа string!

Вторая проблема: В результате математических операций получается число. Но свойство Caption для элемента управления label (там, где мы хотим отобразить результат вычислений) имеет строковый тип string. Вы не можете сохранить числовые данные в строковой величине!

Нам нужно решить две эти проблемы. Для решения этих проблем существуют встроенные функции языка BASIC (BASIC built-in functions).  Нам необходим способ преобразования строк в числа и, наоборот, чисел в строки. Благодаря этому способу, мы могли бы взять свойство Text в текстовом поле, преобразовать его в число, проделать некоторые математические операции и снова преобразовать числовой результат в строку, чтобы можно было вывести этот результат, используя свойство Caption элемента управления label. Это очень распространенная задача для BASIC и BASIC имеет целый набор функций для их выполнения. Две из таких функций – это функция Val и функция Str. Мы их, конечно, рассмотрим, но сначала давайте дадим определение самой функции.



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

FunctionValue = FunctionName(ArgumentList)

FunctionName – это имя функции, а ArgumentList

– это список значений (отделенный запятыми), которые необходимы для работы функции. В этом выражении с оператором присваивания, FunctionName использует значения в ArgumentList для вычисления результата и присваивания этого результата переменной под именем FunctionValue. Мы должны быть уверены, что переменная FunctionValue имеет тот же самый тип, что и вычисляемое значение FunctionName. Как узнать, какие же ещё существуют функции в BASIC, какие типы информации они поддерживают, какие для них требуются типы параметров (arguments)? Используйте интерактивную справку Visual Basic и поиск по ключевому слову Functions (Функции). Вы их увидите достаточное количество. Мы расскажем о некоторых из них в этом классе, но не помешает и самостоятельная работа, ведь как приятно, иногда, погрузиться в гигабайтное справочное пособие на английском языке и узнать кое-что из жизни функций. А теперь, давайте рассмотрим наши первые две функции языка BASIC:  Val и Str. Чтобы ваша голова стала тяжелой как ‘с похмелья’ можно почитать об этих функциях в интерактивном справочном руководстве.

            В BASIC функция Val преобразует различные текстовые строки (или свойство элемента управления) в числовое значение. Формат этой функции:

YourNumber = Val(YourString)

Функция Val принимает значение YourString (помните, что это значение называется аргументом функции), преобразует его в числовое значение и это числовое значение присваивает переменной YourNumber. Эту переменную YourNumber мы можем использовать в любых математических операциях. Как мы отмечали ранее, строковая переменная может быть заключена в кавычки. Пример с использованием функции Val:

YourNumber = Val(“23”)

Согласно этой операции присваивания, переменная YourNumber получает числовое значение 23. 



На языке BASIC

функция Str преобразует числовую переменную (или свойство элемента управления) и переводит её в строковый тип. Формат этой функции:

YourString = Str(YourNumber)

Функция Str принимает параметр YourNumber, преобразует его в строковую переменную и присваивает этой переменной имя YourString. Например:

YourString = Str(23)

это означает, что переменная YourString

содержит строковое значение “23”.

            Вы должны совершенно свободно уметь преобразовывать числа в строки и строки в числа, используя функции Val и Str. Как мы уже упоминали, преобразования чисел и строк являются одной из наиболее распространенных задач при разработке проектов на Visual Basic.

Объединение или конкатенация (Concatenation) строк

            Признаемся, что взяли грех на душу, так как в предыдущей обсуждаемой теме мы сознательно допустили небольшую неточность, надеемся, вы нас простите за эту маленькую ложь. А дело вот в чем. Мы говорили о том, что нельзя складывать и перемножать строки. Да, вы действительно не можете перемножать их, но вы можете производить над ними действия подобные сложению. Часто в проектах на Visual Basic, нам необходимо взять строковую переменную в каком-либо месте и ‘присобачить её на конец’ (‘tack it on the end’) к другой строке. Для этого существует трудно выговариваемое понятие – конкатенация или объединение строк (string concatenation). Оператором конкатенации является знак амперсанта – ampersand (&) и его очень легко использовать. Например:

     NewString = “Visual “ & “Basic”

После этой операции, строковая переменная NewString

будет иметь значение “Visual Basic”. В некоторых книгах по BASIC и Visual Basic, вы можете также встретить знак плюс (+), используемый как оператор конкатенации и это тоже правильно и будет работать. Но в наших уроках мы будем использовать знак амперсанта, чтобы было проще отличать конкатенацию строк от математического оператора, обозначающего “сложение”.



Как вы уже поняли, строковые переменные составляют значительную часть программирования на Visual Basic. Поскольку вы хотите стать Программистом с большой буквы, вы должны свободно обращаться и работать со строками. А теперь – вперед, начинаем новый проект.

Проект – подсчет сбережений

Стадия разработки проекта (Project Design)

            В этом проекте мы будем создавать калькулятор для подсчета сбережений. Мы будем вводить информацию о количестве денег, положенных на счет каждую неделю и число недель, когда мы клали деньги на счет. Задача проекта состоит в подсчете общей суммы сбережений. Мы будем использовать элемент управления text box для ввода, а элемент управления label для вывода информации. Командная кнопка будет использоваться для управления вычислениями.

Размещение элементов управления на форме

            Откройте новый проект Visual Basic. Разместите на форме два элемента управления text box, четыре элемента управления label, и две командные кнопки (command button).

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



Установка свойств элементов управления

            Установите свойства элементов управления, используя окно свойств (не забывайте, что список элементов управления состоит из установленных по умолчанию имён):

Form1 Форма:

Название свойства                      Значение свойства

Name                                                   frmSavings

Caption                                               Savings Account

BorderStyle                                        1-Fixed Single

Где Savings Account – подсчет сбережений или сберегательный счет

Text1 Текстовое поле (Text Box):

Название свойства                      Значение свойства



Name                                                   txtDeposit

Text                                                      [Blank]

Font                                                     Arial

Font Size                                            10

Где Deposit – делать взнос, вклад





Text2 Текстовое поле (Text Box):

Название свойства                      Значение свойства

Name                                                   txtWeeks

Text                                                      [Blank]

Font                                                     Arial

Font Size                                            10

Где Weeks – недели

Label1 Надпись (Label):

Название свойства                      Значение свойства

Name                                                   lblDepositHeading

Caption                                               Weekly Deposit

Font                                                     Arial

Font Size                                            10

Где Deposit Heading – заголовок для вклада

       Weekly Deposit – еженедельный вклад

Label2 Надпись (Label):

Название свойства                      Значение свойства

Name                                                   lblWeeksHeading

Caption                                               Number of Weeks

Font                                                     Arial

Font Size                                            10

Где Weeks Heading

– заголовок для недель

       Number of Weeks – количество недель

Label3 Надпись (Label):

Название свойства                      Значение свойства

Name                                                   lblTotalHeading

Caption                                               Total Savings

Font                                                     Arial

Font Size                                            10

Где Total Heading – заголовок для общей суммы

        Total Savings – общая сумма сбережений

Label4 Надпись (Label):



Название свойства                         Значение свойства

Name                                                     lblTotal

Caption                                                 [Blank]

Font                                                       Arial

Font Size                                              10

BackColor                                             White

BorderStyle                                           1-Fixed Single

Где Total - сумма

(Установки BackColor и BorderStyle для label4 позволят использовать этот элемент управления внешне похожим на текстовое поле)

Command1 Командная кнопка:

Название свойства                         Значение свойства

Name                                                     cmdCompute

Caption                                                 Compute Savings

Где Compute Savings – подсчитать сбережения

Command2 Командная кнопка:

Название свойства                         Значение свойства

Name                                                     cmdExit

Caption                                                 Exit

Где Exit – выход

Обратите внимание, что для свойства Text текстовых полей и для свойства Caption одного из элементов управления label установлено значение [Blank] (Пустой, чистый).  Это не означает, что установлено значение [Blank] как свойство, а это означает, что место для значения свойства оставлено пустым ‘blank out’, или, что значение свойства, установленного по умолчанию, убрано. Обратите внимание также, что первое время у вас будут возникать проблемы с установкой значений для свойства Font. Если это необходимо, то советуем вернуться к процедурам, рассмотренным в Классе4, относительно элемента управления Командная кнопка. Попробуйте изменить значения других свойств, например, цвет. Сделайте это так, как вам нравится. Когда вы закончите, ваша форма должна выглядеть приблизительно так:

frmSavings

cmdCompute





cmdExit


lblTotalHeading


lblTotal


lblWeeksHeading


lblDepositHeading


txtWeeks


txtDeposit


Запись процедур обработки событий

            В этом проекте пользователю предлагается ввести в верхнее текстовое поле некоторую сумму еженедельного вклада (Weekly Deposit). Затем пользователь вводит в следующее текстовое поле значение, соответствующее некоторому количеству недель (Number of Weeks). Следующим действием пользователя является щелчок по кнопке подсчитать (Compute). С помощью нашего проекта вычисляется общая сумма сбережений, и результат отражается в нижнем окне, которое, как мы знаем, является элементом управления label. Следовательно, главное событие в нашем проекте – это событие Click (Щелчок) по командной кнопке Compute. Имеет место и ещё одно событие – это событие Click по командной кнопке Exit (Выход). Ваш проект будет грамотно выполнен, если вы указываете понятный для пользователя выход из проекта.

Для проекта нам нужны три переменные (тип переменных – integer), одна из них представляет собой сумму еженедельного вклада (Deposit), другая – для запоминания количества недель (Weeks), и ещё одна для запоминания общей суммы сбережений (Total). Откройте окно кода и найдите раздел общих объявлений (general declarations). Объявите эти три переменные, – в окне кода это будет выглядеть так (первой автоматически должна стоять строка Option Explicit):

Option Explicit

Dim Deposit as Integer

Dim Weeks As Integer


Содержание раздела