2.2. Принятые в системе расширения имен файлов
Система Турбо Паскаль воспринимает все виды расширений в именах файлов, используемых в среде MS-DOS. Они обычно зависят от области применения или от вида программы. Турбо Паскаль по умолчанию использует несколько выделенных расширений для имен файлов:
TPU - файл модуля, содержащий подобие объектного кода модуля и (необязательно) отладочную информацию.
TPL - файл библиотек Турбо Паскаля. Стандартный набор модулей языка находится в файле TURBO.TPL. Этот файл можно модифицировать с помощью утилиты TPUMOVER.EXE (см. Приложение 4).
TP и CFG - файлы конфигурации для TURBO.EXE и TPC.EXE. Эти файлы позволяют сохранить значения различных опций, установленных для компиляторов. Файлы с расширением .TP могут иметь различные имена, но файл TPC.CFG (см. Приложение 3) в текущем каталоге может быть только один.
PCK - расширение файла истории работ Турбо Паскаля. Этот файл указателя содержит информацию о состоянии редактора, и поэтому после перерыва в сеансе работы с системой редактор восстановит свое последнее состояние.
- 48 -
PAS - стандартное расширение для файлов, содержащих исходный текст на Паскале.
BAK - расширение резервной копии исходного файла. Редактор интегрированной среды программирования всегда переименовывает существующий файл на диске в файл резервной копии, если на диск записывается измененная копия этого файла. Система позволяет установить или отменить генерацию файлов с расширением .BAK.
EXE - выполняемый файл, построенный компилятором.
MAP - расширение справочного файла, генерируемого системой, если опция Options/Compiler/Map File установлена в значение On.
HLP - файл с упакованными текстами для справочной системы (TURBO.HLP)
- 49 -
Часть II. Язык Турбо Паскаль
Глава 3. Построение программ
В этой главе рассмотрены алфавит и ключевые слова языка, правила написания идентификаторов, а также особенности построение программ на Турбо Паскале и его отличия от стандартного Паскаля. Здесь же приведены правила условной компиляции программ.
3.1. Алфавит языка и зарезервированные слова
Как и любой другой язык программирования, Турбо Паскаль имеет свой алфавит - набор символов, разрешенных к использованию и воспринимаемых компилятором. В алфавит языка входят:
1. Латинские строчные и прописные буквы:
A, B,..., Z и a, b,..., z
2. Цифры от 0 до 9.
3. Символ подчеркивания "_" (код ASCII номер 95). Из этих символов (и только из них!) конструируются идентификаторы - имена типов, переменных, констант, процедур, функций и модулей, а также меток переходов. Имя может состоять из любого числа перечисленных выше символов, но должно начинаться с буквы, например:
X CharVar My_Int_Var C_Dd16_32m
Прописные и строчные буквы не различаются: идентификаторы FILENAME и filename - это одно и тоже. Длина имен формально не ограничена, но различаются в них "лишь" первые 63 символа (остальные игнорируются).
4. Символ "пробел" (код 32). Пробел является разделителем в языке. Если между двумя буквами имени или ключевого слова стоит пробел, то две буквы будут считаться принадлежащими разным именам (словам). Пробелы отделяют
- 50 -
ключевые слова от имен. Количество пробелов не является значащим. Там, где можно поставить один пробел, можно поставить их сколько угодно. Например, выражения
C:=2+2; и C := 2 + 2 ;
для компилятора эквивалентны.
5. Символы с кодами ASCII от 0 до 31 (управляющие коды). Они могут участвовать в написании значений символьных и строчных констант. Некоторые из них (7, 10, 13, 8, 26) имеют специальный смысл при проведении ряда операций с ними. Символы, замыкающие строку (коды 13 и 10), и символ табуляции (код 9) также могут быть разделителями:
C := 2+2;
эквивалентно построению
C := 2
+
2;
6. Специальные символы, участвующие в построении конструкций языка:
+ - * / = < > [ ] . , ( ) : ;^ @ { } $ # '
7. Составные символы, воспринимаемые как один символ:
<= >= := (* *) (. .) ..
Разделители (пробелы) между элементами составных символов недопустимы.
Как видно, символы из расширенного кода ASCII, т.е. символы с номерами от 128 до 255 (а именно в этот диапазон входит алфавит кириллицы на IBM-совместимых ПЭВМ), а также некоторые другие из основного набора клавиатуры ( !, %, и др.) не входят в алфавит языка. Тем не менее они могут использоваться в тексте программы, но только в виде значений констант символов и (или) строк, а также в тексте комментариев. В имена (идентификаторы) эти символы входить не могут. Обычно это не вызывает проблем. Главное, что можно выводить знаки кириллицы и псевдографики на экран и принимать их с клавиатуры.
Турбо Паскаль имеет большое количество зарезервированных (или ключевых) слов. Эти слова не могут быть использованы в качестве имен (идентификаторов) в программе. Попытка нарушить
- 51 -
этот запрет вызовет ошибку при обработке программы компилятором языка. Список зарезервированных слов Турбо Паскаля таков:
ABSOLUTE AND ARRAY BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE END | EXTERNAL FILE FOR FORWARD FUNCTION GOTO IF IMPLEMENTATION IN INLINE INTERFACE INTERRUPT LABEL | MOD NIL NOT OBJECT OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT SET SHL | SHR STRING THEN TO TYPE UNIT UNTIL USES VAR VIRTUAL WHILE WITH XOR |
Примечание: Зарезервированное слово PACKED (упакованный) в Турбо Паскале игнорируется.
3.2. Общая структура программ
Самая короткая программа на Турбо Паскале выглядит следующим образом:
| BEGIN
| END.
Более длинные программы обрастают различными смысловыми блоками: описаниями меток переходов, константами, объявлениями типов и переменных, затем процедурами и функциями. Порядок размещения их в тексте программы для Турбо Паскаля может быть таким же жестким, что и для стандартного Паскаля. Написанная по правилам стандарта языка программа будет иметь в своем полном варианте структуру, показанную на рис. 3.1.
Регистр написания заголовков блоков неважен. Название программы в Турбо Паскале имеет чисто декоративное назначение, как комментарий. Обязательная для многих других версии Паскаля конструкция
PROGRAM Имя ( input, output, ... )
здесь не является необходимой.
- 52 -
| PROGRAM Имя_программы;
| USES
| Список используемых библиотек (модулей);
| LABEL
| Список меток в основном блоке программы;
| CONST
| Определение констант программы;
| TYPE
| Описание типов;
| VAR
| Определене глобальных переменных программы;
| ОПРЕДЕЛЕНИЕ ПРОЦЕДУР (заголовки и, возможно, тела процедур);
| ОПРЕДЕЛЕНИЕ ФУНКЦИЙ (заголовки и, возможно, тела функций);
| BEGIN
| Основной блок программы
| END.
Рис. 3.1
Директива USES - первый в программе действительно работающий оператор. С ее помощью подключаются библиотечные модули, из стандартного набора Турбо Паскаля или написанные пользователем, расширяя тем самым список используемых в программе процедур, функций, переменных и констант. У директивы USES есть свое четкое место. Если она присутствует, то должна стоять перед прочими директивами и разделами. Кроме того, слово USES может появиться в программе только один раз. Список библиотек дается через запятую:
USES
CRT, DOS, Graph;
{ подключены три библиотеки с соответствующими именами }
Если библиотеки не используются, то директива USES не ставится.
Блок описания меток LABEL содержит перечисленные через запятую метки переходов, установленные в основном блоке программы. Блоков LABEL может быть сколько угодно (лишь бы метки не повторялись), и стоять они могут где угодно до начала основного блока. Метки могут обозначаться целым числом в диапазоне 0...9999 или символьными конструкциями длиной не более 63 букв, например:
- 53 -
LABEL
Loop, 1, 123, m1, m2, Stop;
{описываем шесть различных меток }
Если метки не используются, то блоки LABEL отсутствуют.
Блок объявления констант CONST так же, как блок LABEL может располагаться в любом месте программы. Таких блоков может быть несколько или может не быть вообще. В них размещаются определения констант различных видов.