Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль(методичка).doc
Скачиваний:
36
Добавлен:
09.11.2019
Размер:
1.27 Mб
Скачать

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

{Программа указателя на массив, доступа к элементам массива}

Program Point1;

Uses Crt;

Type

massiv=array[1..10] of integer; {описание типа массива из 10 целых чисел}

Var

i:integer;

a:massiv; {массив из 10 целых чисел}

PtrMas:^massiv;{указатель на массив}

Begin

{ввод элементов массива}

Writeln('Введите элементы массива : ');

for i:=1 to 10 do

begin

Writeln(i,'-й элемент массива ');

Readln(a[i]);

end;

ClrScr;

Writeln('Введенный массив: ');

{вывод элементов введенного массива }

for i:=1 to 10 do

Write(' ',a[i]);

Writeln;

{Присвоить указателю PtrMas адрес начала размещения массива в памяти}

PtrMas:=@a;

Writeln('Значение первого элемента массива, на который указывает PtrMas: ');

{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

{Присвоить указателю PtrMas  адрес начала размещения второго элемента массива}

PtrMas:=@a[2];

Writeln(' Значение второго элемента массива, на который указывает указатель PtrMas: ');

{Напечатать значение первого элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

Writeln(' Значение 4-того элемента массива, на который указывает указатель PtrMas: ');

{Присвоить указателю PtrMas адрес 4-того элемента массива}

PtrMas:=Ptr(Seg(a[3]),Ofs(a[3])+SizeOf(integer));

{Ptr- преобразует базовый адрес сегмента и смещения в значение типа указатель}

{Напечатать значение 1 элемента массива, на который указывает указатель PtrMas}

Writeln(PtrMas^[1]);

Readkey;

end.

Порядок выполнения работы

  1. Изучить теоретические сведения по теме ” Разработка программы использования динамической памяти”.

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

  3. Показать работающую программу преподавателю.

  4. Ответить на контрольные вопросы.

Контрольные вопросы

  1. Статические и динамические переменные.

  2. Указатели: типизированные, нетипизированные, Nil. Доступ к переменной по указателю.

  3. Процедуры и функции управления динамической памятью

Лабораторная работа № 33

Разработка программы создания связанного списка

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

Краткие теоретические сведения

Использование указателей для организации связанных списков

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

Одно из полей каждого объекта связанного списка имеет тип указатель и указывает на очередной объект в списке. Указатель на первый объект содержится в переменной First, а последний объект имеет указатель на Nil.