Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ.doc
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
1.51 Mб
Скачать

Задание для самостоятельной работы

  1. Настройте панель инструментов для всех подпунктов пункта главного меню «Правка» - подберите иконки запрограммируйте их.

  2. Работа с текстовыми файлами. Дан текстовый файл, содержащий строки. Найти:

  1. Количество строк, начинающихся с заглавных латинских букв;

  2. Количество строк, начинающихся и заканчивающихся одинаковыми символами;

  3. Самую короткую строку.

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

  1. Сравните возможности компонентов Memo и RichEdit.

  2. Как создать трехуровневое меню с помощью компонента MainMenu?

  3. Как настроить свойство Filter компонентов OpenDialog и SaveDialog, чтобы одновременно отображались текстовые файлы с расширениями *.txt, *.doc, *.docx?

  4. Как связать между собой пункты меню и кнопки панели инструментов?

Лабораторная работа № 10. Методы простой сортировки

ЦЕЛЬ РАБОТЫ: Изучение методов простой сортировки массивов: сортировки обменом, сортировка выбором, и сортировка вставкой. Получение навыков использования методов сортировки при создании простых приложений.

ПОДГОТОВКА К РАБОТЕ: Изучить алгоритмы работы методов простой сортировки массивов.

ЗАДАНИЕ. Создайте приложение, выполняющее сортировку тремя методами простой сортировки (см. рисунок 10.1).

Последовательность действий по созданию приложения:

  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

Командная кнопка «Сортировка простыми вставками»

      1. В области глобальных переменных объявите массив:

var

Form1: TForm1;

a:Array [1..100] of Integer;

implementation

  1. Для события OnClick кнопки «Очистить» напишите следующий программный код:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Clear;

Memo2.Clear;

end;

  1. Для события 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;

  1. Выполните сортировку обменом (методом пузырька). Сортировка пузырьковым методом использует метод обменной сортировки. Она основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов.  Ее название происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень. Программный код имеет вид:

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 кнопки «Сортировка обменом (Пузырек)»

  1. Выполните сортировку простым выбором. При сортировке выбором выбирается элемент с наименьшим значением и делается его обмен с первым элементом массива. Затем находится элемент с наименьшим значением из оставшихся 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 кнопки «Сортировка простым выбором»

  1. Выполните сортировку простыми вставками. При сортировке вставкой сначала упорядочиваются два элемента массива.  Затем делается вставка третьего элемента   в соответствующее место по отношению к  первым двум элементам. Затем делается вставка четвертого элемента в список из трех элементов.  Этот процесс повторяется до тех пор,  пока все элементы не будут упорядочены.  Например, для массива "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 кнопки «Сортировка простыми вставками»

  1. Откомпилируйте приложение и проверьте его работу.