- •7. Одномерные массивы 114
- •8. Обработка двумерных массивов (матриц) 162
- •9. Обработка строк 183
- •10. Тип данных, определенный пользователем. Структуры 214
- •11. Использование подпрограмм 228
- •Приложение 52 310 Список литературы 313 Введение
- •1. Этапы создания Windows-приложения
- •2. Среда Visual Basic 2005
- •2.1. Структура среды Visual Basic 2005
- •2.2. Создание нового проекта
- •2.3. Сохранение проекта
- •2.4. Выполнение приложения
- •2.5. Основные команды среды Visual Basic 2005
- •2.6. Методы тестирования
- •2.7. Отладка приложений в среде vb
- •3. Разработка интерфейса в среде vb. Основные элементы управления
- •3.1. Метка
- •3.2. Текстовое поле
- •3.3. Кнопка
- •3.4. Окно списка
- •3.5. Выравнивание положения элементов управления
- •4. Программа линейной структуры
- •4.1. Понятие переменной
- •4.2. Типы данных
- •4.3. Объявление переменных
- •4.4. Оператор присваивания
- •Оператор присваивания работает справа налево.
- •4.5. Константы
- •4.6. Арифметические операции
- •4.7. Математические функции
- •4.8. Арифметическое выражение
- •4.9. Окно ввода (InputBox)
- •4.10. Окно вывода сообщения (MsgBox)
- •4.11. Пример. Вычисление площади треугольника
- •4.12. Пример. Нахождение цифр числа
- •5. Организация ветвлений
- •5.1. Логические константы и переменные
- •5.2. Операции сравнения
- •5.3. Логические операции
- •5.4. Логическое выражение
- •5.5. Условный оператор
- •5.6. Функция iIf
- •5.7. Оператор множественного ветвления ElseIf
- •5.8. Оператор выбора Select Case
- •5.9. Оператор безусловного перехода GoTo
- •5.10. Пример. Решение линейного уравнения
- •5.11. Пример. Программа-калькулятор
- •6. Программирование повторений
- •6.1. Цикл со счетчиком
- •6.1.1. Табуляция функции
- •6.1.2. Вычисление факториала
- •6.1.3. Обработка совокупности чисел с известным числом элементов
- •6.2. Цикл с условием
- •6.2.1. Ввод с проверкой
- •6.2.2. Обработка совокупности чисел с неизвестным числом элементов
- •6.2.3. Вычисление суммы ряда по общей формуле
- •Вычисление суммы ряда с использованием рекуррентного соотношения
- •6.2.5. Вычисление произведения ряда
- •Решение нелинейных уравнений методом простой итерации
- •7. Одномерные массивы
- •Массивы всегда обрабатываются в цикле.
- •7.1. Ввод массива
- •Вывод массива в окно списка и в текстовое поле
- •7.3. Вычисление суммы и произведения элементов массива
- •7.4. Определение количества элементов массива, удовлетворяющих некоторому условию
- •7.5. Вычисление среднего арифметического и среднего геометрического элементов массива, удовлетворяющих некоторому условию
- •7.6. Нахождение максимального элемента массива
- •7.7. Нахождение минимального элемента массива, удовлетворяющего некоторому условию
- •7.8. Поиск первого элемента массива, удовлетворяющего некоторому условию
- •7.9. Поиск последнего элемента массива, удовлетворяющего некоторому условию
- •7.10. Замена одного элемента массива
- •7.11. Замена всех элементов массива, удовлетворяющих некоторому условию
- •7.12. Перестановка местами двух элементов массива
- •7.13. Формирование нового массива из некоторых элементов исходного массива
- •7.14. Проверка совпадения всех элементов массива
- •7.15. Проверка упорядоченности всех элементов массива
- •7.16. Сортировка массива методом пузырька
- •7.17. Линейная сортировка массива (методом поиска минимума)
- •Никогда нельзя использовать одновременно оба способа перестановки элементов массива.
- •8. Обработка двумерных массивов (матриц)
- •8.1. Ввод прямоугольной матрицы
- •8.2. Вывод прямоугольной матрицы в окно списка и в текстовое поле
- •8.3. Поиск максимального элемента матрицы
- •8.4. Обработка матрицы по строкам
- •8.5. Обработка матрицы по столбцам
- •8.6. Обработка квадратных матриц
- •Для обработки элементов, стоящих на любой диагонали, достаточно одного цикла. Для обработки элементов, принадлежащих к одному из треугольников, необходимо использовать вложенные циклы.
- •9. Обработка строк
- •9.1. Основные функции обработки строк
- •9.2. Посимвольная обработка строки
- •9.3. Формирование массива слов строки
- •9.4. Формирование строки из массива слов
- •9.5. Слова-палиндромы
- •9.6. Выделение чисел из строки
- •9.7. Сравнение строк
- •9.8. Обработка многострочного текста
- •10. Тип данных, определенный пользователем. Структуры
- •10.1. Описание структуры. Область видимости. Понятие метода
- •10.2. Оператор With
- •10.3. Ввод массива структур
- •10.4. Вывод массива структур
- •10.5. Поиск в массиве структур
- •10.6. Формирование нового массива из некоторых элементов исходного массива
- •10.7. Сортировка массива структур
- •11. Использование подпрограмм
- •11.1. Определение процедуры и функции. Описание процедуры и функции
- •11.2. Передача параметров по ссылке и по значению
- •11.3. Формальные параметры и фактические переменные
- •11.4. Локальные и глобальные переменные
- •11.5. Static-переменные
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
- •Приложение 5
- •Приложение 6
- •Приложение 7
- •Приложение 8
- •Приложение 9
- •Приложение 10
- •Приложение 11
- •Приложение 12
- •Приложение 13
- •Приложение 14
- •Приложение 15
- •Приложение 16
- •Приложение 17
- •Приложение 18
- •Приложение 19
- •Приложение 20
- •Приложение 21
- •Приложение 22
- •Приложение 23
- •Приложение 24
- •Приложение 25
- •Приложение 26
- •Приложение 27
- •Приложение 28
- •Приложение 29
- •Приложение 30
- •Приложение 31
- •Приложение 32
- •Приложение 33
- •Приложение 34
- •Приложение 35
- •Приложение 36
- •Приложение 37
- •Приложение 38
- •Приложение 39
- •Приложение 40
- •Приложение 41
- •Приложение 42
- •Приложение 43
- •Приложение 44
- •Приложение 45
- •Приложение 46
- •Приложение 47
- •Приложение 48
- •Приложение 49
- •Приложение 50
- •Приложение 51
- •Приложение 52
- •Список литературы
7. Одномерные массивы
Массив – это множество однотипных данных, имеющих одинаковое имя и отличающихся друг от друга только порядковым номером, который называется индексом.
На практике массивы применяются для хранения и обработки больших объемов однотипных данных. Но эти данные доступны только во время выполнения программы. После завершения работы программы данные, хранящиеся в массивах, теряются.
Для обработки массивов используются специальные алгоритмы. Наиболее распространенными из них являются сортировка массива, поиск максимального и минимального элементов массива, формирование нового массива из элементов исходного массива, поиск одного или нескольких элементов, удовлетворяющих некоторому заранее заданному условию. Мы подробно рассмотрим большинство основных алгоритмов, но сначала сформулируем основное правило обработки одномерных массивов.
Массивы всегда обрабатываются в цикле.
Причем счетчик цикла используется в качестве индекса массива.
В зависимости от количества индексов массивы делятся на одномерные (с одним индексом) и многомерные (с двумя и более индексами). В этой главе мы разберем алгоритмы обработки одномерных массивов. Основные приемы работы с двумерными массивами будут рассмотрены в главе 8.
Одномерный массив – это средство языка программирования, которое позволяет обращаться к любому элементу пронумерованного множества значений. При этом все элементы множества должны иметь одинаковый тип данных, а их количество не должно превосходить некоторого заранее заданного числа, которое называется размером массива.
Объявление массива выполняется аналогично объявлению переменной (см. раздел 4.3). Для этого используются уже знакомые нам операторы Dim,Static,PublicиPrivate. По способу описания массивы делятся на две основные группы4:
массив с заранее известным числом элементов;
массив, число элементов которого заранее неизвестно.
При описании массива указывается его имя, затем ставятся круглые скобки, показывающие Visual Basic 2005, что мы организуем массив, и задается тип данных, к которому будут принадлежать все элементы массива. Рассмотрим два случая объявления массива.
Dim a() As Integer
Эта конструкция описывает одномерный целочисленный массив aтипаInteger, размер которого заранее неизвестен. Изначально в нем нет ни одного элемента. Размер этого массива будет определен позднее с помощью оператораReDim.
Dim b(10) As Single
Такая запись определяет одномерный массив bтипаSingle, в котором будет содержаться 11 элементов пронумерованных от 0 до 10. То есть при описании массива в круглых скобках указывается номер его последнего элемента (это значение не должно выходить за пределы значений типаULong). Обратите внимание, что нумерация элементов массива всегда начинается с нуля независимо от способа объявления массива. Размер этого массива тоже можно будет изменять в процессе выполнения программы с помощью оператораReDim.
Оператор ReDimпредназначен для изменения размера массива в процессе выполнения программы. Причем размер массива можно как уменьшать, так и увеличивать. Но он не позволяет изменить тип элементов массива и размерность массива (количество используемых индексов). При изменении размера массива данные, хранящиеся в нем, могут теряться. Чтобы этого не происходило после словаReDimнеобходимо поставить ключевое словоPreserve. В общем виде оператор ReDim записывается следующим образом
ReDim Имя массива(Номер последнего элемента)
или
ReDim Preserve Имя массива(Номер последнего элемента)
Рассмотрим два примера использования оператора ReDim. Запись
ReDim a(6)
изменяет размер массива a. После выполнения этого оператора в массиве будет 7 элементов, пронумерованных от 0 до 6, но все значения, ранее записанные в массивa, потеряются.
Конструкция
ReDim Preserve b(7)
тоже приведет к изменению размера массива b.В нем станет 8 элементов, пронумерованных от 0 до 7, но при этом сохранятся все значения, которые вводились в массивb.
Объем памяти, необходимой для хранения массива, определяется как произведение количества элементов массива и объема памяти, занимаемого одной переменной указанного типа данных.
Для того чтобы обратиться к некоторому элементу массива, необходимо указать имя массива и в круглых скобках номер нужного элемента. Например:
a(3) = 5
b(5) = (a(0) + a(4)) / b(1)