Реферат: Арифметические типы данных. Числовые константы и переменные
С.А. Григорьев
В языке Паскаль определены следующие арифметические типы данных: целочисленные типы — Byte, ShortInt, Word, Integer и LongInt; вещественные типы — Single, Real, Double и Extended; и не совсем вещественный тип Comp. Характеристики этих типов приведены в таблице 1 (запись 1.5e-45 означает 1.5, умноженное на 10 в степени -45, это общепринятое в языках программирования обозначение для вещественных чисел — константа с плавающей точкой).
Таблица 1
Арифметические типы данных
Название типа | Диапазон допустимых значений | Количество верных цифр | Размер в байтах |
Byte | 0...255 | - | 1 |
ShortInt | -128...127 | - | 1 |
Word | 0..65535 | - | 2 |
Integer | -32768...32767 | - | 2 |
LongInt | -2147483648...2147483647 | - | 4 |
Single | 1.5e-45...3.4e+38 | 7-8 | 4 |
Real | 2.9e-39...1.7e+38 | 11-12 | 6 |
Double | 5.0e-324...1.7e+308 | 15-16 | 8 |
Extended | 3.4e-4932...1.1e+4932 | 19-20 | 10 |
Comp | -9.2e18...9.2e18 | 8 | 8 |
Типы Byte и Word используются для целых величин без знака, типы ShortInt, Integer и LongInt — для целых со знаком, типы Single, Real, Double и Extended — для вещественных величин. Тип Comp может содержать только целые числа от -2 63 +1 до +263-1, но эти числа хранятся в вещественном формате, поэтому тип Comp считается вещественным. С данными типа Comp можно обращаться так же, как с данными других вещественных типов, но дробная часть числа при этом автоматически отбрасывается.
Целые числовые константы записываются в языке Паскаль в десятичном виде или в 16-ричном виде, 16-ричная константа начинается с символа $ и содержит 16-ричные цифры: 0-9,A-F. Например, число 255 можно записать как $FF. Числовые константы по умолчанию имеют тип Integer или LongInt. Вещественные константы записываются либо с фиксированной точкой, например, -1.234, либо с плавающей точкой, например, -1.234E-5 или 555е12.
В программе, как правило, приходится использовать переменные арифметических типов. Каждая такая переменная (и переменная любого другого типа) в языке Паскаль должна быть обязательно описана, т.е. должен быть явно указан ее тип. Описание переменных в общем случае имеет вид:
VAR имя,…, имя: тип; имя,…, имя: тип; ...
Здесь имя — имена переменных (идентификаторы), тип — типы переменных, VAR — ключевое слово, означающее, что после него следуют описания переменных. Переменные одного типа можно описать совместно, разделив их имена запятыми, а можно описывать и каждую переменную отдельно. Точка с запятой означает окончание описания переменных данного типа. Слово VAR может повторяться в программе сколько угодно раз. Выбор типа для той или иной переменной определяется назначением этой переменной. Пусть, например, переменная i служит счетчиком (индексом) элементов некоторой последовательности, причем известно, что количество элементов не может превосходить 100. Мы можем описать переменную i любым целочисленным типом, но правильный выбор — Byte или ShortInt, любой другой тип будет избыточным. Всегда следует выбирать типы переменных осознанно; если вы не понимаете, какой тип должна иметь ваша переменная, вероятнее всего, эта переменная в программе не нужна. Для вещественных переменных чаще всего используется тип Real, являющийся основным вещественным типом в Паскале, поэтому мы везде будем писать Real для вещественных переменных, хотя это может быть и другой вещественный тип.
Пусть в программе нам необходимы переменные b1,b2,b3,b4 типа Byte, переменные i,j,k типа Integer и переменные r1,r2 типа Real. Их можно описать, например, так:
VAR b1,b2,b3,b4: Byte;
i,j,k: Integer;
r1,r2: Real;
или так :
VAR b1: Byte;
i,j,k: Integer;
VAR r1: Real;
VAR b2,b3,b4: Byte;
r2: Real;
Эти описания эквивалентны.
Всякая переменная обладает четырьмя атрибутами: именем, типом, адресом и значением. Имя переменной есть идентификатор, т.е. последовательность символов; тип переменной определяет ее свойства, диапазон допустимых значений и размер памяти, необходимый для размещения этой переменной; адрес переменной указывает на место в памяти, где размещается ее значение; переменная всегда имеет некоторое значение, даже если вы ничего не сделали, чтобы определить это значение. В последнем случае говорят, что переменная не определена; это значит, что ее значение не известно нам заранее (ни в коем случае не следует думать, что неопределенные переменные имеют нулевые значения — это не так).
Каким же образом определить значение переменной? Для этого используется оператор присваивания:
имя:= выражение;
Здесь мы встречаемся с двумя новыми понятиями — оператор и выражение. Оператор — это минимальная осмысленная конструкция в языке Паскаль, вся программа — это последовательность операторов. Оператор всегда заканчивается символом ";", кроме одного единственного оператора END. Допускаются пустые операторы ";", не выполняющие никаких действий. Выражение — это конструкция, состоящая из одного или нескольких операндов и, возможно, знаков операций, и имеющая некоторое значение. Операндами могут быть константы, переменные и другие выражения, т.е. вы можете строить сколь угодно сложные выражения. Мы не знаем пока никаких знаков операций, но предположим, что знак + означает операцию сложения (это так и есть). Запишем несколько выражений:
1 (константа есть частный случай выражения);
b1 (переменная есть частный случай выражения);
25+1E3
b1+4.25+r2
Теперь мы можем присвоить переменной ее значение:
i:=-11; j:=22+i; k:=i+j+177;
Наряду с переменными в Паскале есть и другие именованные объекты — это константы (отличайте их от числовых констант, которые не имеют имени, а лишь значение). Константы бывают двух видов — нетипизированные и типизированные. Нетипизированные константы описываются, так же, как и переменные в разделе описаний, в виде :
CONST имя=значение; имя=значение; ...
Здесь имя — идентификатор, значение — вообще говоря, некоторое выражение, которое может включать и именованные константы, описанные выше, но только не переменные. Запишем несколько примеров:
CONST C=-155;
D=C+100;
E=1E2+C+D;
CONST F=D+1;
CONST G=C+F;
Нетипизированные константы, описанные в разделе описаний, вы можете затем использовать в разделе операторов в выражениях, но изменить их значения невозможно. Не совсем удачное название «нетипизированные» означает не отсутствие у констант типа — любая константа имеет совершенно определенный тип, который определяется ее значением, — а лишь то обстоятельство, что при описании таких констант тип не указывается явно. В нашем примере константы C,D,F и G имеют тип Integer, а константа E — тип Real. Второй класс именованных констант — типизированные константы, описание которых имеет вид:
CONST имя: тип=значение; имя: тип=значение; ...
Эти константы вы можете использовать так же, как и нетипизированные, но можете и изменять их значения (например, с помощью оператора присваивания) подобно переменным. Типизированные константы можно, с небольшими оговорками, рассматривать как переменные, которым присвоено начальное значение. Приведемпример :
CONST t:Word = $FFFF; b:Byte = 11; r:Real = 1.23E-16; z:Integer = 0;
BEGIN t:=t-1; END.