Основные типы данных

Содержание  |  Назад |  Вперед

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

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

Структура типов языка Паскаль

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

| Целочисленные | Логический | Символьный | Строковый | Вещественные
| Диапазон | Массив |

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

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

Целочисленные типы - обозначают множества целых чисел в различных диапазонах. Имеется пять целочисленных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Целочисленные типы обозначаются идентификаторами: Byte, ShortInt, Word, Integer, LongInt; их характеристики приведены в следующей таблице.

Тип  Диапазон  Размер в байтах 
Byte 
ShortInt 
Word
Integer 
LongInt
0 ... 255
-128 ... 127
0 ... 65535
-32768 ... 32767
-2147483648 ... 2147483647
1
1
2
2
4

Значения целых типов записываются в программе привычным способом:

123     4    -3    +345    -699

Наличие десятичной точки в записи целого числа недопустимо. Будет ошибкой записать целое число следующим образом:

123.0

Кроме прывычной десятичной формы записи допускается запись целых чисел в шестнадцатиричном формате, используя префикс $, например:

$01AF     $FF    $1A    $F0A1B

Регистр букв A,B, ..., F значения не имеет.

Допустимые операции:
- присваивание;
- все арифметические: +, - ,*, /, div, mod (при обычном делении [/] результат вещественный!);
- сравнение <, >, >=, <=, <>, =.

Логический тип (Boolean) - состоит всего из двух значений: False (ложно) и True (истинно). Слова False и True определены в языке и являются, по сути, логическими константами. Регистр букв в их написании несущественен: FALSE = false. Значения этого типа являются результатом вычислений условных и логических выражений и участвуют во всевозможных условных операторах языка.

Допустимые операции:
- присваивание;
- сравнение: <, >, >=, <=, <>, =;
- логические операции: NOT, OR, AND, XOR

Символьный тип (Char) - это тип данных, состоящих из одного символа (знака, буквы, кода). Значением типа Char может быть любой символ из набора ASCII. Если символ имеет графическое представление, то в программе он записывается заключенным в одиночные кавычки (апострофы), например:

'ж'     's'    '.'    '*'    ' '-(пробел)

Для представления самого апострофа его изображение удваивается: ''''.
Если же символ не имеет графического представления, например, символ табуляции или символ возрата каретки, то можно воспользоваться эквивалентной формой записи символьного значения, состоящего из префикса # и ASCII-кода символа:

#9     #32    #13

Допустимые операции:
- присваивание;
- сравнение: <, >, >=, <=, <>, =. Большим считается тот символ, который имеет больший ASCII-номер.

Строковый тип (String, String[n]) - этот тип данных определяет последовательности символов - строки. Параметр n определяет максимальное количество символов в строке. Если он не задан, подразумевается n=255. Значение типа "строка" в программе запиывается как последовательность символов, заключенных в одиночные кавычки (апострофы), например

'Это текстовая строка'   'This is a string'
'1234' -
это тоже строка, не число
'' - пустая строка

Допустимые операции:
- присваивание;
- сложение (конкатенация, слияние); например, S := 'Зима'+' '+'пришла!';
- сравнение: <, >, >=, <=, <>, =. Строки считаются равными, если имеют одинаковую длину и посимвольно эквивалентны.

Функции для работы со строками смотри здесь

Вещественные типы - обозначают множества вещественных чисел в различных диапазонах. Имеется пять вещественных типов, различающихся диапазоном допустимых значений и размером занимаемой оперативной памяти. Вещественные типы обозначаются идентификаторами: Real, Single, Double, Extended, Comp; их характеристики приведены в следующей таблице.

Тип  Диапазон  Размер в байтах 
Real
Single
Double
Extended
Comp
2.9·10-39 ... 1.7·1038
1.5·10-45 ... 3.4·1038
5.0·10-324 ... 1.7·10308
3.4·10-4932 ... 1.1·10-4932
-2·1063 ... +2·1063-1
6
4
8
10
8

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

Значения вещественных типов могут записываться в программе несколькими способами:

1.456 0.000134 -120.0 65432
+345 0 -45 127E+12
-1.5E-5 -1.6E+12 5E4 0.002E-6

Будет ошибкой записать вещественное число следующим образом:

.5 (правильно 0.5)
12. (правильно 12.0 или 12)

Вещественное число в форме с плавающей точкой (экспоненциальная форма) записывается как пара

<мантисса> Е <порядок>

Такое обозначение понимается как "мантисса, умноженная на десять в степени, равном порядку". Например,

-1.6E+12 сответствует -1.6·1012

Допустимые операции:
- присваивание;
- все арифметические: +, - ,*, / ;
- сравнение: <, >, >=, <=, <>, =. При сравнении вещественных чисел следует помнить, что в следствие неточности их представления в памяти компьютера (в виду неизбежности округления) стоит избегать попыток определения строгого равенства двух вещественных значений. Есть шанс, что равенство окажется ложным, даже если на самом деле это не так.

Диапазон или (ограниченный тип) не является предопределенным типом языка (таким как, например, Integer или Char) и поэтому ему не соответствует никакой идентификатор. Этот тип является вводимм пользователем. Используя его мы можем определить новый тип, который будет содержать значения только из ограниченного поддиапазона некоего базового типа. Базовым типом может быть только целочисленный тип, тип Char (символьный) и любой из введенных программистом перечислимых типов.

Для введения нового типа - диапазона - нужно в блоке описания типов TYPE указать имя вводимого типа и границы диапазона через специальный символ диапазона ".." (две точки подряд):

TYPE
  Century = 1..21; { поддиапазон цилочисленного типа }
  CapsLetters = 'А'..'Я'; { поддиапазон из типа Char }

 

Структурированные типы языка
К структурированным типам относятся: массив, запись, множество, файл и др. Все они определяют тип (или типы) некоторой структуры данных.

Массив - упорядоченная структура однотипных данных, хранящая их последовательно. Массив обязательно имеет размеры, определяющие сколько элементов хранится в структуре. До любого элемента в массиве можно добраться по его индексу.

Тип массив определяется конструкцией:

Array [диапазон]   of  ТипЭлементов;

Диапазон в квадратных скобках указывает значения индексов первого и последнего элемента в стурктуре. Примеры объявления типов и переменных:

TYPE
  Vector = array[1..10] of Real;
VAR
  V1 : Vector;
  V2 : array[0..5] of Byte;

Здесь переменная V1 определяется с использованием описанного выше типа Vector; тип переменной V2 конструируется непостредственно на этапе ее описания.

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

VAR
  M1 : array[1..3] of array[1..3] of Byte;

Это же самое можно записать гораздо компактнее:

VAR
  M2 : array[1..3, 1..3] of Byte;

Зжесь массивы M1 и M2 имеют совершенно одинаковую структуру - квадратной матрицы размером 3x3.

Доступ к элемента массива осуществляется путем указания его индекса, например:

writeln( V1[1] ); {вывод на экран первого элемента массива V1}
readln( M2[2,3] );{ввод третьего элемента второй строки матрицы М2}

 

Содержание  |  Назад |  Вперед