При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Тип |
Диапазон |
Формат |
shortint |
-128 ..+127 |
8 битов со знаком |
integer |
-32768 .. 32767 |
16 битов со знаком |
longint |
-2147483648 +2147483647 |
32 бита со знаком |
byte |
0 .. 255 |
8 битов без знака |
word |
0 .. 65535 |
16 битов без знака |
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операции совершаемые над целыми числами:
“+” — сложение
“-“ — вычитание
“*” — умножение
SQR — возведение в квадрат
DIV — после деления отбрасывает дробную часть
MOD — получение целого остатка после деления
ABS — модуль числа
RANDOM(X)-получение случайного числа от 0 до Х
Пример:
а:=100; b:=60; a DIV b результат - 1 а MOD b результат - 40
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*bе, где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Тип |
Диапазон |
Цифры |
Real Single Duble Extende comp |
2.9×10Е-39 до 1.7×10Е 38 1.5×10Е-45 до 3.4×10Е 38 5.0×10Е-324 до 1.7×10Е 308 3.4×10Е-493 до 1.1×10Е 403 -2Е 63 до 2Е 63 |
от 11 до 12 от 7 до 8 от 15 до 16 от 19 до 20 от 19 до 20 |
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- SIN(X), COS(X), ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (ех).
- EXP(X*LN(A))-возведение в степень (Ах).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть;
- ROUND(X)-округление.
- Некоторые правила арифметических операций:
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;
Например:
var d,g,k:real;
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
> , < , >=, <=, <> .
Например: ‘A’ < ‘W’
Функции, которые применимы к символьным переменным:
- ORD(X) — определяет порядковый номер символа Х.
Пример:
ord(‘a’)=97;
- CHR(X) — определяет символ по номеру.
Пример:
chr(97)=’a’;
- PRED(X) — выдает символ, стоящий перед символом Х.
Пример:
pred(‘B’)=’A’;
- SUCC(X) — выдает символ, следующий после символа Х.
Пример:
succ(‘A’)=’B’;
Перечислимый тип
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type <имя типа>=(список констант); Var <имя переменной>:<имя типа>;
где <список констант> — это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
Например:
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
или так:
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ORD — порядковый номер
2. PRED — предшествующий элемент
3. SUCC — последующий элемент.
Пример:
PRED(бочка)=ведро; SUCC(юг)=запад; ORD(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак<бочка значение FАLSE.
Ограниченный тип
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
Описывается так:
TYPE <имя типа>=константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
Пример:
type index=0..63; letter=’a’..’z’; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:’a’..’z’.
Типы данных
Классификация типов данных
Типы, используемые в программе, написанной на в Паскале, делятся на стандартные и пользовательские. Первые «известны Паскалю» изначально. Они являются частью языка. Поэтому их иногда называют предопредедёнными.
Вторые, пользовательские типы, описаны (определены) в программе, либо в одном из подключённых модулей, даже если этот модуль входит в состав системной библиотеки. Фактически, они являются расширением языка.
С другой стороны, в Паскале, как и во многих других языках программирования, выделяют простые и составные типы данных.
Простые типы данных иначе называют скалярными. Данные таких типов не могут быть разбиты на части. К ним традиционно относятся группы порядковых, действительных и, несколько условно, – укозательных типов. Обратите внимание, что для действительного типа мы можем вычислить целую и дробную части, а целого типа определить знак, но мы их именно вычисляем, а не «берём готовенькими».
Составные типы данных
Порядковые типы
Целочисленные типы
Тип | Размер | Диапазон значений |
---|---|---|
Byte | 1 | 0 .. 255 |
Shortint | 1 | -128 .. 127 |
Smallint | 2 | -32 768 .. 32 767 |
Word | 2 | 0 .. 65 535 |
Integer | 2 или 4 | как у smallint или longint |
Cardinal | 4 | Longword |
Longint | 4 | -2 147 483 648 .. 2 147 483 647 |
Longword | 4 | 0 .. 4 294 967 295 |
Int64 | 8 | -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807 |
QWord | 8 | 0 .. 18 446 744 073 709 551 615 |
Типы Cardinal
, Longword
, Smallint
, Int64
, QWord
используются во Free Pascal, но в Borland (Turbo) Pascal не используются. Могут отсутствовать и в других версиях языка Pascal, таких, как Pascal ABC.
Целочисленные типы делятся по размеру занимаемой памяти, а также — по возможности или невозможности сохранять отрицательные значения. Первые называются знаковыми, вторые — беззнаковыми.
Логический ( boolean — булевский) тип
Тип | Размер | Диапазон значений |
---|---|---|
Boolean | 1 | False или True |
По техническим причинам могут существовать другие логические типы, отличающиеся своим размером от стандартного boolean
, но нас они не интересуют.
Символьный тип (Char)
Стандартный для языка Pascal символьный тип имеет 256 значений. Переменные этого типа занимают один байт.
Тип | Размер | Диапазон значений |
---|---|---|
Char | 1 | #0 .. #255 (Множество выводимых символов и соответствующие им номера зависят от кодировки) |
Вещественные типы (типы с плавающей запятой)
Эти типы используются для работы с дробными или с очень большими значениями. Обратите внимание, значения этих типов всегда рассматриваются как приближённые значения.
Тип | Размер | Диапазон значений | «Точных» знаков, после запятой |
---|---|---|---|
Real | 4 или 8 | Зависит от платформы | ??? |
Single | 4 | 1.5e-45 .. 3.4e38 | 7-8 |
Double | 8 | 5.0e-324 .. 1.7e308 | 15-16 |
Extended | 10 | 1.9e-4932 .. 1.1e4932 | 19-20 |
Comp | 8 | -2e64+1 .. 2e63-1 | 19-20 |
Currency | 8 | -922 337 203 685 477.5808 .. 922 337 203 685 477.5807 | 4 |
Тип Currency используются во Free Pascal, но в Borland (Turbo) Pascal не используется. Может отсутствовать и в других версиях языка Pascal, таких, как Pascal ABC.
Тип Comp
предназначен для хранения больших целых чисел со знаком, но использовать переменные данного типа вместо integer
, например — в качестве счётчика в цикле for
, нельзя. Он относится к группе real
-подобных типов.
Арифметические типы данных
Название |
Диапазон |
Количество верных |
Размер в |
Byte |
0…255 |
— |
1 |
ShortInt |
-128…127 |
— |
1 |
Word |
0..65535 |
— |
2 |
Integer |
-32768…32767 |
— |
2 |
LongInt |
-2147483648…2147483647 |
— |
4 |
Single |
±1.5e-45… |
7-8 |
4 |
Real |
±2.9e-39… |
11-12 |
6 |
Double |
±5.0e-324… |
15-16 |
8 |
Extended |
±3.4e-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.
Соседние файлы в папке Учебники
- #
- #
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип. В программе описание переменной задается следующим образом:
var список переменных: тип;
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Язык Pascal имеет четыре встроенных стандартных типа:
- integer (целочисленный)
- real (вещественный)
- boolean (логический)
- char (символьный)
1.Целочисленный тип (integer).
В Pascal имеются следующие целочисленные типы:
- shortint (короткое целое)
- integer (целое)
- longint (длинное целое)
- byte (число длиной в байт)
- word (число длиной в слово)
Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей таблице.
Тип данных | Диапазон | Количество байт |
---|---|---|
shortint | -128 ..+127 | 1 |
integer | -32768 .. 32767 | 2 |
longint | -2147483648 +2147483647 | 4 |
byte | 0 .. 255 | 1 |
word | 0 .. 65535 | 4 |
Описываются переменные целого типа следующим образом:
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операция | Описание |
---|---|
+ | сложение |
— | вычитание |
* | умножение |
/ | деление |
div | после деления отбрасывает дробную часть |
mod | получение целого остатка после деления |
В Pascal есть операции целочисленного деления и нахождения остатка от деления. При выполнении целочисленного деления (операция div) остаток от деления отбрасывается.
//Например 15 div 3 = 5; 18 div 5 = 3; 123 div 10 = 12; 7 div 10 = 0;
С помощью операции mod можно найти остаток от деления одного целого числа на другое.
//Например 15 mod 3 = 0; 18 mod 5 = 3; 123 mod 10 = 3; 7 mod 10 = 7;
//Например а:=100; b:=60; c:=a div b; d:=a mod b;
результат: переменная c равна 1, а d равна 40.
При записи алгебраических выражений используют арифметические операции (сложение, умножение, вычитание, деление), функции Pascal, круглые скобки.
Порядок действий при вычислении значения выражения:
- вычисляются значения в скобках;
- вычисляются значения функций;
- выполняется унарные операции (унарный минус — смена знака);
- выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);
- выполняются операции сложения и вычитания.
Встроенные математические функции языка Pascal
Математическая запись | Запись на Pascal | Назначение |
---|---|---|
cos x | cos(x) | Косинус x радиан |
sin x | sin(x) | Синус x радиан |
ex | exp(x) | Значение e в степени x |
[x] | trunc(x) | Целая часть числа x |
|x| | abs(x) | Модуль числа x |
x2 | sqr(x) | Квадрат числа x |
sqrt(x) | Квадратный корень из x | |
{x} | frac(x) | Дробная часть x |
arctg x | arctan(x) | Арктангенс числа x |
ln x | ln(x) | Натуральный логарифм x |
p | Pi | Число p |
Возведение в степень (кроме возведения в квадрат и возведения в степень числа e) отсутствует. Для возведения в произвольную степень можно воспользоваться очевидным равенством: xy=ey ln x. Для возведения числа в натуральную степень можно написать собственную функцию. Например,
{Функция возведения вещественного числа X в натуральную степень N} Function Stepen(X : Real; N : Integer) : Real; Var I:Integer; St:Real; Begin St := 1; For I := 1 To N Do St := St * X; Stepen := St; End;
Другой способ получить натуральное значение z=xy, где x, y — натуральные, это сделать так: Z := Round(Exp(Y * Ln(X))).
Примечание. Интересной является задача получения степени любого целого числа (за исключением нуля), если основание степени — неотрицательное целое, без использования развилки. Одно из возможных решений :
(–1)*ord(odd(y)) * exp(y * ln(x)) + ord(odd(y+1)) * yxp(Y * ln(x))
Здесь Ord(K) — функция, возвращающая порядковый номер величины K в том или ином порядковом типе (в примере использовано свойство, что порядковый номер False равен 0, а порядковый номер True — 1).
2. Вещественный тип (real).
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*bе, где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется следующие виды вещественных типов: real, singlе, double, extended,comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений. Тип comp может содержать только целые числа от -2 63 +1 до +263-1, но эти числа хранятся в вещественном формате, поэтому тип comp считается вещественным. С данными типа Comp можно обращаться так же, как с данными других вещественных типов, но дробная часть числа при этом автоматически отбрасывается.
Диапазон и десятичные цифры для вещественных типов
Тип | Диапазон | Точность | Количество байт |
Real | 2.9×10Е-39 до 1.7×10Е 38 | 11-12 | 6 |
Single | 1.5×10Е-45 до 3.4×10Е 38 | 7-8 | 4 |
Double | 5.0×10Е-324 до 1.7×10Е 308 | 15-16 | 8 |
Extended | 3.4×10Е-4932 до 1.1×10Е 4932 | 19-20 | 10 |
Comp | -9.2E-18 до 9.2E18 | 19-20 | 8 |
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- Тригонометрические функции:
- SIN(X);
- COS(X);
- ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (ех).
- EXP(X*LN(A))-возведение в степень (Ах).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть
- ROUND(X)-округление.
Некоторые правила арифметических операций:
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;
Например:
3. Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:».
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
> , < , >=, <=, <> . Например: 'A' < 'W'
Функции, которые применимы к символьным переменным:
- ord(x) — определяет порядковый номер символа x.
- chr(x) — определяет символ по номеру.
- pred(x) — выдает символ, стоящий перед символом x.
- succ(x) — выдает символ, следующий после символа x.
Перечислимые типы
4. Перечислимый тип.
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type имя типа=(список констант); Var имя переменной:имя типа;
где <список констант> — это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
Например:
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
или так:
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ord — порядковый номер
2. pred — предшествующий элемент
3. succ — последующий элемент.
Пример: pred(бочка)=ведро; succ(юг)=запад; ord(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения:
север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак<бочка значение FАLSE.
5. Ограниченный тип.
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
Описывается так:
type <имя типа>=константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
Пример:
type index=0..63; letter='a'..'z'; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:'a'..'z';
Любые данные – константы, переменные, значения функций характеризуются в Паскале типом данных.
Определим понятие типа данных. Как уже известно, все объекты программы (переменные, константы и т.д.) должны быть описаны.
Описания информируют транслятор, во-первых, о существовании используемых переменных и других объектов, во-вторых, указывают на свойства этих объектов. Например, описание переменной, значение которой является числом, указывает на свойства чисел. Формально числа могут быть целыми и вещественными (дробными). В Паскале, как и в других языках программирования, числа разделены на два типа: целые (зарезервированное слово integer ) и вещественные (зарезервированное слово real ).
Выделение целых чисел в отдельный тип объясняется тем, что в вычислительной машине целые и вещественные числа представляются по-разному: целое число может быть представлено абсолютно точно, а вещественное – неизбежно с некоторой конечной погрешностью, которая определяется свойствами транслятора.
Например, пусть переменная x имеет тип real и ее значение равно единице: x=1 . Соответствующее значение в памяти компьютера может быть и 0.999999999, и 1.000000001, и 1.000000000 . Но если переменная x будет объявлена как переменная целого типа, то единица в компьютере будет представлена абсолютно точно и переменная x не сможет принимать вещественные (дробные) значения – ведь она была описана как переменная целого типа.
Таким образом, тип данных определяет:
- внутреннее представление данных в памяти компьютера;
- множество значений, которые могут принимать величины этого типа;
- операции, которые могут выполняться над величинами этого типа.
Введение типов данных является одной из базовых концепций языка Паскаль, заключающейся в том, что при выполнении операции присваивания переменной значения выражения, переменная и выражение должны быть одного типа. Такая проверка выполняется компилятором, что значительно упрощает поиск ошибок и приводит к повышению надежности программы.
Множество типов данных языка Турбо Паскаль можно разделить на две группы:
- стандартные (предопределенные) типы;
- типы, определяемые пользователем (пользовательские типы).
К стандартным типам Турбо Паскаль относят:
- целый тип – integer ;
- вещественный тип – real ;
- символьный тип – char ;
- логический тип – boolean ;
- строковый тип – string ;
- указательный тип – pointer ;
- текстовый тип – text .
Пользовательские типы данных представляют собой различные комбинации стандартных типов.
К пользовательским типам относят:
- перечисляемый тип;
- интервальный тип;
- указательный тип;
- структурированные типы;
- процедурный тип.
Замечание. Возможна и другая классификация типов данных, согласно которой типы делятся на простые и сложные.
К простым типам относят: целый тип, вещественный тип, символьный тип, логический тип, перечислимый тип и интервальный тип.
Сложный тип представляет собой различные комбинации простых типов (массивы, записи, множества, файлы и т.д.)
Стандартные типы
Стандартный тип данных определен самим языком Паскаль. При использовании в программе стандартных типов достаточно указать подразделы необходимых типов ( const, var ) и далее описать используемые в программе константы и переменные. Необходимость использования подраздела Type отсутствует.
Например, если в программе используются только переменные:
i,j – integer (целые);
x,y — real (вещественные);
t,s — char (символьные);
a,b – boolean (логические),
то необходим только подраздел переменных – Var . Поэтому в описательной части программы объявления переменных записываются следующим образом:
Var
i,j:integer;
x,y:real;
t,s:char;
a,b:boolean;
Целые типы
Данные этого типа могут принимать только значения целых чисел. В компьютере значения целого типа представляются абсолютно точно. Если переменная отрицательная, то перед ней должен стоять знак «–», если переменная положительная, то знак «+» можно опустить. Данный тип необходим в том случае, когда какую-то величину нельзя представить приближенно – вещественным числом. Например, число людей, животных и т.д.
Примеры записи значений целых чисел: 17, 0, 44789, -4, -127.
Диапазон изменения данных целого типа, определяется пятью стандартными типами целых чисел и представлен в таблице:
Тип | Диапазон | Размер в байтах |
Shortint | -128…+128 | 1 |
Integer | -32768…32767 | 2 |
Longint | -2147483648…2147483647 | 4 |
Byte | 0…255 | 1 |
Word | 0…65535 | 2 |
Последние два типа служат для представления только положительных чисел, а первые три как положительных, так и отрицательных чисел.
В тексте программы или при вводе данных целого типа значения записываются без десятичной точки. Фактические значения переменной не должны превышать допустимых значений того типа ( Shortint, Integer, Longint, Byte, Word ), который был использован при описании переменной. Возможные превышения при вычислениях ни как не контролируются, что приведет к неверной работе программы.
Пример использования переменной целого типа
Var
a:integer;
b:word;
c:byte;
Begin
a:=300; {a присвоено значение 300}
b:=300; {b присвоено значение300}
c:=200; {c присвоено значение200}
a:=b+c; {a присвоено значение500}
c:=b; {Ошибка! Переменная c может принимать значения не более 255. Здесь переменной c присваивается значение 500,что вызовет переполнение результата.}
End.
Вещественные типы
Значения вещественных типов в компьютере представляются приближенно. Диапазон изменения данных вещественного типа определяется пятью стандартными типами: вещественный ( Real ), с одинарной точностью ( Single ), двойной точностью ( Double ), с повышенной точностью ( Extended ), сложный ( Comp ) и представлен в таблице:
Тип | Диапазон | Число значащих цифр | Размер в байтах |
Real | 2.9E-39…1.7E+38 | 11-12 | 6 |
Single | 1.5E-45…3.4E+38 | >7-8 | 4 |
Double | 5E-324…1.7E+308 | 15-16 | 8 |
Extended | 3.4E-4951…1.1E+4932 | 19-20 | 10 |
Comp | -2E+63+1…+2E+63-1 | 19-20 | 8 |
Вещественные числа могут быть представлены в двух форматах: с фиксированной и плавающей точкой.
Формат записи числа с фиксированной точкой совпадает с обычной математической записью десятичного числа с дробной частью. Дробная часть отделяется от целой части с помощью точки, например
34.5, -4.0, 77.001, 100.56
Формат записи с плавающей точкой применяется при записи очень больших или очень малых чисел. В этом формате число, стоящее перед символом «E», умножается на число 10 в степени, указанной после символа «E».
1E-4 | 1*10-4 |
3.4574E+3 | 3.4574*10+3 |
4.51E+1 | 4.51*10+1 |
Примеры чисел с плавающей точкой:
Число | Запись на Паскале |
0,0001 | 1E-4 |
3457,4 | 34574E-1 |
45,1 | 451E-1 |
40000 | 4E+4 |
124 | 0.124E+3 |
124 | 1.24E+2 |
124 | 12.4E+1 |
124 | 1240E-1 |
124 | 12400E-2 |
В таблице с 5 по 9 строку показана запись одного и того же числа 124. Изменяя положение десятичной точки в мантиссе (точка «плывет», отсюда следует название «запись числа с плавающей точкой») и одновременно изменяя величину порядка, можно выбрать наиболее подходящую запись числа.
Пример описания переменных вещественного типа.
Var
x,y,z:real;
Символьный тип
Значениями символьного типа являются символы, которые можно набрать на клавиатуре компьютера. Это позволяет представить в программе текст и производить над ним различные операции: вставлять, удалять отдельные буквы и слова, форматировать и т.д.
Символьный тип обозначается зарезервированным словом Char и предназначен для хранения одного символа. Данные символьного типа в памяти занимают один байт.
Формат объявления символьной переменной:
<имя переменной>: Char;
При определении значения символьной переменной символ записывается в апострофах. Кроме того, задать требуемый символ можно указанием непосредственно его числового значения ASCII-кода. В этом случае необходимо перед числом, обозначающим код ASCII необходимого символа, поставить знак #.
Пример использования переменных символьного типа:
Var
c:char; {c – переменная символьного типа}
Begin
c:=’A’; {переменной c присваивается символ ’A’}
c:=#65; {переменной c также присваивается символ A. Его ASCII код равен 65}
c:=’5’; {переменной c присваивается символ 5,
End. здесь 5 это уже не число}
Логический тип
Логический тип данных называют булевским по имени английского математика Джорджа Буля, создателя области математики – математической логики.
Формат объявления переменной логического типа:
<имя переменной>: boolean;
Данные этого типа могут принимать только два значения:
- True – истина;
- False – ложь.
Логические данные широко используются при проверке правильности некоторых условий и при сравнении величин. Результат может оказаться истинным или ложным.
Для сравнения данных предусмотрены следующие операции отношений:
= | равно | |
<> | не равно | |
> | больше | |
< | меньше | |
>= | больше или равно | |
<= | меньше или равно |
Пример использования операций отношения:
отношение 5>3, результат true (истина);
отношение 5=3, результат false (ложь).
Пример использования переменных логического типа.
Var
a,b:boolean; {a,b – переменные логического типа}
Begin
a:=Тrue; {переменной a присваивается значение «истина»}
b:=false; {переменной b присваивается значение «ложь»}
End.
Константы
В качестве констант могут использоваться целые, вещественные числа, символы, строки символов, логические константы.
Константу необходимо объявить в описательной части с помощью зарезервированного слова const.
Формат объявления константы
Const <имя константы>= <значение>;
Если в программе используются несколько констант, допускается использование только одного ключевого слова Const, описание каждой константы заканчивается точкой с запятой. Блок констант заканчивается объявлением другого раздела или объявлением блока исполняемых операторов.
Пример:
Const {объявление раздела констант}year=2003; {константа целого типа, т.к. нет в записи десятичной точки}
time=14.05; {константа вещественного типа}
N=24; {константа целого типа, т.к. нет в записи десятичной точки}
P=3.14; {константа вещественного типа}
A=true; {константа логического типа}
str1=’7’; {константа символьного типа}
str2=’A’; {константа символьного типа}
str3=’Turbo’; {константа строкового типа}
Var {объявление раздела переменных}
X,y:integer; {переменные целого типа}
Пользовательские типы
Из совокупности пользовательских типов рассмотрим только
- перечисляемый тип;
- интервальный тип.
Эти два типа нам будут необходимы при изучении массивов.
Перечисляемый тип
Перечисляемый тип данных описывает новые типы данных, значения которых определяет сам программист. Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками. Перечисляемый тип относится к типам данных, определяемым пользователем, поэтому объявление этого типа начинается зарезервированным словом TYPE .
Формат перечисляемого типа:
Type
<имя типа>= (константа1, константа2,…, константаN);
где
константа1, константа2,…, константаN – упорядоченный набор значений идентификаторов, рассматриваемых как константы.
Пример описания перечисляемого типа:
Type
ball=(one, two, three, four, five);
var
t:ball;
Здесь ball – имя перечисляемого типа; one, two, three, four, five – константы; t – переменная, которая может принимать любое значение констант.
В перечисляемом типе константа является идентификатором, поэтому она не заключается в кавычки и не может быть числом. Таким образом, в перечисляемом типе под константой понимается особый вид констант, которые не могут быть:
- константами числового типа: 1, 2, 3, 4 и т. д;
- константами символьного типа: ‘a’, ‘s’, ‘1’, ‘3’ и т. д.;
- константами строкового типа: ‘first’, ‘second’ и т.д.
Кроме того, к значениям этого типа не применимы арифметические операции и стандартные процедуры ввода и вывода Read, Write .
Пример использования переменных перечисляемого типа:
Type
days = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
Var
day: days;
begin
if day = Sunday then writeln(‘Сегодня Воскресенье!’);
End.
Элементы, входящие в определение перечисляемого типа, считаются упорядоченными в той последовательности, в которой они перечисляются. Нумерация начинается с нуля. Поэтому в приведенном примере дни недели имеют следующие порядковые номера
Для программного определения порядкового номера используется функция Ord() .
В нашем примере порядковые номера равны:
Ord(Monday) = 0;
Ord(Saturday) = 5;
Ord(Sunday) = 6.
Интервальный тип
Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором диапазоне, то такой тип данных называется интервальным типом. Часто интервальный тип называют ограниченным типом и типом-диапазоном. Интервальный тип задается границами своих значений:
<минимальное значение>..<максимальное значение>
Здесь:
- два символа «..» рассматриваются как один символ, поэтому между ними недопустимы пробелы;
- левая граница диапазона не должна превышать его правую границу.
Интервальный тип относится к типам данных, определяемых пользователем, поэтому объявление этого типа начинается со служебного слова TYPE .
Пример описания интервального типа:
Typedigit = 1..10;
month = 1..31;
lat = ’A’..’Z’;