Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - экзамен.docx
Скачиваний:
4
Добавлен:
17.04.2019
Размер:
140.32 Кб
Скачать

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

Идентификатор (от идентифицировать, отождествлять) – сино­ним слова имя, т.е. <идентификатор>::=<имя> .

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

Идентификатором является любая конечная последователь­ность букв и цифр, начинающаяся буквой. Служебное слово нельзя использовать, как идентификатор.

<идентификатор>::=<буква>!<идентификатор><буква>!

<идентификатор><цифра>

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

Пример

x, pi, s3 – идентификаторы; а end, 5f, sum(2), step.7 – не идентификаторы.

Имена выбираются программистом по своему усмотрению. Хотя синтаксическое определение не накладывает ограничений на длину иден­тификатора, в реализациях языка такие ограничения имеются. В Object Pascal, например, значимыми являются первые 63 символа. Буквы в верх­нем и нижнем регистре в имени неразличимы, но могут использоваться для удобочитаемости. Символ подчеркивания ‘_’ считается буквой.

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

11.Разделители текста и правила их использования в программе на Турбо Паскале. Коммен­тарии и директивы компилятора. Директивы компилятора

В меню OPTIONS/COMPILER включены опции, с помощью которых можно управлять работой компилятора. В ряде случаев бывает необходимо временно отменить действие той или иной опции при трансляции некоторого фрагмента программы. Особенно часто, например, такая необходимость возникает при обращении к диску: если программа пытается прочитать несуществующий файл или записать данные на защищенный диск, возникнет ошибка периода исполнения и программа аварийно закончит свою работу. В то же время, если отключить опцию I/O CHECKING, этого не произойдет, программа сможет проанализировать последствия обращения к диску и предпринять альтернативные действия.

В Турбо Паскале можно использовать директивы компилятора, которые в виде особым образом оформленных комментариев вставляются в текст программы и модифицируют те или иные возможности компилятора в процессе компиляции. Директивы могут быть переключающими, условными и параметрическими. Переключающие директивы воздействуют на те опции, которые включены в диалоговое окно OPTIONS/COMPILER; условные директивы определяют условия, при которых компилируются те или иные фрагменты программы; параметрические директивы задают параметры, которые должен учитывать компилятор.

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

Переключающая директива содержит букву, обозначающую опцию, и знак «+» или «-». Знак «+» означает установку опции в активное состояние, знак «-» - в пассивное состояние. Например, директива {$I-} означает временное отключение контроля ошибок ввода-вывода, директива {$R+} - включение контроля границ диапазона. В одной директиве можно перечислить несколько опций, например:

{ $A+,B-,D+,E+,F+,I+,L+,N+,O-,R+,S+,V+}

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

Ниже приводится список некоторых директив компилятора. В скобках дается действие директивы для знака «-». Знаком * отмечены локальные директивы.

{$А+} - выравнивать данные на границу слова (байта);

{SB+}* - вычислять логические выражения полностью (до получения результата);

{SD+} - разрешить (запретить) работу со встроенным отладчиком;

{$Е+} - включить (отключить) режим программной эмуляции сопроцессора;

{SF+} - использовать дальнюю (ближнюю) модель вызова;

{$G+}* - использовать (не использовать) полный набор команд микропроцессора Intel 80286 (микропроцессора Intel 8088);

{$I+}* - включить (отключить) контроль операций ввода-вывода;

{$L+} - включить (не включать) локальные символы в информацию для отладчика;

{SN+} - использовать числовой сопроцессор (реализовать операции с плавающей точкой программно);

{$O+} - разрешить (не разрешать) создание оверлейной структуры;

{$R+}* - включить (отключить) контроль границ диапазона;

{$S+}* - включить (отключить) контроль возможного переполнения стека;

{SV+}* - включить (отключить) контроль длины строк при обращении к процедуре или функции;

{$Х+} - использовать (не использовать) расширенный синтаксис.

К условным директивам относятся следующие локальные директивы компилятора:

{SDEFINE <условный символ>} - установить условный символ;

{SIFDEF <условный символ>}

{SIFNDEF <условный символ>)

{$ELSE}

{SENDIF}

К параметрическим относятся директивы:

{$М <стек>,<нижн>,<верх>} - установить требуемые размеры памяти (глобальная директива); здесь <стек> - размер стека; <нижн> - нижняя граница динамической памяти; <верх> - верхняя граница динамической памяти;

{$I <имя файла>} - включение PAS-файла: <имя файла> - имя включаемого файла;

{$L <имя фапла>} - включение OBJ-файла: <имя файла> - имя включаемого файла.