Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Описания переменных(VAR)




В 4.5 я писал фрагменты программ, содержащих переменные величины. А теперь пришло время писать такие программы целиком. Но для этого я должен написать кое-что выше begin, чего раньше не делал. Вот пример программы:

VAR a,b: Integer;
BEGIN
a:=100;
b:=20;
WriteLn (a + b)
END.

Очевидно, эта программа напечатает число 120. В программе новостью для нас является только первая строка. Называется она описанием переменных величин а и b. Я пока не буду излагать правила составления описаний переменных. Скажу только, что описание начинается со служебного слова var(читается ВАР, это сокращение от английского variable - переменная). После него записываются имена всех переменных, встречающихся в программе с указанием через двоеточие типа значений, которые каждая переменная имеет право принимать. В нашем случае я записал имена переменных а и b, так как только они встречаются между BEGIN и END. Слово Integer(читается " 'интеджер", переводится ЦЕЛЫЙ) указывает, что а и b имеют право быть целыми числами, а не дробными. Смысл подобного ограничения в том, что Паскаль по-разному работает с целыми и дробными числами, а поскольку он язык строгий, то требует, чтобы программист точно указал, к какому из этих двух типов относятся числа.

Зачем нужно описание? Для понимания этого сначала нужно вспомнить, для чего нужна компьютеру память и как она устроена (см.3.2), а также порядок работы человека на компьютере (см.2.7).

После того, как программист ввел программу в память, он приказывает компьютеру ее исполнить. Но компьютер при этом не сразу принимается выполнять программу, а сначала совершает компиляцию, то есть перевод программы с Паскаля на собственный машинный язык. (Часто вместо термина «компиляция» употребляют более общий термин «трансляция»). Во время компиляции компьютер производит некоторые подготовительные действия, одним из которых является отведение в памяти места под переменные величины, упомянутые в программе. При этом компьютер "рассуждает" так: Раз в программе упомянута переменная величина, значит она в каждый момент времени будет иметь какое-то значение, которое, хочешь не хочешь, надо помнить. Лучше, чтобы не спутаться, заранее отвести в памяти определенное место для запоминания текущего значения каждой переменной величины и только потом уже выполнять программу. Будем называть место, отведенное в памяти под данную переменную, ячейкой.

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

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

Вы можете сказать: Зачем хранить значения 100 и 20 в каком-то другом месте, если они содержатся прямо в тексте программы, которая и без того хранится в памяти? Получается, что эти числа хранятся в двух разных местах памяти. Ответ на этот вопрос выходит за рамки книги.

4.6.1. Integer и LongInt

Итак, в Паскале принято правило, что если человек описал переменную, как Integer, то он разрешает ей принимать значения только целого числа. Число типа Integer занимает в памяти два байта. Значит, под переменные а и b компьютер отводит в памяти ячейки по два байта каждая. Два байта - это маленький объем памяти и уместиться в него может лишь небольшое целое число, а именно - число в диапазоне от -32768 до 32767. Если бы в предыдущем примере вам понадобилось взять а=40000, то Паскаль получил бы неправильную сумму.

Для того, чтобы переменная имела право принимать значения больших целых чисел, она должна быть описана не как Integer, а как LongInt (сокращение от Long Integer - Длинное Целое, читается “лонг’инт”). Под переменную типа LongInt компьютер отводит в памяти 4 байта и она может принимать значения в диапазоне от ‑2147483648 до 2147483647.

Задание 5: Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.

Задание 6: Попробуйте ввести ошибку. Опишите переменные величины не как LongInt, а как Integer. Какова реакция Паскаля?

 




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


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


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



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




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