Что такое идентификатор в паскале
Язык программирования TurboPascal
Turbo Pascal. Основные понятия и элементы языка
Первая версия языка программирования Паскаль была разработана на кафедре информатики Стэнфордского университета швейцарским ученым Никласом Виртом в 1968 году. Предложенный им язык назван в честь французского ученого Блеза Паскаля, который изобрел первую в мире вычислительную машину. Язык Паскаль создавался как средство для обучения студентов программированию.
В 1979 году был утвержден международный стандарт языка Паскаль. Дальнейшее развитие языка Паскаль связано с американской корпорацией Borland International. На основе стандартного языка Паскаль была разработана система программирования Турбо Паскаль. С этого момента язык Турбо Паскаль становится одним из наиболее важных и широко используемых языков программирования. Сегодня Турбо Паскаль не только профессиональная система программирования, но и классический язык обучения студентов основам программирования.
Основные понятия и элементы языка
Состав языка
В тексте на любом языке можно выделить четыре основных элемента: символы, слова, словосочетания, предложения. Аналогичные элементы содержит и алгоритмический язык Паскаль, только слова называются – лексемами, словосочетания – выражениями, а предложения – операторами. Лексемы образуются из символов, выражения – из лексем, а операторы – из символов, лексем и выражений.
Алфавит языка
Алфавит языка Турбо Паскаль включает:
а также символы, которые записываются как единое целое:
Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255. Символы с кодами от 0 до 127 образуют основную таблицу ASCII. Их состав и порядок определены международным стандартом. Символы с кодами от 128 до 255 образуют расширенную таблицу кодов ASCII. В ней находятся символы национального языка (для России – русского языка), символы псевдографики, а также некоторые другие символы, которые не входят в алфавит языка.
Из символов алфавита формируются лексемы языка:
Идентификаторы
В Турбо Паскале применяется очень гибкая и наглядная система обозначения объектов программы (переменных, констант и т.д.), которая опирается на понятие идентификатора.
Идентификатор – это имя объекта в программе. Например, идентификатор переменной – это имя, данное переменной автором программы. Так, в записи a+b*x буквы a,b,x – идентификаторы, выбранные для обозначения некоторых переменных в программе.
Различают два типа идентификаторов: стандартные и задаваемые пользователем. Стандартные идентификаторы определены в языке для обозначения стандартных программ, функций и т.д. В качестве примера стандартной программы можно привести программу ввода данных, которая имеет имя Read и программу вывода данных, имеющую имя Write.
Идентификаторы, определяемые пользователем, должны удовлетворять следующим правилам написания:
Нужно обратить особое внимание на то, что идентификатор в программе имеет тот и только тот смысл, который дан ему автором программы. Для улучшения читаемости программы следует объектам давать осмысленные имена. Неудачные имена часто являются источником проблем.
Примеры идентификаторов:
x, i, z, znak, x1, y1, flag, dy, _dat и т.д.
Примеры неправильных идентификаторов:
4a |
a-b |
A#1 |
Sin |
My prog |
@w |
Begin |
Зарезервированные слова
Зарезервированные слова имеют специальное значение для компилятора. Зарезервированные слова можно использовать только в том смысле, в котором они определены. В качестве пользовательских идентификаторов зарезервированные слова использоваться не могут. Смысл и правила использования зарезервированных слов будет поясняться по мере необходимости.
В Турбо Паскале зарезервированы следующие слова:
Идентификаторы, зарезервированные слова и пунктуация
Они должны соответствовать следующим правилам:
Зарезервированные слова
В языке Pascal есть слова, которые не разрешается использовать для своих идентификаторов. Для разных версий Паскаль существует собственный набор зарезервированных слов.
Поскольку мы рассматриваем среду Lazarus, то приведем список слов для языка Free Pascal.
Зарезервированные слова языка Free Pascal | |||||||
---|---|---|---|---|---|---|---|
abs | absolute | and | arctan | array | as | asm | |
begin | boolean | break | case | char | class | const | |
constructor | continue | cos | destructor | dispose | div | do | |
downto | else | end | eof | eoln | except | exp | |
exports | false | file | finalization | finally | for | function | |
goto | if | implementation | in | inherited | initialization | inline | |
input | integer | interface | is | label | library | ln | |
maxint | mod | new | nil | not | object | odd | |
of | on | operator | or | ord | output | pack | |
packed | page | pred | procedure | program | property | raise | |
read | readln | real | record | reintroduce | repeat | reset | |
rewrite | round | self | set | shl | shr | sin | |
sqr | sqrt | string | succ | text | then | threadvar | |
to | true | trunc | try | type | unit | until | |
uses | var | while | with | write | writeln | xor |
Пунктуация в Pascal
Компилятор игнорирует пробелы, символы табуляции и перевод строки. По этой причине, пунктуация должна указать компилятору, где заканчивается оператор. Для разделения операторов используется символ ;.
Какие строки должны оканчиваться точкой с запятой:
Как было сказано выше, Паскаль не требует наличия отступов в коде программы. Однако они улучшают читабельность кода, что очень полезно для программиста.
Сравним две программы с отступами и без:
Как мы видим, понять что делает вторая программа достаточно сложно, даже на таком простом примере.
В большинстве современных IDE, в том числе в Lazarus, отступы выставляются автоматически, во время набора кода.
Локальные и глобальные идентификаторы Паскаль
Когда мы используем процедуры и функции в Паскале, то имеем дело с идентификаторами (т.е. именами) в программе. При составлении программного кода для использования не все имена оказываются доступными.
Доступ к определенному идентификатору в тот или иной момент времени осуществляется в зависимости от того, в каком блоке описан используемый идентификатор.
Помните: формальные параметры функций и процедур всегда представляют собой локальные переменные для тех блоков, где они описаны. Существует два типа идентификаторов: локальные и глобальные идентификаторы Паскаль.
Локальные идентификаторы Паскаль:
Локальные идентификаторы — это имена, которые описаны либо в заголовке, либо в разделе описаний функции или процедуры. Основное правило работы с такими идентификаторами: Локальные идентификаторы являются доступными только лишь в пределах того блока, в котором они описаны.
Этот блок, а также все остальные блоки, вложенные в него, называются областью видимости для соответствующих локальных идентификаторов.
Глобальные идентификаторы Паскаль:
Глобальные идентификаторы — это имена, заключенные в блоке Program, используемом для всей программы. При работе с этим типом идентификаторов следует руководствоваться правилом.
Идентификаторы, которые описаны в одном блоке, могут совпасть с идентификаторами из других блоков, которые либо содержат данный блок, либо вложены в него. Причиной этому является тот факт, что переменные, которые описаны в различных блоках (пусть у них всех одинаковые имена), хранятся в различных областях ОЗУ (оперативная память).
Область памяти, хранящая глобальные идентификаторы, называется сегментом данных программы. Их создание происходит в процессе компиляции, и кроме того они действительны на протяжении всей работы программы. Локальные переменные, в отличие от глобальных, хранятся в области памяти, которая именуется стеком. Они временны, поскольку их создание осуществляется в момент входа в подпрограмму, а уничтожение — в момент выхода из подпрограммы.
Может возникнуть ситуация, когда имя, которое описано в блоке, в случае совпадения «закрывает» те же самые имена из блоков, содержащих данный.
Другими словами, если есть два блока, один из которых вложен в другой, и в обоих блоках содержатся переменные с одинаковыми именами, то после перехода во «внутренний» блок мы будем работать с переменной, локальной для рассматриваемого блока. А переменная с этим же именем, заключенная во «внешнем» блоке, оказывается временно недоступна — это будет продолжаться до тех пор, пока не осуществим выход из «внутреннего» блока. Совет.
Все имена, имеющие в той или иной подпрограмме только лишь вспомогательное назначение, идентифицировать в качестве локальных, что избавляет от опасности изменений глобальных объектов с теми же именами.
Пример. Создадим программу, которая вычисляет значение функции y=a*ln(sin(x))
Что такое идентификатор в паскале
1. ОСНОВНЫЕ ЭЛЕМЕНТЫ ЯЗЫКА
Алфавит (разрешенный к использованию набор символов) языка Паскаль составляют:
3. Символ подчеркивания “ _ ”.
4. Специальные символы :
$ знак денежной единицы
^ тильда (стрелка вверх)
Комбинации специальных символов могут образовывать составные символы:
Примечание. Русские буквы в программе должны заключаться в апострофы, например, ‘Текст на русском языке’.
Слова – это неделимые последовательности символов алфавита, отделенные друг от друга разделителями и несущие определенный смысл.
Слова делятся на зарезервированные слова и идентификаторы (имена). Идентификаторы, в свою очередь, делятся на стандартные и идентификаторы пользователя.
Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и навсегда определенный смысл.
Зарезервированные слова языка Паскаль
остаток от деления
Идентификаторы (имена) используются для обозначения программ, переменных и постоянных величин, процедур, функций.
Общие правила написания идентификаторов
1. Идентификатор может состоять только из букв, цифр и символа подчеркивания.
2. Идентификатор начинается только с буквы или символа подчеркивания (ис ключение составляют метки, которые могут начинаться с цифры).
3. Максимальная длина идентификатора 127 символов, но значимы только первые 63.
4. Между двумя идентификаторами должен быть, по крайней мере, один пробел.
Идентификаторы пользователя применяются для обозначения объектов, определенных самим программистом. При их записи следует учитывать, что: 1) идентификаторы в программе должны быть уникальными; 2) нельзя использовать в качестве идентификаторов пользователя зарезервированные слова и стандартные имена; 3) имена для объектов программы надо выбирать так, чтобы они наилучшим образом отражали их значение.
Примеры записи идентификаторов пользователя:
Общая структура программы на Паскале
В Паскаль – программе могут быть написаны следующие разделы (рис.1):
1. Заголовок программы.
2. Раздел объявлений.
3. Тело программы (основной блок программы).
список используемых библиотек (модулей);
список меток в основном блоке программы;
определение констант программы;
определение глобальных переменных программы;
Основной блок программы
Заголовок программы состоит из зарезервированного слова program и идентификатора программы.
Раздел объявлений может включать в себя любое количество объявлений используемых библиотек, меток, констант, типов, переменных, процедур и функций.
Правило. В любом месте программы можно использовать лишь те элементы, которые были объявлены ранее по тексту программы.
Основной блок – это собственно программа, использующая всё, что было объявлено. Он начинается словом begin и заканчивается словом end с точкой. После завершающей точки любой текст игнорируется.
Основной блок состоит из операторов (предложений языка программирования), записанных в соответствии с алгоритмом. Операторы отделяются друг от друга символом “ ; ”.
writeln (‘Сумма x и y равна’, summa );
Константы и переменные
Пример описания констант:
t=13.4; max=1000; eps=0.15E – 5; myna m e= ‘Петя Иванов’;
Пример объявления переменных.
Для лучшего понимания программы в ней может быть записан произвольный текст – комментарий. Комментарий можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен символами < >или (* *) и может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита языка Паскаль. Ограничений на длину комментария нет, он может занимать несколько строк.
Идентификаторы
Чтобы программа решения задачи обладала свойством массовости, следует вместо конкретных значений величин использовать их обозначения, чтобы иметь возможность изменять их значения по ходу выполнения программы. Для обозначения переменных и постоянных величин, различных процедур, функций, объектов используются имена – идентификаторы, устанавливающие соответствие между объектом и некоторым набором символов.
Компилятор Turbo Pascal строго следит за этим, и если это требование не соблюдается, то компиляция прерывается, а на экран выводится сообщение об ошибке «Error 4: Duplicate identifier» и указывается дублирующийся идентификатор.
В идентификатор не могут входить пробелы и специальные символы. Обратите внимание, что буквы русского алфавита не могут входить в идентификатор Turbo Pascal.
При написании программ следует соблюдать общие правила написания идентификаторов:
1. Идентификатор может начинаться только с буквы или знака подчеркивания (исключение составляют метки, которые могут начинаться также и с цифры);
2. Идентификатор может состоять из букв, цифр и знаков подчеркивания (пробелы, точки и другие специальные символы недопустимы);
3. Между двумя идентификаторами должен быть по крайней мере один пробел;
4. Максимальная длина идентификатора составляет 127 символов, но значимыми являются только первые 63 символа;
5. При записи идентификаторов можно использовать как прописные, так и строчные буквы. Компилятор не делает различий между ними, хотя они и имеют различные ASCII-коды. На практике рекомендуется применять эту особенность для более простого чтения и понимания значений идентификаторов. Так, вместо идентификатора nomerotdela лучше написать NomerOtdela, выделив прописными буквами каждую из двух смысловых частей.
Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Data, чем просто буквой D или любым другим символом.
2graph – ошибка, идентификатор начинается с цифры
Nomer.Doma – ошибка, идентификатор содержит точку
Сумма – ошибка, идентификатор содержит буквы русского алфавита.