- •Тема: «Разработка приложений с использованием одномерных массивов»
- •1. Массивы
- •1.1. Общие принципы организации массивов
- •1.2. Обращение к элементу массива имя_массива(Индекс)
- •1.3. Статический массив
- •1.4. Динамический массив
- •1.5. Типовые приемы работы с одномерными массивами
- •1. Заполнение массива данными
- •2. Преобразование массива (действия с элементами массива)
- •3. Вывод массива или отдельных его элементов
- •1.6. Массивы однотипных элементов
- •2. Типовые задачи на обработку одномерных массивов
- •2.1. Поиск максимального (минимального) значения в массиве
- •2.2. Подсчет суммы значений элементов массива и среднего значения для элементов массива
- •2.3. Перестановка элементов массива в обратном порядке
- •2.4. Циклический сдвиг элементов массива
- •2.5. «Сжатие» массива
- •2.6. Сортировка элементов массива
- •3. Упражнения
- •4. Задания для самостоятельного выполнения
- •1. Выполните следующие задания на заполнение массива
- •4. Выполните следующие задания на обработку элементов одномерного массива. Дополнительный массив не использовать.
- •5. Выполните следующие задания на обработку элементов одномерного массива. Дополнительный массив не использовать.
3. Вывод массива или отдельных его элементов
Способы вывода элементов массива:
1) На форму:
For i = 1 To n
Print A(i)
Next i
2) В текстовое поле:
For i = 1 To n
Text1.Text = Text1.Text + " " + Str(A(i))
Next i
3) С помощью элемента управления ListBox (Список):
For i = 1 To n
List1.AddItem A(i)
Next i
и другие
1.6. Массивы однотипных элементов
При создании интерфейса приложения часто возникает необходимость организации значительного количества однотипных объектов (например, кнопок, текстовых полей, …).
Имена каждого объекта такого набора должны быть уникальными, то есть РАЗНЫМИ:
Имя1 , Имя2, Имя3, … .
К уникальным именам объектов неудобно обращаться в циклических алгоритмах.
Для удобства обращения к именам объектов в циклических алгоритмах рационально создавать массивы объектов.
Каждый объект в массиве объектов имеет ОДИНАКОВОЕ ИМЯ и индекс, указываемый в скобках:
Имя(1), Имя(2), Имя(3), ….
К имени объекта из массива объектов удобно обращаться в циклических алгоритмах. Например, при захвате значений из десяти текстовых полей:
For i = 0 To 10
A (i) = txtPole(i).Text
Next i
Порядок создания массива объектов:
Занести первый объект в форму обычным способом.
Скопировать занесенный объект в буфер обмена.
Вставить из буфера обмена элемент в форму. ВНИМАНИЕ! При вставке возникнет системный запрос: создать массив, или добавить обычный объект. Надо создать массив.
2. Типовые задачи на обработку одномерных массивов
2.1. Поиск максимального (минимального) значения в массиве
Рассмотрим две задачи.
1. Синоптики фиксировали дневные температуры в течение всего года. Найти максимальную (минимальную) годовую температуру.
2. Синоптики фиксировали дневные температуры в течение всего года. Найти все дни, когда температура достигала максимального (минимального) значения.
Решение. Подход к решению этих на первый взгляд задач должен быть различным. Очевидно, что для решения первой задачи совсем не обязательно заводить массив для хранения информации, так как запоминать значения температуры в каждый день года вовсе не обязательно. Эти значения можно обработать последовательно и получить требуемый результат.
Вот пример кода для решения подобной задачи.
Const n As Integer = 365
Dim i As Integer, t As Integer, max As Integer
max = InputBox("Введите температуру 1- го дня")
For i = 2 To n
t = InputBox("Введите температуру" + Str(i) + "- го дня")
If t > max Then max = t
Next
MsgBox "Максимальная температура равна" + Str(max)
При поиске минимального значения достаточно заменить условный оператор на следующий: If t < min Then min = t.
Вторую задачу решить без использования массивов не представляется возможным. Рассматриваемая задача делится на две подзадачи:
поиск максимального значения среди всех годовых температур;
определение дней со значением температуры, равной максимальной.
Для выполнения этих подзадач необходимо обработать каждое значение два раза, что требует их хранения в памяти компьютера.
Const n As Integer = 365
Dim masT(1 To n) As Integer
Dim i As Integer, max As Integer, st As String
For i = 1 To n
masT(i) = InputBox("Введите температуру" + Str(i) + "- го дня")
Next
max = masT(1)
For i = 2 To n
If masT(i) > max Then max = masT(i)
Next
st = "Дни с максимальной температурой: "
For i = 1 To n
If masT(i) = max Then st = st + " " + str(i)
Next
MsgBox st
