Основные логические типы данных

Тип Обозначение Размер, байт Диапазон значений
Логический Boolean Принимают только два значения: 1) true (истина или «1»); 2) false(ложь или «0»)
ByteBool Истинным считается любое отличное от нуля значение

Пример. Описание переменных логического типа.

varf,p:boolean;

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

Пример. Описание указателей.

varp:pointer;

7. Файловые типы данных. Файловые типы данных используются для работы с внешними устройствами – файлами на диске, портами, принтерами и др. К стандартным файловым типам относятся текстовый файл (text) и бестиповый файл (file).

Пример. Описание файлов.

var f:text;

result:file;

Типы данных, определяемые пользователем

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

Первый способ – объявить собственный тип данных вразделе описания типов type. При объявлении нового типа данныхзадается его имя и после знака равно его определение. После этого пользовательский тип данных можно использовать в разделе описания переменных так же, как стандартные типы данных:

typeимя_типа=описание_типа;

varимя_переменной=имя_типа;

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

varимя_переменной:описание_типа;

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

Простые типы данных, определяемые пользователем

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

type имя_типа=(список имен констант);

Константы в списке перечисляются через запятую. Имена констант в программе или подпрограмме должны быть уникальными.

Пример. Описание перечисляемых типов данных.

type menu=(file,edit,view,help);

type color=(red,orange,yellow,green,blue,violet);

var main_menu:menu;

а:color;

Переменная main_menu может принимать значения:file,edit,view,help. Переменная a может принимать значения: red,orange,yellow,green,blueиviolet.

2. Интервальный тип данных. С помощью интервального типа данных задается диапазон какого-либо типа:

type имя_типа=константа_1..константа_2;

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

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

Пример. Описание интервальных типов.

type hour=0..25;

interval=–100..100;

symbol='a'..'z';

3. Адресный тип данных. Пользователь может задать свой собственный адресный тип данных, определив в разделе type указатель на данные или подпрограмму конкретного типа, например:

type pword=^word;

var p:pword;

Теперь в переменной р можно хранить адреса величин типа word.

Составные типы данных, определяемые пользователем

В табл. 1.4 перечислены базовые составные типы данных, на основе которых пользователь может создать свой собственный тип данных.

Таблица 1.4

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

Тип Обозначение Описание
Массивы Array Массив – это набор величин одинакового типа, обозначаемых одним именем. Положение элемента в массиве задается его порядковым номером (индексом)
Строки String Строки определенной и динамической длины
Записи Record Запись – это набор величин разных типов, обозначаемых одним именем. Элементы записи называются полями
Множества Set Множества – это совокупность элементов одного типа, обозначаемых одним именем, элементы множества не повторяются. Доступ к элементам множества производится через специальные функции
Файлы File Типизированные (компонентные) файлы – файлы, состоящие из компонент любого типа, кроме файлового
Процедурный   Процедурный тип данных позволяет использовать заголовки процедур и функций (procedure и function) при объявлении новых типов данных и описывать процедурные переменные
Объектный Object Объект, как тип данных


1. Массивы. Для обработки большого объема данных одинакового типа вводят специальный тип данных – массив. Массив – это упорядоченная последовательность величин одинакового типа, обозначаемая одним именем. Положение элемента в массиве задается его порядковым номером (индексом).

Количество элементов и структура массива определяют его размерность. В случае одномерных массивов для нумерации элементов используется один индекс, двумерных – два, трехмерных – три и т.д.

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

Тип элементов массива может быть любым, кроме файлового. Тип индексов массивов может быть интервальным, перечисляемым или byte.

При описании массива указывают его имя, способ нумерации элементов массива и тип элементов массива:

typeимя_типа_массива=array[тип_индекса] ofтип_элементов;

varимя_массива:имя_типа_массива;

Пример. Описаниемассивов.

type color=array[1..5] of real;

mas_color=array[byte] of color;

menu=(file,edit,view,help);

active=array[menu] of boolean;

