Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Структурированные типы данных в Turbo Pfscal V.7.0

Определение 1

Структурированные типы данных – это наборы однотипных или разнотипных элементов. Типы элементов, как правило, преобразовывают из других различных типов данных.

В среде программирования Turbo Pascal используются следующие:

  • массивы;
  • записи;
  • множества;
  • файлы.

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

Массив

Определение 2

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

Статья: Структурированные типы данных в Turbo Pfscal V.7.0
Найди решение своей задачи среди 1 000 000 ответов

Массивы бывают одномерные и многомерные. При задании массива будем использовать ключевое слово array, после которого напишем тип индекса (индексов) элементов (в квадратных скобках) и уже потом после ключевого слова of записываем тип самих элементов:

type

= array [ ] of ;

Пример 1

type

$Arr = array[1..5] of Real$; {тип—массив из 5 вещественных чисел}

$Matrix = array[1..4, 1..2] of Integer$; {тип - двумерный массив целых чисел, состоящий из 4 строк и 2 столбцов}

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

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

«Структурированные типы данных в Turbo Pfscal V.7.0» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Замечание 1

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

Замечание 2

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

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

Пример 2

m1[3], matrix[x, y], m2[succ(i)] и т. д.

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

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

Const

A: array[1..5] of char='ааааа';

В: array[1..3] of char='bbb';

В работе с массивами подобного типа, как и при работе со строками, как правило, используют операции сравнения (даже если массивы не идентичны и различного размера) и операции конкатенации. Их используют в операторах вывода Write и WriteLn. Для приведенных выше массивов можно записать:

if a > в then

WriteLn(a) else

WriteLn(b);

Запись

Следующим рассматриваемым типом будет запись. Данный тип содержит ряд элементов, которые называются полями и имеют различные типы. Зададим запись, в которой после слова record перечислим все поля записи и укажем через двоеточие их типы, затем завершим задание типа использованием слова end. Поля будем разделять точкой с запятой. Запись может иметь произвольное количество полей.

Приведем пример:

Пример 3

type

Complex = record {Тип комплексных чисел}

Re: Real;

Im: Real

end;

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

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

Запись можно вводить и непосредственно при определении переменной или типизированной константы. Приведем пример:

Пример 4

var

x, y, z: record

Re, Im: Real

end;

В данном случае определим все те же комплексные переменные, что и в предыдущем примере.

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

Ivanov.Age, X.Re, Dat.Day и т. д.

Приведем пример записи программного кода использования полей записей.

$x.re := 1.5$;

$x.im :=1.7; y.re:= -x.re$;

$y.im := -x.im$;

$ivanov.married := false$;

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

with do ;

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

Не смотря на все это многообразие, помните, что вариантная часть может использоваться только одна и должна она располагаться непосредственно в конце записи.

Множество

Рассмотрим следующий тип структурированных данных – множество. Под ним в среде программирования Turbo Pascal понимается множество-степень исходного множества объектов порядкового типа, т. е. множество всевозможных сочетаний объектов исходного множества.

В данном случае обратим внимание на то, что при использовании данного типа имеются определенные числовые ограничения. Так число элементов исходного множества в Turbo Pascal не должно превышать 256, а порядковые номера элементов (т. е. значения функции Ord) должны находиться в диапазоне от 0 до 255.

При задании множества воспользуемся ключевыми словами set и of, а также укажем элементы этого множества, можно в виде перечисления, а можно в виде диапазона:

Type

$Alfa = set of 'A'..'Z'$;

$Count = set of (Plus, Minus, Mult, Divid)$;

$Ten = set of 0..9$;

$Number = set of '0'..'9'$;

После того, как введем множество, зададим переменные или типизированные константы, характерные для него.

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

Пример 5

var

CharVal: Alfa;

Operation: Count;

const

Index: Ten = [0, 2, 4, 6, 8];

Digit: Number = ['0'..'9'];

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

var

CharVal: set of 'A'..'Z';

Operation: set of (Plus, Minus, Mult, Divid);

const

Index: set of 0..9 = [0, 2, 4, 6, 8];

Digit: set of '0'..'9'=['0'..'9'];

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

Возможно использование диапазонов элементов.

В каждом множестве используйте пустое множество [ ], которое совсем не содержит элементов.

Конструктор множества применяется непосредственно и в операциях над множествами.

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

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 07.05.2017
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot