Целые типы | Язык Паскаль

Целые типы

Во Free Pascal определен ряд целых типов, различающихся между собой объемом отводимой под данные памяти. Чем больше памяти отводится, тем больший диапазон значений может принимать переменная данного типа.

На практике часто используется целочисленный тип integer, под который в зависимости от платформы отводится 2 или 4 байта.

Примеры часто используемых целых типов в Pascal

Тип Диапазон допустимых значений Отводимая память, в байтах
shortint -128…127 1
integer -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
word 0…65 535 2

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

Целочисленные переменные в программе описываются следующим образом:

a, b, c: integer;

Здесь a, b, c - имена переменных, integer – тип переменных.

Операции над целыми типами, дающие в результате значение целого типа:

Знак операции Операция
+ Сложение
- Вычитание
* Умножение
div Целочисленное деление (остаток отбрасывается). Деление без округления (целая часть частного).
mod Деление по модулю (выделение остатка от деления). Остаток от деления: a mod b = a – ((a div b) * b).

Пример. Пусть a = 17, b = 5. Тогда a div b дает 3, a mod b дает 2 (остаток от деления).

var
    a, b: integer;

begin
    a := 17;
    b := 5;

    writeln(a div b);
    writeln(a mod b);    
end.

Результат выполнения:

3
2

Операции над операндами целого типа выполняются правильно только при условии, что результат и каждый операнд не меньше минимального (крайнего левого) и не больше максимального (крайнего правого) значений диапазона. Например, в Паскале существует константа maxint, в которой содержится максимально допустимое значение для типа integer. Тогда при выполнении операций в программе должны соблюдаться следующие условия:

(a операция b) <= maxint,
a <= maxint, b <= maxint.

Над целыми типами, как и многими другими, допустимы операции отношения (сравнения). Результат таких операций относится к типу boolean и может принимать одно из двух значений – либо true (истина), либо false (ложь).

Операции отношения

Знак операции Операция
= Равно
<> Не равно
>= Больше или равно
> Больше
<= Меньше или равно
< Меньше

Целые типы могут приниматься в качестве фактических параметров рядом стандартных функций языка программирования Pascal.

Стандартные функции Pascal, применимые к аргументам целых типов

Функция Тип результата Результат выполнения
abs(x) Целый Модуль x (абсолютная величина x)
sqr(x) Целый Квадрат x
succ(x) Целый Следующее значение x (x+1)
pred(x) Целый Предыдущее значение x (x-1)
random(x) Целый Случайное целое число из интервала 0..x-1.
sin(x) Действительный Синус x (угол в радианах)
cos(x) Действительный Косинус x (угол в радианах)
arctan(x) Действительный Арктангенс x (угол в радианах)
ln(x) Действительный Натуральный логарифм x
exp(x) Действительный Экспонента x
sqrt(x) Действительный Квадратный корень из x
odd(x) Логический Значение true, если x – нечетное число; false – если четное.

Функция random возвращает равномерно распределенное случайное целое число, если ей передан целый аргумент. При повторном запуске программы она возвращает те же значения. Во избежание этого следует в начале программы вызвать процедуру без параметров randomize.

Процедуры inc и dec могут иметь по одному или по два параметра целого типа (первый параметр всегда должен быть переменной, то есть число должно передаваться через переменную). Если параметров два, то значение первого увеличивается (для inc) или уменьшается (для dec) на величину, равную значению второго параметра. Например, inc(x, 2) равнозначно x + 2. Если параметр один, то его значение увеличивается (для inc) или уменьшается (для dec) на единицу. Например, dec(x) равнозначно x-1.

Процедуры inc и dec изменяют значение переданной в них переменной, они ничего не возвращают в программу. Это их важное отличие от функций succ и pred.

var
    i, j: integer;

begin
    i := 43;
    inc(i);
    j := succ(i); 
    writeln('i = ', i);
    writeln('j = ', j);

    dec(i, 3);
    j := pred(i);
    writeln('i = ', i);
    writeln('j = ', j);
end.

Результат выполнения:


i = 44
j = 45
i = 41
j = 40

Следующие функции принимают в качестве аргументов значения вещественного типа, а возвращают значения целого типа:

trunc(x) – отбрасывание десятичных знаков после точки;
round(x) – округление до целого.

<Пример. Пусть x = 4.7389. Тогда trunc(x) дает 4, round(x) дает 5.

var
    x: real;

begin
    x := 4.7389;

    writeln(trunc(x));
    writeln(round(x ));    
end.

Результат выполнения:

4
5