В примере color – это массив, состоящий из вещественных элементов, которые нумеруются от 1 до 5. Элементами второго массива mas_color являются массивы типа color. Нумерация элементов массива mas_color определяется типом byte, т.е. от 0 до 255. Индексы массива active принимают значения, определяемые типом menu, т.е. file,edit,view,help, при этом сами элементы могут принимать значения true или false.

Более детально обработка массивов описана в главе «Массивы».

2. Строки.Строка, имеющая стандартный тип string, содержит до 255 символов и занимает в памяти 256 байт. Для коротких строк стандартный тип string использовать не эффективно, а для строк, содержащих больше 255 символов невозможно. В Паскале существует возможность самостоятельно задавать длину строки и создавать строки динамической длины.

Пример. Описание строк.

const n=2;

type s10=string[9];

s=string[n];

Строка s10 содержит 9 символов. Длина строкиsопределяется значением константы n.

3. Записи.Запись – это набор величин разных типов, обозначаемых одним именем. Элементы записи называются полями. При описании записи указывают ее имя, имена полей записи и их тип:

typeимя_типа_записи=record

имя_поля_1:тип_поля_1;

имя_поля_2:тип_поля_2;

...

имя_поля_n:тип_поля_n;

end;

varимя_записи:имя_типа_записи;

Пример. Описание записи.

type order=record

name_goods:string;

price:real;

number:integer;

end;

Доступ к полю записи осуществляется двумя способами. В первом случае указывается имя_записи.имя_поля. Во втором случае используют специальный оператор with.

Пример. Доступ к полям записи.

order.number:=12;

with order dobegin

order.price:=250;

order.number:=12;

end;

Инициализация записей выполняется в разделе констант.

4. Множества. Множества – это совокупность элементов одного типа, обозначаемых одним именем, элементы множества не повторяются. Доступ к элементам множества производится через специальные функции. В множестве не может быть более 256 элементов, а их порядковые имена могут изменяться от 0 до 256. Элементы множества могут иметь перечисляемый тип, интервальный или byte.

Описание множества:

type=имя_множестваsetofбазовый_тип;

Пример. Описаниемножеств.

type colors=set of (red,orange,yellow,green,blue);

number=set of byte;

letters=set of byte 'a'..'z';

5. Файлы. Пользователь может определить файл, состоящий из компонент любого типа, кроме файлового. Такие файлы называются компонентными или типизированными:

var f:file ofтип_компонент;

Обработка файлов выполняется с помощью специальных операций.

Пример. Описаниетипизированногофайла.

type mas:array of [1..100] of real;

my_record=record

a,b,c:real;

end;

var f1:file of mas;

f2:file of my_record;

6. Процедурный тип данных. Последние версии Паскаля содержат ряд расширений начальной версии Паскаля. Процедурный тип данныхвыходит за рамки первоначальной концепции данных. Процедурный тип данных позволяет использовать заголовки процедур и функций при объявлении новых типов данных и описывать процедурные переменные. Синтаксис описания процедурного типа соответствует синтаксису обычного заголовка процедуры или функции – используются те же зарезервированные слова procedure и function,и приводится описание параметров. Как и другие пользовательские типы данных, процедурный тип можно задать двумя способами. Первый способ – объявить собственный тип данных и далее в разделе описания переменных описать переменные данного типа. Второй способ – непосредственно при описании переменных. (Работа с процедурным типом в учебном пособии не рассматривается.)

Пример. Описание и использование переменной процедурного типа.

program example;

type fun=function(a:real):real;

var f:fun;

x,y:real;

{F+}

function tan(angle:real):real;

begin

tan:=sin(angle)/cos(angle);

end;

{F-}

Begin

writeln('Введитех');

read(x);

f:=tan;

y:=f(x);

writeln('y=',y);

end.

7. Объекты.Объекты предназначены для создания программ в концепции объектно-ориентированного программирования. (Работа с объектами в учебном пособии не рассматривается.)

Наши рекомендации