Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

14.6. Переполнение ячеек памяти

После выполнения программы

VAR i :Byte;

BEGIN i:=250, WriteLn(i), i:=i+10, WriteLn(i) END.

мы увидим на экране числа 250 и 4. А почему не 250 и 260? Потому что тип Byte представляет числа только от 0 до 255. Если в процессе выполнения программы значение переменной вышло за диапазон своего типа, Паскаль не замечает ошибки, а в соответствующей ячейке оказывается ошибочный результат. Это касается всех типов. Ценой некоторой потери скорости Паскаль можно легко настроить на проверку выхода за диапазон.

14.7. Дерево типов

Паскаль предоставляет нам большие возможности для конструирования новых типов. Так, если мы пишем VAR а :array[1..10] of array [2..5] of set of Byte, то имеем в виду, что переменная а является массивом array[1..10], который сконструирован из массивов array [2..5], каждый из которых сконструирован из элементов, являющихся множествами set, каждое из которых сконструировано из элементов типа Byte.

Приведенная ниже схема показывает, какие типы из каких можно конструировать. Например, файлы можно конструировать из строк, а записи - из массивов. А вот множества из вещественных чисел придумывать нельзя.

14.8. Синтаксические диаграммы Паскаля

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

Есть два самых распространенных способа записи синтаксиса. С одним из них мы познакомились в разделе 5.2, другой использует так называемые синтаксические диаграммы. Здесь мы будем использовать второй метод и третий - обычный словесный.

Синтаксическую диаграмму рассмотрим на примере. Все мы знаем, что имя - это цепочка букв, цифр и знаков подчеркивания, не начинающаяся с цифры. Это обычное словесное определение, вот это же определение в виде синтаксической диаграммы:

Применять синтаксическую диаграмму нужно так. Заходите в диаграмму по строке. Оказавшись внутри "домика", записывайте на лист бумаги в строчку то, что там указано. Предположим, в нашем случае вы зашли в "букву". Значит, записывайте любую букву, например N. Затем продолжайте путешествие строго по стрелкам. Оказавшись на развилке, поворачивайте в любую сторону, разрешенную стрелками. Снова оказавшись в "домике", приписывайте справа в строчку то, что там указано. Пусть, например, следующий ваш домик "цифра". Вы должны приписать справа к букве любую цифру, например 8 Получится N8 и так далее. Когда надоест, добирайтесь до выходной стрелки. Вы гарантированно получите правильное имя.

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

Примеры диаграмм будут не везде до конца конкретны. Например, в диаграмме имени написано "буква", а надо было - "латинская буква".

Комментарии. Пустой оператор - просто пустое место. "Нужен для синтаксической завершенности Паскаля. Пример программы с несколькими пустыми операторами:

LABEL 1; BEGIN;; 1:;; END

Оператор with мы не проходили. Он употребляется вместе с записями (record). Нужен для сокращения текста программы.

Комментарий. Начальное значение - примеры начальных значений см. в разделе 12.5.

Комментарии. Знак * означает, что файловый тип исключается.

Вещественный тип - это Real, или Single, или Double, или Extended, или Comp.

Порядковый и вещественный типы вместе образуют простой тип:

Комментарии. Целый тип - это Integer, или LongInt, или Word, или Byte, или ShortInt.

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

Файловый и объектный типы расшифрованы не будут.

Опережающее описание процедуры или функции см. в разделе 10.6.

Выражение. Что такое выражение и примеры выражений см. в 14.3.

Оператор - это любой из операторов, упомянутых в синтаксической диаграмме Раздел операторов.

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