Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Когда на бал к графине N приезжает герцог M, то слуга объявляет на весь зал: " Герцог M! ", отчего все гости сразу узнают, что перед ними герцог, а не какой-нибудь там баронишко, и обращаются к нему соответственно. Все хорошо, все прилично. Если бы слуга проморгал и забыл объявить герцога, то в большинстве случаев тоже ничего страшного бы не произошло. Однако иногда все же могли бы приключиться досадные недоразумения. Например, к герцогу могли бы обратиться так: " Эй, человек, подай-ка лимонад! ", а это уже скандал!

Бал - это проект в режиме работы. Гости - это переменные. Слуга - это вы. До сих пор вы никого не объявляли и тем не менее все шло как по маслу. Это потому что Visual Basic умный, он по глазам определяет, кто герцог, а кто нет. Однако не на каждом балу глаза говорят правду. Прежде чем убедиться в этом, изучим еще один полезный и приятный элемент Visual Basic:

InputBox

Как мы можем задать компьютеру какую-нибудь величину? Оператором присваивания - раз. Введя ее в текстовое поле, как мы делали в калькуляторе - два. Есть еще один удобный и приятный способ - InputBox.

В вашем проекте о прямоугольнике вы можете хоть сто раз нажимать на кнопку - результаты все время будут одинаковые. Это потому что исходные данные a=27018 и b=3954 никто не меняет. Скучно. Хорошо бы компьютер при нажатии на кнопку каждый раз спрашивал нас, чему равны стороны прямоугольника. А мы бы ему отвечали. А уж потом он вычислял.

Для этого нам нужно слегка изменить программу:

Private Sub Command1_Click()

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

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

S = a * b

p = 2 * a + 2 * b

Debug.Print S, p

End Sub

Как видите, заменены первые две строки: a=27018 и b=3954.

Конструкция

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

есть оператор присваивания и означает она приказ компьютеру вывести сначала на экран вот такое окно:

 

 

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

Запустите проект и посмотрите, как он работает.

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

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

Результат:

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

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

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

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

Private Sub Command1_Click()

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

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

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

p = a + b + c

Debug.Print p

End Sub

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

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

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

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

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

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

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

 

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.