Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi / песни о паскале.pdf
Скачиваний:
62
Добавлен:
26.03.2016
Размер:
5.16 Mб
Скачать

Глава 8 Постоянные и переменные

Знаком ли вам Эдсон Арантес ду Насименту? Неужто не слышали о великом Пеле? Ведь оба имени принадлежат одному человеку! В Бразилии полно отменных футболистов, и у всех — пышные имена. Но от футбольных комментаторов вы их не услышите. Бразильцы — а все они фанаты — дали своим любимцам короткие клички. Так на весь мир прославились Пеле, Зико, Ривалдо…

Константы

Придумка бразильских фанатов напомнила решение сходной проблемы программистами. В разных частях программы нередко попадаются одни и те же данные — строчки текста или числа. Взять хотя бы предыдущую программу, где в начале и в конце приветствия печатаются две горизонтальные черты. Если в этих операторах задать линии разной длины, то красота слегка пострадает. Пустяки? Конечно. Но в иных случаях ошибочка обойдется втридорога, например, в программе управления ракетой.

Предположим, что в расчете полета ракеты учитывается масса её полезной нагрузки, и это число разбросано по всем частям программы. Вы должны указать его везде одинаково, без ошибки, иначе ракета улетит «за бугор». А если переделка ракеты повлечет изменение этого числа? Тогда доведется тщательно «прочесать» программу в поисках всех исправляемых операторов.

Проблема очевидна, но Паскаль даёт средство её решения — это символические константы. «Константа» в переводе на русский означает «постоянный», «неизменный». Константа подобна кличке бразильского футболиста: любому элементу данных — числу или строке — вы можете назначить удобное имя, а затем подставлять это имя вместо самих данных. Покажем это на примере нашей программы.

Прежде, чем применить символическую константу, её надо объявить, то есть дать ей имя и значение. Для объявления используют ключевое слово CONST, за которым следует нечто, похожее на простую формулу.

const Имя_константы = Значение_константы;

Слева от знака равенства указывают имя константы, а справа — её значение. Предположим, что длинный прочерк я обозначил словом Line — «линия». Тогда объявление константы для линии будет таким.

56

Глава 8

Постоянные и переменные

---------------------------const Line = ’

’;

Обратите внимание, что объявление константы — это оператор, и после него следует точка с запятой! Теперь в любом месте программы я могу напечатать прочерк, пользуясь именем этой константы.

Writeln(Line);

Параметром процедуры печати Writeln здесь по-прежнему является всё та же строковая константа, только теперь она обозначена через свое имя Line.

Слово CONST открывает секцию объявления констант, внутри которой надо объявить хотя бы одну константу, — секция не терпит пустоты! Вот объявление двух констант, где для наглядности слово CONST записано в отдельной строке.

Const

C1 = ’Мой повелитель!’;

Pele = ’Эдсон Арантес ду Насименту’;

Секцию констант располагают до слова BEGIN перед началом выполняемых операторов. Следовательно, новый вариант нашей программы будет таким.

const

Line = ’---------------------------

’;

begin Writeln(Line);

Writeln(’Мой повелитель!’);

Writeln(’Поздравляю тебя с написанием первой программы!’);

Writeln(’Твой верный слуга Паскаль’);

Writeln(Line);

Readln

end.

Программа будет работать точь-в-точь, как и раньше. Но теперь мы уверены, что линии будут одинаковыми. А если потребуется изменить линию и составить её из звездочек? Тогда исправим лишь объявление константы:

const

Line = ’***************************’;

и после повторной компиляции программа заработает по-новому.

Константы облегчают жизнь программиста и повышают надежность программ. Но, повторяю, после изменения константы вы должны повторно откомпилировать программу!

57

Глава 8

Постоянные и переменные

Идентификаторы

Для констант придумывают подходящие имена. Впрочем, это касается и других объектов программы, о которых вы скоро узнаете. Выдуманные программистом имена называют идентификаторами (IDENTIFIER). Запомните это словцо, оно ещё «намозолит» вам глаза. Изобретатель идентификаторов ограничен следующими рамками.

В идентификаторах допустимы лишь латинские буквы, знак подчеркивания и цифры.

Идентификатор начинают либо с буквы, либо с подчеркивания (но только не с цифры!).

Идентификатор может содержать до 127 символов, (в Borland Pascal учитываются только первые 63 из них).

Не допускается совпадение идентификатора с ключевым словом.

Русские буквы и знаки препинания в именах запрещены. Заглавные и строчные латинские буквы равнозначны (регистр букв не учитывается), поэтому идентификаторы Pascal и PASCAL считаются одинаковыми.

Вот примеры правильных идентификаторов:

A, b, C

- однобуквенные имена

R1, U28, _13_

- имена с цифрами и подчеркиванием

Cosmos, ABBA

- однословные имена

NextStep, Next_Step

- имена, составленные из двух слов

 

 

 

А это ошибочные имена:

 

 

7Up

- начинается с цифры

End

- совпадает с ключевым словом

 

 

Изобретая имена, мы будем придерживаться некоторой системы с тем, чтобы меньше путаться в своих придумках. Так, имена констант условимся начинать с латинской буквы «C» (например, CLine).

Переменные

Согласитесь, наш последний шедевр — программа P_07_1 — пока не слишком умна, при каждом запуске она тупо твердит одно и то же. Сотворим нечто поумней: пусть наша следующая программа сначала спросит имя пользователя, а затем обратится к нему по этому имени. На экране это будет выглядеть так:

58

Глава 8

Постоянные и переменные

Как тебя зовут?

Антон Здравствуй, Антон Нажми Enter

Здесь подчеркнутое мною слово «Антон» во второй строке ввёл пользователь. Такие программы называют диалоговыми.

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

Где хранят предметы? В ящиках, карманах, кошельках. Для хранения данных в памяти используют переменные (VARIABLE). Переменная — это своего рода «карман» с именем, данным ему программистом. В ходе работы программа может «укладывать» в переменную данные, и затем обращаться с ними по своему усмотрению. Этот «карман» действует по принципу: что положил, то и взял. Иначе говоря, в переменной хранится то, что было положено последним. Но, в отличие от кошелька, единожды положенное в переменную можно извлекать многократно, — этот «карман» никогда не опустеет!

Прежде, чем пользоваться переменной, её, как и константу, надо объявить. Для этого служит секция объявления переменных, которую открывают ключевым словом VAR (сокращение от VARIABLE), секцию помещают до исполняемых операторов — перед словом BEGIN. Внутри секции объявляют одну или несколько переменных. Каждое такое объявление содержит два элемента: имя переменной и её тип, разделяемые двоеточием:

var Имя_переменной : Тип_переменной;

Ну, с именем всё ясно — это обычный идентификатор, который вы изобретаете сами. А что такое тип, и в чем его смысл? В этой обширной теме мы со временем разберемся основательно, а сейчас затронем лишь слегка.

Укладывая предметы, вы учитываете их размеры, вес и назначение. Пылесосу удобно в своей коробке, а монете — в кошельке. «Каждый сверчок — знай свой шесток». Встретив в программе объявление переменной, компилятор отводит ей место в оперативной памяти с тем, чтобы хранимые данные поместились там. То есть, кроит «карман» подходящего размера. Это первое.

А ещё компилятору надо знать набор допустимых действий с теми данными, что «лежат» в переменной: можно ли их складывать и умножать? Или это строка текста, предназначенная для вывода на экран? Ответ на эти вопросы заключен в

59

Соседние файлы в папке delphi