Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмизация и программирование 14.12.2011.doc
Скачиваний:
91
Добавлен:
07.02.2015
Размер:
833.54 Кб
Скачать

9. Типы данных, их классификация и способы задания.

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

Различают переменные следующих простых типов: целые (Integer, Byte, ShortInt, Word, LongInt), вещественные (Real, Double, Single, Extended), логический (Boolean), символьный (Char), перечисляемый, диапазонный (интервальный).

Иерархия типов в языке Pascal характеризуется разветвленной структурой.

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

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

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

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

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

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

Описание переменной:

идентификатор переменной: тип;

Пример описания:

Var d, c, n : Integer;

LogPer : Boolean;

A, B : Real;

K : Char;

Тип переменной определяет:

  • диапазон допустимых значений, принимаемых величинами этого типа;

  • набор операций, допустимых над данной величиной;

  • объем памяти, отводимой под эту переменную;

  • способ представления величин в памяти компьютера.

Каждый тип имеет свой идентификатор.

Идентификатор

Количество байт

Диапазон (множество) значений

Операции

Целые типы

integer

2

–32768..32767

+, –, /, *, Div, Mod, >=, <=, =, <>, <, >

byte

1

0..255

word

2

0..65535

shortint

1

–128..127

longint

4

–2147483648..2147483647

Вещественные типы

real

6

2,9×10–39 — 1,7×1038

+, –, /, *, >=, <=, =, <>, <, >

single

4

1,5×10–45 — 3,4×1038

double

8

5×10–324 — 1,7×10308

extended

10

3,4×10–4932 — 1,1×104932

Логический тип

Boolean

1

true, false

Not, And, Or, Xor, >=, <=, =, <>, <, >

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

char

1

все символы кода ASCII

+, >=, <=, =, <>, <, >

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

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

Набор встроенных математических функций применимых к данными целого типа в Паскале приведен в табл.

Табл.

Набор встроенных математических функций применимых к данными целого типа в Паскале

Обращение

Назначение

abs(x)

Возвращает модуль x

sqr(x)

Возвращает квадрат x

random(w)

Генерирует псевдослучайное число на интервале.

odd(i)

Возвращает true  если  i нечетное

chr(b)

 Возвращает символ по коду i

dec(x, k)

Уменьшает x  на k или 1

inc(x, k)

Увеличивает x  на k или 1

hi(i)

Возвращает старший байт

lo(i)

Возвращает младший байт

swap(i)

Меняет байты местами

где: x –любой тип; i –integer тип; b –byte тип; w - word тип.

Логический типданных носит название BOOLEAN. Значением логического типа может быть одна из двух констант FALSE (ложь) или TRUE (истина).

Символьные данные.Наряду с числовой информацией в Паскале используется алфавитно-цифровая или символьная информация, которая  включает в себя заглавные, строчные буквы, цифры от 0 до 9 и  вспомогательные  символы. Для описания символьных переменных используется тип данных CHAR или STRING.

Тип данных CHAR

Каждая переменная символьного типа может принимать значение только одного символа. Все символы упорядочены в соответствии с принятым в ЭВМ коде (например ASCII). При этом порядковый номер символов называется кодом (например, код латинского символа 'А ' равен 65; символа '3' равен 51).

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

Переменная типа STRING может принимать значения переменной длины. Максимально возможная длина переменной 255 символов.

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

Программист объединяет в одну группу в соответствии с каким-либо признаком всю совокупность значений, составляющих перечисляемый тип. Например, перечисляемый тип Rainbow (РАДУГА) объединяет скалярные значения RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ, ОРАНЖЕВЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ).

Перечисляемый тип описывается в разделе описания типов, например:

type

Rainbow = (RED, ORANGE, YELLOW,

GREEN, LIGHT_BLUE, BLUE, VIOLET);

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

1..10

-15..25

'a'..'z'

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

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

Вещественные типы данных.

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

Тип

Длина, байт

К-во  зн. цифр

Диапазон

REAL

6

11..12

SINGLE

4

7..8

DOUBLE

8

