Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





Весьма важным и употребительным понятием языка является идентификатор — этот термин происходит от слова "идентифицировать", т.е. "отождествлять". Поскольку алгоритм, определяющий процесс обработки данных, оперирует с различными программными объектами — переменными величинами, функциями и т.д., то при записи алгоритма приходится как-то ссылаться на используемые объекты. Для этой цели программным объектам даются индивидуальные имена и описание тех или иных действий над объектами дается в терминах их имен, которые и представляют соответствующие объекты.

Именами обозначаются и некоторые атрибуты используемых объектов, например тип значений, которые могут принимать программные объекты. Роль таких имен и выполняют идентификаторы. Идентификатором является любая конечная последовательность букв и цифр, начинающаяся обязательно буквой.

Примеры идентификаторов:

х SUMMА pi step Petrov a28cd5

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

Следующие записи не являются идентификаторами, поскольку каждая из них не подходит под синтаксическое определение идентификатора:

5f sum(2) step.7 Алма-Ата

Заметим, что запись

begin

вообще говоря подходит под синтаксическое определение идентификатора –это последовательность из пяти букв, начинающаяся буквой. Однако вспомним, что begin является служебным словом. А поскольку служебные слова в паскале запрещается использовать для иных целей, то указанная запись не может быть использована в качестве идентификатора.

Идентификаторы не имеют какого-либо постоянно присущего им смысла, а используются только в качестве имен программных объектов или их атрибутов, так что в дальнейшем вместо слова "идентификатор" мы часто будем использовать более короткий термин "имя":

Имена (идентификаторы) выбираются программистом по своему усмотрению. Чтобы сделать программу решения той или иной задачи более наглядной и понятной, следует избегать кратких; но мало выразительных имен типа х, t, s и т.д., а выбирать их так, чтобы имя отражало суть обозначаемого объекта (конечно, в рамках алфавита конкретной реализации языка), например

summa time INTEGRAL Road Ivanov

и т.п.

При этом следует иметь в виду, что разные объекты, вообще говоря, нельзя обозначать одним и тем же идентификатором (т.е. каждый идентификатор в одной программе может быть использован только в одном смысле) — о некоторых исключениях из этого общего правила будет сказано позднее.

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

Чтобы иметь более наглядные имена, целесообразно использовать строчные и прописные буквы:

СтеныДлина СтержняДлина

Некоторым идентификаторам в Турбо Паскале заранее предписан вполне определенный смысл. Например, идентификатор sin считается именем известной всем функции, значение которой равно синусу ее аргумента (в радианах). Такие идентификаторы называются стандартными. Однако в отличие от служебных слов типа begin, смысл и назначение любого стандартного идентификатора может быть переопределен программистом по своему усмотрению с помощью соответствующего описания, хотя делать это без особой на то необходимости не рекомендуется для избежания ошибок в программе.

Описания

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

Кроме того, правила обработки данных формулируются в терминах имен соответствующих объектов. Чтобы однозначно понять и реализовать эти правила, необходимо знать, какой объект назван тем или иным именем. Для введения в употребление нужных программных объектов, описания их атрибутов, присваивания имен объектам, а также для некоторых других целей и служат описания. В Турбо Паскале имеется пять типов описаний, каждый из которых предназначен для определенных целей:

описание меток;

описание констант;

описание типов;

описание переменных;

описание процедур и функций.

В общих чертах назначение каждого типа описания ясно из его названия, а впоследствии все типы описаний будут рассмотрены более подробно.

Переменные

При синтаксических определениях ряда понятий языка, в том числе операторов и описаний, часто используется понятие переменная. Переменная — это программный объект, способный принимать значение. Это значение переменная получает уже в процессе выполнения программы, обычно в результате выполнения оператора присваивания. Присвоенное ей значение переменная сохраняет до тех пор, пока этой переменной не будет присвоено новое текущее значение — при этом предыдущее ее значение (если оно было определено) безвозвратно теряется, С каждой переменной связывается определенный тип значений, которые она может принимать. Попытка присвоить переменной значение иного типа квалифицируется как ошибка в программе.

С точки зрения синтаксиса, переменная (в простейшем случае) — это идентификатор, который сопоставлен переменной в качестве ее имени. Это имя используется для ссылки на значение переменной. Другими словами, имя в тексте программы представляет значение этой переменной.

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

В каждый момент времени в ящике может храниться не более одного значения.

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

Значение, помещенное в ящик, будет храниться в нем до тех пор, пока в этот ящик не будет помещено новое значение (в момент присваивания соответствующей переменной этого нового значения) – при этом предыдущее содержимое ящика безвозвратно теряется (уничтожается).

Находящееся в ящике значение считается текущим значением соответствующей переменной. Это текущее значение может быть выдано из ящик а для использования сколько угодно раз, но при этом содержимое ящика не меняется; из него каждый раз выдается копия хранящегося значения с сохранением оригинала в ящике без какого-либо изменения.

К началу выполнения программы содержимое всех запоминающих ящиков считается неопределенным; в частности, их нельзя считать и пустыми, поскольку эти ящики могли использоваться при выполнении предыдущих программ, после чего в ящиках могло что-то остаться.

