б) Национальные алфавиты можно использовать только в строковых выражениях.
2.2. Простые и составные специальные символы, используемые на ПК.
Перечисленный ниже набор несколько расширяет стандарт PASCAL, однако на ПК является стандартом de facto.
Простые специальные символы:
+ | Плюс – “сложение” |
– | Минус – “вычитание” |
* | Звездочка – “умножение” |
/ | косая черта (slash) – “деление” |
= | Равно (Замечание: в C-образных языках в качестве этого знака используется = =) |
> | Больше |
< | Меньше |
[ | левая квадратная скобка – открытие индекса массива |
] | правая квадратная скобка – закрытие индекса массива |
( | левая круглая скобка |
) | правая круглая скобка |
{ | левая фигурная скобка – открытие комментария |
} | правая фигурная скобка – закрытие комментария |
@ | коммерческое a (“эт”) – знак адресации |
. | Точка |
, | Запятая |
: | Двоеточие |
; | точка с запятой |
' | апостроф (одиночная кавычка) – открытие и закрытие строки символов |
" | двойные кавычки – не имеет специального назначения |
# | номер (hash) - не имеет специального назначения |
$ | знак доллара – используется в 16-ричной нотации чисел |
\ | обратная косая черта (backslash) - не имеет специального назначения |
^ | "шляпка" – используется для работы с указателями |
~ | Тильда - не имеет специального назначения |
знак пробела (невидимый) | |
знак табуляции (невидимый) |
Составные специальные символы:
:= | Присваивание ( в C-образных языках и BASIC используется знак “ = “) |
<> | не равно( в C-образных языках используется знак “! =” ) |
.. | Диапазон значений ( в C-образных языках и BASIC отсутствует) |
(* | Начало комментария. Замена знаку “{“, но может быть только в комбинации с “*)” - в C-образных языках используется знак “/*” |
*) | конец комментария. Замена знаку “}”, но может быть только в комбинации с “(*” - в C-образных языках используется знак “*/” |
(. | Замена знаку “[“, но может быть только в комбинации с “.)” Редко используется. |
.) | Замена знаку “]”, но может быть только в комбинации с “(.” . Редко используется. |
// | Однострочный комментарий. |
Специальные символы (простые или составные) служат разделителями в выражениях языка PASCAL. Они не могут входить с состав идентификаторов.
Отсутствующие в Object PASCAL символы, имеющиеся в С-образных языках:
^ - возведение в степень (начиная с Delphi 4 в Object PASCAL есть функция power)
<< - левый побитовый сдвиг (“shl” в Object PASCAL)
>> - правый побитовый сдвиг (“shr” в Object PASCAL)
>>> - правый побитовый сдвиг с сохранением знака отрицательного числа ( в Object PASCAL отсутствует)
Символы формирования текста:
Знак пробела <Space>, табуляции <Tab>, символы перевода на новую строку <LF>, конца страницы <FF>, конца файла <EOF> и другие управляющие символы. Действуют при просмотре исходных текстов языка Object PASCAL и за исключением ряда случаев — в строковых выражениях.
2.3. Стандартные типы данных. Двоичное представление чисел и дополнительный код.
Целые типы
Byte: 0..255 — байтовый (1 байт)
ShortInt: -128..127 — короткое целое (1 байт)
Word: 0..65535 — 16-ричное слово (2 байта)
Integer(в C, C++,…-int) — целые. Начиная с Delphi3 по умолчанию идентичен longInt – см. далее
LongInt: -2147483648..2147483647 — длинное целое (диапазон примерно
-2e9..2e9, размер 4 байта)
LongWord – 32-битные без знака (4байта)
Int64 – 64-битные со знаком (8 байт) – имеют особенности в правилах приведения типа
Вещественные типы
Real(в C - float) — вещественные, (изначально был 6 байт, 11..12 значащих цифр мантиссы): 0.0, 0.1, 1e6,2.9e-39, -1.7e38
Начиная с Delphi3 по умолчанию идентичен Double (см. далее)
Double: 5.0e-324..1.7e308 — двойная точность (8 байт, 15..16 значащих
цифр мантиссы)
Extended: 1.9e-4951..1.1e4932 — расширенная точность (10 байт, 19..20
значащих цифр мантиссы)
Булевский (логический) тип
Boolean (1 байт): величины этого типа принимают только значения true или false. Во всех C-образных языках кроме Java идентичен байтовому типу
Символьный (литерный) тип
Char (1 байт): один символ. 'A', 'b', '*', ' ', '/'. (Существует в Java, в других C-образных языках идентичен байтовому типу. В Java константы символьного типа пишутся в двойных кавычках: “A”, “b” и т. д).
Строковый тип
String (не менее 4 байт): произвольное число символов (от 0 до 2e9). 'A', 'abcd', 'мама моет раму', ' '. Работа со строками в Object PASCAL не имеет аналогов по мощности и удобству в других языках программирования
Двоичное представление целых положительных чисел
…
Двоичное представление целых отрицательных чисел
…
Двоичное представление вещественных чисел
Двоичные дроби. … Мантисса и логарифм…
2.4. Особенности работы с некоторыми типами данных
1. 64-битовые целые
Описание:
Var a:Int64;
Значения — 263 … 263 -1 - знаковые 64-битные.
Преобразование обычного числа в 64-битовое – с помощью функции Int64.
Примеры задания 64-битных статических переменных (о том, что это такое, см. :
const Num64=Int64(17);
const Num64b:Int64=17;
const Num64c=3000000000;
Вызовы осуществляются только с 64-битными числами во всех частях выражения:
a:=a+Int64(1);
2. 32-битовые без знака — Longword;
0..4294967295 (то есть чуть больше 4*109 ) — то есть то же, что Cardinal;
3. Изменения в типе Real
Был 48-битовым, теперь идентичен 64-битовому Double. Для совместимости можно использовать тип Real48 либо ставить опцию компилятору
{REALCOMPATIBILITY ON}
2.5. Арифметические операторы.
Бинарные полиморфные (тип результата определяется по правилам приведения типов,
см. далее):
+ сложение (все целые и вещественные типы, строковые типы, множества).
Пример: a+b
- вычитание (все целые и вещественные типы, множества): a-b
* умножение (все целые и вещественные типы, множества): a*b
/ деление (все целые и вещественные типы, результат — вещественный):
a/b
Бинарные неполиморфные целочисленные:
div — целочисленное деление. Пример: a div b
mod — остаток от целочисленного деления a mod b
(в C-образных %):
and — побитовое "И" (в C-образных &) a and b
or — побитовое "ИЛИ"(в C-образных | ) a or b
xor — побитовое "исключающее ИЛИ"(в C-образных ^ ) a xor b
shl — побитовый сдвиг влево(в C-образных <<) a shl b
shr — побитовый сдвиг вправо(в C-образных >>) a shr b
Унарные полиморфные:
+ сохранение знака (целые и вещественные типы). Пример: +a
· изменение знака на противоположный(целые и вещественные типы).
Пример: - a
Унарные целочисленные:
not побитовое "НЕ" (целые типы). Пример: not a
2.6. Логические операторы и операции отношения.
Логические операторы:
and логическое "И". Пример: a and b
or логическое "ИЛИ": a or b
xor логическое "исключающее ИЛИ": a xor b
not логическое "НЕ": not a
Операции отношения (результат — типа boolean):
= равно. Пример: A=B
<> не равно: A<>B
> больше: A>B
< меньше: A<B
>= больше или не равно: A>=B
<= меньше или не равно: A<=B
in принадлежность множеству: A in B
2.7. Потеря точности, потеря порядка и переполнение при арифметических операциях.
Пусть x1 – арифметическая переменная real, x2 – вещественная extended. Тогда выполнение присваиваний x2:=1+1e-14 даст 1.00000000000001, а x1:=1+1e-14 даст 10000000000000,т. к. числа real имеют всего 12 значащих цифр мантиссы. После этого выражение x2:=x2-1 даст 1e-14, а выражение x1:=x1-1 даст 0. Это потеря точности. Если мы имеем выражение типа a+b-c, где a очень близко к c, а b<<a (и, значит, b<<c), то большее значение приобретает порядок действий. При этом выражение (a-c)+b дает гораздо лучшую точность, чем (a+b)-c. По умолчанию действия выполняются слева направо, поэтому a+b-c это то же, что (a-c)+b. Потеря порядка – выход при умножении или делении за пределы минимального порядка. Так, x1:=1e/-26 даст не 0, а ошибку потери порядка. Арифметическое переполнение – выход за пределы максимальных значений для данного типа. Так, x1:=1e20*1e20 даст переполнение вещественного типа. А если I типа integer, I:=20000; j:=15000, то выражения I:=I+j, I:=2*I, либо I:=2*j-10000 дадут переполнение. При этом возникновение диагностики переполнения во время выполнения программы зависит от опции компилятора.
2.8. Структура простейшей программы.
В PASCAL любое число пробелов, символов <TAB> или переносов на новую строку везде приводится к одному пробелу (конечно, кроме строковых выражений). Имя файла с текстом программы должно быть то же, что имя программы, а расширение имени файла после точки должно быть PAS. Многострочные комментарии заключаются в фигурные скобки, однострочные – начинаются со знака “//”.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |


