КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Лекция 9. Пример. Найти значение наибольшего элемента одномерного массива.Пример. Найти значение наибольшего элемента одномерного массива.
1. Выбор данных. Исходные данные: k – Переменная целого типа, число заданных величин; a ( ) – динамический массив с плавающей точкой обычной точности, значения заданных величин. Результаты: НаибЭлем – переменная с плавающей точкой обычной точности, значение наибольшего среди рассмотренных элементов массива a; Промежуточные: i – переменная целого типа, значение индекса элемента массива x. 2. Построение блок-схемы алгоритма (см. рис. 9.1). Ввод массива представлен укрупненным блоком (блок 2). Основой алгоритма является цикл (блоки 4 – 8). В этот цикл входит разветвление (блоки 6 и 7).
3. Разработка интерфейса проекта Воспользуемся тем же интерфейсом проекта, который был применен для примера, рассмотренного в предыдущей лекции (подробнее).
4. Составление программы.
Option Explicit Option Base 1 Private Sub Command1_Click() 1: Dim i As Integer, k As Integer Dim a() As Single Dim НаибЭлем As Single Cls 5: k = InputBox("Введите k") Print "k= " & k ReDim a(k) Print "Ввод вектора а" Ввод_вектора a 10: НаибЭлем = a(1) For i = 2 To k If a(i) > НаибЭлем Then НаибЭлем = a(i) Next Print "Наибольший элемент равен "; НаибЭлем End Sub Private Sub Ввод_вектора(x() As Single) 1: Dim i As Integer Dim i_min As Integer Dim i_max As Integer i_min = LBound(x) 5: i_max = UBound(x) For i = i_min To i_max x(i) = InputBox("Элемент вектора (" _ & i & ")=?", "Ввод вектора") Print x(i), Next End Sub
В этой программе применяется динамический массив a. В строке 9 тела процедуры Command1_Click происходит обращение к процедуре Ввод_вектора, которая обеспечивает ввод всех элементов массива a. Упрощенно можно действие этого обращения понимать так, как будто на месте строки 9 выполняется все тело процедуры Ввод_вектора, во всех инструкциях которого имя x заменено на имя a. Процедура Ввод_вектора обеспечивает не только ввод значений всех элементов массива, но печать на форме их значений для контроля правильности задания значений при вводе. В этой процедуре применяется обращение к функция LBound(x), которая возвращает наименьшее значение индекса массива, имя которого является аргуменом этой функции. В процедуре Ввод_вектора также применяется обращение к функция UBound(x), которая возвращает наибольшее значение индекса массива, имя которого является аргуменом этой функции. Инструкция, находящаяся в стоке 8 процедуры Ввод_вектора, обеспечивает печать элемента массива. Следующий элемент массива будет выведен в той же самой строке (подробнее). Инструкция, находящаяся в стоке 10 процедуры Ввод_вектора, нужна, чтобы следующая (если такая есть) инструкция Print после выхода из процедуры Ввод_вектора выводила информацию на форме не в той же самой, а в следующей строке.
|