Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Когда на бал к графине 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 и предохранить себя от неприятностей, нужно все переменные величины объявлять!

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

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

 

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

 




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 423; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.