Онлайн
библиотека книг
Книги онлайн » Разная литература » Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Шрифт:

-
+

Закладка:

Сделать
1 ... 135 136 137 138 139 140 141 142 143 ... 192
Перейти на страницу:
тоже считает текстовыми, а не числовыми. Второе: 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. Все правильно. Наш барон высокомерно отказывается быть дробным числом и поэтому любое число, которое мы ему предлагаем, округляет до целого.

Предположим, мы этим недовольны. Мы желаем, чтобы все числа могли быть дробными. Пожалуйста! Вот так:

Dim a As Single

Dim b As Single

Dim с As Single

Dim p As Single

Private Sub Command1_Click()

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

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

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

  р = а + b + с

  Debug.Print а, Ь, с, р

End Sub

Объявление

Dim а As Single

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

Переменная величина а как десятичная дробь обычной точности

то есть вы обязуете Visual Basic обращаться с переменной величиной а как с десятичной дробью и ничем иным. Десятичная дробь — это любое число, которое может иметь целую и дробную часть (например, 27,3908), в частности это и целое число. Об обычной точности попозже. Говорят, что "переменная а имеет тип Single".

Законный вопрос: зачем нам нужен тип Integer, когда тип Single "гораздо лучше"? Ответ: Не во всем и не всегда он лучше, иначе не стали бы его создавать вообще.

Типов данных в Visual Basic довольно много и каждый полезен по-своему. Рассматривать новые типы я буду по мере надобности. А сейчас отмечу главное — в солидном проекте не объявлять переменные неприлично! Поэтому переменные величины нужно объявлять всегда. А чтобы по нашей человеческой рассеянности какая-нибудь переменная не проскочила необъявленной, поручим компьютеру не пускать таких, то есть прикажем Visual Basic выдавать соответствующее сообщение при нашей попытке запустить проект с необъявленными переменными. Для этого — Tools->Options->Editor->Require Variable Declaration. Отныне в окне кода любого создаваемого вами проекта будет появляться строка Option Explicit, что означает требование обязательно объявлять переменные этого проекта. В общем, "Посторонним В!.." Тем не менее, свобода есть свобода, и вы всегда можете в каком-нибудь проекте стереть строку Option Explicit.

Я сам в примерах этой книги поначалу все, что можно, буду объявлять, но затем для экономии "места и смысла" перестану это делать. Не берите с меня пример!

Вот еще причина, по которой удобно использовать Option Explicit. Как по вашему, что напечатал у меня следующий фрагмент:

х = 2

Debug.Print х

Если вы думаете, что 2, то ошибаетесь. Ничего не напечатал. Потому что в первой строке присутствует латинская буква "икс", а во второй строке я нечаянно написал русскую букву "хэ". Я был в недоумении. Не помогло и объявление переменной "икс" (не помогло бы, между прочим, и объявление "хэ"). Visual Basic не нашел в программе никаких ошибок. И только применение Option Explicit дало намек на истинную причину ошибки.

Переменные величины и память

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

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

Как устроена оперативная память (или просто память)? Представьте себе тетрадный листок в клеточку. В каждую клетку вы имеете право записать карандашом какую-нибудь букву или цифру или знак + или вообще любой символ, который можно найти на клавиатуре. А можете и стереть ластиком и записать

1 ... 135 136 137 138 139 140 141 142 143 ... 192
Перейти на страницу: