Совсем недавно мы закончили разбор первого раздела сборника «1000 задач по программированию» — раздела Begin. Но на этом мы не останавливаемся, и прямо сейчас начинаем разбирать новый раздел — раздел Integer. (Думаю, вы уже догадались, что все переменные, представленные в следующих задач Integer1-10 — целые числа.)
В Integer основной упор будет сделан на div и mod.
Integer1. Дано расстояние L в сантиметрах. Используя операцию деления нацело, найти количество полных метров в нем (1 метр = 100 см).
Program Integer_1; var l, k: integer; begin write ('Введите значение L:'); readln (l); k := l div 100; write ('Количество полных метров: ', k,'.'); end.
Integer2. Дана масса M в килограммах. Используя операцию деления нацело, найти количество полных тонн в ней (1 тонна = 1000 кг).
Program Integer_2; var M, k: integer; begin write ('Введите значение M: '); readln (M); k := M div 1000; write ('Количество полных тонн: ', k,'.'); end.
Integer3°. Дан размер файла в байтах. Используя операцию деления нацело, найти количество полных килобайтов, которые занимает данный файл (1 килобайт = 1024 байта).
Program Integer_3; var a, k: integer; begin write ('Введите размер файла: '); readln (a); k := a div 1024; write ('Количество полных килобайтов: ', k,'.'); end.
Integer4. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию деления нацело, найти количество отрезков B, размещенных на отрезке A.
Program Integer_4; var a, b, k: integer; begin write ('Введите a и b: '); readln (a, b); k := a div b; write ('Количество отрезков B, размещенных на отрезке A: ', k); end.
Integer5. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.
Program Integer_5; var a, b, k: integer; begin write ('Введите a и b: '); readln (a, b); k := a mod b; write ('Длина незанятой части отрезка: ', k); end.
Весьма вероятно, что условия следующих задач покажутся вам знакомыми, что ничуть не странно, ведь в одном из уроков мы уже приводили решение задачи, подобной данным.
Integer6. Дано двузначное число. Вывести вначале его левую цифру (десятки), а затем — его правую цифру (единицы). Для нахождения десятков использовать операцию деления нацело, для нахождения единиц — операцию взятия остатка от деления.
Program Integer_6; var chislo, desyatki, edinizi: integer; begin write ('Введите число: '); readln (chislo); desyatki := chislo div 10; writeln (desyatki); edinizi := chislo mod 10; writeln (edinizi); end.
Integer7. Дано двузначное число. Найти сумму и произведение его цифр.
Program Integer_7; var chislo, desyatki, edinizi, summa, proizv: integer; begin write ('Введите число: '); readln (chislo); desyatki := chislo div 10; edinizi := chislo mod 10; summa := desyatki + edinizi; proizv := desyatki * edinizi; writeln ('Сумма цифр числа: ', summa); writeln('Произведение цифр числа: ', proizv); end.
Integer8°. Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.
Program Integer_8; var chislo, desyatki, edinizi: integer; begin write ('Введите число: '); readln (chislo); desyatki := chislo div 10; edinizi := chislo mod 10; chislo := edinizi * 10 + desyatki; writeln ('Полученное число: ', chislo); end.
Integer9. Дано трехзначное число. Используя одну операцию деления нацело, вывести первую цифру данного числа (сотни).
Program Integer_9; var chislo, sotni: integer; begin write ('Введите число: '); readln (chislo); sotni := chislo div 100; writeln (sotni); end.
Integer10. Дано трехзначное число. Вывести вначале его последнюю цифру (единицы), а затем — его среднюю цифру (десятки).
Program Integer_10; var chislo, desyatki, edinizi: integer; begin write ('Введите число: '); readln (chislo); edinizi := chislo mod 10; writeln (edinizi); desyatki := chislo mod 100 div 10; writeln (desyatki); end.
Согласитесь, что это были не очень сложные задачи, поэтому никаких объяснений и блок-схем не требуется. Если же у вас возникли какие-либо проблемы, то не стесняйтесь и пишите все свои вопросы в комментарии под этой статьей. Ну, а если вам просто понравилась эта статья, то обязательно кликайте по кнопочкам, которые расположены ниже. 🙂
│
Deutsch (de) │
English (en) │
suomi (fi) │
français (fr) │
italiano (it) │
русский (ru) │
The data type integer
is a built-in data type of the programming language Pascal.
It can store a subset of ℤ, the set of whole numbers.
integer
literal
basics
An integer
is specified as a non-empty series of consecutive Western-Arabic digits.
The value of 1234
is [math]displaystyle{ 1 times 10^3 + 2 times 10^2 + 3 times 10^1 + 4 times 10^0 }[/math].
The integer
may be preceded by a sign, +
or −
, even if mathematically speaking the value is signless (this concerns the value zero).
+0 { ✔ syntactically correct }
If no sign is specified, a positive sign is presumed.
In Free Pascal, you can use the underscore to group digits if {$modeSwitch underscoreIsSeparator+}
(as of 2022 only available in trunk).
varying base
To change the base in Extended Pascal you prefix the integer
literal with a base specification:
This represents the value [math]displaystyle{ 1 times 8^3 + 2 times 8^2 + 3 times 8^1 + 4 times 8^0 }[/math].
The base can be any value between 2
and 36
(inclusive) and can only be specified to a decimal base.
A base specification possibly extends or restricts the set of allowed digits to those in the set of 0
to base − 1
from below table:
digit (case-insensitive) | 0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
A
|
B
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
value (decimal) | [math]displaystyle{ 0 }[/math] | [math]displaystyle{ 1 }[/math] | [math]displaystyle{ 2 }[/math] | [math]displaystyle{ 3 }[/math] | [math]displaystyle{ 4 }[/math] | [math]displaystyle{ 5 }[/math] | [math]displaystyle{ 6 }[/math] | [math]displaystyle{ 7 }[/math] | [math]displaystyle{ 8 }[/math] | [math]displaystyle{ 9 }[/math] | [math]displaystyle{ 10 }[/math] | [math]displaystyle{ 11 }[/math] |
digit (case-insensitive) | C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
value (decimal) | [math]displaystyle{ 12 }[/math] | [math]displaystyle{ 13 }[/math] | [math]displaystyle{ 14 }[/math] | [math]displaystyle{ 15 }[/math] | [math]displaystyle{ 16 }[/math] | [math]displaystyle{ 17 }[/math] | [math]displaystyle{ 18 }[/math] | [math]displaystyle{ 19 }[/math] | [math]displaystyle{ 20 }[/math] | [math]displaystyle{ 21 }[/math] | [math]displaystyle{ 22 }[/math] | [math]displaystyle{ 23 }[/math] |
digit (case-insensitive) | O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
value (decimal) | [math]displaystyle{ 24 }[/math] | [math]displaystyle{ 25 }[/math] | [math]displaystyle{ 26 }[/math] | [math]displaystyle{ 27 }[/math] | [math]displaystyle{ 28 }[/math] | [math]displaystyle{ 29 }[/math] | [math]displaystyle{ 30 }[/math] | [math]displaystyle{ 31 }[/math] | [math]displaystyle{ 32 }[/math] | [math]displaystyle{ 33 }[/math] | [math]displaystyle{ 34 }[/math] | [math]displaystyle{ 35 }[/math] |
As of version 3.2.0, the FPC intends to ({$mode extendedPascal}
), but does not yet support a generic base-specification format.
Instead only the following bases are recognized:
base | indicator | sample (decimal value) |
---|---|---|
binary ([math]displaystyle{ 2 }[/math]) | % |
%1010 ([math]displaystyle{ 10 }[/math])
|
octal ([math]displaystyle{ 8 }[/math]) | & |
&644 ([math]displaystyle{ 420 }[/math])
|
decimal ([math]displaystyle{ 10 }[/math]) | none | 1337 ([math]displaystyle{ 1337 }[/math])
|
hexadecimal ([math]displaystyle{ 16 }[/math]) | $ |
$2A ([math]displaystyle{ 42 }[/math])
|
characteristics
It is guaranteed that all arithmetic operations in the range −maxInt..+maxInt
work accurately.
An integer
variable may possibly store values beyond this range, but once you leave this range it is not guaranteed anymore that arithmetic operations work correctly.
Textbook example:
program lordOverflowStrikesAgain(output); {$overflowChecks on} var x: integer; begin x := -maxInt; x := pred(x); { If this doesn’t cause an error, `-maxInt - 1` storable. } writeLn(abs(x)); end.
Depending on the processor used, this may print:
A quite unexpected result since abs
should in principle return a non-negative value, yet expectable since pred(−maxInt)
is evidently not in the −maxInt..+maxInt
range.
application
Integer
is the data of choice if arithmetic results have to be precise.
The data type real
may provide “reasonable approximations”, but operations on integer
have to be exact (only guaranteed as long as it is in the −maxInt..+maxInt
range).
Generally speaking integer
operations are also faster than if done in the domain of real
.
The operators div
and mod
only work on integer
values (the math
unit
provides the fMod
function
and overloads mod
).
Free Pascal deviations
The FPC does not have a data type integer
but a host of integer
data types.
An integer
literal such as 123
possesses the data type of closest fitting range from the following table.
name (aliases) | smallest storable value | largest storable value | sizeOf
|
---|---|---|---|
shortInt (int8 )
|
-128 ([math]displaystyle{ -2^7 }[/math])
|
127 ([math]displaystyle{ 2^7-1 }[/math])
|
1 |
byte (uInt8 )
|
0 ([math]displaystyle{ 0 }[/math])
|
255 ([math]displaystyle{ 2^8-1 }[/math])
|
1 |
smallInt (int16 )
|
-32768 ([math]displaystyle{ -2^{15} }[/math])
|
32767 ([math]displaystyle{ 2^{15}-1 }[/math])
|
2 |
word (uInt16 )
|
0 ([math]displaystyle{ 0 }[/math])
|
65535 ([math]displaystyle{ 2^{16}-1 }[/math])
|
2 |
longInt (int32 )
|
-2147483648 ([math]displaystyle{ -2^{31} }[/math])
|
2147483647 ([math]displaystyle{ 2^{31}-1 }[/math])
|
4 |
longWord (cardinal , dWord )
|
0 ([math]displaystyle{ 0 }[/math])
|
4294967295 ([math]displaystyle{ 2^{32}-1 }[/math])
|
4 |
int64
|
-9223372036854775808 ([math]displaystyle{ -2^{63} }[/math])
|
9223372036854775807 ([math]displaystyle{ 2^{63}-1 }[/math])
|
8 |
qWord (uInt64 )
|
0 ([math]displaystyle{ 0 }[/math])
|
18446744073709551615 ([math]displaystyle{ 2^{64}-1 }[/math])
|
8 |
The signed ranges are preferred (i. e. as in the top/down order in the table), thus 123
possesses the data type shortInt
even though it could be a byte
, too.
As of version 3.2.0, the data type integer
is simply an alias depending on the currently selected compiler compatibility mode.
It does not depend on the CPU type, therefore it is quite possible that the CPU could in fact deal with integers having an even larger magnitude than integer
provides.
mode | integer is an alias for
|
value of maxInt
|
---|---|---|
{$mode FPC} , {$mode macPas} and {$mode TP}
|
smallInt
|
32767
|
all other available modes | longInt
|
2147483647
|
Warning: Undocumented feature: General programming advice, do not use what has not been documented. Unlikely as it may be, the following feature may be removed at any time.
Depending on the platform’s arithmetic logic unit’s word size (ALU) following aliases are available.
type {$ifDef CPU16} ALUSInt = smallInt; ALUUInt = word; {$endIf} {$ifDef CPU32} ALUSInt = longInt; ALUUInt = dWord; {$endIf} {$ifDef CPU64} ALUSInt = int64; ALUUInt = qWord; {$endIf}
Although it is frequently the case that the ALU’s word size also coincides with the size of a pointer, it is not guaranteed (e. g. the x32-ABI uses 64‑bit ALU, but only 32‑bit pointers).
Therefore if an integer
value is meant to be typecasted to a pointer
, it recommended to use ptrUInt
.
Note, the data type nativeInt
is in fact an alias for ptrInt
and not related to ALUSInt
.
see also
real
, the data type used to store/process (a subset of) rational numbers- GNU Multiple Precision Arithmetic Library, precise mathematical operations on arbitrarily large values [if 8-Byte
int64
/qWord
are not enough]
simple data types |
|
---|---|
complex data types |
|
Integer4. Даны целые положительные числа $$A$$ и $$B$$ $$(A > B)$$. На отрезке длины $$A$$ размещено максимально возможное количество отрезков длины $$B$$ (без наложений). Используя операцию деления нацело, найти количество отрезков $$B$$, размещенных на отрезке $$A$$.
Решение:
program Integer5; var A, B, Res: Integer; begin Write(‘Введите длину отрезка A: ‘); Readln(A); Write(‘Введите длину отрезка B: ‘); Readln(B); Res:=A div B; Writeln(‘В отрезке A содержится ‘,Res,‘ полных отрезков B.’); end. |
Другие задачи из раздела Integer можно посмотреть здесь.
На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями
Содержание:
- Типы данных в Паскале
- Целочисленные типы данных в Паскаль
- Комментарии в Паскале
- Вещественные типы данных в Паскаль
- Приведение типов
- Константы в Паскале
- «Красивый» вывод целых и вещественных чисел
- Арифметические операции в Паскале
- Порядок выполнения операций
- Стандартные арифметические процедуры и функции Pascal
Типы данных в Паскале
Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип | Диапазон | Требуемая память (байт) |
byte | 0..255 | 1 |
shortint | -128..127 | 1 |
integer | -32768.. 32767 | 2 |
word | 0..65535 | 2 |
longint | -2147483648..2147483647 | 4 |
Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal | PascalABC.NET | ||||
|
|
Результат: имя: Петр, возраст: 17
При использовании PascalABC.NET наиболее часто используются следующие целочисленные типы:
Тип | Длина, байт | Диапазон допустимых значений |
---|---|---|
integer | 4 | -2 147 483 648 .. 2 147 483 647 |
int64 | 8 | -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807 |
BigInteger | переменная | неограниченный |
Комментарии в Паскале
Обратите внимание на то, как используются комментарии в Паскале. В примере комментарии, т.е. служебный текст, который «не видим» для компилятора, заключаются в фигурные скобки {}
. Обычно комментарии делаются программистами с целью пояснения фрагментов кода. Для однострочных комментариев можно использовать два слэша //
:
{Очень простая программа для вывода слова "Привет"} begin // вывод write('Привет'); end.
Задача 5. Население Москвы равняется а=9000000
жителей. Население Нью-Васюков равняется b=1000
жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.
[Название файла: L1task5.pas
]
Вещественные типы данных в Паскаль
Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.
Тип | Диапазон | Требуемая память (байт) |
real | 2.9 * 10E-39 .. 1.7 * 10E38 | 6 |
single | 1.5 * 10 E-45 .. 3.4 * 10E38 | 4 |
double | 5 * 10E-324 .. 1.7 * 10E308 | 8 |
extended | 1.9 * 10E-4951 .. 1.1 * 10E4932 | 10 |
Тип real
в Паскале — наиболее часто используемый из вещественных типов.
Выше были представлены простые типы данных в Паскаль, к которым относятся:
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
- Вещественные
Для вывода значений переменных вещественного типа обычно используется форматированный вывод:
в формате используется либо одно число, означающее число позиций, отводимых на это число в экспоненциальной форме; p:=1234.6789; Writeln(p:12); {_1.2346E+004}либо два числа, первое из которых обозначает общий размер поля, отведенного под это число, второе — число знаков после запятой, т.е. точность. p:=1234.6789; Writeln(p:6:2); {1234.68}
Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.
Приведение типов
В pascalABC.Net в некоторых случаях можно значения одного типа присваивать переменным другого типа.
Значения типов данных, которые занимают меньше памяти, можно присвоить переменным типа данных с бОльшей емкостью. Так, возможны следующие приведения:
integer → int64 int64 → real integer → BigInteger
Пример использования операции приведения типов:
var a := 10; // integer var b := 123456789012345; // int64 var c := -3bi; // BigInteger var i := int64(a); // приведение integer → int64 var x := real(b); // приведение int64 → real var p := BigInteger(a); // приведение integer → BigInteger
Обратное приведение с помощью функций
Обратное приведение, т.е. чтобы присвоить значение большей ёмкости переменной типа данных меньшей емкости, следует использовать функции округления. Например:
real → integer
Пример:
## var x := Sqrt(3); // корень квадратный из 3, тип real var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1 var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2
Константы в Паскале
Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.
Объявление константы в Паскале происходит до объявления переменных (до служебного слова var
) и выглядит следующим образом:
Пример описания константы в Паскале:
Pascal | PascalABC.NET | ||||
|
|
«Красивый» вывод целых и вещественных чисел
Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:
Вывод целых чисел
Вывод вещественных чисел
Арифметические операции в Паскале
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
---|---|---|
2 + 3 | 5 | плюс |
4 — 1 | 3 | минус |
2 * 3 | 6 | умножить |
10 / 5 | 2 | разделить |
10 ** 2 | 100 | возведение в степень с результатом типа real |
17 div 5 | 3 | целочисленное деление |
17 mod 5 | 2 | остаток от целочисленного деления |
Порядок выполнения операций
- вычисление выражений в скобках;
- умножение, деление, div, mod слева направо;
- сложение и вычитание слева направо.
Канонический способ:
var a: integer; b: real; begin a := 1; writeln('a := 1; a = ',a); a += 2; // Увеличение на 2 writeln('a += 2; a = ',a); a *= 3; // Умножение на 3 writeln('a *= 3; a = ',a); writeln; b := 6; writeln('b := 6; b = ',b); r /= 2; writeln('b /= 2; b = ',b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
- Операция
inc
в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу. - Аналогично работает процедура
Dec
в Паскале:Dec(x)
— уменьшает x на 1 (декремент) илиDec(x,n)
— уменьшает x на n. - Оператор
abs
представляет собой модуль числа. Работает следующим образом: - Оператор
div
в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело. -
Остаток от деления или оператор
mod
в pascal тоже незаменим при решении ряда задач. - Заслуживающей внимания является стандартная функция
odd
Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращаетtrue
(истина) для нечетных чисел,false
(ложь) для четных чисел. - Функция
exp
в паскале возвращает экспоненту параметра. Записывается какexp(x)
, где x типа real. - Квадрат числа в Паскале вычисляется при помощи процедуры
sqr
. - Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию
exp
. - Извлечь квадратный корень в Паскале можно при помощи процедуры
sqrt
.
Пример операции inc:
1 2 3 |
x:=1; inc(x); {Увеличивает x на 1, т.е. x=2} writeln (х) |
Более сложное использование процедуры inc:
Inc(x,n)
где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
a:=-9; b:=abs(a); { b = 9}
Пример использования функции odd:
1 2 3 4 |
begin WriteLn(Odd(5)); {True} WriteLn(Odd(4)); {False} end. |
Пример использования процедуры sqr в Pascal:
1 2 3 4 5 |
var x:integer; begin x:=3; writeln(sqr(x)); {ответ 9} end. |
Формула такая: exp(ln(a)*n)
, где а
— число, n
— степень (а>0).
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
WriteLn(Power(2,3)); {ответ 8}
Пример использования процедуры sqrt в Pascal:
1 2 3 4 5 |
var x:integer; begin x:=9; writeln(sqrt(x)); {ответ 3} end. |
Задача 6. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем
(S=ширина * толщина, V=площадь*высота)
[Название файла: L1task6.pas
]
Задача 7. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.
[Название файла: L1task7.pas
]
Задача 8. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.
[Название файла: L1task8.pas
]
В приведенных ниже примерах все функции имеют аргументы. Аргументы
m
и n
имеют целочисленный тип,
a
и b
– тип real,
x
и y
– любой из этих типов.
Abs(x) – возвращает абсолютное значение аргумента x; Ceil(x) - возвращает ближайшее целое, не меньшее, чем х; Floor(x) - возвращает ближайшее целое, не превышающее х; Frac(x) - возвращает дробную часть аргумента x; Max(x, y, …) – возвращает максимальное из значений x, y, …; Min(x, y, …) – возвращает минимальное из значений x, y, … ; Random(m) – возвращает случайное число из интервала [0 ; m-1]; Random(a) – возвращает случайное число из интервала [0 ; a); Random(m, n) – возвращает случайное число из интервала [m ; n]; Random(a, b) – возвращает случайное число из интервала [a ; b); Random2(m) – возвращает кортеж из двух случайных чисел в интервале [0 ; m-1]; Random2(a) – возвращает кортеж из двух случайных чисел в интервале [0 ; a); Random2(m, n) – возвращает кортеж из двух случайных чисел в интервале [m ; n]; Random2(a, b) – возвращает кортеж из двух случайных чисел в интервале [a ; b); Random3(m) – возвращает кортеж из трех случайных чисел в интервале [0 ; m-1]; Random3(a, b) – возвращает кортеж из трех случайных чисел в интервале [a ; b); Round(x) - возвращает округленное до целых по правилам арифметики значение типа integer; Round(x, n) - возвращает значение х, округленное до n знаков в дробной части; Sign(x) – возвращает -1 при x < 0, 0 при x = 0 и 1 при x > 0; Sin(x) – возвращает sin(x) типа real; Sqr(a) – возвращает a2; Sqr(m) – возвращает m2 типа int64; Sqrt(x) – возвращает √x типа real; Trunc(a) – возвращает целую часть значения a того же типа
Тип INTEGER (целый). Этот тип представляет множество целых чисел диапазона от -32768 до 32767. В памяти ЭВМ под целое число отводится два байта (16 бит).
Наибольшему значению целого числа 32767 соответствует стандартный идентификатор MAXINT, а наименьшему – выpaжeниe NOT(MAXINT)=-(MAXINT+1), или число -32768. Операции, проводимые над целыми числами: «+» сложение, «-» вычитание, «*» умножение, DIV – целочисленное деление, MOD – остаток от целочисленного деления, AND – арифметическое ‘И’, OR – арифметическое ‘ИЛИ’, NOT – арифметическое отрицание, XOR – исключающая дизъюнкция. Примеры использования этих операций приведены в таблице1.
Любая из этих операций выполнима над двумя целыми числами, если абсолютная величина результата не превышает MAXINT (для умножения). В противном случае возникает прерывание программы, связанное с переполнением.
Например: требуется вычислить выражение 1000 * 4000 div 2000. Поскольку операции умножения и деления имеют один приоритет и выполняются слева направо в порядке записи арифметического выражения, то при умножении произойдет прерывание, связанное с переполнением. Выход из этой ситуации возможен при изменении порядка выполнения операций умножения и деления, для чего используются круглые скобки ==> 1000 * (4000 div 2000).
Предусмотрено представление целых чисел в шестнадцатеричной системе счисления. Форма записи таких чисел $Х, где X – целая константа, а символ $ – признак. Примеры: $57, $1FF. Напомним, что в шестнадцатеричной системе счисления цифры 10, 11, 12, 13, 14 и 15 заменяются латинскими буквами А, В, С, D, Е и F соответственно.
Кроме типа INTEGER в языке Pascal предусмотрены и другие целые типы данных BYTE, SHORTINT, WORD и LONGINT (таблица 2). Все эти типы определены на множестве целых чисел, характеризуются одним набором арифметических операций и отличаются диапазоном значений и объемом занимаемой памяти.
Предыдущая статья: Алфавит языка Pascal.
Оглавление: Лекции по Pascal.
Следующая статья: Тип данных Real.