Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi -Мет по лабраб_ Часть_2.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.51 Mб
Скачать

11.2. Использование динамических переменных

Указатели являются эффективным средством построения списков. Списком называется упорядоченная структура, каждый элемент которой содержит ссылку, связывающую его со следующим элементом. Для организации списков используются записи, состоящие из двух смысловых частей: основной и дополнительной. Основная часть содержит подлежащую обработке информацию, в дополнительной части находится указатель на следующую запись списка. Начало списка указывается в переменной, которая всегда присутствует в программе обработки списков. Если в списке нет элементов, т.е. список пустой, значение этой переменной равно Nil. Если список не заполнен, последний элемент содержит в дополнительной части значение Nil.

Наибольшее распространение получили два вида списков – стеки и очереди.

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

type

pSt=^zap;

zap=record

inf:integer;

adr:pSt;

end;

var

pVer, pTek, nVer:pSt;

elSt:integer;

Формирование и добавление элементов в стек

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

pVer:=nil;

new(pTek);

elSt:=StrToInt(Edit1.Text);

pTek^.inf:=elSt;

pTek^.adr:=pVer;

pVer:=pTek;

Edit1.Text:='';

Edit1.SetFocus;

end;

Удаление элемента из стека

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

pVer:=pTek^.adr;

Dispose(pTek);

pTek:=pVer;

end;

Просмотр элементов стека

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

pTek:=pVer;

while pTek<>nil do

begin

Memo1.Lines.Add(#9+IntToStr(pTek^.inf));

pTek:=pTek^.adr;

end;

    1. Пример создания приложения

Использование динамических массивов

Задание. Создать приложение для вычисления наименьшего и наибольшего из всех значений элементов целочисленной матрицы A[m,n]. Значения m и n задаются пользователем на панели интерфейса, а элементы матрицы А генерируются при помощи датчика случайных чисел и размещаются в памяти динамически.

11.3.1. Сохранение проекта

Для нового проекта создайте новую папку, например, X: \ 35эи \ LAB11_M.

Сохраните проект File | Save Project AsСначала сохраните модуль под именем UnDinMas, затем файл проекта под именем Pr_DinMas.

      1. Размещение компонентов на Форме

Один из возможных вариантов панели интерфейса создаваемого приложения показан на рисунке 11.1.

Разместим на форме компоненты Label, SpinEdit, BitBtn и Stringgrid.

Рис.11.1. Размещение компонентов на форме

Установите для компонентов SpinEdit1 и SpinEdit2 значения свойств: MinValue=2, MaxValue=10.

В тех случаях, когда объем выводимой информации превышает размер поля компонента Stringgrid1, целесообразно снабдить его линейками прокрутки для этого в свойстве ScrollBars установим значение ssBoth.