Предположим, что в расчете полета ракеты учитывается масса её полезной нагрузки, и это число разбросано по всем частям программы. Вы должны указать его везде одинаково, без ошибки, иначе ракета улетит «за бугор». А если переделка ракеты повлечет изменение этого числа? Тогда доведется тщательно «прочесать» программу в поисках всех исправляемых операторов.
Проблема очевидна, но Паскаль даёт средство её решения – это символические константы. «Константа» в переводе на русский означает «постоянный», «неизменный». Константа подобна кличке бразильского футболиста: любому элементу данных – числу или строке – вы можете назначить удобное имя, а затем подставлять это имя вместо самих данных. Покажем это на примере нашей программы.
Прежде, чем применить символическую константу, её надо объявить, то есть дать ей имя и значение. Для объявления используют ключевое слово CONST, за которым следует нечто, похожее на простую формулу.
> const Имя_константы = Значение_константы;
Слева от знака равенства указывают имя константы, а справа – её значение. Предположим, что длинный прочерк я обозначил словом Line – «линия». Тогда объявление константы для линии будет таким.
> 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 = ’***************************’;
и после повторной компиляции программа заработает по-новому.
Константы облегчают жизнь программиста и повышают надежность программ. Но, повторяю, после изменения константы вы должны повторно откомпилировать программу!
Идентификаторы
Для констант придумывают подходящие имена. Впрочем, это касается и других объектов программы, о которых вы скоро узнаете. Выдуманные программистом имена называют идентификаторами (IDENTIFIER). Запомните это словцо, оно ещё «намозолит» вам глаза. Изобретатель идентификаторов ограничен следующими рамками.
• В идентификаторах допустимы лишь латинские буквы, знак подчеркивания и цифры.
• Идентификатор начинают либо с буквы, либо с подчеркивания (но только не с цифры!).
• Идентификатор может содержать до 127 символов, (в Borland Pascal учитываются только первые 63 из них).
• Не допускается совпадение идентификатора с ключевым словом.
Русские буквы и знаки препинания в именах запрещены. Большие и маленькие латинские буквы равнозначны (регистр букв не учитывается), поэтому идентификаторы Pascal и PASCAL считаются одинаковыми.
Вот примеры правильных идентификаторов:
>A, b, C - однобуквенные имена
>R1, U28, _13_ - имена с цифрами и подчеркиванием
>Cosmos, ABBA - однословные имена
>NextStep, Next_Step – имена, составленные из двух слов
А это ошибочные имена:
>7Up – начинается с цифры
>End – совпадает с ключевым словом
Изобретая имена, мы будем придерживаться некоторой системы с тем, чтобы меньше путаться в своих придумках. Так, имена констант условимся начинать с латинской буквы «C» (например, CLine).