Тип данных text в паскале. Программирование. Числовые типы данных Pascal-Паскаль

Федеральное агентство по образованию

Реферат

«ТИПЫ ДАННЫХ В ПАСКАЛЕ»

1. Типы данных

Любые данные, т.е. константы, переменные, свойства, значения функций или выражения характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.

Вообще язык Object Pascal характеризуется разветвленной структурой типов данных (рис. 1.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим.

Обрабатываемые в программе данные подразделяются на переменные, константы и литералы:

Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.

Переменные объявляются в разделе объявления переменных, но в отличие от констант получают свои значения уже в процессе выполнения программы, причем допускается изменение этих значений. К константам и переменным можно обращаться по именам.

Литерал не имеет идентификатора и представляется в тексте программы непосредственно значением.

Тип определяет множество значений, которые могут принимать элементы данных, и совокупность допустимых над ними операций.

В этой и четырех последующих главах приводится подробное описание всех типов.

1.1 Простые типы

К простым типам относятся порядковые, вещественные типы и тип дата-время.

Порядковые типы отличаются тем, что каждый из них имеет конечное количество возможных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения.

Вещественные типы , строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.

Тип дата-время предназначен для хранения даты и времени. Фактически для этих целей он использует вещественный формат.

1.1.1 Порядковые типы

К порядковым типам относятся (см. рис. 1.1) целые, логические, символьный, перечисляемый и тип-диапазон. К любому из них применима функция Ord(x), которая возвращает порядковый номер значения выражения X.


Рис. 1.1 - Структура типов данных

Для целых типов функция ord(x) возвращает само значение х, т. е. Ord(X) = х для х, принадлежащего любому целому типу. Применение Ord(x) к логическому , символьному и перечисляемому типам дает положительное целое число в диапазоне от 0 до 1 (логический тип ), от 0 до 255 (символьный ), от 0 до 65535 (перечисляемый ). Тип-диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ord(х) зависит от свойств этого типа.

К порядковым типам можно также применять функции:

pred(x) - возвращает предыдущее значение порядкового типа (значение, которое соответствует порядковому номеру ord (х) -1, т. е. оrd(рred(х)) = оrd(х) - 1;

succ (х) - возвращает следующее значение порядкового типа, которое соответствует порядковому номеру ord (х) +1, т. е. оrd(Succ(х)) = оrd(х) + 1.

Например, если в программе определена переменная

то функция PRED(с) вернет символ "4", а функция SUCC(с) - символ "6".

Если представить себе любой порядковый тип как упорядоченное множество значений, возрастающих слева направо и занимающих на числовой оси некоторый отрезок, то функция pred(x) не определена для левого, a succ (х) - для правого конца этого отрезка.

Целые типы . Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два, четыре или восемь байтов. В табл. 1.1 приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.

Таблица 1.1 - Целые типы

Название Длина, байт Диапазон значений
Cardinal 4 0. .. 2 147 483 647
Byte 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Word 2 0...65 535
Integer 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
LongWord 4 0. . .4 294 967 295

Типы LongWord и Int64 впервые введены в версии 4, а типы Smallint и Cardinal отсутствуют в Delphi 1. Тип integer для этой версии занимает 2 байта и имеет диапазон значений от -32768 до +32767, т. е. совпадает с Smallint .

При использовании процедур и функций с целочисленными параметрами следует руководствоваться “вложенностью” типов, т.е. везде, где может использоваться word , допускается использование Byte (но не наоборот), в Longint “входит” Smallint , который, в свою очередь, включает в себя Shortint .

Перечень процедур и функций, применимых к целочисленным типам, приведен в табл. 1.2. Буквами b, s, w, i, l обозначены выражения соответственно типа Byte , Shortint, Word, Integer и Longint ,

х - выражение любого из этих типов; буквы vb, vs, vw, vi, vl, vx обозначают переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

Таблица 1.2 - Стандартные процедуры и функции, применимые к целым типам

Обращение Тип результата Действие
abs (x) x Возвращает модуль x
chr(b) Char Возвращает символ по его коду
dec (vx [, i]) - Уменьшает значение vx на i, а при отсутствии i - на 1
inc(vx[,i]) - Увеличивает значение vx на i, а при отсутствии i -на 1
Hi(w) Byte Возвращает старший бант аргумента
Hi(I) То же Возвращает третий по счету байт
Lo(i) Возвращает младший байт аргумента
Lo(w) То же
odd(l) Boolean Возвращает True, если аргумент-нечетное число
Random(w) Как у параметра Возвращает псевдослучайное число, равномерно распределенное в диапазоне 0...(w-l)
sqr(x) X Возвращает квадрат аргумента
swap(i) Integer Меняет местами байты в слове
swap (w) Word Тоже

При действиях с целыми числами тип результата будет соответствовать типу операндов, а если операнды относятся к различным целым типам - общему типу, который включает в себя оба операнда. Например, при действиях с shortint и word общим будет тип integer . В стандартной настройке компилятор Delphi не вырабатывает код, осуществляющий контроль за возможной проверкой выхода значения из допустимого диапазона, что может привести к недоразумениям.

Логические типы . К логическим относятся типы Boolean, ByteBool, Bool, wordBool и LongBool . В стандартном Паскале определен только тип Boolean , остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по одному байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант False (ложь) или True (истина).

Поскольку логический тип относится к порядковым типам, его можно использовать в операторе цикла счетного типа. В Delphi 32 для Boolean значение

Ord (True) = +1, в то время как для других типов (Bool, WordBool и т.д.)

Ord (True) = -1, поэтому такого рода операторы следует использовать с осторожностью! Например, для версии Delphi 6 исполняемый оператор showMessage (" --- ") в следующем цикле for не будет выполнен ни разу:

for L:= False to True do

ShowMessage ("--);

Если заменить тип параметра цикла L в предыдущем примере на Boolean , цикл будет работать и сообщение дважды появится на экране. [Для Delphi версии 1 и 2 ord (True) =+1 для любого логического типа.]

Символьный тип . Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.

Для кодировки в Windows используется код ANSI (назван по имени American National Standard Institute - американского института стандартизации, предложившего этот код). Первая половина символов ПК с кодами 0... 127 соответствует таблице 1.3. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода (от 192 до 256): “А”... “Я” кодируются значениями 192..223, “а”... “я” - 224...255. Символы “Ё” и “ё” имеют соответственно коды 168 и 184.

Таблица 1.3 - Кодировка символов в соответствии со стандартом ANSI

Код Символ Код. Символ Код. Символ Код Символ
0 NUL 32 BL 64 @ 96 "
1 ЗОН 33 ! 65 А 97 а
2 STX 34 66 В 98 b
3 ЕТХ 35 # 67 С 99 с
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 Е 101 е
6 ACK 38 & 70 F 102 f
7 BEL 39 " 71 G 103 д
8" BS 40 ( 72 Н 104 h
9 HT 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 К 107 k
12 FF 44 F 76 L 108 1
13 CR 45 - 77 М 109 m
14 SO 46 78 N 110 n
15 SI 47 / 79 0 111 о
16 DEL 48 0 80 Р 112 P
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC 4 52 4 84 Т 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 W
24 CAN 56 8 88 х 120 x
25 EM 57 9 89 Y 121 У
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 Л 126 ~
31 US 63 F 95 127 r

Символы с кодами 0...31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

Понятие типа является одним из фундаментальных понятий любого языка программирования. Объекты (константы , переменные , функции, выражения), которыми оперирует программа, относятся к определенному типу.

Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями .

Например , значения 1 и 2 относятся к целочисленному типу , их можно складывать, умножать и выполнять другие арифметические операции . Значения «монитор» и «Паскаль» носят лингвистический характер, они имеют свой набор допустимых операций. В большинстве широкоупотребительных языков могут использоваться только строго определенные, заранее известные типы. Pascal , наряду со стандартными типами, имеющимися в других языках высокого уровня, позволяет программисту образовывать собственные типы.

Все допустимые в языке Паскаль типы подразделяются на две большие группы: простые и сложные (структурированные).

Тип Диапазон Мантисса, знаков Требуемая память (байт)
REAL 2.9*10Е-39..1.7*10Е38 11-12
SINGLE 1.5*10Е-45..3.4*10Е38 7-8
DOUBLE 5.0*10Е-324..1.7*10Е308 15-16
EXTENDED 1.9*10Е-4951..1.1*10Е4932 19-20
COMP -2Е+63+1..2Е+63-1 10-20

Эффективное использование типов SINGLE, DOUBLE, EXTEND, COMP возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии. Для решения инженерно-экономических задач достаточно значений типа REAL.

Пример

Var Res, Summa, Itog: real;

Булевский тип данных описывается идентификатором BOOLEAN. Переменные и константы этого типа могут принимать только одно из двух значений: TRUE (истина) или FALSE (ложь).

Пример

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

Выражения булевского типа занимают в памяти 1 байт и используются в логических выражениях и выражениях отношения, а также для управления порядком выполнения операторов программы.

Литерный (символьный) тип описывается стандартным идентификатором CHAR. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ASCII. Значение константы или переменной этого типа заключается в апострофы.

Например , Var Bukva, Znak, Simvol: char;

Bukva:=’A’; Znak:=’+’; Simvol:=’!’

Переменные символьного типа занимают в памяти 1 байт. Использование данных типа char в арифметических выражениях запрещено. К литерным значениям могут применяться операции сравнения, результат при этом зависит от номера литерной переменной или константы в кодовой таблице.

Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные пользователем . К ним относятся перечисляемый и интервальный типы . Данные этих типов занимают в памяти 1 байт, поэтому любой пользовательский тип не может содержать более 255 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.

Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.

Формат

Type <имя типа>=(<значение1, значение2, ..., значениеN>);

Var <идентификатор, ...>: < имя типа>;

Пример

Type Season =(Spring, Summer, Autumn, Winter);

Var S1, S2: Season;

Autumn: (September, October, Nowember);

В данном примере приведен явно описанный тип данных пользователя Season. Определены их значения - обозначения времен года. Переменные S1 и S2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание . Третий тип перечисления - анонимный (не имеет имени) и задается перечислением значений в разделе Var. Autumn является переменной этого типа и может принимать значения September, October, Nowember. Таким образом, может быть задан любой тип, но это не всегда приемлемо. Первый способ, безусловно, более понятен и больше соответствует характеру языка Pascal.

Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов, кроме вещественного. Значение первой константы должно быть обязательно меньше значения второй.

Формат

Type <имя типа> = <константа1> .. <константа2>;

Var <идентификатор>: < имя типа>;

Пример

Type Days = 1.. 31;

Var Work_d, Free_d: Days;

В этом примере переменные Work_d, Free_d имеют тип Days и могут принимать любые значения из диапазона 1 . . 31.

Выход из диапазона вызывает программное прерывание.

Можно определить интервальный тип, задав границы диапазона не значениями констант, а их именами:

Const Min = 1; Max = 31;

Type Days = Min .. Max;

Var Work_d, Free_d: Days;

Структурированные типы данных базируются на скалярных типах и могут содержать их различные комбинации. Они определяют упорядоченную совокупность скалярных элементов и характеризуются типом своих компонентов . В языке Паскаль представлены следующие структурированные типы данных:

строка - последовательность символов, заключенная в апострофы;

массив - структурированный тип данных, состоящий из фиксированного количества элементов одного и того же типа, доступ к которым осуществляется по индексу;

множество - набор выбранных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое;

запись - совокупность фиксированного числа компонентов разного типа;

файл - последовательность компонентов одного типа и одной длины.

Еще двум структурированным типам - процедурному и типу object (объектному) - трудно поставить в соответствие данные в обычном представлении.

Рисунок 1 - Набор основных типов языка Паскаль

Любые данные – константы, переменные, значения функций характеризуются в Паскале типом данных.

Определим понятие типа данных . Как уже известно, все объекты программы (переменные, константы и т.д.) должны быть описаны.

Описания информируют транслятор, во-первых, о существовании используемых переменных и других объектов, во-вторых, указывают на свойства этих объектов. Например, описание переменной, значение которой является числом, указывает на свойства чисел. Формально числа могут быть целыми и вещественными (дробными). В Паскале, как и в других языках программирования, числа разделены на два типа: целые (зарезервированное слово 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 . Поэтому в описательной части программы объявления переменных записываются следующим образом:

Целые типы

Данные этого типа могут принимать только значения целых чисел. В компьютере значения целого типа представляются абсолютно точно. Если переменная отрицательная, то перед ней должен стоять знак «–», если переменная положительная, то знак «+» можно опустить. Данный тип необходим в том случае, когда какую-то величину нельзя представить приближенно – вещественным числом. Например, число людей, животных и т.д.

Примеры записи значений целых чисел: 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. Изменяя положение десятичной точки в мантиссе (точка «плывет», отсюда следует название «запись числа с плавающей точкой») и одновременно изменяя величину порядка, можно выбрать наиболее подходящую запись числа.

Пример описания переменных вещественного типа.

Символьный тип

Значениями символьного типа являются символы, которые можно набрать на клавиатуре компьютера. Это позволяет представить в программе текст и производить над ним различные операции: вставлять, удалять отдельные буквы и слова, форматировать и т.д.

Символьный тип обозначается зарезервированным словом 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 .

Формат перечисляемого типа:

<имя типа>= (константа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 .

Пример описания интервального типа:

Type digit = 1..10; month = 1..31; lat = ’A’..’Z’;

При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.

Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).

Стандартные типы

Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).

Целочисленный тип (integer)

В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.

Встроенные целочисленные типы.

Диапазон

Формат

8 битов со знаком

16 битов со знаком

2147483648 +2147483647

32 бита со знаком

8 битов без знака

16 битов без знака

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

  1. Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
  2. В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
  3. Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.

Операции совершаемые над целыми числами:

“+” - сложение

“-“ - вычитание

“*” - умножение

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. Вещественные типы различаются диапазоном и точностью связанных с ними значений

Диапазон и десятичные цифры для вещественных типов

Диапазон

Цифры

2.9x10Е-39 до 1.7x10Е 38

1.5x10Е-45 до 3.4x10Е 38

5.0x10Е-324 до 1.7x10Е 308

3.4x10Е-493 до 1.1x10Е 403

2Е 63 до 2Е 63

Операции совершаемые над вещественными числами:

  • Все операции допустимые для целых чисел.
  • 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’

Функции, которые применимы к символьным переменным:

  1. ORD(X) - определяет порядковый номер символа Х. ord (‘a’) =97 ;
  2. CHR(X) - определяет символ по номеру. chr (97 ) =’a’;
  3. PRED(X) - выдает символ, стоящий перед символом Х. pred (‘B’) =’A’;
  4. 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

При этом должны выполняться следующие правила:

  1. Обе ограниченные константы должны быть одного типа.
  2. В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
  3. Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
type index =0 ..63 ; letter=’a’..’z’; var char1,char2:letter; a,g:index ;

Можно описывать сразу в разделе описания переменных:

var a,g:0 ..63 ; char1,char2:’a’..’z’.

В языке Паскаль переменные характеризуются своим типом . Тип - это свойство переменой, по которому переменная может принимать множество значений, допустимых этим типом, и участвовать во множестве операций, допустимых над данным типом.

Тип определяет множество допустимых значений, которое принимает переменная данного типа. Определяет так же множество допустимых операций от переменной данного типа и определяет представления данных в оперативной памяти компьютера.

Например:

n:integer;

Паскаль - статический язык, из этого следует, что тип переменой определяется при ее описании и не может быть изменен. Язык Паскаль имеет развитую систему видов - все данные должны принадлежать заранее известному типу данных (либо стандартному типу, созданному при разработке языка или пользовательскому типу, который определяет программист). Программист может создавать свои типы произвольной структурой сложности на основе стандартных типов, либо уже определенных пользователем типов. Количество создаваемых типов неограниченно. Пользовательские типы в программе объявляется в разделе TYPE по формату:

[имя] = [тип]

Система стандартных типов имеет разветвленную, иерархическую структуру.

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

Структурированные типы строятся по определенным правилам из простых типов.

Указатели формируются из простых видов и используются в программах для задания адресов.

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

Объекты являются также нововведением, и они предназначены для использования языка, как объектно-ориентированного языка.

В языке Паскаль целые типы бывают 5 видов. Каждый из них характеризует диапазон принимаемых значений и занимаемым местом их в памяти.

При использовании целочисленных чисел следует руководствоваться вложенностью типов, т.е. типы с меньшим диапазоном могут быть вложены в типы с большим диапазоном. Тип Byte может быть вложен во все типы занимающие 2 и 4 байта. В тоже время тип Short Int, занимающий 1 байт не может быть вложен в тип Word, поскольку не имеет отрицательных значений.

Можно выделить 5 вещественных типов:

В компьютере абсолютно точно представляются целые типы. В отличие от целых типов значение вещественных типов определяет произвольное число лишь с некоторой конечной точность, зависящего от формата числа. Вещественные числа представляются в компьютере с фиксированной или с плавающей точкой.

2358.8395

0.23588395*10 4

0.23588395*E 4

Особое положение в Паскаль занимает тип Comp, фактически это большое целое число со знаком. Этот тип совместен со всеми вещественными типами и может быть использован для большого целого числа. При представлении вещественных чисел с плавающей запятой десятичная точка, всегда подразумевается перед левой или старшей мантиссой, но при действии с числом сдвигается влево или вправо.

Порядковые типы

Порядковые типы объединяют в себе несколько простых типов. К ним относятся:

  • все целые типы;
  • символьный тип;
  • логический тип;
  • тип-диапазон;
  • перечисляемый тип.

Общими признаками для порядковых типов являются: каждый из типов имеет конечное число возможных значений; значение этих типов можно определенным образом упорядочить и с каждым числом сопоставить некоторое число, являющееся порядковым номером; соседние значения порядковых типов отличается на единицу.

К значениям порядкового типа может быть применена функция ODD(x), которая возвращает порядковый номер аргумента x.

Функция PRED(x) - возвращает предшествующее значение порядкового типа. PRED(A) = 5.

Функция SUCC (x) - возвращает следующее значение порядкового типа. SUCC(A) = 5.

Символьный тип

Значениям символьного типа является 256 символов из множества допустимых кодовой таблицей используемого компьютера. Начальная область этого множества, то есть диапазон от 0 до 127 соответствует множеству кодов ASCII, куда загружаются символы алфавита, арабских чисел и специальных символов. Символы начальной области всегда присутствуют на клавиатуре ПК. Старшая область называется альтернативной, она содержит символы национальных алфавитов и различные специальные символы, и символы псевдографики, не соответствующие коду ASCII.

Значение символьного типа занимает один байт в оперативной памяти. В программе значении заключаются в апострофы. Так же значения можно задавать в виде его ASCII-коде. В этом случае перед числом, обладающим код символа нужно поставить знак #.

C:= ’A’

Логический (булевский) тип

Имеются два значения булевского типа: Истина (True) и Ложь (False). Переменные данного типа задаются служебным словом BOOLEAN. Значение булевского типа занимают один байт в оперативной памяти. Значениям Истина и Ложь соответствуют числовые значения 1 и 0.

Тип-диапазон

Есть подмножество своего базового типа в качестве, которого может выступать любой порядковый тип. Тип-диапазон задается границами внутри базового типа.

[минимальное-значение]…[максимальное-значение]

Тип-диапазон можно задавать в разделе Type, как определенный тип, а можно непосредственно в разделе Var.

При определении тип-диапазона необходимо руководствоваться:

  • левая граница не должна превышать правую границу;
  • тип-диапазон наследует все свойства базового типа, но с ограничениями, связанными и с его меньшей мощностью.

Перечисляемый тип

Данный тип относится к порядковым типам и задается перечислением тех значений, которых он может перечислять. Каждое значение именуется неким идентификатором и располагается в списке обрамленным в круглых скобках. Перечисляемый тип задается в Type:

Peoples = (men, women);

Первое значение - 0, второе значение - 1 и т.д.

Максимальная мощность 65535 значений.

Строковый тип

Строковый тип относится к группе структурированных типов и состоит из базового типа Char. Строковый тип не относится к порядковым типам. Он определяет множество символьных цепочек произвольной длины до 255 символов.

В программе строковый тип объявляется, словом String. Поскольку String является базовым типом, он описан в языке и объявление переменной типа String осуществляется в Var. При объявлении переменной строкового типа за String в квадратных скобках целесообразно указывать длину строки. Для указания используется целое число от 0 до 255.

Fam: String;

Указание длины строки позволяет компилятору отвести под данную переменную указанное число байтов в ОЗУ. Если длина строки не указана, то в этом случае компилятор отведет под значение этой переменной максимальное возможное число байт (255).