Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для курсовых по ПМ.01.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
736.26 Кб
Скачать

2 Проектирование приложения

2.1 Структурная диаграмма программы

Структурная диаграмма программы, представленная на рисунке 1, включает три уровня. Первый уровень – главный модуль (find). Второй уровень состоит из процедур-обработчиков (Tform1.Button1Click и Tform1.Button2Click) событий, состоящих в нажатии командных кнопок формы программы – ПОИСК и Закончить работу. Третий уровень включает функцию GetSubStr, необходимую для ввода массива из поля редактирования. Функция возвращает подстроку с заданным в вызывающей процедуре Tform1.Button1Click номером или пустую строку, если подстроки с таким номером нет. Программы всех уровней решают определенные подзадачи и дальнейшей детализации не требуют.

Нет необходимости строить диаграмму потоков данных, т.к. ввод данных и их обработка производится последовательно в порядке вызова подчиненных программ главным программным модулем.

Рисунок 1 – Структурная диаграмма программы

2.2 Разработка алгоритма

Блок-схемы алгоритмов программы приведены в Приложении 6.

После ввода пользователем элементов массива и образца нажатие командной кнопки Поиск (Button1) запускает процедуру ввода массива из поля редактирования Edit1. Затем выполняется проверка: содержит ли массив элемент, совпадающий с образцом, введенным в поле редактирования Edit2. После завершения проверки на экран выводится информационное сообщение. Пользователь может после этого закончить работу или (по его выбору) ввести новый образец (или новый массив).

В Приложении 6 приведена блок-схема алгоритма простого перебора, реализованного программой-обработчиком события – нажатия командной кнопки ПОИСК (процедурой TForm1.Button1Click). Этот алгоритм достаточно популярен и реализован в различных программных системах. Алгоритм простого перебора элементов массива состоит в сравнении текущего элемента массива с образцом. Логической переменной found присваивается значение true, если текущий элемент и образец равны. Работа завершается, если в массиве обнаружен элемент, равный образцу (в этом случае значение переменной found равно true), или если проверены все элементы массива. По завершении цикла по значению переменной found можно определить, успешен поиск или нет.

В Приложении 6 показана блок-схема алгоритма ввода массива из поля редактирования, осуществляемого подпрограммой-функцией GetSubStr.

Функция возвращает подстроку с заданным в вызывающей процедуре TForm1.Button1Click номером или пустую строку, если подстроки с таким номером нет.

3 Программная реализация

3.1 Описание и исходный текст программ приложения

Листинг главного модуля find Windows-приложения «Поиск в массиве» должен быть приведен в соответствующем приложении.

Вид диалогового окна программы «Поиск в массиве» приведен на рисунке 2. Назначение полей ввода очевидно.

Рисунок 2 - Диалоговое окно программы «Поиск в массиве»

3.2 Процедура tForm1.Button1Click поиска в массиве

Нажатие командной кнопки ПОИСК (Button1) запускает процедуру TForm1.Button1Click, которая из поля редактирования Edit1 вводит массив, а из поля редактирования Edit2 — число (образец). Эта программа - обработчик события OnClick: нажатия командной кнопки ПОИСК. Затем выполняется проверка: содержит ли массив вве­денное число. После завершения проверки процедурой ShowMessage на экран выводится информационное сообщение.

Перебор элементов массива осуществляется оператором repeat, в теле которого оператор if сравнивает текущий элемент массива с образцом и присваивает переменной found значение true, если текущий элемент равен образцу.

Цикл завершается, если в массиве обнаружен элемент, равный образцу (в этом случае значение переменной found равно true), или если проверены все элементы массива. По завершении цикла по значению переменной found можно определить, успешен поиск или нет.

Программа контролирует действительное количество введенных элементов массива. В случае если количество введенных чисел меньше необходимого, выводится сообщение об ошибке.

Текст процедуры TForm1.Button1Click поиска в массиве целых чисел:

procedure TForm1.Button1Click (Sender: TObject);

const SIZE=10;

var

a: array [l..SIZE] of integer; {массив}

n: integer; {образец для поиска}

found: boolean; {true — совпадение образца}

{с элементом массива}

i: integer; {индекс элемента массива}

buf: string; {буфер для подстроки}

begin

{ввод массива}

i:=1;

repeat

buf:=GetSubstr(Editl.text, i);

if Length(buf) <> 0

then a[i]:= StrToInt (buf)

else ShowMessage('Ошибка'+#13 {Сообщение об ошибке:}

+'Нужно ввести ' {количество введенных чисел}

+IntToStr(SIZE)+' чисел.'); {меньше необходимого}

i:=i+l;

until (i>SIZE) or (Length(buf)=0); {ввод образца для поиска в массиве}

n:=StrToInt (edit2.text); {начальные значения}

found:=false;

i:=l;

repeat

if a[i] = n then found:=true

else i:=i+l;

until (i > SIZE) or (found = true);

if found then ShowMessage ('Совпадение с элементом номер '

+IntToStr(i)+#13+'Поиск успешен.')

else ShowMessage('Совпадений с образцом нет.');

end;