- •Введение
- •Лабораторная работа №1. Создание простого приложения
- •1 ) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий):
- •3) Компиляция и выполнение приложения
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №2. Циклические программы. Многострочное поле memo
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3. Работа с одномерными массивами
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 4. Работа с двумерными массивами
- •Контрольные вопросы
- •Лабораторная работа № 5. Процедуры и функции в delphi
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 6. Рекурсивные процедуры и функции
- •Контрольные вопросы
- •Лабораторная работа №7. Разработка приложения с несколькими модулями
- •2) Последовательность действий по программированию событий
- •Лабораторная работа №8. Работа со строками
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •3) Откомпилируйте приложение и проверьте его работу задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №9. Создание текстового редактора
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 10. Методы простой сортировки
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 11. Поиск данных в массиве
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №12. Работа с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №13. Работа с типизированными файлами (файлы записей)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 14. Динамические структуры данных . Стек и очередь
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 15. Практическое применение стека и очереди
- •Лабораторная работа №16. Линейные списки
- •Лабораторная работа №17. Работа с бинарными деревьями поиска
- •Задание для самостоятельной работы
- •Лабораторная работа №18. Основы объектно-ориентированного программирования
- •Задание для самостоятельной работы
- •Лабораторная работа №19. Графика в delphi. Компоненты shape и chart
- •Контрольные вопросы
- •Лабораторная работа №20. Графика в delphi. Рисование по пикселам и пером
- •Контрольные вопросы
- •Лабораторная работа № 21. Вычисление суммы ряда
- •Литература
- •Содержание
- •214013 Г. Смоленск, Энергетический проезд, 1
Задания для самостоятельной работы
Добавьте кнопку для подсчета количества студентов в каждой группе.
Выполните сортировку списка по фамилиям студентов
Добавьте в запись поле средний балл. Определите студента с самым высоким средним баллом, самым низким средним баллом, подсчитайте средний балл по каждой группе.
Контрольные вопросы
Методы работы с типизированными файлами в Delphi
Диалоговые компоненты Delphi - OpenDialog и SaveDialog, свойства и методы
Методы обработки записей в компонентах StringGrid.
Лабораторная работа № 14. Динамические структуры данных . Стек и очередь
ЦЕЛЬ РАБОТЫ:
Освоить методы работы с динамическими структурами данных (создание, удаление, просмотр).
Изучить принципы формирования стека и очереди.
ПОДГОТОВКА К РАБОТЕ:
Изучить способы выделения динамической памяти;
Усвоить различия между типизированными и нетипизированными указателями;
Изучить принципы доступа к содержимому стека и очереди
ЗАДАНИЕ. Создайте приложение для работы со стеком и очередью. Приложение должно выполнять добавление и удаление элементов в соответствующие структуры данных. А также, хотя это и является нарушением принципов работы стека и очереди, выводить содержимое данных динамических структур без удаления элементов. Соответствующее приложение изображено на рисунке 14.1.
Последовательность действий:
В блоке Type (после описания класса TForm1) объявите следующие новые типы данных:
ps=^stack; {Указатель на стек}
stack= Record {Стек}
data:Integer;
next:ps;
end;
pq=^queue; {Указатель на очередь}
queue= Record {Очередь}
data:Integer;
next:pq;
end;
В области глобальных переменных объявите следующие переменные:
Form1: TForm1; {Эта строка уже есть}
// Указатель на вершину стека
head:ps;
// Указатели на начало и
// конец очереди соответственно
firstq,endq:pq;
В блоке Implementation опишите функцию для вывода на экран стека (предположим, что содержимое стека выводится на экран в поле memo1):
procedure outs;
Var x:ps;
Begin
// Очистить поле Memo1
Form1.Memo1.Clear;
// Установить указатель на вершину стека
x:=Head;
// Цикл выполняется пока не дойдем до конца стека
While x<>nil do
Begin
// Вывод на экран очередного элемента стека
Form1.Memo1.Lines.Add(IntToStr(x^.data));
// Переход на следующий элемент стека
x:=x^.next;
end;
end;
В блоке Implementation опишите функцию для вывода на экран очереди (предположим, что содержимое стека выводится на экран в поле memo2):
procedure outq;
Var x:pq;
Begin
// Очистить поле Memo2
Form1.Memo2.Clear;
// Установить указатель на начало очереди
x:=Firstq;
// Цикл выполняется пока не дойдем до конца очереди
While x<>nil do
Begin
// Вывод на экран очередного элемента очереди
Form1.Memo2.Lines.Add(IntToStr(x^.data));
// Переход на следующий элемент очереди
x:=x^.next;
end;
end;
Для события OnCreate формы напишите следующий программный код:
procedure TForm1.FormCreate(Sender: TObject);
begin
head:=nil; // Пустой стек
firstq:=nil; // Пустая очередь
endq:=nil;
end;
Для кнопки «Добавление элемента стека» напишите следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);
Var x:ps; // Вспомогательная переменная
Begin
// Выделение нового элемента стека в динамической памяти
New(x);
// Заполнение нового элемента данными
x^.data:=StrToInt(Edit1.Text);
// Новый элемент теперь будет вершиной стека
x^.next:=head;
head:=x;
// Вывод стека на экран
Outs;
end;
Для кнопки «Удаление элемента стека» напишите следующий программный код:
procedure TForm1.Button2Click(Sender: TObject);
Var x:ps; // Вспомогательная переменная
Begin
// Удаление выполняется, если стек не пустой
If head<>nil then
Begin
// Во вспомогательной переменной запоминается старое значение
вершины стека
x:=head;
// Вершина стека теперь будет указывать на
// следующий элемент
head:=head^.next;
// Удаление элемента, находившегося на вершине стека
Dispose(x);
// Вывод стека на экран
Outs;
end
else ShowMessage('Стек пуст!');
end;
Для кнопки «Добавление элемента очереди» напишите следующий программный код:
procedure TForm1.Button3Click(Sender: TObject);
Var x:pq; // Вспомогательная переменная
Begin
// Создание в динамической памяти очередного элемента очереди
New(x);
// Заполнение очередного элемента очереди
x^.data:=StrToInt(Edit2.Text);
x^.next:=nil;
If firstq<> nil then
// Созданный элемент добавляется в конец очереди
endq^.next:=x
else
firstq:=x; // Заполнение первого элемента очереди
Endq:=x; // Изменение указателя на конец очереди
Outq; // Вывод очереди на экран
end;
Для кнопки «Удаление элемента из очереди напишите следующий программный код:
procedure TForm1.Button4Click(Sender: TObject);
Var x:pq; //Вспомогательная переменная
Begin
// Удаление выполняется, если в очереди есть элементы
If firstq<>nil then
begin
// Адрес первого элемента очереди запоминается
// во вспомогательной переменной
x:=Firstq;
// Первым элементом теперь станет следующий
firstq:=Firstq^.next;
// Удаляется первый элемент очереди
Dispose(x);
// Вывод очереди на экран
Outq;
end
else ShowMessage('Очередь пуста!');
end;
Проверьте работу приложения.