- •Введение
- •Лабораторная работа №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
Задание для самостоятельной работы
Настройте панель инструментов для всех подпунктов пункта главного меню «Правка» - подберите иконки запрограммируйте их.
Работа с текстовыми файлами. Дан текстовый файл, содержащий строки. Найти:
Количество строк, начинающихся с заглавных латинских букв;
Количество строк, начинающихся и заканчивающихся одинаковыми символами;
Самую короткую строку.
Контрольные вопросы
Сравните возможности компонентов Memo и RichEdit.
Как создать трехуровневое меню с помощью компонента MainMenu?
Как настроить свойство Filter компонентов OpenDialog и SaveDialog, чтобы одновременно отображались текстовые файлы с расширениями *.txt, *.doc, *.docx?
Как связать между собой пункты меню и кнопки панели инструментов?
Лабораторная работа № 10. Методы простой сортировки
ЦЕЛЬ РАБОТЫ: Изучение методов простой сортировки массивов: сортировки обменом, сортировка выбором, и сортировка вставкой. Получение навыков использования методов сортировки при создании простых приложений.
ПОДГОТОВКА К РАБОТЕ: Изучить алгоритмы работы методов простой сортировки массивов.
ЗАДАНИЕ. Создайте приложение, выполняющее сортировку тремя методами простой сортировки (см. рисунок 10.1).
Последовательность действий по созданию приложения:
Создайте новое приложение и перенесите на него компоненты, из таблицы 10.1.
Таблица 10.1 Компоненты приложения
Компонент |
Описание |
1 |
2 |
Label1 |
Метка «Исходный массив» |
Label2 |
Метка «Отсортированный массив» |
Label3 |
Метка « Количество элементов в массиве». Для данного компонента следует установить свойство WordWrap в True для того, чтобы можно было разместить метку на нескольких строках, как показано на рисунке 10.1 |
Продолжение таблицы 10.1
1 |
2 |
Edit1 |
Окно, в которое вводится количество элементов в массиве |
Memo1 |
Многострочное поле, в которое выводится исходный (не отсортированный) массив |
Memo2 |
Многострочное поле, в которое выводится отсортированный массив |
Button1 |
Командная кнопка «Очистить» |
Button2 |
Командная кнопка «Заполнить» |
Button3 |
Командная кнопка «Сортировка обменом (Пузырек)» |
Button4 |
Командная кнопка «Сортировка простым выбором» |
Button5 |
Командная кнопка «Сортировка простыми вставками» |
В области глобальных переменных объявите массив:
var
Form1: TForm1;
a:Array [1..100] of Integer;
implementation
Для события OnClick кнопки «Очистить» напишите следующий программный код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo2.Clear;
end;
Для события OnClick кнопки «Заполнить» напишите следующий программный код:
// заполнение массива случайными элементами
procedure TForm1.Button2Click(Sender: TObject);
Var i,n:Integer;
begin
memo1.Clear; n:=StrToInt(Edit1.Text); Randomize;
For i:=1 to n do
begin
a[i]:=-50+Random(100); Memo1.Lines.Add(IntToStr(a[i]));
end;
end;
Выполните сортировку обменом (методом пузырька). Сортировка пузырьковым методом использует метод обменной сортировки. Она основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов. Ее название происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень. Программный код имеет вид:
procedure TForm1.Button3Click(Sender: TObject);
Var j,i,k,n:Integer;
begin
Memo2.Clear;
n:=StrToInt(Edit1.Text);
For j:=1 to n-1 do {Цикл по номеру просмотра}
For i:=1 to n-j do
If a[i]> a[i+1] then {Перестановка элементов}
Begin
k:=a[i];
a[i]:=a[i+1];
a[i+1]:=k;
end;
// Вывод отсортированного массива
For i:=1 to n do memo2.Lines.Add(IntToStr(a[i]))
end;
Данный код вызывается по событию OnClick кнопки «Сортировка обменом (Пузырек)»
Выполните сортировку простым выбором. При сортировке выбором выбирается элемент с наименьшим значением и делается его обмен с первым элементом массива. Затем находится элемент с наименьшим значением из оставшихся n-1 элементов и делается его обмен со вторым элементом и т.д. до обмена двух последних элементов. Программный код имеет вид:
procedure TForm1.Button4Click(Sender: TObject);
Var j,i,k,n,m:Integer;
begin
Memo2.Clear; n:=StrToInt(Edit1.Text);
For i:=N downto 2 do
begin
k:=i; m:=a[i];
For j:=1 to i-1 do
If a[j]>m then Begin
k:=j; m:=a[j];
end;
If k<>i then begin
a[k]:=a[i]; a[i]:=m;
end;
end;
// Вывод отсортированного массива
For i:=1 to n do memo2.Lines.Add(IntToStr(a[i]))
end;
Данный код вызывается по событию OnClick кнопки «Сортировка простым выбором»
Выполните сортировку простыми вставками. При сортировке вставкой сначала упорядочиваются два элемента массива. Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум элементам. Затем делается вставка четвертого элемента в список из трех элементов. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены. Например, для массива "dcab" сортировка вставкой будет проходить следующим образом:
исходное состояние: d c a b;
первый проход: c d a b;
второй проход: a c d b;
третий проход: a b c d.
Программный код имеет вид:
procedure TForm1.Button5Click(Sender: TObject);
Var j,i,n,x:Integer;
begin
Memo2.Clear; n:=StrToInt(Edit1.Text);
For i:=2 to n do
begin
x:=a[i]; j:=i-1;
While (x<a[j]) and (j>0) do
Begin
a[j+1]:=a[j]; j:=j-1;
end;
a[j+1]:=x;
end;
// Вывод отсортированного массива
For i:=1 to n do memo2.Lines.Add(IntToStr(a[i]))
end;
Данный код вызывается по событию OnClick кнопки «Сортировка простыми вставками»
Откомпилируйте приложение и проверьте его работу.