Russian Visual Basic for Children

ОСНОВЫ ПРОГРАММИРОВАНИЯ

Класс 5

Отладка проекта Визуал Бейсик, Синтаксические ошибки, Ошибки во время выполнения программы, Логические Ошибки, Средство управления Метка, Пример 1, Средство управления Текстовое поле, Пример 2, Потерянный Фокус, Переменные, Имена Переменных, Типы Переменных, Объявление Переменных, Арифметические Операторы, Функции Val и Str, Строчная Конкатенация, Проект - Сберегательный счет, Запись Процедуры События, Резюме.

 

5. Метка, Текстовое поле, Переменные

Обзор и Предварительный просмотр

Продолжим наш курс. В этом классе, Вы узнаете, как находить и устранять ошибки в проектах, познакомитесь с такими понятиями как Метка (Label), Поле Текста (Text Box) и Переменные (Variables) БЕЙСИКА. Вы сделаете проект, цель которого - подсчет денег вложенных в банк.

Граждане!

Храните деньги в Сберегательной кассе!

Если, конечно, они у Вас есть.

Отладка Проекта Визуал Бейсик

Независимо от того, как хорошо Вы спланируете проект и независимо от того, как внимательны Вы будете во внедрении Ваших идей в средства управления (Controls) и процедуры события (Event Procedure), Вы будете делать ошибки. Ошибки программирования (Bags) проникают в Ваш проект. Вы, как программист, должны иметь определенный план для нахождения и удаления ошибок. Процесс обнаружения и удаления ошибок в проекте называется отладкой (Debugging). К сожалению, не имеется четких и надежных правил для нахождения ошибок (bags) в программе. Каждый программист имеет собственный способ воздействия на ошибки. Вы, со временем, найдете свои способы. Мы, тем не менее, можем обсудить некоторые общие положения.

Ошибки проекта, могут быть разделены на три типа:

  1. Синтаксические ошипки
  2. Ошибки во время выполнения [run] программы
  3. Логические ошибки

Синтаксические ашибки происходят, когда Вы делаетеобшибку, устанавливающую свойство в режиме проектирования (design) или при печати строки кода БЕЙСИКА. Например, орфографические ошибки или что – ни будь вообще пропущенное, например: пробел, точка, скобка и тд.. Ваш проект не будет работать, если есть любые синтаксические ошибки.

Ошибки во время работы программы происходят, когда Вы пробуете запустить проект (режим [run]). Проект останавливается сразу, потому что что-то случилось за пределами управления пректа.

Логические ошибки самые трудные для обнаружения. Ваш проект выполняется ХОРОШО, но результаты, которые он дает - не те, что Вы ожидали.

Давайте рассмотрим каждый тип ошибок и возможные методы отладки.

Синтаксические ошибки

Синтаксические ошибки (Syntax Errors) самые простые для определения и устранения. Визуал Бейсик сам оказывает большую помощь в нахождении синтаксических ошибок. Синтаксические ошибки наиболее вероятно произойдут, во время назначения свойств для средств управления или при записи кода БЕЙСИКА для процедур события.

Запустим новый проект. Попробуйте для свойства формы Слева (Left) установить значение в буквенном выражении, например слово "big".

Вы должны увидеть небольшое окно похожее на это (это окно для VB4, другие похожи) с надписью "Недопустимое значение свойства":

Invalid property value (Image101.gif - 3Kb)

Нажмите <F1> для интерактивной справки, и Вы увидите объяснение проблемы. Нажмите ОК и значение Слева (Left) возвратится к тому, каким оно было прежде.

Что произойдет, если Вы сделаете синтаксическую ошибку при записи кода? Давайте попробуем. Откройте окно кодирования (Code Window) для процедуры Form_Load. После строки Верхней Линии, напечатайте эту строку, затем нажмите, <Enter>:

Form1.BackColor = vbRed

Появится окошко с надписью: "Ожидается конец инструкции"

Expected: end of statement (Image102.gif - 3Kb)

Снова нажатие на <F1> выдаст Вам справку. Визуал Бейсик определил, что отсутствует оператор назначения и, в соответствии с этим, предполагает, что данная строка кода не закончена.

Таким образом, если Вы делаете синтаксическую ошибку, Визуал Бейсик будет знать, что Вы выполнили что - нибудь неправильно и предупредит Вас. Система интерактивной справки - хорошая помощь для отладки Ваших синтаксических ошибок.

Ошибки во время выполнения программы (Run – Time Error)

Если Вы успешно устанавливаете свойства управлений и процедуры события записи и при этом без синтаксических ошибок, Вы, как правило, пробуете запустить Ваш проект. Обычно, это необходимо, что бы проверить работоспособность новых управлений, оценить внешний вид проекта и тому подобное. Если проект выполняется, тогда все ОК. Но, часто, Ваш проект может останавливаться и сообщать Вам, что обнаружена ошибка. Эта ошибка и есть ошибка во время выполнения программы (run – time error). Вы должны выяснить, что послужило причиной остановки. Снова, Визуал Бейсик и интерактивная справка дадут Вам достаточно информации, чтобы устранить ошибки возникающие во время выполнения программы. Давайте рассмотрим пример:

Измените строку программы в процедуре Form_Load на следующую:

Form1.BackColor = vbRed

После того, как Вы нажимаете на кнопку Start появиться следующее окно с надписью: "Недопустимое использование свойств":

