- •Тема 1. Указатели и динамические переменные
- •Контрольные вопросы
- •Лабораторная работа 1. Организация списков с помощью динамических переменных
- •Тема 2. Модули
- •Initialization
- •Interface
- •Implementation
- •Контрольные вопросы
- •Лабораторная работа 2. Создание модуля для работы с динамическим списком
- •Тема 3. Объектно-ориентированное программирование
- •Контрольные вопросы
- •Лабораторная работа 3. Создание класса – списка
- •Interface
- •Implementation
- •Библиографический список
Лабораторная работа 2. Создание модуля для работы с динамическим списком
Задание
Измените программу выполнения лабораторной работы 1 «Организация списков с помощью динамических переменных», расположив все необходимые типы, процедуры и функции обработки списков в модуле.
Пример выполнения задания
// Лабораторная работа 2. Модули. Выполнил Сергеев Андрей, группа 999.
// Модуль подпрограмм обработки списков.
unitLab2Un; // заголовок модуля обработки списков
interface // интерфейс модуля
type
tValue=Integer; // тип элемента списка – целый
pItem=^tItem; // тип указателя на элемент списка
tItem=record// тип элемента списка
Value: tValue; // содержательная часть элемента списка
Next : pItem; // указатель на следующий элемент списка
end; // record tItem
// Заголовки процедур работы со списками
procedure Create(var List: pItem); // создание пустого списка
procedure InsertFirst(var List:pItem;v:tValue); // включение в начало
procedure InsertLast(var List:pItem;v:tValue); // включение в конец
procedure WriteList(var f:Text;List:pItem); // вывод списка в файл
function Size(List: pItem): Word; // вычисление размера
procedure Clear(var List: pItem); // удаление элементов
implementation // Секция реализации модуля
// Реализация процедур работы со списками
procedure Create(var List: pItem);
begin
// Текст в лабораторной работе 1
end; //procedure Create
procedure InsertFirst(var List: pItem; v: tValue);
// Текст в лабораторной работе 1
end; // procedure InsertFirst
procedure InsertLast(var List: pItem; v: tValue);
// Текст в лабораторной работе 1
end; // procedure InsertLast
procedure WriteList(var f: Text; List: pItem);
// Текст в лабораторной работе 1
end; // procedure WriteList
function Size(List: pItem): Word;
// Текст в лабораторной работе 1
end; // function Size
procedure Clear(var List: pItem);
// Текст в лабораторной работе 1
end;// procedure Clear
end.
// Лабораторная работа 2. Модули.
// Использование модуля подпрограмм обработки обработки списков.
// Выполнил Сергеев Андрей, группа 999.
// Исходные данные – элементы основного списка – в файле LW4Dat.txt
// Результаты работы помещаются в файл LW2Res.txt
programLW2;
uses
SysUtils,
LW2Un in 'LW2Un.pas'; // использование модуля обработки списков
procedure FormLists(L:pItem;var L1,L2:pItem); //формирование L1, L2
// Текст в лаб.раб. 1
end; // procedure FormLists
var
fDat, fRes:Text;// файлы с исходными данными и результатами
L, L1, L2:pItem; // указатели на исходный и полученные списки
v:tValue; // значение элемента списка
begin
Assign(fDat,'LW2Dat.txt'); Reset(fDat);// открытие файла для чтения
Assign(fRes,'LW2Res.txt'); Rewrite(fRes);// открытие файла для записи
Create(L); Create(L1); Create(L2);// создание пустых списков
whilenoteof(fDat)dobegin// пока не достигнут конец файла fDat
Read(fDat, v); // чтение из файла очередного значения
InsertFirst(L, v); // вставка элемента со значением v в начало списка L
end;// while
// Вывод списка L и его размера:
Writeln(fRes, 'Исходный список:'); WriteList(fRes, L);
Writeln(fRes, 'Число элементов списка: ',Size(L));
FormLists(L, L1, L2); // формирование списков L1 и L2
Writeln(fRes, 'Список отрицательных нечетных элементов:'); WriteList(fRes, L1);
Writeln(fRes, 'Список положительных четных элементов:'); WriteList(fRes, L2);
Clear(L);Clear(L1);Clear(L2);// удаление списков
Close(fDat); Close(fRes); // закрытие файлов
end.
