
- •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
- •Список литературы
5.11. Пример. Программа-калькулятор
Рассмотрим программу, имитирующую работу калькулятора. Исходными данными являются два числа и знак операции. Программа должна выполнять следующие действия: сложение (+), вычитание (-), умножение (*), деление (/), вычисление остатка от деления (%), целочисленное деление (\). Также необходимо реализовать повтор ввода исходных данных и вычислений по желанию пользователя.
Так же как в предыдущей программе для ввода исходных данных будем использовать функцию InputBox, а дл вывода результатов – функциюMsgBox. Поэтому на форме расположен только один элемент управления – это кнопка, запускающая программу.
Разработку программы начнем с описания переменных. Переменные aиbпредназначены для хранения пары чисел, над которыми выполняется операция. Так как исходные числа могут быть любыми, то для их хранения необходимо использовать рациональный тип данных. Например,Single. В переменной c будет храниться результат арифметической операции. Так как все действия мы будем выполнять над рациональными числами, то результат тоже будет рациональным числом. Поэтому переменнаястоже будет иметь типSingle.
Dim a, b, c As Single
Переменная znak предназначена для хранения знака операции. Знак операции – это символ. Поэтому переменная znak имеет тип Char.
Dim znak As Char
Переменная otvet предназначена для хранения результата функции MsgBox. Эта переменная позволит нам определить, желает ли пользователь повторить вычисления.
Dim otvet As Integer
В начале программы ставим метку nachalo. Она позволит нам организовать повтор ввода значений и вычисления результата.
nachalo:
Вводим исходные числа. Как всегда при вводе числовой информации используем преобразованиеVal.
a = Val(InputBox("Введите число a"))
b = Val(InputBox("Введите число b"))
Вводим знак операции. Так как знак операции является символом, то при его вводе дополнительных преобразований не требуется.
znak = InputBox("Введите знак операции (+ - * / % \")
Анализируем знак операции. В зависимости от его значения выполняем те или иные вычисления. Обратите внимание, что символы указываются в кавычках.
Select Case znak
Case "+"
Здесь выполняется операция сложения.
c = a + b
MsgBox("c=" + Str(c))
Case "-"
Здесь выполняется операция вычитания.
c = a - b
MsgBox("c=" + Str(c))
Case "*"
Здесь выполняется операция умножения.
c = a * b
MsgBox("c=" + Str(c))
Case "/"
Здесь выполняется операция деления. Но перед вычислением необходимо проверить, равен ли знаменатель нулю.
If b = 0 Then
Если в переменной b хранится ноль, то деление невозможно. Поэтому вместо ответа выводится сообщение.
MsgBox("Ошибка! Деление на ноль")
Else
В противном случае вычисляется частное чисел a и b и выводится результат.
c = a / b
MsgBox("c=" + Str(c))
End If
Case "\"
Операция целочисленного деления выполняется по таким же правилам, как и простое деление. Так как исходные переменные рациональные, то перед выполнением целочисленного деления Visual Basic 2005 автоматически произведет математическое округление чисел до целых.
If b = 0 Then
MsgBox("Ошибка! Деление на ноль")
Else
c = a \ b
MsgBox("c=" + Str(c))
End If
Case "%"
При вычислении остатка от деления действуют те же правила, что и при делении. Исходные числа, так же как и в предыдущем случае, автоматически округляются до целых.
If b = 0 Then
MsgBox("Ошибка! Деление на ноль")
Else
c = a Mod b
MsgBox("c=" + Str(c))
End If
Case Else
Если выполнение программы попало в этот блок, значит, знак операции введен с ошибкой. Поэтому здесь не выполняются никакие вычисления, а выводится поясняющее сообщение.
MsgBox("Неизвестный знак операции")
End Select
После окончания вычислений спрашиваем пользователя, желает ли он выполнить еще один расчет, и предлагаем ему два варианта ответа: «Да» и «Нет». Для этого в функции MsgBox второй параметр задаем в виде 32 + 4. 32 определяет пиктограмму со знаком вопроса, а 4 – набор кнопок «Да» и «Нет». Результат функции MsgBox записываем в переменную otvet для дальнейшего анализа.
otvet = MsgBox("Выполнить еще один расчет?", 32 + 4)
Анализируем ответ пользователя. Если он нажал кнопку «Да», то в переменную otvet будет записано число 6. В этом случае надо передать управление в начало программы. Для этого мы заранее поставили там метку nachalo.
If otvet = 6 Then
GoTo nachalo
End If
Программа закончена. Ее текст приведен в приложении 10.