Invalid use of property (Image103.gif - 3Kb)

Выражение BackColor будет выделено. Визуал Бейсик сообщает Вам, что есть что то неправильное в том, как Вы использовали это специфическое свойство. Нажмите <F1>, если Вы нуждаетесь в справке. Здесь Визуал Бейсик, как правило, довольно хорошо указывает на причину ошибки.

Предположим, мы исправили нашу ошибку, добавив = знак, но случайно не учли букву "k" в выражении BackColor:

Form1. BacColor = vbRed

Попробуйте выполнить проект, и вы увидите окно с надписью: "Метод или элемент данных, не найден:

Method or data member not found (Image104.gif - 3Kb)

Выражение BacColor будет выделено. Нажмите <F1>, если Вы нуждаетесь в справке. Визуал Бейсик сообщит Вам, что не может найти это свойство для средства управления. Вы должны обратить внимание на орфографическую ошибку и исправить ее.

Теперь, скажем, Вы исправили имя свойства, но снова ошибаетесь и печатаете For1 вместо Form1 для имени формы

For1.BackColor = vbRed

Запустите проект. Появится окно с надписью: "Объект требуется":

Object required (Image105.gif - 3Kb)

Нажмите <F1> или нажмите Помощь (Help). Справка объяснит ошибку, но не покажет, где она. Сообщение "Объект требуется", обычно появляется, когда Вы имеете дело с орфографической ошибкой в имени управления. Визуал Бейсик пробует определить управление, но не может найти управление с данным именем (For1 в нашем случае). Как мы узнаем, где ошибка? Сведение может быть получено, при нажатии на кнопку Дефектация (Debug) в этом окне.

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

Когда Вы нажали кнопку Дефектация (Debug), Визуал Бейсик включился в другой режим - режим прерывания [break]. Для того чтобы оставить режим прерывания и возвратиться к режиму проектирования [design], где Вы можете исправить код, Вы должны остановить проект.

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

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

Логические Ошибки

Логические ошибки (Logic Errors) наиболее трудные. Найти и исправить их очень сложно. Эти ошибки не остановят проект во время работы, но будут вызывать неправильные или непредвиденные действия.

Единственное, что Вы можете сделать в этом случае, это проверить правильность кодирования процедур события

Нахождение логических ошибок - это трудоемкое искусство. Нет никаких общих правил для нахождения логических ошибок. Каждый программист вырабатывает свой собственный специфический способ поиска.

Например, логическая ошибка может установить цвет фона формы синим, в то время как Вы ожидали красный. Вам надо будет проверить запись процедуры события в окне кодирования и, вместо константы vbRed, Вы увидите константу vbBlue. После внесения исправлений, форма приобретет нужный цвет. Но в чем причина такого странного перехода? Где гарантии, что подобное не повторится в дальнейшем? Вот вопросы, на которые Вам нужно будет найти ответы.

К сожалению, удаление логических ошибок – не так просто, как в этом примере. Но и здесь Вам на помощь придет справка. Визуал Бейсик имеет так называемый Дефектолог или Отладчик (Debugger), последнее, наверное, удобнее, который помогает Вам в определении логических ошибок. При использовании отладчика (он работает в режиме прерывания [break], который мы уже видели), Вы можете распечатать на бумагу свойства и другие значения, остановить код, когда Вы хотите и работать с проектом в режиме "строчка-за-строчкой" (line-by-line). Использование отладчика – большая тема и не будет рассматриваться в этом курсе.

Теперь, рассмотрим два новых средства управления: метка (Label) и текстовое поле (Text Box).

Средство управления Метка

Метка (Label) - это управление, которое отображает информацию, которую пользователь не может редактировать. Метка (Label) часто используется, чтобы обеспечить заголовки для других средств управления. Или для того, чтобы показать результаты какой-либо компьютерной операции. Управление метка (label) выбирается из набора инструментов (toolbox). И выглядит следующим образом:

Метка на панели инструментов (Image106.gif - 2Kb)

Метка на форме (Image107.gif - 1Kb)

Свойства:

Несколько свойств для метки (label):

Свойство (Property).........Описание (Description)

Name (Имя).......................используется для определения метки (label). Три символа (префикс) для имен метки - lbl.

Caption (Заголовок)..........текст (строковый тип), который появляется в поле метки (label).

Font (Шрифт)................... устанавливает стиль, размер, и тип текста Заголовка.

Alignment(Выравнивание).установка текста Заголовка выровненным по левому краю, по правому краю или по центру.

BackColor.........................установка цвета фона.

ForeColor..........................устанавливает цвет текста Заголовка.

BorderStyle.......................определяет стиль рамки метки (label).

Left...................................расстояние от левого края формы до левого края метки (label).

Top................................. расстояние от верхнего края формы до верхнего края метки (label).

Width..............................ширина метки.

Height.............................высота метки.

Visible(Видимый)........... определяет, появляется ли метка на форме в режиме работы [run].

Пример

Откроем Визуал Бейсик и запустим новый проект. Поместите метку на форму. Измените ее размеры и перенесите в другое место, если хотите. Установите свойство Заголовка. Попробуйте различные шрифты и различные значения свойства Выравнивание (Alignment).

Посмотрите на различие между двумя возможностями свойства Стиль Границы (BorderStyle).

Измените такие свойства как, Цвет Фона (BackColor) и Цвет Текста (ForeColor). Подберите такие сочетания цветов для фона и текста, которые, на Ваш взгляд, делают надпись легкой для восприятия пользователя. Дайте посмотреть другим, для оценки.

