- •Часть 2
- •Лабораторная работа № 6. Программирование циклических вычислительных процессов. Итерационные циклы
- •Отладка модулей проекта
- •Отладка синтаксических ошибок
- •Отладка логических ошибок
- •Итерационные циклы
- •Пример создания приложения
- •Сохранение проекта
- •Размещение компонентов на Форме
- •Текст модуля UnIterate
- •6.4. Выполнение индивидуального задания
- •Лабораторная работа № 7. Программирование с использованием строк
- •Краткие теоретические сведения
- •7.1.1. Символьные типы
- •7.1.2. Строковые типы
- •7.1.3. Процедуры и функции для работы со строками
- •Применение компонентов ListBox и ComboBox для работы со строками
- •7.3. Пример создания приложения
- •7.3.1. Сохранение проекта
- •7.3.2. Размещение компонентов на Форме
- •7.3.3. Создание процедуры-обработчика события активизации Формы FormActivate.
- •7.3.4. Создание процедуры-обработчики события ComboBox1KeyPress
- •7.3.5. Создание процедуры-обработчики события нажатия клавиши «мыши» ComboBox1Click
- •7.3.6. Работа с приложением
- •7.4. Текст модуля UnStr
- •7.5. Выполнение индивидуального задания
- •С использованием записей
- •8.1. Краткие теоретические сведения
- •8.2. Пример создания приложения
- •8.2.1. Указания по созданию приложения
- •8.2.2. Размещение компонентов по Форме
- •8.2.3.Создание процедур обработки событий FormCreate и ButtonClick
- •8.2.4. Работа с приложением
- •8.2.5. Текст модуля UnZap
- •8.3. Выполнение индивидуального задания
- •Лабораторная работа № 9. Програмирование с использованием файлов
- •9.1. Краткие теоретические сведения
- •9.2. Пример создания приложения
- •9.2.1. Указания по созданию приложения
- •9.2.2.Размещение компонентов по Форме.
- •9.2.3.Создание процедур обработки событий
- •9.2.4. Текст модуля UnFile
- •9.2.5. Работа с приложением
- •9.3. Выполнение индивидуального задания
- •Лабораторная работа № 10. Программирование с использованием функций и процедур. Процедурные типы. Создание модулей
- •10.1. Краткие теоретические сведения
- •10.1.1. Объявление и описание функций и процедур
- •10.1.2. Различные варианты передачи параметров в функции и процедуры
- •10.1.3. Процедурные типы
- •Текст модуля UnFancProc
- •Текст модуля UnModul
- •Выполнение индивидуального задания
- •Лабораторная работа № 11. Программирование с использованием динамических структур данных
- •11.1. Краткие теоретические сведения
- •11.1.1. Указатели
- •11.2. Использование динамических переменных
- •Пример создания приложения
- •11.3.1. Сохранение проекта
- •Размещение компонентов на Форме
- •11.3.3. Создание процедуры обработки событий FormCreate
- •Текст модуля UnDinMas
- •11.5. Выполнение индивидуального задания
- •Лабораторная работа № 12. Программирование с использованием средств для построения и отображения графиков
- •12.1. Методика построения графиков с помощью компонента tChart
- •12.2. Пример написания программы
- •12.2.1. Настройка формы
- •12.2.2. Работа с компонентом tChart
- •12.2.3. Написание программы обработчика события создания формы
- •12.2.4. Написание программ обработчика событий нажатия на кнопки
- •12.3. Модуль программы построения и отображения графиков
- •12.4. Выполнение индивидуального задания
- •Приложение 1 п1. Свойства и методы компонентов п1.1. Общие свойства компонентов
- •2. Компоненты страницы standard
- •3. Компоненты страницы additional
- •4. Компоненты страницы dialogs
- •П2. Простые типы данных языка object pascal
- •П3. Процедуры и функции для работы со строками
- •Литература
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;
Пример создания приложения
Использование динамических массивов
Задание. Создать приложение для вычисления наименьшего и наибольшего из всех значений элементов целочисленной матрицы A[m,n]. Значения m и n задаются пользователем на панели интерфейса, а элементы матрицы А генерируются при помощи датчика случайных чисел и размещаются в памяти динамически.
11.3.1. Сохранение проекта
Для нового проекта создайте новую папку, например, X: \ 35эи \ LAB11_M.
Сохраните проект File | Save Project As…Сначала сохраните модуль под именем UnDinMas, затем файл проекта под именем Pr_DinMas.
Размещение компонентов на Форме
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рисунке 11.1.
Разместим на форме компоненты Label, SpinEdit, BitBtn и Stringgrid.
Рис.11.1. Размещение компонентов на форме
Установите для компонентов SpinEdit1 и SpinEdit2 значения свойств: MinValue=2, MaxValue=10.
В тех случаях, когда объем выводимой информации превышает размер поля компонента Stringgrid1, целесообразно снабдить его линейками прокрутки для этого в свойстве ScrollBars установим значение ssBoth.
