Идентификаторы и имена
Весьма важным и употребительным понятием языка является идентификатор — этот термин происходит от слова "идентифицировать", т.е. "отождествлять". Поскольку алгоритм, определяющий процесс обработки данных, оперирует с различными программными объектами — переменными величинами, функциями и т.д., то при записи алгоритма приходится как-то ссылаться на используемые объекты. Для этой цели программным объектам даются индивидуальные имена и описание тех или иных действий над объектами дается в терминах их имен, которые и представляют соответствующие объекты.
Именами обозначаются и некоторые атрибуты используемых объектов, например тип значений, которые могут принимать программные объекты. Роль таких имен и выполняют идентификаторы. Идентификатором является любая конечная последовательность букв и цифр, начинающаяся обязательно буквой.
Примеры идентификаторов:
х SUMMА pi step Petrov a28cd5
(поскольку пробелы внутри идентификаторов не допускаются, то наличие пробела означает конец идентификатора).
Следующие записи не являются идентификаторами, поскольку каждая из них не подходит под синтаксическое определение идентификатора:
5f sum(2) step.7 Алма-Ата
Заметим, что запись
begin
вообще говоря подходит под синтаксическое определение идентификатора –это последовательность из пяти букв, начинающаяся буквой. Однако вспомним, что begin является служебным словом. А поскольку служебные слова в паскале запрещается использовать для иных целей, то указанная запись не может быть использована в качестве идентификатора.
Идентификаторы не имеют какого-либо постоянно присущего им смысла, а используются только в качестве имен программных объектов или их атрибутов, так что в дальнейшем вместо слова "идентификатор" мы часто будем использовать более короткий термин "имя":
Имена (идентификаторы) выбираются программистом по своему усмотрению. Чтобы сделать программу решения той или иной задачи более наглядной и понятной, следует избегать кратких; но мало выразительных имен типа х, t, s и т.д., а выбирать их так, чтобы имя отражало суть обозначаемого объекта (конечно, в рамках алфавита конкретной реализации языка), например
summa time INTEGRAL Road Ivanov
и т.п.
При этом следует иметь в виду, что разные объекты, вообще говоря, нельзя обозначать одним и тем же идентификатором (т.е. каждый идентификатор в одной программе может быть использован только в одном смысле) — о некоторых исключениях из этого общего правила будет сказано позднее.
Синтаксическое определение не накладывает ограничений на длину идентификаторов, хотя в конкретных реализациях языка такие ограничения имеют место.
Чтобы иметь более наглядные имена, целесообразно использовать строчные и прописные буквы:
СтеныДлина СтержняДлина
Некоторым идентификаторам в Турбо Паскале заранее предписан вполне определенный смысл. Например, идентификатор sin считается именем известной всем функции, значение которой равно синусу ее аргумента (в радианах). Такие идентификаторы называются стандартными. Однако в отличие от служебных слов типа begin, смысл и назначение любого стандартного идентификатора может быть переопределен программистом по своему усмотрению с помощью соответствующего описания, хотя делать это без особой на то необходимости не рекомендуется для избежания ошибок в программе.
Описания
Важным понятием языка является описание (впрочем, суть этого понятия точнее отражал бы термин объявление). Необходимость этого понятия связана со следующими обстоятельствами. Операторы, о которых говорилось выше, задают правила обработки данных, т.е. определяют действия над программными объектами. Но прежде, чем задавать такие действия, программист должен как-то ввести в употребление нужные ему программные объекты и точно определить необходимые атрибуты (свойства) каждого из них. Если, например, таким объектом является массив, то надо указать его размерность, размеры по каждому измерению, а также указать, что представляют собой элементы этого массива.
Кроме того, правила обработки данных формулируются в терминах имен соответствующих объектов. Чтобы однозначно понять и реализовать эти правила, необходимо знать, какой объект назван тем или иным именем. Для введения в употребление нужных программных объектов, описания их атрибутов, присваивания имен объектам, а также для некоторых других целей и служат описания. В Турбо Паскале имеется пять типов описаний, каждый из которых предназначен для определенных целей:
- описание меток;
- описание констант;
- описание типов;
- описание переменных;
- описание процедур и функций.
В общих чертах назначение каждого типа описания ясно из его названия, а впоследствии все типы описаний будут рассмотрены более подробно.
Переменные
При синтаксических определениях ряда понятий языка, в том числе операторов и описаний, часто используется понятие переменная. Переменная — это программный объект, способный принимать значение. Это значение переменная получает уже в процессе выполнения программы, обычно в результате выполнения оператора присваивания. Присвоенное ей значение переменная сохраняет до тех пор, пока этой переменной не будет присвоено новое текущее значение — при этом предыдущее ее значение (если оно было определено) безвозвратно теряется, С каждой переменной связывается определенный тип значений, которые она может принимать. Попытка присвоить переменной значение иного типа квалифицируется как ошибка в программе.
С точки зрения синтаксиса, переменная (в простейшем случае) — это идентификатор, который сопоставлен переменной в качестве ее имени. Это имя используется для ссылки на значение переменной. Другими словами, имя в тексте программы представляет значение этой переменной.
С алгоритмической точки зрения весьма важным является такое действие, как присваивание переменной некоторого значения. Удобно считать, что выполнение этого действия означает помещение присваиваемого переменной значения в выделенный для нее ящик. При этом каждый запоминающий ящик обладает следующими свойствами.
1) В каждый момент времени в ящике может храниться не более одного значения.
2) Каждый ящик способен хранить только значения одного и того же типа. Попытка поместить в ящик значение любого другого типа приводит к тому, что ящик отказывается принимать на хранение передаваемое ему значение — это расценивается как ошибка в программе.
3) Значение, помещенное в ящик, будет храниться в нем до тех пор, пока в этот ящик не будет помещено новое значение (в момент присваивания соответствующей переменной этого нового значения) – при этом предыдущее содержимое ящика безвозвратно теряется (уничтожается).
4) Находящееся в ящике значение считается текущим значением соответствующей переменной. Это текущее значение может быть выдано из ящик а для использования сколько угодно раз, но при этом содержимое ящика не меняется; из него каждый раз выдается копия хранящегося значения с сохранением оригинала в ящике без какого-либо изменения.
5) К началу выполнения программы содержимое всех запоминающих ящиков считается неопределенным; в частности, их нельзя считать и пустыми, поскольку эти ящики могли использоваться при выполнении предыдущих программ, после чего в ящиках могло что-то остаться.
В свете сказанного следует вернуться к символу " := " из числа разделителей. При описании процессов обработки данных особенно часто приходится задавать такое действие, как присваивание переменной величине ее нового текущего значения, для чего приходится использовать выражения типа "присвоить значение", "положить равным" и т.д., которые являются синонимами. Поскольку это действие встречается особенно часто, то для его обозначения вместо служебного слова используется символ ":=", который легко запоминается и вместе с тем обеспечивает компактность и наглядность записи. Например, запись z:=x + у означает, что переменной z должно быть присвоено новое текущее значение, равное значению суммы х + у. В математике для этой цели обычно используется знак равенства " = ", например z = х. Однако этот знак в математике используется и для обозначения операции сравнения. Для устранения возможности неоднозначного понимания, в паскале символ " = " используется только для обозначения операции сравнения, а для обозначения операции присваивания выбран символ " : = ", изображаемый парой литер.
Дата добавления: 2021-03-18; просмотров: 413;