- •2 Введение в язык Паскаль Лекция 2
- •2.1 Историческая справка
- •2.2 Алфавит языка Паскаль
- •2.3 Переменные
- •2.4 Основные понятия языка Паскаль
- •2.5 Правила записи текста программы
- •Разделители
- •Правила записи
- •2.6 Система типов языка
- •2.7 Основные вычислительные структуры в Паскале
- •2.8 Выражения
- •2.9 Оператор присваивания
- •2.10 Ввод-вывод
- •2.11 Последовательное выполнение и составной оператор
- •2.12 Условный оператор
- •2.13 Оператор цикла с предусловием
- •2.14 Оператор цикла с постусловием
- •2.15 Оператор цикла с параметром
- •2.16 Примеры бесконечных циклов
- •2.17 Пустой оператор
- •2.18 Ограниченные типы
- •2.19 Функции
- •2.20 Примеры программ для задач без массивов
- •2.21 Более подробно о символьном типе
2.7 Основные вычислительные структуры в Паскале
Основные типы языка: целые, вещественные, символьный, булевский.
Целые типы
Эта группа типов обозначает множества целых чисел в различных диапазонах.
Тип integer (целый).
Диапазон: -32768…32767.
Размер памяти: 2 байта (16 двоичных разрядов).
Над целыми значениями допустимы следующие операции:
а) арифметические бинарные (два операнда):
сложение (знак операции +);
умножение (знак операции *);
вычитание (знак операции - );
деление (знак операции /);
деление нацело с отбрасыванием целой части (знак операции div);
взятие остатка от целочисленного деления (знак операции mod);
б) арифметическая унарная (одноместная) операция −
изменение знака (знак операции - );
в) операции сравнения:
равно (=);
не равно (<>);
больше (>);
больше или равно (>=);
меньше (<);
меньше или равно (<=);
г) стандартные функции (в обычной функциональной записи):
абсолютная величина (пример, abs(-4)=4);
квадрат (пример, sqr(6)=36);
д) функция odd(<целое>) (odd - нечетный) - проверяет аргумент на нечетность.
Результат операции деления принадлежит вещественному типу, результаты операций сравнения и функции odd − булевский тип, все остальные операции выдают целый тип.
Примеры операции div:
6 div 4 =1;
-7 div -2 = 3;
34 div -45 = 0.
Операция m mod n применяется только при n>0:
6 mod 4 =2;
-6 mod 4 =-2.
В таблице 2.2 перечислены остальные целые типы в Паскале.
Таблица 2.2
Идентификатор |
Описание типа |
Множество допустимых значений |
Shortint |
8-битный целый со знаком |
- 128…127 |
Longint |
32-битный целый со знаком |
- 2147483648...2147483647 |
Byte |
8-битный целый без знака |
0…255 |
Word |
16-битный целый без знака |
0…65535 |
Вещественные типы
Обозначают множества вещественных чисел в различных диапазонах.
Тип real (вещественный).
Диапазон значений: 2.9 ⋅ 10-39..1.7 ⋅ 1038.
Число цифр мантиссы: 11 - 12.
Размер памяти - 6 байт.
Вещественные значения могут изображаться в форме с фиксированной точкой и в форме с плавающей точкой. В первом случае целая и дробная части вещественного числа отделяются друг от друга символом «.» (точка). Обе эти части должны обязательно присутствовать, например,
17.384
0.5
Следующие примеры демонстрируют неправильные формы записи чисел:
.3 (правильно 0.3)
10. (правильно 10.0)
Вещественное число в форме с плавающей точкой записывается как пара вида <мантисса> E <порядок>.
Такое обозначение понимается как «мантисса, умноженная на 10 в степени, равном порядку». Например, 7E - 2 означает 7 ⋅ 10-2, 12.25E+6 или 12.25E6 оба обозначают 12.25 ⋅ 106. Мантисса представляется в виде целого числа или как вещественное с фиксированной точкой. Порядок обозначается целым числом; допускаются как положительные, так и отрицательные значения порядка.
Над вещественными значениями допустимы следующие операции:
арифметические операции (сложение, умножение, вычитание, деление, изменение знака) − операнды могут быть или оба вещественными, или один из них целым, а другой вещественным; результат всегда вещественный;
операции сравнения − результат булевский;
стандартные функции:
sqrt(x) (квадратный корень);
sin(x) (синус);
cos(x) (косинус);
arctan(x) (арктангенс);
ln(x) (натуральный логарифм);
exp(x) (экспонента).
Для этих функций аргумент может быть вещественным или целым, результат - всегда вещественный;
abs(x) (абсолютная величина числа);
sqr(x) (квадрат) - тип результата совпадает с типом аргумента;
операции округления:
trunc(x)−
x - вещественное, результат - целая часть числа х, дробная часть отбрасывается и не округляется,trunc(5.2)=5, trunc(-5.8)=-5;
round(x)−
x - вещественное, результат - округленное целое, round(x)=trunc(x+0.5) при x>=0, round(x)=trunc(x - 0.5) при x<0.
В таблице 2.3 перечислены остальные вещественные типы в Паскале.
Таблица 2.3
Идентификатор |
Описание типа |
Диапазон |
Single |
4-байтовый вещественный с ординарной точностью, 7-8 значащих цифр |
- 3.4 ⋅ 1038… - 1.5 ⋅ 10 - 45, 1.5 ⋅ 10 - 45…3.4 ⋅ 1038 |
Double |
8-байтовый вещественный с двойной точностью, 15-16 значащих цифр |
- 1.7 ⋅ 10308… - 5.0 ⋅ 10 - 324, 5.0 ⋅ 10 - 324… 1.7 ⋅ 10308 |
Extended |
10-байтовый вещественный с повышенной точностью, 19-20 значащих цифр |
- 1.1 ⋅ 104932… - 1.9 ⋅ 10 - 4951, 1.9 ⋅ 10 - 4951 …1.1 ⋅ 104932 |
Comp |
8-байтовый сложный тип |
- 263…263 - 1(только целые значения) |
Символьный (литерный) тип
Стандартное имя типа char (character).
Значениями этого типа являются элементы набора литер, определяемого реализацией языка. В Турбо-Паскале символы составляют множество ASCII (American Standard Code for Information Interchange) - 256 символов. Множество ASCII содержит заглавные и строчные латинские буквы, цифры; может содержать русские буквы. Некоторые символы не имеют изображения (например, «конец строки»).
Размер памяти, занятый символом, - 1 байт.
Множество символов упорядочено.
Функция ord(c) (0<= ord(c) <= 255) дает порядковый номер литеры c.
Функция chr(i) дает литеру (значение типа char) с порядковым номером 0<=i<=255.
ord(chr(i))=i
chr(ord(c))=c
Функция pred(c) (ord(c)>0) дает предыдущую литеру.
Функция succ(c) (ord(c)<255) дает последующую литеру.
pred(c)=chr(ord(c)-1)
succ(c)=chr(ord(c)+1)
Графическое представление символа (за исключением символов, не имеющих графического представления) - соответствующий знак в кавычках (апострофах) '+', 'y', '.', 'л', '"'. Символ, не имеющий графического представления, можно задать с помощью записи #<порядковый номер символа>, например, #7 − гудок.
Цифры '0','1',...,'9' имеют подряд идущие порядковые номера. Малые латинские буквы 'a','b',...,'z' имеют подряд идущие номера. Большие латинские буквы 'A','B',...,'Z' имеют подряд идущие порядковые номера.
Операции сравнения над символами такие же, как для чисел. Результат - булевский (логический) тип. Эти операции над символами эквивалентны сравнениям порядковых номеров символов.
Булевский (логический) тип
Стандартное имя типа - boolean.
Используется для представлений значений двузначной логики: true (истина), false (ложь).
Размер памяти для значений - 1 байт.
Логический тип упорядочен: true > false.
ord(false)=0
ord(true)=1
pred(true)=false
succ(false)=true
Используются операции сравнения, например, true<false = false.
Логические операции
Аргументы (операнды) - булевский тип, результат - булевский тип.
Служебные слова: and, or, not.
Операции and и or - бинарные коммутативные и ассоциативные:
x and y - логическое умножение (логическое "и") или конъюнкция - значение true тогда и только тогда, когда оба операнда - true;
x or y - логическое сложение (логическое "или") или дизъюнкция - значение false тогда и только тогда, когда оба операнда false.
Операция not x - унарная операция - логическое отрицание: not true = false, not false = true