Главное свойство метки (label) - Заголовок. Он содержит информацию, которая отображается в управлении метки. Есть две позиции, которые Вы должны понимать. Сначала, удостоверитесь, что метка достаточно большая, чтобы содержать Ваш Заголовок, а также, обратите внимание, что Заголовок - это свойство строчного (string) типа. То есть, оно может содержать только строчные значения, другими словами – строку или набор символов. При установке свойства Заголовка в режиме работы [run], информация Заголовка должна быть в кавычках. Например, если у Вас есть средство управления Метка с именем lblExample, и Вы хотите установить свойство Заголовка как: "Моя Метка", Вы использовали бы код БЕЙСИКА (обратите внимание на точечную запись):

lblExample.Captiom = "My Label"

Кавычки указывают, что свойство Caption, принадлежащее средству управления lblExample, имеет значение строчного (string) типа.

События

Есть только одно событие метки (label), представляющее интерес:

Событие (Event)..............Описание (Description)

Click(Щелчок)...................событие выполняется, когда пользователь нажимает на метку (label) мышкой.

Используя это событие, пользователь может сделать выбор среди установок, предназначенных для изменения свойств меток (labels) отображаемых на экране компьютера, например, цвет.

Средство управления Текстовое поле

Управление Текстовое Поле (Text Box) используется, чтобы показать информацию, которая была:

- введена в режиме создания проекта [design],

- пользователем в режиме работы [run],

- назначена при записи процедуры события.

Представьте себе Текстовое поле, таким же средством управления как и метка, но в котором содержание (заголовок) может меняться по желанию пользователя. Текстовое поле выбирается из набора инструментов:

Текстовое поле на панели инструментов (Image108.gif - 2Kb)

Текстовое поле на форме (Image109.gif - 2Kb)

Свойства:

Текстовое Поле содержит много полезных свойств:

Свойство (Property)............Описание (Description)

Name (Имя).......................... используется для определения текстового поля. Три символа (префикс) для имен текстового поля - txt.

Text (Текст)..........................текст, который появляется в текстовом поле(строчное значение).

Font (Шрифт)........................устанавливает стиль, размер, и тип шрифта текста.

Asignment (Выравнивание)...установка текста выровненным по левому краю, по правому краю или по центру (работает, только тогда, когда свойство Мультистроки назначено Верно (True)).

MultiLine (Мультистрока).....определяет количество строк в текстовом поле - одна строка или несколько строк.

ScrollBars ...........................определяет тип (вертикальный или горизонтальный) отображаемой полосы прокрутки (слайдера).

MaxLength (Максимум Длины)...максимальная длина отображаемого Текста. При значении 0 (ноль), длина неограниченна.

BackColor........................... цвет фона текстового поля.

ForeColor ...........................цвет Текста.

BorderStyle ........................определяет стиль границ текстового поля.

Left ....................................расстояние от левого края формы до левого края текстового поля.

Top ....................................расстояние от верхнего края формы до верхнего края текстового поля.

Width .................................ширина текстового поля в твипс.

Height ................................высота текстового поля в твипс.

Locked (Закрыто)...............при значении Верно (True), пользователь не может изменять содержание текстового поля (только режим [run]).

Visible (Видимый)...............определяет, появляется ли текстовое поле на форме (в режиме [run]).

Пример

Запустим новый проект Визуал Бейсик. Поместите текстовое поле на форму. Измените его размеры и положение. Установите свойство Text. Попробуйте различные Шрифты, различные значения свойства Выравнивание (Asignment). Обратите внимание, Вы не можете выровнять текст, если свойство Мультистроки Неверно (MultiLine False). Посмотрите на различие между двумя значениями Стиль Границ (BorderStyle). Метка (Label) использует по умолчанию значение Ни один (None), в то время как Текстовое Поле (Text Box) использует по умолчанию значение Фиксированный Одиночный (Fixed Single). Измените свойства BackColor и ForeColor. Установите Мультистроку в значение Верно (True) и попробуйте различные значения для ScrollBars. Как видите, текстовое поле очень гибко, в смысле его возможностей появления на форме.

Также как свойство Заголовок (Caption) для управления Метки (Label), свойство Текст (Text) для текстового поля является строчным (string) значением. Так, при установке свойства Текст (Text) в режиме работы [run], мы должны заключить значение в кавычки ( " " ), чтобы обеспечить соответствующее назначение. При установке свойства Текст (Text) в режиме создания проекта [design], Вы не должны использовать кавычки.

События:

Наиболее важное свойство текстового поля - это свойство Текст (Text). Как программист, Вы должны знать, когда это свойство изменилось, чтобы использовать новое значение. Есть два события, которые Вы можете использовать, чтобы сделать это:

Событие(Property).................... Описание(Description)

Change (Замена).........................событие выполняется всякий раз, когда меняется Текст

LostFocus (Потерянный Фокус)...событие выполняется, когда пользователь оставляет текстовое поле и вызывает событие на другом управлении. Событие Замена (Change) выполняется всегда, когда пользователь нажимает на клавиатуру при печати в Текстовом Поле. Просмотр свойства Текст (Text) в этой процедуре события даст Вам ее текущее значение.

Потерянный Фокус (LostFocus)

