- •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
- •Список литературы
6.1.1. Табуляция функции
Табуляция – это построение таблицы значений заранее заданной функции. Таблица строится на некотором отрезке изменения аргумента функции. Причем таблица строится не во всех точках отрезка, а только в некоторых. Существует два вида этой задачи.
В первом случае известно, что точки на отрезке расположены равномерно и расстояние между ними одинаковое. Первая точка совпадает с началом отрезка. Исходными данными при этом являются: начало и конец отрезка и расстояние между двумя соседними точками (оно называется шаг табуляции). Такая задача называется табуляция с известным шагом.
Во втором случае шаг табуляции неизвестен, но вместо него задано количество точек, расположенных на отрезке. Считается, что точки на отрезке расположены равномерно. Первая точка совпадает с началом отрезка, а последняя – с его концом. Исходными данными при этом являются: начало и конец отрезка и количество точек табуляции (другое название – количество узлов табуляции). Такая задача называется табуляция с известным числом узлов.
Рассмотрим первый случай – табуляция с известным шагом. Построим таблицу для следующей функции.
Возьмем отрезок , шаг табуляции обозначимh. Для ввода исходных данных будем использовать функциюInputBoxи предусмотрим проверку правильности исходных данных. Исходные данные будем считать правильными, если левая граница отрезка меньше правой, а шагh– положительный и не превышает длины отрезка. Результирующую таблицу значений будем выводить в окно спискаlstResult. Внешний вид разработанной формы представлен на рис. 25. Обратите внимание, что форма предназначена для обоих типов табуляции. Полный текст программы приведен в приложении 11.
Рис. 25.Экранная форма для задачи табуляции функции
Разработку программы начнем с объявления переменных. Все необходимые нам переменные имеют тип Single.
Dim a, b, h, x, y As Single
Для организации повтора ввода данных в случае обнаружения ошибки пред блоком ввода поставим метку.
vvod:
Вводим с клавиатуры значения переменных a,bиh. Так как все эти переменные являются числами, то при вводе необходимо использовать преобразованиеVal.
a = Val(InputBox("Введите начало отрезка"))
b = Val(InputBox("Введите конец отрезка"))
h = Val(InputBox("Введите шаг табуляции"))
Проверяем правильность исходных данных. Ошибочными будут ситуации, когда левая граница отрезка больше, чем правая (a > b), когда шаг меньше или равен нулю (h <= 0) или когда шаг больше длины отрезка (h > b - a).
If a > b Or h <= 0 Or h > b - a Then
При обнаружении ошибки выводим сообщение и передаем управление на метку, стоящую перед блоком ввода, обеспечивая таким образом повторный ввод исходных данных.
MsgBox("Неправильные данные")
GoTo vvod
End If
Если исходные данные введены верно, то переходим к построению таблицы значений функции. Сначала очищаем окно списка от предыдущих результатов работы программы.
lstResult.Items.Clear()
Затем выводим в окно списка заголовок таблицы. Использование константы vbTab позволяет формировать колонки таблицы.
lstResult.Items.Add("x" + vbTab + "y")
Организуем цикл, который будет последовательно вычислять значение функции в каждой точке. В качестве счетчика цикла используем переменную x, в которой хранится значение аргумента функции. В соответствии с условием задачи значение аргумента должно меняться в пределах заданного отрезка. Поэтому начальное значение счетчика (аргумента) совпадает с левой границей отрезка, а конечное – с правой. Шаг цикла совпадает с шагом изменения аргумента.
For x = a To b Step h
Перед вычислением значения функции необходимо проверить, попадает ли значения аргумента в область допустимых значений. Для нашей функции недопустимыми являются те значения аргумента, при которых становится отрицательным подкоренное выражение или обращается в ноль знаменатель дроби.
If x + 4 < 0 Or x = 0 Then
Если значение переменной xне принадлежит области допустимых значений, то в результирующей таблице вместо значения функции надо вывести слово «Ошибка». КонстантаvbTabиспользуется для формирования колонок таблицы.
lstResult.Items.Add(Str(x) + vbTab + _
"Ошибка")
Else
В противном случае, когда значение аргумент принадлежит области допустимых значений, вычисляем значение функции.
y = Math.Sqrt(x + 4) + 1 / x
В окно списка выводим значение аргумента и значение функции. Константа vbTabиспользуется для формирования колонок таблицы.
lstResult.Items.Add(Str(x) + vbTab + Str(y))
End If
Next
На этом разработка программы завершена. Пример ее работы при следующих исходных данных (a= -10, b= 10,h= 2) приведен на рис. 26.
Рис. 26.Пример работы программы табуляции функции
Задача табуляции с известным числом узлов решается практически аналогично. Для этого необходимо вычислить шаг между двумя узлами. Это делается по формуле
где n – количество узлов табуляции. Формула реализуется следующим образом.
h = (b - a) / (n - 1)
Эта строка вставляется непосредственно перед циклом For, и задача сводится к предыдущей. Текст программы табуляции функции с известным числом узлов приведен в приложении 12.