Добавил:
Negorov1337@gmail.com inst:vech.no_17 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб 7 массивы / Лабораторный_практикум_по_программированию_пр.7.doc
Скачиваний:
5
Добавлен:
11.10.2020
Размер:
1.71 Mб
Скачать

Пример выполнения задания a лабораторной работы

Задание A

Вычислить на ПК наименьший элемент массива (а12 ,..., аn) и его порядковый номер; n20.

Визуальное представление алгоритма нахождения наименьшего элемента в одномерном массиве представлено на рисунке 8.

Рис. 8. Визуальное представление алгоритма нахождения

наименьшего элемента в одномерном массиве

Для визуального представления алгоритма используем блоки, данные в [10], в приложении Б, в котором указаны обозначение и функциональное назначение некоторых блочных символов графического описания алгоритмов (визуальных алгоритмов).

В блоке 2 вводится переменная n – количество элементов одномерного массива.

Блок 3 организует ввод элементов одномерного массива. Как и в предыдущем примере, ввод массива А организуем с помощью структуры «цикл с параметром».

Из схемы видно, что обработка элементов массива, т.е. поиск наименьшего элемента в массиве также представляет собой циклический процесс – «цикл с параметром».

В этом примере реализован прием программирования – нахождение наименьшего из значений. Кроме наименьшего значения, необходимо найти его порядковый номер, т.е. индекс минимального элемента. Для этого каждый раз, когда выполняется условие ai<amin, необходимо присваивать не только amin значение ai (amin=ai), но и imin значение i (imin=i). Присваивание начальных значений выполним перед циклом. В качестве начального значения amin зададим значение a1 (блок 4). В качестве начального значения imin примем 1 (блок 4), т.к. первый член может оказаться минимальным, а цикл будем выполнять при изменении параметра цикла i от 2 до n (блок 5). Вывод результатов amin и imin выполняется после завершения цикла (блок 8).

В блоке 2 вводится переменная n – количество элементов одномерного массива. Блок 3 организует ввод элементов массива, т.е. происходит заполнение массива. Ввод массивов А и B организуем с помощью структуры «цикл с параметром», причем оба массива будем вводить в одном цикле.

Таким образом, структура данного процесса будет представлять собой две структуры «цикл с параметром», соединенные между собой последовательно, т.е. следующие одна за другой, что ясно просматривается в программе.

Программа на языке QBasic

DIM A(20)

INPUT «введите количество элементов массива»;N

REM ввод элементов массива А

PRINT «введите элементы массива»

FOR I=1 TO N

PRINT «A(» ;I; «)=»; : INPUT A(I)

NEXT I

REM поиск минимального элемента и его порядкового номера

AMIN=A(1) ‘‑‑- начальное значение минимального элемента

IMIN=1 ‘‑‑- начальное значение его номера

FOR I=2 TO N

IF A(I)<AMIN THEN

AMIN=A(I)

IMIN=I

END IF

NEXT I

PRINT «номер наименьшего=»;IMIN

PRINT «наименьший элемент=»;AMIN

END

Если в качестве теста возьмем одномерный массив:

массив А = (3,-6,4,5,-3,8,2),

то результат выполнения программы:

Рис. 9. Результаты выполнения программы нахождения

наименьшего элемента в одномерном массиве

на экране вывода системы программирования QBasic

Рассмотрим теперь пример разработки программного кода того же примера, используя объектно-ориентированное программирование, реализуемое средствами языка VBA, используя экранные формы.

Учитываем, что первым этапом при решении задач с использованием массивов должен быть ввод элементов массива, т.е. заполнение массива.

Создадим графический интерфейс приложения. Чтобы спроектировать наше приложение, нужно взять некоторые стандартные элементы управления, поместить их на форму, затем установить начальные свойства этих элементов и создать код обработки событий, связанных с этими элементами. Последовательность всех этих действий рассмотрена в [10], [11] и [12].

В окне проекта выберите имя проекта, в который требуется добавить форму.

В меню редактора VBA выберите команду Insert (Вставка)\ UserForm. Выводится пустая экранная форма и набор инструментов.