15..16

EXTENDED

10

19..20

COMP

8

19..20

     Над данными вещественного типа  определены следующие операции: -  арифметические:  +, -,  /, *  -  соотношения:      =, <>, <, >, <=, >=  Набор встроенных математических функций применимых  к данными вещественного типа приведен в табл. ниже.

Обращение

Назначение

Пример

sin(x)

Возвращает синус, угол в радианах

 

cos(x)

Возвращает синус, угол в радианах

 

arctan(x)

Возвращает арктангенс

 

abs(x)

Возвращает абсолютную величину

 

sqr(x)

Возвращает квадрат

 

exp(x)

Возвращает экспоненту

 

ln(x)

Возвращает логарифм натуральный

 

trunc(x)

Отбрасывает дробную часть

trunc(5.6)=5

round(x)

Округляет до ближайшего целого

round(5.6)=6

frac(x)

Выделяет дробную часть

frac(10.1)=0.1

int(x)

Выделяет целую часть

int(10.1)=10.0

random

Датчик случайных чисел (ДСЧ)    0 <1

 

random(x)

Датчик случайных чисел (ДСЧ)     0 <x

 

randomize

Инициализация ДСЧ

 

Структурированный тип данных.

Структурированный тип данных – это множество элементов данных (компонент) с одним именем.  В отличие от данных скалярного типа, которые могут принимать одно значение, данные  структурированного типа могут принимать множество  значений одного типа (регулярный тип, например, массивы), либо разных типов (комбинированные типы, например, записи). 

Массив ‑ это упорядоченное, ограниченное множество однотипных элементов, объединенных общим именем. Тип компонент (элементов) называется базовым и м.б. любым кроме файлового. Для обозначения элементов массива используется переменная с индексами.

Например:  A[25],   B[5, 8],     X[i],   Y[i, j],  R[n+1].

Размер  массива (длина) – число элементов массива.

Размерность  массива  – число индексов в  массиве.

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

Все компоненты массива одинаково доступны и могут выбираться в произвольном порядке.

Строки – это по сути, одномерный массив символов.

Строка — это массив символов; проявляется её «массивность» в том, что к её элементам (то есть, символам) можно обращаться по индексам, можно перебирать множество символов строки в цикле так же, как и обычный массив.

Записи.Массивы объединяют однородные единицы информации – элементы одного и того же типа. Но многообразие информации нельзя свести только к какому-то одному типу данных. В отличие от массива, элементами записей (их называют полями) могут быть даные различных типов.

Изначально записи были созданы для хранения баз данных.

Например, анкетные данные о студенте вуза могут быть представлены в виде информационной структуры

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

Type anketa=record

   fio: string[45]; 

   pol: char; 

   dat_r: string[8]; 

   adres: string[50]; 

   curs: 1..5; 

   grupp: string[3];

end;

Множества. Множественный тип данных напоминает перечислимый тип данных. Вместе с тем, множество - набор элементов, не организованных в порядке следования.

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

Под множеством в Паскале понимается конечная совокупность элементов, принадлежащих некоторому базовому типу.

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

Множество имеет зарезервированное слово set ofи вводится следующим описанием

Type

  < имя типа > = set of < имя базового типа >;

Var

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

Примеры описаний множеств:

Type   SetByte = set of byte; {множество 1, определённое над типом byte}    SetChisla = set of 10 .. 20; {множество 2, определённое в диапазоне от 10 до 20}   Symbol = set of char; {множество, определённое на множестве символов}   Month = (January, February, March, April, May, June, July, August, September, October, November, December);   Season = set of Month; {тип множества, определённый на базе перечислимого типа Month} Var   Letter, Digits, Sign : Symbol; {множествa, определённые над символьным типом}   Winter, Spring, Summer, Autumn, Vacation, WarmSeason : Season;   Index : SetChisla=[12, 15, 17];   Operation : set of (Plus, Minus, Mult, Divid);   Param : set of 0..9=[0, 2, 4, 6, 8];

Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (кстати, жесткий диск – это тоже внешняя память).

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