- •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.3. Вычисление суммы и произведения элементов массива
Вычисление суммы и произведения всех элементов массива практически не отличается от аналогичных операций для обработки совокупности чисел (см. раздел 6.1.3). Вычисление происходит путем последовательного накопления значения. Начальное значение суммы – ноль, произведения – единица. На каждом шаге цикла к ранее накопленному значению суммы добавляется значение очередного элемента массива, а значение произведения умножается на значение текущего элемента массива. Рассмотрим особенности программной реализации данного алгоритма.
Объявляем переменные для суммы и произведения соответственно. Тип этих переменных должен всегда совпадать с типом элементов массива.
Dim summa, proiz As Integer
Задаем начальные значения для суммы и произведения.
summa = 0
proiz = 1
Организуем цикл для формирования суммы и произведения. Элементы массива последовательно пронумерованы от 0 до n. Следовательно, счетчик цикла должен изменяться в этом же диапазоне. Тогда наi-м шаге цикла мы будем обрабатывать элемент массива с номеромi.
For i = 0 To n
Добавляем очередной элемент массива к общей сумме.
summa += a(i)
Значение произведения умножаем на значение текущего элемента массива.
proiz *= a(i)
Next
После завершения цикла выводим полученные результаты. Сначала выводим горизонтальную черту, которая зрительно отделить исходные данные от полученных результатов.
lstA.Items.Add("-------------------------------")
Выводим значение накопленной суммы и поясняющий текст.
lstA.Items.Add("Сумма = " + Str(summa))
Выводим значение произведения и поясняющий текст.
lstA.Items.Add("Произведение = " + Str(proiz))
Полный текст программы представлен в приложении 22. Пример работы программы приведен на рис. 37.
Рис. 37.Пример работы программы вычисления суммы и произведения всех элементов массива
7.4. Определение количества элементов массива, удовлетворяющих некоторому условию
Определение количества элементов массива, удовлетворяющих некоторому условию, выполняется практически также как и при обработке совокупности чисел (см. раздел 6.1.3). До начала обработки массива количество нужных элементов полагается равным нулю. На каждом шаге цикла проверяем, соответствует ли данный элемент поставленному условию. Если значение элемента удовлетворяет условию, то искомое количество увеличивается на единицу. Рассмотрим особенности программной реализации данного алгоритма на примере задачи определения количества положительных элементов в массиве.
Объявляем переменную для хранения результатов вычислений. Так как количество элементов – всегда является целым числом, то эта переменная будет иметь тип Integer.
Dim kol As Integer
До начала анализа полагаем количество искомых элементов равным нулю.
kol = 0
Организуем цикл для определения количества положительных элементов. Элементы массива последовательно пронумерованы от 0 до n. Следовательно, счетчик цикла должен изменяться в этом же диапазоне. Тогда наi-м шаге цикла мы будем обрабатывать элемент массива с номеромi.
For i = 0 To n
На каждом шаге цикла проверяем, является ли текущий элемент массива положительным.
If a(i) > 0 Then
Если да, то количество положительных элементов увеличивается на единицу.
kol += 1
End If
Next
После завершения основного цикла выводим полученные результаты. Сначала выводим горизонтальную черту, чтобы зрительно отделить результаты от исходных данных.
lstA.Items.Add("-------------------------------")
Анализируем полученное значение.
If kol = 0 Then
Если количество положительных элементов равно нулю, значит, в массиве нет ни одного положительного элемента. В этом случае вместо ответа выводим поясняющий текст.
lstA.Items.Add("Нет положительных элементов")
Else
В противном случае выводим найденное количество положительных элементов.
lstA.Items.Add("Количество положительных =" + _
Str(kol))
End If
Полный текст программы представлен в приложении 23. Пример работы программы приведен на рис. 38.
Рис. 38. Пример работы программы определения количества положительных элементов в массиве