Разместим на экранной форме (рис. 10), используя метод «drag-and-drop», следующие стандартные элементы управления:

  • четыре элемента типа Label (метка) – Label1, Label2, Label3 и Label4, в которых потом расположим надписи «Массив», «Индекс Элемент», «Наименьший элемент массива» и «Индекс наименьшего элемента» соответственно. Надписи расположим, изменив свойство элементов Caption (Надпись);

  • один элемент управления типа ListBox (Список) – ListBox1. Используем его для вывода (визуализации) исходного одномерного массива A;

  • четыре элемента управления типа CommandButton (командная кнопка) – CommandButton1, CommandButton2, CommandButton3 и CommandButton4. Командную кнопку CommandButton1 используем для запуска событийной процедуры ввода исходного одномерного массива А. Расположим в ней надпись «Ввод (заполнение) массива», изменив свойство элемента Caption (Надпись). Командную кнопку CommandButton2 используем для запуска событийной процедуры визуализации исходного одномерного массива А. Расположим в ней надпись «Вывод (визуализация) массива», изменив свойство элемента Caption (Надпись). Командную кнопку CommandButton3 используем для запуска событийной процедуры нахождения наименьшего элемента массива и его индекса. Расположим в ней надпись «Нахождение наименьшего», изменив свойство элемента Caption (Надпись). Командную кнопку CommandButton4 используем для запуска событийной процедуры визуализации результатов. Расположим в ней надпись «Визуализация результата», изменив свойство элемента Caption (Надпись);

  • два элемента управления типа TextBox (Текстовое поле или окно ввода) для вывода результатов: наименьшего элемента одномерного массива и его индекса соответственно (TextBox1 и TextBox2).

Таким образом, с помощью командной кнопки CommandButton1 выполняем первый этап работы – ввод элементов одномерного массива А.

С помощью командной кнопки CommandButton2 выполняем второй этап работы – вывод исходного одномерного массива на экран.

Поиск наименьшего элемента одномерного массива и его индекса, т.е. обработку массива, выполним с помощью третьей командной кнопки CommandButton3.

Вывод результатов, полученных после обработки, на экран (с поясняющей надписью) выполнит четвертая командная кнопка CommandButton4.

Рис. 10. Форма и расположение на ней элементов управления

Зададим новые значения свойств элементам управления, размещенным на форме (рис. 10) согласно общепринятым соглашениям с помощью окна Propeties (Свойства объектов). Значения свойств по умолчанию и новые значения свойств представлены в таблице 2. Форма и расположение на ней элементов управления после задания новых свойств этим элементам представлены на рисунке 11.

Таблица 2

Новые значения свойств элементов управления формы

Элемент

управления

Свойство

Значение

по умолчанию

Новое значение

1

2

3

4

Label (метка)

Name (имя)

Label1

Lbl1

Caption (надпись)

Label1

Массив

Label (метка)

Name (имя)

Label2

Lbl2

Caption (надпись)

Label2

Индекс Элемент

Label (метка)

Name (имя)

Label3

Lbl3

Caption (надпись)

Label3

Наименьший элемент массива

Label (метка)

Name (имя)

Label4

Lbl4

Caption (надпись)

Label4

Индекс наименьшего элемента

Окончание табл. 2

1

2

3

4

ListBox (список)

Name (имя)

ListBox1

LbxMassiv

CommandButton

(командная кнопка)

Name(имя)

CommandButton1

CmdVvod

Caption (надпись)

CommandButton1

Ввод (заполнение) массива

CommandButton

(командная кнопка)

Name(имя)

CommandButton2

CmdVyvod

Caption (надпись)

CommandButton2

Вывод (визуализация) массива

CommandButton

(командная кнопка)

Name(имя)

CommandButton3

CmdMin

Caption (надпись)

CommandButton3

Нахождение

наименьшего

CommandButton

(командная кнопка)

Name(имя)

CommandButton4

CmdRezultat

Caption (надпись)

CommandButton4

Визуализация

результата

TextBox

Name(имя)

TextBox1

TxtMin

TextBox

Name(имя)

TextBox2

TxtI

Рис. 11. Форма и её элементы управления

после переименования и изменения свойств

Таким образом, в программном коде следует записать четыре процедуры обработки события Click (кликанье левой кнопки мыши) для четырех командных кнопок.

Объявим переменные, используемые во всех процедурах.

Dim n As Integer ‘количество элементов массива

Dim i As Integer ‘индекс элемента

Dim a() As Single ‘объявление массива А

Dim amin As Single ‘наименьший элемент массива

Dim imin As Single ‘индекс наименьшего элемента

Сгенерируем процедуру обработки события Click (кликанье левой кнопки мыши) для командной кнопки CmdVvod с надписью «Ввод (заполнение) массива». Для этого достаточно быстро кликнуть на этой кнопке два раза левой кнопкой мыши. В результате будет создана нужная нам процедура, в которую надо ввести следующий код.

В этом примере рассмотрим способ заполнения массива с клавиатуры с помощью функции InputВox.

Private Sub CmdVvod_Click()

n = Val(InputBox("Введите n"))

ReDim a(1 To n) As Single

For i = 1 To n

a(i) = Val(InputBox ("Введите" & i & "элемент"))

Next i

End Sub

Пояснение. Данная процедура предназначена для ввода массива А. В этой процедуре используется динамический массив. Поэтому сначала объявим его оператором

Dim a() As Single.

Затем количество элементов массива вводится с помощью функции InputВox. После этого изменяем размер массива с помощью оператора

ReDim a (1 To n) As Single.

