- •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
- •Список литературы
Никогда нельзя использовать одновременно оба способа перестановки элементов массива.
Next
После завершения основного цикла выводим отсортированный массив. Сначала печатаем горизонтальную черту, чтобы зрительно отделить исходные данные от результатов.
lstA.Items.Add("-------------------------------")
Потом выводим поясняющий заголовок.
lstA.Items.Add("Массив после сортировки")
И последовательно в цикле печатаем все элементы отсортированного массива. Использование константы vbTabпозволяет организовать вывод в две колонки.
For i = 0 To n
lstA.Items.Add(Str(i) + vbTab + Str(a(i)))
Next
Полный текст программы представлен в приложении 36. Пример работы программы приведен на рис. 51.
Рис. 51. Пример работы программы линейной сортировки массива
8. Обработка двумерных массивов (матриц)
Многомерные массивы применяются в тех случаях, когда обрабатываемые данные представляются в виде таблиц или совокупности таблиц. В первом случае используют двумерные массивы (другое название двумерного массива – матрица), во втором – трехмерные. Существуют массивы и большей размерности. Visual Basic 2005 позволяет создавать массивы, содержащие до 32 размерностей. Рассмотрим основные приемы обработки матриц.
Описание двумерного массива практически не отличается от описания одномерного массива. Сначала указывается имя матрицы, затем – круглые скобки, между которыми ставится одна запятая. Она показывает Visual Basic 2005, что мы организуем массив, который будет иметь два индекса. Последним задается тип данных, к которому будут принадлежать все элементы матрицы. Существует два способа объявления матрицы.
Первый способ
Dim a(,) As Integer
Эта конструкция описывает двумерный целочисленный массив a(,)типаInteger, размеры которого заранее неизвестны. Изначально в нем нет ни одного элемента. Размеры этой матрицы будут определены позднее с помощью оператораReDim.
Второй способ
Dim b(10, 18) As Single
Такая запись определяет двумерный массив b(,)типаSingle, состоящий из 11 строк и 19 столбцов. Строки матрицы будут пронумерованы от 0 до 10, а столбцы – от 0 до 18. Обратите внимание, что при описании матрицы всегда сначала указывается номер последней строки, а потом – номер последнего столбца. Обратите внимание, что нумерация строк и столбцов матрицы всегда начинается с нуля независимо от способа ее объявления. Размеры этого массива тоже можно будет изменять в процессе выполнения программы с помощью оператораReDim.
Объем памяти, занимаемой матрицей, вычисляется как произведение числа строк, числа столбцов и объема памяти, который занимает одна переменная указанного типа данных. Вычислим объем памяти, необходимый для хранения матрицы b(,). В этой матрице 11 строк, 19 столбцов. Один элемент матрицы занимает 4 байта памяти, так как имеет типSingle. Перемножаем эти числа и получаем: 11 * 19 * 4 = 836 байт.
При обращении к отдельному элементу двумерного массива необходимо в круглых скобках указать оба индекса, разделив их запятой. Обратите внимание, что всегда сначала указывается номер строки, а затем – номер столбца. Нумерация всегда начинается с нуля.
b(3, 6) = 7.5
Для обработки двумерных массивов применяется специальная конструкция из двух циклов, один из которых находится в теле другого. Такая конструкция называется вложенные циклы. Она записывается следующим образом.
For i = 0 to 10
For j = 0 to 18
A(i, j) = i + j
Next
Next
На каждом шаге внешнего цикла (For i = 0 to 10) полностью выполняется внутренний цикл (For j = 0 to 18). Внешний цикл выполняется 11 раз, внутренний – 19. Следовательно, действие, находящееся в теле внутреннего цикла выполнится 11 * 19 = 209 раз. При организации вложенных циклов важно помнить, что счетчики внешнего и внутреннего циклов обязательно должны быть различными.