Выбрать главу

Если вам не нравится строка Project1 в заголовке окна, то вы можете задать свою строку, так дополнив оператор:

а = InputBox("Введите ширину прямоугольника", "Ввод данных")

Результат — >

Почему плохо не объявлять переменные величины

Посмотрим, где Visual Basic дает сбой, если не объявлять переменные величины. Рассмотрим простую задачу:

Даны три стороны треугольника. Вычислить его периметр.

Создаем новый проект с кнопкой для задачи о треугольнике. По аналогии с процедурой о прямоугольнике легко пишем процедуру для треугольника:

неправильная процедура:

Private Sub Command1_Click()

  а = InputBox("Введите первую сторону треугольника")

  b = InputBox("Введите вторую сторону треугольника")

  с = InputBox("Введите третью сторону треугольника")

  р = а + Ь + с

  Debug.Print р

End Sub

Запускаем проект, вводим стороны — 2, 3, 4 и какой результат мы видим? Вместо 9 мы видим 234! Почему? Здесь тот же случай, что и с калькулятором, там было то же самое, пока мы не применили Val. Почему? Первое: Visual Basic считает содержимое текстового поля окна InputBox (точно так же, как и содержимое обычного текстового поля) текстом, а не числом, если даже оно состоит из цифр. А раз так, то и переменные а, Ь, с, берущие свое значение из текстового поля, он тоже считает текстовыми, а не числовыми. Второе: Visual Basic знает, что по правилам языка знак + имеет несколько смыслов в зависимости от того, к чему он применяется. В частности, при работе с текстом это не приказ складывать, а приказ выстраивать в цепочку. А раз так, то и результат получился тот, что мы видели.

Наши необъявленные переменные, как голодные дворняги, готовы есть все, что им дают. Введите вместо трех чисел три таких текста: Ко, ро, бочка. Результат — Коробочка.

Почему же тогда в примере о прямоугольнике все прошло нормально? Потому что там было еще умножение. Visual Basic знает, что по правилам языка знак умножения * не имеет смысла при работе с текстом. Значит (догадывается умный и услужливый Visual Basic) мой господин — человек не хочет, чтобы переменные а, Ь, с были текстовыми. Значит быть им числовыми! Проверьте: подсуньте компьютеру вместо чисел коробочку — Visual Basic запротестует.

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

Так вот, чтобы не перенапрягать умственные способности Visual Basic и предохранить себя от неприятностей, нужно все переменные величины объявлять!

Как объявлять переменные величины

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

правильная процедура:

Dim a As Integer

Dim b As Integer

Dim с As Integer

Dim p As Integer

Private Sub Command1 Click()

  а = InputBox("Введите первую сторону треугольника")

  b = InputBox("Введите вторую сторону треугольника")

  с = InputBox("Введите третью сторону треугольника")

  р = а + b + с

  Debug.Print а, b, с, p

End Sub

Объявление

Dim а As Integer

переводится так:

Переменная а величина как целое число

то есть вы обязуете Visual Basic обращаться с переменной величиной а как с целым числом и ничем иным. Говорят, что "переменная а имеет тип Integer". Аналогично объявлены и переменные Ь, с, р. Объявления будем пока писать выше процедур.

Запустите проект. Проверьте его работу.

Вместо четырех строк

Dim a As Integer

Dim b As Integer

Dim с As Integer

Dim p As Integer

можно для краткости написать одну:

Dim a As Integer, b As Integer, с As Integer, p As Integer

Но если вы захотите написать еще короче:

Dim а, Ь, с, р As Integer

то Visual Basic неправильно вас поймет.

Типы данных

Много ли прав у Integer? Посмотрим. Попробуем ввести дробное значение первой стороны треугольника — 2,3. Именно так — с запятой, а не точкой. Посмотрим результат. Visual Basic считает а целым числом 2. А теперь — 2,6.

Visual Basic считает а целым числом 3. Все правильно. Наш барон высокомерно отказывается быть дробным числом и поэтому любое число, которое мы ему предлагаем, округляет до целого.