Для ввода элементов одномерного массива использована функция InputBox(), которая выводит на экран диалоговое окно, содержащее сооб-щение и поле ввода. Функция возвращает введенное значение типа string (строковое), поэтому его надо «подредактировать» функцией Val(), которая переводит «строку» в числовое значение соответствующего типа.

При выполнении функции InputBox() выводится поясняющая надпись.

Ввод массива А организован с помощью структуры «цикл с параметром». Структура «цикл с параметром» реализована на алгоритмическом языке оператором цикла For/Next. Параметром цикла является индекс I одномерного массива А. Функция InputВox размещена в теле цикла.

Далее выполняем второй этап работы – вывод исходного одномерного массива на экран.

Аналогично сгенерируем процедуру обработки события Click (кликанье левой кнопки мыши) для второй командной кнопки CmdVyvod надписью «Вывод (визуализация) массива», в которую введем программный код.

Private Sub CmdVyvod_Click()

Dim stri As String

Dim stra As String

For i = 1 To n

stri = Str(i)

stra = Str(a(i))

LbxMassiv.AddItem stri & " | " & stra

Next i

End Sub

Пояснение. Данная процедура предназначена для вывода одномерного массива А на экран. Она аналогична процедуре, подробно описанной в разделе «Методические указания к выполнению задания А».

Для визуализации массива А использован элемент управления (объекта) ListBox (Список).

Вывод массива А организован с помощью структуры «цикл с параметром». Структура «цикл с параметром» реализована на алгоритмическом языке оператором цикла For/Next. Параметром цикла является индекс I одномерных массивов А и В.

Добавление очередного элемента массива в список ListBox выполняется внутри тела цикла.

Сгенерируем процедуру обработки события Click (кликанье левой кнопки мыши) для третьей командной кнопки CmdMin с надписью «Нахождение наименьшего» и впишем в нее программный код.

Private Sub CmdMin_Click()

amin = a(1) ' - начальное значение минимального элемента

imin = 1 ' - начальное значение его номера

For i = 2 To n

If a(i) < amin Then

amin = a(i)

imin = i

End If

Next i

End Sub

Пояснение. Обработка массива (поиск наименьшего элемента в массиве) также организована с помощью структуры «цикл с параметром».

При «кликанье» левой кнопки мыши на третьей командной кнопке CmdMin с надписью «Нахождение наименьшего» результатов работы этой процедуры мы не увидим, так как переменные amin и imin пока хранятся в оперативной памяти.

Чтобы их увидеть, создадим процедуру обработки события Click для четвертой командной кнопки CmdRezultat с надписью «Визуализация результатов» и впишем в нее программный код.

Private Sub CmdRezultat_Click()

TxtMin.Value = amin

TxtI.Value = imin

End Sub

Пояснение. Переменные amin и imin выводим в элементы управления TextBox (Текстовое поле или окно ввода) TxtMin и TxtI при помощи свойства Value.

Программный код полностью представлен в окне программы VBA на рисунке 12.

Рис. 12. Программный код в окне программы VBA

Запустите ваше приложение, выбрав команду Run Run Sub/UserForm или нажав функциональную клавишу F5. Появится экранная форма (рис. 13).

В качестве тестовых значений исходных данных возьмем одномерный массив А, состоящий из семи элементов: массив А = (3,-6,4,5,-3,8,2),

Рис. 13. Экранная форма после запуска приложения

После щелчка на первой командной кнопке с надписью «Ввод (запол-нение) массива» появится диалоговое окно ввода переменной n (рис. 14).

Рис. 14. Диалоговое окно ввода переменой n – результат использования

функции InputBox("Введите n")

Введем количество элементов массива – 7 – и нажмем кнопку ОК либо клавишу Enter.

Появится диалоговое окно ввода 1-го элемента массива a(1) c соответствующей поясняющей надписью (рис. 15).

Рис. 15. Диалоговое окно ввода элементов массива А – результат

использования функции InputBox ("Введите" & i & "элемент")

Введем таким же образом с помощью диалоговых окон остальные элементы массива А, определяя индекс элемента по поясняющей надписи.

После ввода массива щелкнем на второй командной кнопке «Вывод (визуализация) массива». В элемент управления ListBox (Список) будет выведен одномерный массив А.

Щелкнем на третьей командной кнопке «Нахождение наименьшего». Как было сказано выше, результатов работы этой процедуры мы не увидим, так как переменные amin и imin пока хранятся в оперативной памяти.

Чтобы их увидеть щелкнем на четвертой командной кнопке «Визуализация результатов». Результаты – значения переменных amin и imin увидим в элементах управления типа TextBox (Текстовое поле).

Полностью результаты выполнения программного кода при значениях одномерного массива А = (3, -6, 4, 5, -3, 8, 2) представлены на рисунке 16.

Рис. 16. Результаты работы программного кода

поиска наименьшего элемента одномерного массива

Соседние файлы в папке лаб 7 массивы