Событие Потерянный Фокус (LostFocus) удобно для исследования (проверки) Текста. Помните, при размещении средств управления на форме в режиме проектирования, Вы могли делать одно управление активным, нажимая на него, и видеть свойства только этого управления.

Здесь похожий подход. В то время, когда прикладная программа находится в режиме работы [run], пользователь может взаимодействовать только с одним управлением одновременно.

Когда Пользователь и Управление взаимодействуют (производят событие), они имеют одну точку соприкосновения, которая и называется Фокус. То есть место, где сходятся действия пользователя и компьютера. В то время, когда пользователь печатает текст в Текстовом Поле, это Поле находится в Фокусе или, другими словами, в центре событий.

Событие Потерянный Фокус (LostFocus) означает, что печать текста выполнена, когда другое управление получает Фокус. В этот момент, мы знаем, что пользователь закончил печать текста в Текстовом Поле и закончились изменения свойства Текст (Text). Вот почему эта процедура события удобна для того, чтобы найти значение свойства Текст (Text).

БЕЙСИК - Второй Урок

В этом классе, Вы узнаете новые понятия БЕЙСИКА. Мы обсудим переменные (variables): имя, типы, объявления, а также арифметические операции, действия и способы работы со строками.

Переменные (Variables)

Все компьютерные программы работают с информацией одного или другого вида. Числа, текст, цвета и изображения – вот некоторые типы информации, с которой они работают. Компьютерные программы нуждаются в отдельных местах, чтобы хранить эту информацию для работы с ней. Один из способов и одно из мест хранения информации - это Свойства средств управления. Свойства средств управления сохраняют такую информацию как размер, внешний вид, расположение на форме и цвет. Вспомните Окно Свойств (Properties Window).

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

В данном случае нам необходимо место для хранения данных о количестве бананов, о стоимости 1 банана и для произведения этих чисел.

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

Эти места названы переменными (variables), потому что информация, сохраненная там может изменяться в течение выполнения программы. Переменные – это главный способ для перемещения информации в проекте Визуал Бейсик. И, конечно, должны быть соответствующие правила для использовании переменных (variables). Эти правила очень похожи на те, что мы уже имели для свойств управления. Это вызвано тем, что и свойства и переменный предназначены для выполнения одной задачи, а именно для хранения информации.

Имена Переменных

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

  1. Не более сорока (40) символов в имени.
  2. Имя может содержать буквы, числа, и символ подчеркивания (_).
  3. Первый символ должен быть буквой.
  4. Вы не можете использовать слово, которое уже использует Визуал Бейсик, например, Вы не можете дать переменной имя Форма (Form) или Гудок (Beep).

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

Например, для наших бананов, подошли бы такие имена:

Количество(Quantity).............. Имя Переменной (Variable Name)

Стоимость каждого банана........ BananaCost

Число купленных бананов.......... Bananas

Стоимость всех бананов........... TotalBananaCost

Типы Переменных

Мы должны знать, какой тип информации хранится в каждой переменной. Те же типы, которые используются для свойств могут применяться и к переменным: целочисленный (integer), длинное целое число (long integer), Булевый (Boolean) и строчный (string).

Есть также и другие типы – посмотрите в справке.

Здесь, мы рассмотрим Одиночный (Single) тип, который мы будем использовать с переменными.

До настоящего времени, все проекты, с которыми мы работали, использовали целое число (или целый номер) значения. Но, мы знаем, что реальная математика включает десятичные числа. Одиночный (Single) тип - это просто номер, который имеет десятичную точку. На языке программирования это называется "номер с плавающей точкой" ("floating point number"). Точка, которая является плавающей (перемещающейся вокруг) – это и есть десятичное число.

Примеры чисел одиночного (string) типа:

2.00 / -1.2 / 3.14159

Переменные находятся в инструкциях назначения:

VariableName = NewValue

Одиночная переменная (single variable) может находиться только слева от оператора назначения (=) в то время как любое допустимое выражение БЕЙСИК, использующее любой номер переменных, может быть справа от оператора назначения. В этой инструкции назначения Новое Значение (NewValue) определяется первым и затем назначается к Имени Переменной (VariableName). Самое главное здесь, чтобы Новое Значение (NewName) было такого же типа, что и Имя Переменной (VariableName).

То есть, мы должны назначить правильное значение к переменной.

Объявление Переменных

Если мы дали имя переменной и определили ее тип, мы должны передать эту информацию в проект Визуал Бейсик. То есть мы должны объявить (declare) наши переменные. (Нам не надо объявлять Свойства управлений, так как Визуал Бейсик уже знает о них.) Инструкция, которая используется, для объявления переменных называется: Имя Переменной (VariableName), напечатанное как Тип (Type):

Dim VariableName As Type

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

Теперь посмотрим, где же мы помещаем эти объявления для переменных. Запустите новый проект и вызовите окно кодирования (code window). Нажмите на список объектов, и Вы увидите два поля: Общее (General) и Форма (Form). Выберите Общее (General). Окно кодирования будет выглядеть следующим образом:

VB4: Окно кодирования (Image110.gif - 4Kb)

VB5, VB6: Окно кодирования (Image111.gif - 4Kb)

Отображаемая область в окне кодирования называется Общая Область Объявлений (General Declaration Area). Это то самое место, куда Вы помещаете инструкции объявления переменных. Любая переменная, которая объявлена в Общей Области Объявлений (General Declaration Area) может быть использована в любом из событий процедур Формы.