В свете сказанного следует вернуться к символу ":= " из числа разделителей. При описании процессов обработки данных особенно часто приходится задавать такое действие, как присваивание переменной величине ее нового текущего значения, для чего приходится использовать выражения типа "присвоить значение", "положить равным" и т.д., которые являются синонимами. Поскольку это действие встречается особенно часто, то для его обозначения вместо служебного слова используется символ ":=", который легко запоминается и вместе с тем обеспечивает компактность и наглядность записи. Например, запись z:=x + у означает, что переменной z должно быть присвоено новое текущее значение, равное значению суммы х + у. В математике для этой цели обычно используется знак равенства " = ", например z = х. Однако этот знак в математике используется и для обозначения операции сравнения. Для устранения возможности неоднозначного понимания, в паскале символ " = " используется только для обозначения операции сравнения, а для обозначения операции присваивания выбран символ ": = ", изображаемый парой литер.

Функции и процедуры

Понятие функции хорошо известно из школьного курса математики. С помощью функций задаются самые различные зависимости одних значений (значений функции) от других значений (значений аргументов). Заметим лишь, что в алгоритмических языках допускаются только такие функции, для которых заданы алгоритмы вычисления их значений. В математике такое требование не является обязательным — можно, например, использовать функцию f(x,y), значение которой равно количеству простых чисел в интервале (х, у) — даже в том случае, если мы не знаем, как именно следует вычислять значение этой функции при любых конкретных значениях аргументов х и у.

Таким образом, в алгоритмическом языке любая функция задается некоторой вычислительной процедурой, выполнение которой и дает значение функции. Программист может, ввести в употребление любые нужные ему в данной программе функции.

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

Вводимые в употребление функции и процедуры должны быть определены (описаны) в разделе функций и процедур паскаль-программы. При 'Таком описании каждой функции (процедуре) дается свое имя. Сама процедура формулируется, в основном в терминах формальных параметров — идентификаторов, которые в описании процедуры представляют те заранее не фиксируемые значения или программные объекты, к которым должна применяться эта процедура. Все эти формальные параметры в явном виде перечисляются в описании процедуры или функции.

Для использования в программе какой-либо функции или процедуры достаточно указать ее имя и задать ее фактические параметры, т.е. те конкретные значения и (или) объекты, к которым должна быть применена указанная процедура или функция. Для обращения к функциям и процедурам в Турбо Паскале имеются соответствующие понятия — вызов функции и оператор процедуры.

Некоторые функции и процедуры, например элементарные функции математического анализа (sin (x), ln(х) и т.д.) или процедуры ввода/вывода используются во многих программах. Для удобства их использования, в Турбо Паскале зафиксирован некоторый набор так называемых стандартных функций и процедур, которые можно использовать в любой программе без их явного описания. Можно считать, что к началу трансляции любой паскаль-программы в соответствующий ее раздел автоматически вставляются описания всех стандартных функций и процедур, используемых в этой программе. За каждой из них в языке закреплено некоторое стандартное имя. Однако эти имена не являются зарезервированными словами, так что программист может по своему усмотрению переопределить любое из этих стандартных имен.

Синтаксис языка.

Для облегчения понимания текста паскаль-программы и упрощения транслятора, язык Турбо Паскаль требует выполнения определенных правил записи текста программы, которые не находят своего отражения в синтаксисе языка. При формулировании этих правил мы будем использовать понятие "разделитель текста", понимая под этим термином пробел, конец строки и комментарий.

Пробел — это литера, не имеющая графического изображения: пробелу соответствует пустая позиция в строчке текста (на листе бумаги, бланке, экране дисплея и т.д.). Однако пробел имеет определенное представление (свой цифровой код) в машине и вводится в машину вместе с остальными литерами текста программы,

Конец строки – это управляющая литера, также не имеющая графического изображения. Дело в том, что при записи текста паскаль-программы он естественным образом разбивается на отдельные строчки — хотя бы в силу ограниченности листа бумаги, бланка или экрана дисплея, на которых фиксируется этот текст. Число возможных позиций в строчке обычно фиксировано, однако число литер в части текста, образующей очередную строчку, может быть меньше числа возможных позиций. Разбиение всего текста на отдельные строчки производится программистом по своему усмотрению. Чтобы указать, что очередная часть текста должна образовывать новую строчку, и служит управляющая литера "конец строки", которая заносится в исходный текст при его нанесении на внешние носители данных или при его непосредственном вводе в машину с помощью клавиатуры терминала. Как и в случае пробела, эта литера тоже имеет свой код, который фиксируется на внешнем носителе данных или непосредственно вводится в машину при наборе текста на клавиатуре.

Упомянутые выше правила записи текста паскаль-программы состоят в следующем:

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

разделители текста не должны встречаться внутри идентификаторов, чисел и служебных слов;

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

Управляющая литера "конец строки" в тексте не задается в явном виде: переход на следующую строчку текста автоматически подразумевает наличие этой управляющей литеры.

В тех случаях, когда в тексте надо явно указать наличие пробела (это бывает существенно при записи текста вручную на обычном листе бумаги, а не на бланке), мы будем изображать его литерой " _ ", например

begin_if_ x<25_then_x:=x + 1 _else_x: =0

Сформулированные выше правила записи текста программы отвечают и на вопрос о том, где могут быть помещены комментарии. И хотя в этом отношении возможности весьма велики, обычно комментарии помещают между достаточно крупными синтаксическими единицами – описаниями, операторами и т.д.

Date: 2016-05-16; view: 617; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию