· Алгоритмический язык TP ориентирован на работу в среде MS-DOS.
Базовый язык Pascal разработан Н.Виртом (1968) как язык обучения программированию. Все реализации языка унаследовали принципы, позволяющие разрабатывать читабельные, структурные, надежные и эффективные программы.
· В основе этих принципов заложена концепция типа данных, которую можно сформулировать следующим образом:
1)каждая переменная, константа, выражение и функция относятся к определенному типу данных;
2)тип данных задается явно;
3)над данными каждого типа допустимы определенные операции.
· Язык Pascal называют языком со строгой типизацией данных. Строгая типизация данных требует некоторых дополнительных затрат от разработчика программы на этапе проектирования и реализации на алгоритмическом языке, однако эти затраты окупаются на стадии отладки и модификации программы, поскольку у компилятора имеется возможность более детального синтаксического анализа исходного текста во время компиляции и создания машинного кода, способного более строго контролировать корректность операций на шаге выполнения.
· Каждая реализация языка ТP является расширением базового (стандартного) языка Pascal. Для того чтобы создавать мобильные программы, необходимо в данной конкретной реализации отличать средства, относящиеся к стандарту, и возможности, относящиеся к расширению стандарта.
· Программа - цепочка символов, слова, разделители, пробелы.
· Программа - последовательность предложений (вложенность)
· Структура программы: [Заголовок], секция описаний, секция действий.
· Алфавит языка TP содержит прописные и строчные буквы латинского алфавита (буквой считается символ подчеркивания "_"), цифры от 0 до 9, символы + - * / = > < ( ) [ ] { } . , ; : ' @ # ^ $ и пробел.
· К элементам языка относятся:
идентификаторы - имена переменных, констант, процедур, функций и т.д., зарезервированные (или ключевые) слова,
стандартные идентификаторы (предопределенные имена)
специальные символы - комбинации символов алфавита.
· Идентификатором в TP может быть любое слово, состоящее из букв и цифр, начинающееся с буквы. Компилятор не различает прописные и строчные буквы, кроме того, следует иметь в виду, что компилятор анализирует лишь первые 63 символа идентификатора.
· Все зарезервированные (ключевые) слова алгоритмического языка следует помнить, поскольку нельзя использовать в программе идентификаторы, совпадающие с ключевым словом. В списке ключевых слов значком "+" помечены слова, не используемые в стандарте языка Pascal:
and
|
| Mod
| shr+
|
asm
| file
| Nil
| string+
|
array
| for
| Not
| then
|
begin
|
| object+
| to
|
case
| function
| Of
| type
|
const
| goto
| or
| unit+
|
constructor+
| if
| packed
| until
|
destructor+
| implementation+
| procedure
| uses+
|
div
| in
| program
| var
|
do
| inline+
| record
|
|
downto
| interface+
| repeat
| while
|
else
|
| set
| with
|
end
| label
| shl+
| xor+
|
· Стандартные идентификаторы могут быть переопределены в программе, однако при этом теряется возможность использования соответствующих предопределенных средств. Например, в программе можно описать переменную "sin", но доступ к стандартной функции синуса будет закрыт в области действия этой переменной.
· Специальные символы обозначают следующие элементы языка:
+ - * / - арифметические операции;
+ - * - операции над множествами;
= < > <= >= <> - отношения;
:= - присваивание;
. - конец программы, составной идентификатор, селектор поля записи;
, - разделитель элементов списка;
: - используется при описаниях;
; - разделитель операторов языка;
.. - диапазон;
[ ] или (. .) - селектор элемента массива;
{ } или (* *) - скобки для выделения комментариев;
+ - операция конкатенации строк
# - обозначение символа по его коду;
@ - обозначение адреса переменной;
$ - обозначение директивы компилятора или шестнадцатеричной константы;
^ - обозначение указателя.
· Комментарии { } (* *)
· Классификация типов данных:
· О совместимости типов данных.
TP - язык со строгой типизацией данных. Это означает, что во время выполнения программы производится проверка справедливости (допустимости) выполняемых операций. Строгая типизация налагает определенные ограничения, которые объединены понятием совместимости типов данных. В основном программист должен сам предвидеть и обеспечивать явное преобразование типов данных там, где это необходимо. В TP явное преобразование типа данных осуществляется по схеме NewType(value), где значение value будет преобразовано к новому типу данных NewType.
Однако существуют ситуации, когда происходит неявное преобразование типов. Эти ситуации реализуются в операциях, при присваивании, при передаче параметров и регламентированы законами совместимости.
· В TP выделены три вида совместимости типов данных, и каждый вид предоставляет определенные возможности по совместному использованию данных. Два типа данных могут характеризоваться как одинаковые, совместимые по операциям (или просто совместимые) и совместимые по присваиванию.
· Две переменные относятся к одинаковым (эквивалентным) типам, если описания переменных:
а)ссылаются на одно и то же имя типа;
б)ссылаются на различные имена типов (пусть Т1 и Т2), которые в разделе описания типов объявлены идентичными (TYPE T1=T2);
· Бинарные операции могут быть выполнены над операндами, относящимися к совместимым (по операциям) типам данных. Два типа совместимы (по операциям), если:
а)типы одинаковы (эквивалентны);
б)оба типа целые или оба типа вещественные;
в)один тип есть диапазон другого, или оба есть диапазоны от третьего;
г)оба типа - строка (STRING);
д)один тип - строка, а другой - ARRAY[1..n] of CHAR, или просто CHAR;
е)оба типа - множества с совместимыми по операциям базовыми типами;
ж)один тип - ссылочный, другой бестиповый указатель;
з)оба типа - процедурные типы с одинаковым числом параметров, типы которых соответственно эквивалентны. Для функциональных типов необходима еще и эквивалентность типов результатов.
и)Считается, что каждый объект типа "множество" совместим с пустым множеством и каждый объект типа "указатель" совместим с константой NIL.
· Величина может быть присвоена переменной, если их типы совместимы по присваиванию. Выражение f типа F называется совместимым по присваиванию с переменной w типа W, если :
а)F и W - эквивалентные, не файловые типы (и не содержат файловые типы в качестве полей);
б)оба типа - совместимые ординарные типы и значения выражения f попадают в диапазон допустимых значений типа W;
в)оба вещественные типы и значение выражения f допустимо для типа W;
г)W - вещественный тип , F - целый;
д)W - строка, F - либо строка, либо символ, либо массив символов;
е)W и F - совместимые множественные типы, причем множество f целиком входит во множество W;
ж)W и F - совместимые ссылочные типы или совместимые процедурные типы;
з)W - процедурный тип, а f - имя процедуры или функции (параметры и типы должны быть согласованны);
и)W и F - объектные типы, причем тип F потомок типа W, либо оба типа ссылочные на совместимые объектные типы.
Хотя формулировки совместимости типов представляются довольно громоздкими, в их основе лежит простой здравый смысл. Разрешены действия, приводящие к естественному осмысленному результату без потери информации (или точности). Все операции округлений и усечений должны быть предусмотрены разработчиком программы и кодироваться явно.