Ваша Общая Область Объявлений (General Declaration Area) может быть имеет наверху словосочетание Опция Явно (Option Explicit). Это - строка кода БЕЙСИКА, который сообщает Визуал Бейсик, что мы будем объявлять каждую переменную, которую мы используем. Небольшой секрет: в действительности нет необходимости объявлять каждую переменную, которую Вы хотите использовать, это - только очень хорошая идея. Именно поэтому мы это и делаем. Если Опция Явно (Option Explicit) не появляется в Вашей общей области объявлений, сделайте следующее:

VB4: Нажмите на Инструменты (Tools) , затем на Параметры (Options). Выберите вкладку Среда (Environment) и отметьте блок Требуется Объявление Переменных (Require Variable Declaration).

VB5, VB6: Нажмите на Инструменты (Tools), затем на Параметры (Options). Выберите вкладку Редактор (Editor) и отметьте блок Требуется Объявление Переменных (Require Variable Declaration).

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

Давайте напечатаем некоторые объявления переменных (variable declaration) в окне кодирования. Здесь представлено несколько примеров:

VB4: Окно кодирования (Image112.gif - 5Kb)

VB5, VB6: Окно кодирования (Image113.gif - 5Kb)

Арифметические Операторы

Некоторые программы очень хорошо выполняют арифметические действия. Они могут складывать, вычитать, умножать, и делить числа очень быстро. Мы должны знать, как создавать такие программы. В языке БЕЙСИК есть семь арифметических операторов.

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

Операция(Operation) . Пример(Example) . Результат(Result)
Сложение (addition) .........7 + 2 ............................9
Сложение ........................3 + 8 ..........................11
Вычитание(subtraction)......6 - 4 ............................2
Вычитание ......................11 - 7 ............................4

Умножение (multiplication) выполняется с использованием звездочки ( * ), и деление (division) с использованием наклонной черты вправо ( / ). Например:

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

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

Умножение ...................................2 * 12 ......................24

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

Деление ......................................42 / 6 .........................7

 

Конечно, Вы знакомы с этими операциями и понимаете, как они работают. Три других арифметических оператора БЕЙСИКА могут быть Вам незнакомы.

Следующий арифметический оператор - это оператор возведения в степень (exponentiation), представляемый символом карата (^), который еще иногда называют "шляпа". Карат (^) печатается, когда Вы держите нажатой клавишу <Shift> и нажимаете цифру 6.

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

2*2*2*2*2*2*2=2 в седьмой степени (семь двоек).

Если Вы имеете одну целую переменную (integer variable) с именем А, и другую с именем B, тогда выражение А ^ B означает, что Вы умножили А само на себя B раз. Например:

Пример (Example)...................Результат (Result)

5 ^ 2 ........................................25 пять во второй степени (пять умножено само на себя два раза)

2 ^ 4 ........................................16 два в четвертой степени (два умножено само на себя четыре раза)

3 ^ 3 ........................................27 три в третьей степени (три умножено само на себя три раза)

Другие арифметические операторы связаны с делением целых чисел. Целочисленный оператор деления (integer division) имеет символ наклонной черты влево ( \ ). Он работает точно так же как обычное деление, за исключением того, что после деления остаются только целые числа. Остатки игнорируются.

Наоборот действует, так называемый, Оператор Модуля (Modulus Operator), который представлен ключевым словом БЕЙСИКА – Mod. Он делит целые числа, но при этом игнорирует основную часть ответа (целые) и дает Вам только остаток. Это, конечно, не очень понятно, но надо учитывать, что оператор модуля (modulus operator) часто используется в программировании и принять это как правило. Примеры для обоих операторов:

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

(Integer division)

Целочисленное деление 7 \ 2 ...................3 (остаток 1).....................3

Целочисленное деление 23 \ 10 ...............2 (остаток 3)......................2

Целочисленное деление 18 \ 3 .................6 (остаток 0)......................6

(Modulus)

Модуль .......................7 Mod 4 ................1 (остаток 3) .....................3

Модуль .....................14 Mod 3 ................4 (остаток 2) .....................2

Модуль .....................25 Mod 5 ................5 (остаток 0) .....................0

 

Хорошо изучите эти примеры так, чтобы Вы поняли и запомнили, как работает целочисленное деление в БЕЙСИКЕ.

Что произойдет, если инструкция назначения содержит больше чем один арифметический оператор? Например:

7 + 3 * 4

Что в ответе? Это зависит от последовательности выполнения действий. Если Вы считаете слева направо и сначала складываете 7 и 3, а потом умножаетесь на 4, ответ - 40. Если Вы сначала умножаете 3 на 4, а потом прибавляете 7, ответ - 19. Путаница? Да.

Но, БЕЙСИК устраняет возможность такого беспорядка с помощью правила старшинства. Это означает, что установлен определенный порядок выполнения арифметических действий:

  1. Возведение в степень ( ^ )…………Exponentiation
  2. Умножение ( * ) и деление ( / )……..Multiplication & Division
  3. Целочисленное деление ( \ )……….Integer Division
  4. Модуль (Mod)………………………...Modulus
  5. Сложение ( + ) и вычитание ( - )…..Addition & Subtraction

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

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

24 / 2 * 3

Сначала выполняется деление (24 / 2) и получается 12, затем выполняется умножение (12 * 3) и ответ - 36.

