Отличия языка программирования pascal
Условный оператор EQV
В Паскале есть условный оператор Eqv
EQV – принимает значение TRUE, если значения операндов равны.
Пример:
(3<1) eqv (7>100) => true
false false
Примечание:
XOR и EQV – противоположны
Функция Readkey
В Паскале есть функция Readkey, которая читает символ из буфера клавиатуры. Символ не отображается на экране.
Readkey можно использовать для того, чтобы программа не закрывалась после выполнения всех операторов (аналог readln без параметров)
Арифметические операции
В Паскале нет специальной функции для возведения в степень. По-другому считаются алгоритмы и тригонометрические функции
Математическое |
Pascal |
|x| |
ABS(x) |
x2 |
SQR(x) |
SQRT(x) |
|
sin x |
sin(x) |
cos x |
cos(x) |
arctg x |
arctan(x) |
ln x |
ln(x) |
lg x |
ln(x)/ln(10) |
logab |
ln(b)/ln(a) |
ex |
EXP(x) |
ab |
EXP(b*ln(a)) |
Типы данных Pascal
Целые типы
Внутреннее представление целого числа.
Ст. бит |
Старший бит
Старший бит числа определяет его знак:
0 – положительное
1 – отрицательное
Остальные используются для хранения значения в двоичной системе.
11012 = 1∙20 +0∙21 +1∙22 +1∙23 = 1310
Положительные целые числа хранятся в прямом двоичном коде, отрицательные – в дополнительном.
Прямой двоичный код – это двоичное число, дополненное слева нулями до нужного количества разрядов.
Обратный код получается из прямого путем инверсий двоичных разрядов (0 на 1, 1 на 0).
Дополнительный код получается из обратного путем арифметического прибавления единицы.
Пример1. Как число 10 будет представлено в памяти компьютера.
1) получить запись в двоичной системе
1010 = 8 + 2 = 23 + 21 = 10102
101012 = 1∙20 +0∙21 +1∙22 +0∙23 +1∙24 =2110
2) прямой код
Integer (16 бит)
000 000 000 000 1010
Пример2. Число -13 -> Integer
1) 1310 = 8 + 4 + 1 = 1∙23 +1∙22 +0∙21 + 1∙20 = 11012
2) 000 000 000 000 1101 – прямой код
3) 111 111 111 111 0010 – обратный код
4) 111 111 111 111 0011 – дополнительный код (прибавление 1)
Пример3. Число -6
1) 610 = 4 + 2 = 1∙22 +1∙21 + 1∙20 = 1102
2) 000 000 000 000 0110 – прямой код
3) 111 111 111 111 1001 – обратный код
4) 111 111 111 111 1010 – дополнительный код (прибавление 1)
Основные характеристики целых типов
1. Объем памяти
2. Диапазон возможных значений
Для Integer:
0 111 111 111 111 111 = 215-1 самое большое положительное число
-215 минимальное отрицательное.
от -215 до 215-1
от -32 768 до 32 767
Тип |
Объем памяти |
Диапазон |
|
Степень 2 |
Число |
||
ShortInt (короткое целое) |
1 байт |
-27 ÷ + 27-1 |
-128 ÷ +127 |
Byte (беззнаковое целое) |
1 байт |
0 ÷ + 28-1 |
0 ÷ +255 |
Integer |
2 байта |
-215 ÷ + 215-1 |
-32 768 ÷ +32 767 |
Word (беззнаковое целое) |
2 байта |
0 ÷ + 216-1 |
0 ÷ +65 535 |
LongInt (длинное целое) |
4 байта |
-231 ÷ + 231-1 |
-2 147 483 648 ÷ +2 147 483 647 |
Вещественные типы
Экспоненциальная форма записи числа
<мантисса> E <порядок> = <мантисса> 10<порядок>
3.53 ∙ E 03 = 3.53 ∙ 103 = 3 530
100.2 ∙ E-02 = 100.2 ∙ 10-2 = 1.002
Достоинство: позволяет компактно записывать и хранить очень большие и очень маленькие по абсолютной величине значения.
1 000 000 000 = 1 ∙ E 09
0,000 000 000 1 = 1 ∙ E-10
Недостаток: неоднозначность.
37.503 = 37 503 ∙ E-03 = 0,37503 E02[1] = 3,7503 E01 = 0,0037503 E04
Нормализованная экспоненциальная форма записи:
целая часть мантиссы равна 0 и первый десятичный разряд ненулевой.
Вещественные числа хранятся в нормализованной экспоненциальной форме:
single 4 б
Знак числа и порядок как целое (ст. байт) |
М а н т и с с а |
3 бита – 8 цифр
4 бита – 16 цифр
Основные характеристики вещественных типов
1. Объем памяти
2. Точность
Для кодирования одной десятичной цифры (с избытком) необходимо 4 бита.
Точность типа single (максимальное допустимое количество значащих цифр мантиссы) 4 байта – 1 байт = 3 байта 3б*2 = 6 цифр (7-8)
1) 10 000 000 — 1 значащая цифра
2) 0,00024 – 2 значащие цифры
3) 0,000 000 1 – 1 значащая цифра
4) 1,000 000 1 – 8 значащих цифр
Для single 1),2),3) будут хранится точно, а для 4) последняя 1 будет потеряна.
Тип |
Объем памяти |
Точность (цифр мантиссы) |
Real |
6 байт |
(6 – 1) ∙ 2 = 10 (11-12) |
Single |
4 байта |
6 (7-8) |
Double |
8 байт |
14 (15-16) |
Extended |
10 байт |
18 (19-20) |
Строки
var
S1: string[10];
S2: string;
S1 – строка длиной не более 10 символов. Размер переменной 11 байт.
S2 – строка максимальной длины – 255 символов. Размер переменной 256 байт.
Внутренняя структура строки – это массив символов, где нулевой элемент содержит длину строки, а оставшиеся байты – содержание строки.
S1: = ‘ABC’;
#3 |
A |
B |
C |
длина
строки
String[12] => ARRAY [0..12] of char;
[1] Нормализованная форма записи