- •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
- •Список литературы
11. Использование подпрограмм
Любую сложную задачу можно представить как совокупность более простых подзадач, связанных между собой. Как правило, решение каждой подзадачи оформляется в виде самостоятельного законченного фрагмента программы. Такой фрагмент, оформленный определенным образом, называется подпрограммой.
11.1. Определение процедуры и функции. Описание процедуры и функции
Подпрограммы делятся на два класса: процедуры и функции. Сформулируем основные определения.
Процедура – самостоятельная часть программного кода, имеющая имя и параметры, выполняющая некоторую последовательность действий и изменяющая значения некоторых своих параметров.
Функция – это самостоятельная часть кода, имеющая имя и вычисляющая на основе своих параметров (аргументов) некоторое значение, которое затем передается вызывающей программе.
В свою очередь, процедуры делятся на общие процедуры и процедуры обработки событий. Процедура обработки события вызывается операционной системой после наступления конкретного события. Общая процедура начинает работать только после ее явного вызова. После выполнения общей процедуры происходит автоматический возврат управления в то место программы, откуда она была вызвана.
Параметры подпрограммы делятся на входные и выходные.
Входной параметр – это переменная, значение которой должно быть известно до начала работы программы. Она используется в процессе работы программы.
Выходной параметр – это переменная, значение которой вычисляется или изменяется в процессе работы подпрограммы. Заметим, что один и тот же параметр может одновременно быть и входным и выходным.
Рассмотрим синтаксические особенности описания процедур и функций.
Описание процедуры
Область видимости Sub Имя процедуры _
(Список параметров)
Операторы
End Sub
Область видимостизадается одним из двух ключевых слов:PrivateилиPublic. Она определяет доступность процедуры из других модулей проекта. Процедура, описанная какPrivate, доступна только в том модуле, в котором она описана. Процедура, описанная какPublic, доступна во всех модулях проекта.
Sub– ключевое слово Visual Basic 2005, показывающее, что данная подпрограмма является процедурой.
Имя процедуры– уникальное название процедуры, построенное по правилу имен (см. раздел 4.1), которое отличает данную подпрограмму от всех других элементов проекта.
Список параметров– это перечисленные через запятую входные и выходные параметры. Количество параметров может быть произвольным. Комбинация входных и выходных параметров может быть любой. У процедуры могут быть только входные параметры, могут быть только выходные параметры. Список параметров может вообще отсутствовать, но круглые скобки ставить все равно необходимо. Каждый параметр в списке описывается отдельно по следующей схеме.
Режим передачи Имя параметра As Тип данных
Режим передачипараметра определяет способ передачи данных в подпрограмму. Существует два способа передачи: по ссылке и по значению. Оба способа рассмотрены в разделе 11.2.
Имя параметра– уникальное имя переменной, отличающее этот параметр от других параметров данной подпрограммы.
Тип данныхпоказывает, к какому типу данных принадлежит данный параметр.
Начиная со следующей после заголовка процедуры строки, пишутся операторыподпрограммы, которые реализуют необходимую последовательность действий. Среди этих операторов могут встречаться два особых оператора:ReturnиExit Sub. Оба оператора немедленно прекращают выполнение данной подпрограммы и возвращают управление в вызывающую программу.
Описание процедуры заканчивается ключевым словосочетанием End Sub.
Описание функции
Область видимости Function Имя функции _
(Список параметров) As Тип результата
Операторы
Return Результат
End Function
Область видимостизадается одним из двух ключевых слов:PrivateилиPublic. Она определяет доступность функции из других модулей проекта. Функция, описанная какPrivate, доступна только в том модуле, в котором она описана. Функция, описанная какPublic, доступна во всех модулях проекта.
Function– ключевое слово Visual Basic 2005, показывающее, что данная подпрограмма является функцией.
Имя функции– уникальное название функции, построенное по правилу имен (см. раздел 4.1), которое отличает данную подпрограмму от всех других элементов проекта.
Список параметров– это перечисленные через запятую аргументы функции. Количество параметров может быть произвольным. Список параметров может отсутствовать. Круглые скобки в этом случае остаются пустыми, но все равно ставятся. Каждый аргумент в списке описывается отдельно по следующей схеме.
Режим передачи Имя параметра As Тип данных
Режим передачипараметра определяет способ передачи данных в подпрограмму. Существует два способа передачи: по ссылке и по значению. Оба способа рассмотрены в разделе 11.2.
Имя параметра– уникальное имя переменной, отличающее этот параметр от других параметров данной подпрограммы.
Тип данныхпоказывает, к какому типу данных принадлежит данный параметр.
После списка параметров указывается Тип результата, который возвращает функция. Эта часть описания является обязательной. Даже если отсутствует список параметров,Тип результатауказывать необходимо.
Начиная со следующей после заголовка функции строки, пишутся операторыподпрограммы, которые реализуют необходимую последовательность действий. Любая функция обязательно должна возвращать вычисленное значение в вызывающую программу. Это можно реализовать двумя способами.
С помощью оператора Return. После ключевого словаReturnчерез пробел указывается возвращаемое значение. Этот оператор немедленно прекращает выполнение данной функции и возвращает управление в вызывающую программу.
Результат можно вернуть в вызывающую программу, используя имя функции. В этом случае среди операторов функции должен быть следующий оператор присваивания.
Имя функции = Возвращаемый результат
Заметим, что данный оператор присваивания в отличие от оператора Returnне приводит к немедленному завершению функции.
Среди операторов, входящих в состав функции, может встречаться один особый оператор: Exit Function. Он немедленно прекращает выполнение данной функции, но не возвращает результат в вызывающую программу.
Описание функции заканчивается ключевым словосочетанием End Function.
Пример использования процедур и функций при решении задач рассмотрен в разделе 11.3.