- •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
- •Список литературы
8.1. Ввод прямоугольной матрицы
Ввести матрицу – значит, задать ее размеры и указать значения всех ее элементов. Как и при обработке одномерного массива, значения элементов матрицы можно задавать двумя способами: вводя значения с клавиатуры или пользуясь генератором случайных чисел. Рассмотрим особенности программной реализации первого способа.
Задание значений элементов массива с клавиатуры – это самый распространенный способ ввода массива. Он состоит из двух этапов. На первом шаге указывается количество элементов в массиве и соответствующим образом переопределяется размер массива. На втором шаге организуется цикл, на каждом шаге которого вводится значение одного элемента. Рассмотрим особенности программной реализации этого алгоритма.
Сначала описывается целочисленная матрица a(,). Так как ее размеры заранее неизвестны, то при описании матрицы номера последней строки и столбца не указываются.
Dim a(,) As Integer
Для работы с матрицей нам необходимо знать ее размеры. Они будет храниться в переменных mиn. Число строк – в переменнойm, число столбцов – в переменнойn. Обе этих переменных будут иметь целочисленный тип данных.
Dim m, n As Integer
Поскольку для обработки матрицы нам потребуется два цикла For, то нам необходимо описать два счетчикаi и j. Очевидно, что обе эти переменных всегда будут иметь целый тип.
Dim i, j As Integer
Задание матрицы начинается с определения ее размеров. Мы просим пользователя указать число строк в матрице. Так как это количество может быть только положительным, то при вводе этого значения необходима проверка, которую мы организуем с помощью цикла Do Loop Until.
Do
m = Val(InputBox("Введите количество строк"))
Loop Until m > 0
Аналогичным образом вводится число столбцов матрицы.
Do
n = Val(InputBox("Введите количество столбцов"))
Loop Until n > 0
В Visual Basic 2005 нумерация элементов любого массива (в том числе и двумерного) всегда начинается с нуля. Следовательно, номера последней строки и последнего столбца будут на единицу меньше соответствующего количества. Поэтому уменьшаем значения переменных mиnна единицу. Теперь в них хранятся не количества строк и столбцов, а номера последней строки и последнего столбца матрицы.
m -= 1
n -= 1
Задаем размер матрицы a(,), указывая в оператореReDimномера последней строки и последнего столбца. При этом порядок перечисления переменных имеет значение.
ReDim a(m, n)
Для ввода значений элементов матрицы нам потребуется организовать вложенные циклы. Строки матрицы последовательно пронумерованы от 0 до m, а столбцы от 0 доn. Следовательно, счетчики обоих циклов должны изменяться в этих же диапазонах. Внешний цикл будем использовать для последовательной обработки строк матрицы, а внутренний – для работы с элементами, находящимися в пределах одной строки. В таких случаях говорят, что внешний цикл идет по строкам матрицы, а внутренний – по столбцам. В результате наi-м шаге внешнего цикла мы будем работать сi-й строкой матрицы, а наj-м шаге внутреннего цикла обрабатывать элемент, стоящий вi-й строке иj-м столбце.
For i = 0 To m
For j = 0 To n
С помощью функции InputBoxвводим значение элементаa(i, j). Так как вводимое значение является числом, то используем преобразованиеVal.
a(i, j) = Val(InputBox("Введите элемент (" + _
Str(i) + "," + Str(j) + ")"))
Next
Next
Полный текст программы представлен в приложении 37.