Но что, если мы хотим сделать умножение перед делением, может ли это быть выполнено? Да. С использованием группирующих операторов (grouping operators) или круглых скобок ( ). Используя круглые скобки в инструкции назначения, Вы определяете действия которые будут выполнены первыми, внутри круглых скобок. Если мы запишем наш пример как:

24 / (2 * 3)

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

Если Вы вкладываете одни круглые скобки в другие, первое действие начнется от самых внутренних скобок к самым наружным скобкам. Например:

((2 + 4) * 6) + 7

Сначала выполняется сложение 2 и 4, затем умножение на 6 и только потом прибавляется 7. Конечный ответ 43.

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

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

Функции Val и Str

Часто употребляемое действие в любом проекте Визуал Бейсик - это ввод чисел в программу, выполнение нужных арифметических действий в установленной последовательности и выведение результатов этих действий. Другими словами ввод – вывод (input – output) информации

Как сделать это? Вы, возможно, предполагаете, что могли бы использовать средство управления Текстовое Поле (Text Box), чтобы ввести числа. Затем, с помощью арифметических операторов, произвести математические действия и в управлении Метка (Label), отобразить результаты. Но, имеются две проблемы:

Проблема Один: Арифметические операторы могут работать только с числами, например, с целыми переменными (integer variables и целочисленными свойствами (integer properties), но текстовое поле имеет строчное (string) значение. Вы не можете производить арифметические действия с переменными строчного (string) типа, так же как Вы не можете производить арифметические действия с членами предложения.

Проблема Два: результат арифметических действий - число. Но свойство Заголовка (Caption) управления Метки (Label), где нам нужно показать результаты, тоже имеет строчный (string) тип. И здесь Вы также не можете сохранять числовые данные в их математическом значении.

Решение находится в так называемых встроенных функциях (built-in functions). Нам необходимо иметь возможность преобразовывать строки в числа и, наоборот, числа в строки. С этой возможностью, мы могли бы брать свойство Текста (text property) от текстового поля (text box), преобразовать его в число, сделать необходимые вычисления и преобразовать наш числовой результат в строку (string), которая могла бы использоваться как свойство Заголовка (Caption property) в поле Метки (Label). Это - общая задача в БЕЙСИКЕ, и БЕЙСИК имеет большой набор функций, которые позволяют нам выполнять такие задачи. Две функции, которые решат наши проблемы - это функция Вал (Val) и функция Стр (Str). Мы их рассмотрим, но, сначала, давайте определим, что скрывается за словом "функция".

Функция БЕЙСИК - это встроенная (built-in) процедура, дающая нам какую-либо информацию и которая вычисляет нужные нам значения. Формат для использования функции следующий:

FunctionValue = FunctionName (ArgumentList)

FunctionName - имя функции и ArgumentList - список аргументов (разделенных запятыми), которые обеспечивают работу функции. В этой инструкции назначения Имя Функции (FunctionName) использует значения в Списке Аргументов (ArgumentList), чтобы вычислить результат и назначить этот результат к переменной (variables) с именем Значение Функции (FunctionValue). Мы должны обеспечить, чтобы переменная Значение Функции (FunctionValue) имела тот же самый тип как и значение, вычисленное Именем Функции (FunctionName).

Как мы узнаем, какие функции БЕЙСИК существуют, какую информацию они предоставляют и какого типа аргументы (arguments) они требуют? Используйте справку Визуал Бейсик и ищите слово "функция". Вы увидите, что их довольно много. Мы рассмотрим некоторые из них в этом классе, но Вы должны будете сами сделать небольшое исследование, чтобы узнать большинство из них. Теперь, давайте рассмотрим первые две функции БЕЙСИК: Вал и Стр (Val и Str).

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

YourNumber = Val(YourString)

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

YourNumber = Val("23")

После этой инструкции назначения, переменная Ваш Номер (YourNumber) имеет числовое значение 23.

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

YourString = Str(YourNumber)

Функция Стр (Str) берет аргумент Ваш Номер (YourNumber), преобразовывает его в значение строчного (string) типа, и назначает его к переменной с именем Ваша Строка (YourString). Например:

YourString = Str (23)

Переменная Ваша Строка (YourString) получает строчное (string) значение "23".

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

Строчная Конкатенация (String Concatenation)

Конкатенация – взаимная связь, последовательность событий.

Признаемся - в вышеупомянутом обсуждении, Вам были сообщены немножко неверные данные. Инструкция была сделана так, что Вы не могли добавлять и увеличивать строки. Хорошо, Вы не можете увеличить их, но Вы можете делать нечто, похожее на добавление. Много раз в проектах Визуал Бейсик, Вы будете брать строчную переменную из одного места и переносить ее на конец другой строки. Строчная конкатенация (String Concatenation) - причудливое словосочетание для обозначения этого действия. Оператором Конкатенации (Сoncatenation) является символ амперсанта &. Например:

NewString = "Visual" & "Basic"

После этой инструкции, переменная строки Новая Строка (NewString) будет иметь значение "Visual Basic". В некоторых книгах о БЕЙСИКЕ Вы можете увидеть знак "плюс" (+), который используемется как оператор Конкатенации (Сoncatenation), и он тоже будет работать. Здесь мы используем символ амперсант & для того, чтобы отличить Строчную Конкатенацию (String Concatenation) от арифметической операции сложения.

Проект - Сберегательный счет

Создание Проекта

В этом проекте, мы будем создавать счетчик для сберегательного счета. Мы введем информацию о том, сколько денег мы кладем на счет каждую неделю и количество недель, в течение которых мы ложили деньги на счет. Проект затем сам вычислит, сколько мы сохранили. Мы используем Текстовые Поля (Text Box) как средства управления для ввода информации и поле Метки (Label) для вывода информации. Командная Кнопка (Command Button) будет использоваться, чтобы делать вычисления.

Размещение Управлений на Форму

Запустите новый проект Визуал Бейсик. Поместите два средства управления Текстовое Поле (Text Box), четыре средства управления Метка (Label), и две Командные Кнопки (Command Button) на форме. Ваша форма должна выглядеть так:

Форма с управлениями (Image114.gif - 4Kb)

Напомним, что даже если имеется большое количество одинаковых средств управления, нельзя использовать команды копировать (copy) и вставить (paste). Поместите каждое управление на форме отдельно.

Установка Свойств Управления

Установите свойства управлений (control properties), используя окно свойств (properties window). Вспомните, что управления в списке имеют имена заданные по умолчанию, то есть назначенные самим Визуал Бейсик:

Form1 Form:

Имя Свойства (Property Name)..........Значение Свойства (Property Value)

Name ..................................................frmSavings (сбережения)

Caption ...............................................Savings Account (подсчет сбережений)

BorderStyle .........................................1-Fixed Single

Text1 Text Box:

Имя Свойства (Property Name)..........Значение Свойства (Property Value)

Name ..................................................txtDeposit (вклад)

Text ....................................................[Blank] (бланк)

Font ....................................................Arial ("эриал"-название шрифта)

Font Size ............................................10 (размер)

Text2 Text Box:

Имя Свойства (Property Name) ........Значение Свойства (Property Value)

Name ..................................................txtWeeks (недели)

Text ....................................................[Blank] (бланк)

Font ...................................................Arial

Font Size ...........................................10

Label1 Label:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name ................................................lblDepositHeading (заголовок для вклада)

Caption ..............................................Weekly Deposit (еженедельный вклад)

Font ..................................................Arial

Font Size ...........................................10

Label2 Label:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name .................................................lblWeeksHeading (заголовок для недели)

Caption ..............................................Number of Weeks (количество недель)

Font ..................................................Arial

Font Size ...........................................10

Label3 Label:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name .................................................lblTotalHeading (общий заголовок)

Caption ..............................................Total Savings (общие сбережения)

Font ...................................................Arial

Font Size ...........................................10

Label4 Label:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name .................................................lblTotal (Общий)

Caption ..............................................[Blank]

Font ..................................................Arial

Font Size ..........................................10

BackColor .........................................White

BorderStyle .......................................1-Fixed Single

Command1 Button:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name ................................................cmdCompute (вычислить)

Caption Compute Savings ...................(вычисление сбережений)

Command2 Button:

Имя Свойства (Property Name)........Значение Свойства (Property Value)

Name .................................................cmdExit

Caption ..............................................Exit

Обратите внимание, что в свойствах текстовых полей (text box) и в одной из рамок метки (label) мы использовали значение Бланк [Blank]. Это не значит, что тип Бланк [Blank] это свойство. Это указывает пользователю место для ввода данных.Также заметьте, что здесь Вы первый раз изменяете свойства шрифта. В случае необходимости, посмотрите процедуру для выполнения этого изменения (Класс 4). Измените любые другие свойства, по Вашему желанию. Когда все выполнено, Ваша форма должна выглядеть так:

Форма (Image115.gif - 4Kb)

Запись Процедуры События

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

В этом проекте нам необходимо три переменных (мы используем целочисленные типы). Одна переменная для проводки еженедельно вносимых сумм (Deposit). Вторая, для количества недель (Weeks). Третья, для общей суммы сбережений (Total). Откройте окно кодирования (Code Window), и найдите общую область объявлений (General). Объявите эти три переменные. Опция Явно (Option Explicit) должна уже быть там.

Option Explicit

Dim Deposit As Integer

Dim Weeks As Integer

Dim Total As Integer

Событие Вычислить cmdCompute_Click осуществляет следующие действия:

  1. Преобразовывает, строчное значение вклада (txtDeposit. Text) в числовое значение и хранит это значение в переменной Вклад (Deposit).
  2. Преобразовывает строчное значение числа недель (txtWeeks. Text) в числовое значение и хранит это значение в переменной Недели (Weeks).
  3. Умножает, сумму Вклада на количество Недель и хранит это значение в переменной Общее (Total)
  4. Преобразовывает числовое значение Общее (Total) в строчное значение, конкатенирует (последовательно соединяет) его со знаком доллара ($) и сохраняет его в свойстве Заголовок (Caption) Метки lblTotal.

В коде, эти действия выглядят так:

Private Sub cmdCompute_Click()

'Get deposit amount

Deposit = Val (txtDeposit.Text)

'Get number of weeks (количество недель)

Weeks = Val (txtWeeks.Text)

'Compute total savings (вычисление общих сбережений)

Total = Deposit * Weeks

'Display Total (показать общее количестве)

LblTotal.Caption = "$" + Str (Total)

End Sub

Обратите внимание, как просто переводить перечисленные действия в код БЕЙСИКА. Только не забывайте о деталях. В частности рассмотрите использование функций Val и Str, которые преобразовывают строки в числа и наоборот.

Процедура Выход cmdExit_Click - это просто одна строка программы:

Private Sub

cmdExit_Click()

End

End Sub

Сохраните Ваш проект.

Запуск Проекта

Запустите проект в рабочий режим [run]. Поместите курсор в текстовом поле Еженедельный Вклад (Weekly Deposit) и напечатайте любое число. Сделайте то же самое в текстовом поле Количество Недель (Number of Weeks). Нажмите кнопку Вычислить (Compute). Ответ должен появиться в поле Общие Сбережения (Total Saving). Убедитесь, что ответ правилен. Помните, что главное в создании проекта - это получение правильного ответа. Если Вы говорите, что Вы хотите сохранить 10 долларов в неделю в течение 10 недель, а Ваш проект отвечает, что Вы, к тому времени, будете иметь миллион долларов, Вы должны знать, что где то есть ошибка.

Нажмите Выход (Exit), чтобы удостовериться, что он работает. Если Вы что - нибудь изменили, сохраните Ваш проект.

Этот проект может показаться не очень сложным. Но это не так. Конечно, мы только умножили два числа. Но, проект показывает действия, которые используются в каждом проекте Визуал Бейсик. Ценный опыт был получен в распознавании, как читать входящие значения, преобразовывать их в соответствующий тип, производить математические действия, чтобы получить нужные результаты и вывести эти результаты для пользователя.

Другие операции для тренировки

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

  1. Определите переменную для Процента (Interest), чтобы сохранить ежегодную процентную ставку. Процентные ставки – это десятичные числа, поэтому используйте Одиночный (Single) тип для этой переменной (это - первый раз, когда мы будем использовать десятичные числа).
  2. Добавьте еще одно текстовое поле, чтобы пользователь мог ввести эту процентную ставку. Назовите это поле txtInterest.
  3. Добавьте управление Метка (Label), чтобы идентифицировать новое текстовое поле, для установки Заголовка (Caption) к Процентной Ставке (Interest Rate).
  4. Измените код, чтобы использовать Процент в вычислении Общего (Total) количества. Процент будет найден с использованием:

Interest = Val (txtInterest.Text)

Затем, Общее (Total) количество вычисляется с использованием:

Total = 5200 * Deposit * ((1 + Interest / 5200) ^ Недели - 1) / Interest

Теперь, запустите проект. Введите числа для полей Вклад (Deposit), Недели (Weeks) и Процент (Interest). Нажмите на кнопку Вычислить (Compute). Убедитесь, что Вы получаете приемлемые ответы.

Для проверки: если Вы используете значение Вклад (Deposit) 10, значение Недели (Weeks) 20, и значение Процент (Interest) 6.5, ответ Общий (Total) должен быть $ 202. Примечание: без процента Вы имели бы $ 200.

Проект автоматически преобразовывает Общее (Total) количество в целое число (так как объявлен этот тип), даже если имеется десятичное число (несколько центов) включенное в ответ. Сохраните Ваш проект.

Перед выходом из проекта, давайте рассмотрим еще одну вещь. Вспомните, мы говорили, что будем объявлять каждую переменную, которую мы используем в наших проектах, даже если мы не должны этого делать? Давайте посмотрим, почему мы это делаем. Откройте первый проект Сберегательного счета (без процента). Идите к процедуре события Вычислить cmdCompute_Click и преднамеренно внесите ошибку в переменную Вклад (Deposit). Например, измените строку:

Deposit = Val (txtDeposit.Text)

на

Depsit = Val (txtDeposit.Text)

Запустите проект. Что случилось, как только Вы щелкнули на кнопке Вычислить (Compute)? Должно появиться Окно похожее на это (для VB4):

Variable not defined (Image116.gif - 4Kb)

И переменная с орфографической ошибкой Depsit должна высветиться в окне кодирования. Визуал Бейсик сообщает Вам, что нет никакой объявленной переменной с таким именем. Это указывает на Вашу орфографическую ошибку. Остановите проект.

Теперь, перейдите к Общей Области Объявлений (General Declaration Area) и удалите строку Опцию Явно (Option Explicit). Теперь Вы удалили требование о том, что все переменные в проекте должны быть объявлены. Теперь снова запустите проект. Напечатайте какие ни будь числа. Щелкните по кнопке Вычислить (Compute). Обратите внимание, что программа, выполняется ХОРОШО, но ответ неправилен. Визуал Бейсик думает что Depsit и Deposit - это переменные в Вашем проекте. С этого момента переменная Вклад (Deposit) не оценивается и принимается равной нулю. Поэтому, независимо от того, какие значения Вы вводите, вычисленное Общее (Total) количество всегда будет равным нулю. У Вас логическая ошибка в коде. Вы знаете, что что-то неправильно и Вы должны перепроверить код, чтобы выяснить причину ошибки. В этом случае Визуал Бейсик не даст Вам никакой справки в определении ошибки. Следовательно, объявляя все наши переменные, мы делаем процесс записи процедур события, которые свободны от ошибок, немного легче. Остановите проект.

Резюме

В этом классе, Вы изучили много нового материала. Вы узнали новые средства управления: Текстовое Поле (Text Box) и Метка (Label). Вы узнали о переменных: их наименование, типы и как правильно их объявлять. Вы изучили функции, которые допускают преобразование строчных переменных в числовые и числовые переменные в строчные. Вы изучили, как производить арифметические действия БЕЙСИКЕ.

Наверх

Назад

На первую страницу

Hosted by uCoz