- •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
- •Список литературы
10. Тип данных, определенный пользователем. Структуры
При обработке информации часто возникает необходимость одновременного доступа к различным характеристикам объекта. При этом удобно, когда все характеристики объекта хранятся вместе в специально разработанной структуре. Поэтому в Visual Basic 2005 помимо массивов, представляющих собой нумерованный набор элементов одного типа, существует возможность создавать произвольные структуры данных, состав которых определятся программистом. Про такие типы данных говорят, что они определены пользователем, подразумевая при этом, что программист является пользователем среды и язык программирования. Как правило, типы данных, определенные пользователем (программистом) называют структурами или записями.
Структура – это непустая совокупность нескольких элементов, каждый из которых может иметь свой тип данных. Причем Visual Basic 2005 допускает использование одной структуры внутри дугой. Отдельный элемент структуры называется полем. Помимо полей структура может содержать еще различные подпрограммы. Подпрограммы, входящие в состав структуры называются методами.
10.1. Описание структуры. Область видимости. Понятие метода
Описание структуры должно располагаться в самом начале модуля перед описанием всех подпрограмм, глобальных и локальных переменных. Как правило, описание структуры располагают сразу после слов Public Class. Описывать структуры внутри программы или подпрограммы нельзя.
При описании структуры необходимо перечислить все ее поля, указав для каждого из них тип данных. Затем надо описать все методы, входящие в состав структуры. В общем случае описание структуры выглядит следующим образом.
ОбластьВидимости Structure ИмяСтруктуры
ОбластьВидимости ИмяПоля1 As ТипДанных
ОбластьВидимости ИмяПоля2 As ТипДанных
...
ОбластьВидимости ИмяПоляN As ТипДанных
Описание методов
End Structure
Имена структуры, полей и методов должны строиться в соответствии с общим правилом имен. В качестве типов данных при описании полей структуры могут использоваться любые типы данных, существующие в Visual Basic 2005, в том числе и ранее объявленные структуры.
Область видимости задается одним из двух ключевых слов: PrivateилиPublic. Она определяет доступность структуры, поля или метода из других частей проекта или программы. Структура, описанная какPrivate, доступна только в том модуле, в котором она описана. Структура, описанная какPublic, доступна во всех модулях проекта.
Поле, имеющее область видимости Private, доступно только внутри структуры. Если возникает необходимость обработать такое поле извне, то для этого в состав структуры включают специальные методы. Поле с областью видимостиРublicможет быть обработано вне структуры. При описании полей вместо ключевого словаPublicможно использовать ключевое словоDim. Для структур разница междуDimиPublicполями отсутствует.
Поле структуры может быть одномерным или многомерным массивом. В этом случае после имени поля ставятся круглые скобки. Если массив должен быть многомерным, то между скобками ставится необходимое количество запятых. Обратите внимание, что в составе структуры могут использоваться только массивы с неизвестным номером последнего элемента. Обработка массивов, являющихся полями структуры, ничем не отличается от обработки аналогичных массивов, описанных вне структуры.
В состав структуры мимо полей могут входить еще и методы. Метод – это подпрограмма, входящая в состав структуры и предназначенная для обработки полей только той структуры, где она описана. Поля других структур метод обрабатывать не может. Метод может быть как функцией, так и процедурой (подробное описание процедур и функций приведено в 11 главе). В зависимости от этого несколько меняется описание метода.
Описание метода-процедуры.
ОбластьВидимости Sub ИмяПроцедуры(Параметры)
Операторы
End Sub
Описание метода-функции.
ОбластьВидимости Function ИмяФункции(Параметры) _
As ТипРезультата
Операторы
Return Результат
End Function
Область видимости метода определяет, будет ли данный метод доступен вне структуры. Рublicметод предназначен для обработки полей структуры и может быть вызван из любой другой подпрограммы, в том числе и не принадлежащей данной структуре.Privateметод является вспомогательным и не может быть вызван извне структуры.
В качестве примера рассмотрим описание структуры, предназначенной для хранения информации о городах. Для каждого города требуется хранить его название, значения дневной и ночной температуры.
Чтобы эту структуру можно было использовать в других модулях программы, зададим для нее область видимости Public. А самой структуре дадим имяGorod.
Public Structure Gorod
Последовательно опишем все поля структуры. Для каждого данного заведем отдельное поле. Первым будет поле для хранения названия города. Очевидно, что это поле будет иметь строковый тип данных.
Public Nazvanie As String
Два следующих поля предназначены соответственно для хранения дневной и ночной температуры. Они имеют целый тип.
Public Den As Integer
Public Noch As Integer
Для удобства работы включим в состав структуры два метода-функции. Первый из них предназначен для упрощения вывода структуры. Он формирует и возвращает строку, в которую входят значения всех полей. Для формирования колонок используется константа vbTab. Числовые поля преобразуются в строки с помощью функцииStr. Строковые поля преобразовывать не надо.
Public Function Print() As String
Return Nazvanie + vbTab + Str(Den) + _
vbTab + Str(Noch)
End Function
Второй метод предназначен для вычисления среднесуточной температуры в городе. Для этого складываются значения дневной и ночной температур, и полученная сумма делится на два. Очевидно, что значение среднесуточной температуры, полученное в результате деления, будет рациональным числом. Следовательно, эта функция должна иметь рациональный тип результата.
Public Function Srednee() As Single
Return (Den + Noch) / 2
End Function
End Structure