Файл: Основы программирования на языке Pascal ( Ссылочные типы в языке программирования Pascal. Создание ссылочных типов ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 99

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

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

Цель работы: изучить ссылочные типы данных в языке программирования (ЯП) Pascal и их использование при решении конкретных задач.

Задачи работы:

  • ознакомиться с ЯП Pascal;
  • рассмотреть основные типы данных ЯП Pascal;
  • дать понятия «ссылочный тип данных», «указатель» в ЯП Pascal;
  • рассмотреть основные процедуры и функции, используемые для создания ссылочных типов в ЯП Pascal;
  • привести примеры программ с использованием ссылочных типов данных на ЯП Pascal.

Объект исследования: типы данных в ЯП Pascal.

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

В первой главе представленной работы даны краткие сведения о ЯП Pascal, дано понятие типа данных, приведена классификация типов данных в ЯП Pascal и их основные характеристики.

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

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

В данной курсовой работе использовались труды авторов: Боженова М. М., Москвина Л. А. Демидов Д. В., Долинский М. С., Культин Н. А., Меженный О. А., Немнюгин С. А., Павловская Т.А., Попов В. П., Рапаков Г. Г., Ржецкая С. Ю., Семакин И. Г., Шестаков А.П., Фаронов В. В., Шпак Ю.А.

1. Язык программирования Pascal. Типы данных

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

ЯП Pascal создан Н. Виртом в 1968-1969 гг. после участия в работе комитета по разработке стандарта языка Алгол-68. ЯП получил название в честь французского физика, математика, литератора и философа Б. Паскаля, создавшего первую в мире механическую машину, которая складывает два числа. [20]

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


  • возможные значения переменных, функций, констант, выражений, которые принадлежат к данному типу;
  • внутреннюю форму представления данных в компьютере;
  • операции и функции, которые можно выполнять над величинами, которые принадлежат к данному типу. [15]

В программа на ЯП Pascal тип величины задается заранее, т.е. все переменные, которые используются в программе, необходимо объявить в разделе описания с указанием типа переменных. Подобное обязательное описание типа переменных приводит к избыточности в тексте программы, но данная избыточность является важным вспомогательным средством при разработке программ и рассматривается в качестве необходимого свойства современных алгоритмических языков высокого уровня. [10]

В ЯП Pascal выделяют простые и структурированные типы данных (рис.1).

Рис. 1 – Типы данных в Pascal

Простые типы данных делятся на:

  • порядковый тип;
  • вещественный тип.

Порядковый тип данных делится на следующие типы:

  • целый (целочисленный): выделяют пять целых типов, которые определяются в зависимости от знака переменной и значения, которое будет принимать переменная (byte, integer и др.);
  • логический (boolean): переменные принимают только два значения: true (истина) или false (ложь);
  • символьный (char): значение символьного типа – это множество всех символов компьютера, каждому из которых присваивается целочисленный код от 0 до 255. [8]

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

Рис. 2 – Диапазоны значений простых типов данных

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

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

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

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

  • регулярный тип (массив);
  • множественный тип (множество);
  • комбинированный тип (запись);
  • файловый тип (файл);
  • строковый тип (строка). [11]

Кроме того, в ЯП Turbo Pascal (версия 6.0 и выше) введен объектный тип данных (т.е. объекты).

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

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

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

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

Описание массива выполняется в ЯП Pascal следующим образом:

<имя типа> = array [<список индексных типов>] of <тип>;

где

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

array и of – зарезервированные слова;

<список индексных типов> – список из одного или нескольких индексных типов, которые разделены запятыми;

квадратные скобки – требование синтаксиса ЯП Pascal;

<тип> – любой тип ЯП Pascal.

В качестве индексных типов в ЯП Pascal могут использоваться любые порядковые типы, за исключением типа LongInt и типов-диапазонов с базовым типом LongInt. [5]

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

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

Описание записи выполняется в ЯП Pascal следующим образом:

<имя типа> = record <список полей> end;

где

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

record и end – зарезервированные слова (запись, конец);

<список полей> – список полей, который представляет собой последовательность разделов записи, отделяемых точкой с запятой. [12]

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

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


Описание множества выполняется в ЯП Pascal следующим образом:

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

где

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

set и of – зарезервированные слова (множество, из);

<базовый тип> – базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, за исключением integer, word, LongInt. [7]

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

Любой файл имеет три характеристики:

  • имя файла;
  • файл содержит компоненты одного типа (тип может быть любым, кроме файлов);
  • длина создаваемого файла не оговаривается при его объявлении и ограничивается емкостью устройств внешней памяти.

Описание файлового типа выполняется в ЯП Pascal следующим образом:

<имя> = file of <тип>;

или

<имя> = text;

или

<имя> = file;

где

<имя> – имя файлового типа (идентификатор);

file и of – зарезервированные слова (файл, из);

text – имя стандартного типа текстовых файлов;

<тип> – любой тип ЯП Pascal, кроме файлового типа. [1]

В зависимости от способа объявления файла выделяют три вида файлов:

  • типизированные файлы (задаются предложением file of …);
  • текстовые файлы (тип text);
  • нетипизированные файлы (тип file). [14]

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

Все перечисленные ранее типы данных ЯП Pascal относятся к так называемым статическим типам данных. Это означает, что место в памяти под данные переменные компилятором отводится до запуска программы (т.е. во время компиляции).

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

Для переменных динамических типов отводится динамическая память, имеющая стековую структуру и называемая «кучей». Размер «кучи» задается директивой {$M<размер памяти>}.

Доступ к статическим переменным осуществляется через их имена. 
Доступ к динамическим переменным осуществляется через указатель на место их расположения в памяти компьютера. [16]


Стоит отметить, что многие практические задачи сложно или невозможно решить без обращения к динамической памяти. Например, задача обработки массива большого объема (более 65536 байт).

В ЯП Pascal нет прямого доступа к динамическим объектам. Для доступа к динамическим объектам используют указатели, которые еще называют ссылками (ссылочными типами). [24]

Указатель – это переменная, содержащая адрес другой переменной (байта памяти). 

Указатель – это статическая переменная, которая предназначена для хранения адреса некоторой переменной, в том числе и адреса динамической переменной в «куче». В памяти компьютера любой указатель занимает фиксированный объем памяти, равный 4 байта (т.е. 2 слова):

  • 1-ое слово – сегмент памяти;
  • 2-ое слово – смещение.

Адрес – это номер 1-го байта поля памяти компьютера, в котором располагает

Значение указателя – это беззнаковое целое число, которое сообщает о том, где размещается переменная, но при этом ничего не говорит о самой переменной. [19]

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

Важно помнить, что ввод и вывод значения указателя выполнить не возможно.

Стоит отметить, что динамические величины не требуют описания в программе на ЯП Pascal, так как во время компиляции память под эти величины не выделяется. Однако во время компиляции программы память выделяется под статические величины, а указатели являются статическими величинами, следовательно, указатели требуют описания.

В ЯП Pascal имеется два вида указателей:

  • указатель на объект некоторого  типа (т.е. типизированный указатель; ссылаются на область данных определенного типа);
  • указатель, не связанный с типом (задает только место (адрес ОЗУ), без конкретизации типа значения, которое содержится по данному адресу). [19]

Ссылочный тип – это неограниченный набор переменных одного типа.

Переменные ссылочного типа в ЯП Pascal можно описать следующими способами:

  • в разделе описания типов;
  • в разделе описания переменных. [17]

Описание указателя выполняется в ЯП Pascal следующим образом:

<имя переменной-указатемя>: ^<базовый тип данных>;