- •Введение
- •Основные элементы программирования
- •1. Переменные, оператор присваивания
- •Определение переменной
- •Имена переменных
- •Типы данных
- •Объявление переменных
- •Оператор присваивания
- •Область видимости переменных
- •Область видимости переменных и их объявление
- •2. Константы
- •3. Массивы
- •4. Математические операторы
- •5. Обработка числовых данных
- •6. Обработка строк
- •7. Процедуры
- •ПроцедурыSub
- •Процедуры Function
- •[Private|Public] [Static] Function ИмяПроцедуры(Аргументы) [As type]
- •Создание процедур
- •8. Операторы управления
- •Операторы передачи управления
- •Условные выражения
- •Операторы выбора
- •Переключатели
- •9. Операторы цикла
- •Оператор цикла For…Next
- •Операторы цикла Do…Loop
- •ОператорExit
- •10. Элементы программирования и алгоритмы
- •Содержание
ОператорExit
Оператор Exit используется для выхода из цикловExit For,Exit Do, а также из процедуры Exit Sub, при выполнении некоторого условия.
При выходе из цикла управление передается в строку кода, следующую за циклом.
Такой выход из циклов и из процедур можно организовать также с помощью оператора безусловного перехода GoToи метки. В этом случае управление будет передаваться в строку кода с меткой, и это может быть любая строка программы, где будет поставлена метка.
Пример 9.17. Определение индекса первого отрицательного элемента одномерного массива А(103).
Первый вариант сExitFor(фрагмент программы):
For i = 1 To 103
If A(i) < 0 Then Ind = i: Exit For
Next i
b = Sin(x) + A(Ind) / 100 ‘продолжение программы после
‘ выполнения оператора Exit For
Второй вариант (без Exit For):
For i = 1 To 103
If A(i) < 0 Then Ind = i: GoTo P1
Next i
P1: b = Sin(x) + A(Ind) / 100‘продолжение программы после
‘ выполнения оператора GoTo P1
Результат работы этих фрагментов программы будет одинаков.
10. Элементы программирования и алгоритмы
В заключение разберем простую задачу, чтобы показать, как знание элементов программирования позволяет реализовать разные алгоритмы при решении одной и той же задачи и, следовательно, разработать и разные программы.
Задача 10.1. По номеру месяца определять его название, а по названию месяца определять его номер.
При разработке алгоритма этой задачи первое, что приходит на ум, это использовать операторы выбора – условный оператор If…Then…ElseIf…EndIfили оператор выбораSelectCase.
Размещаем на форме 4 элемента управления: 2 этикеты с надписями и 2 текстовых поля для ввода (или вывода) номера месяца и его названия. Форма будет выглядеть следующим образом:
Событийные процедуры напишем для событийChange(Изменение) текстовых полей, которые назовем:txtНомер,txtНазвание. В результате, после ввода номера месяца сразу появится название месяца. А после ввода названия сразу появится его номер.
Процедура для получения номера месяца после ввода названия, написанная с использованием условного оператора, будет иметь вид:
Private Sub txtНазвание_Change()
Dim Name As String
Name = txtНазвание
If Name = "январь" Then
txtНомер = 1
ElseIf Name = "февраль" Then
txtНомер = 2
ElseIf Name = "март" Then
txtНомер = 3
ElseIf Name = "апрель" Then
txtНомер = 4
ElseIf Name = "май" Then
txtНомер = 5
ElseIf Name = "июнь" Then
txtНомер = 6
ElseIf Name = "июль" Then
txtНомер = 7
ElseIf Name = "август" Then
txtНомер = 8
ElseIf Name = "сентябрь" Then
txtНомер = 9
ElseIf Name = "октябрь" Then
txtНомер = 10
ElseIf Name = "ноябрь" Then
txtНомер = 11
ElseIf Name = "декабрь" Then
txtНомер = 12
End If
End Sub
Процедура для получения названия месяца после ввода номера, написанная с использованием переключателя, будет иметь вид:
Private Sub txtНомер_Change()
Dim номер As Integer
номер = txtНомер
Select Case номер
Case 1: txtНазвание = "январь"
Case 2: txtНазвание = "февраль"
Case 3: txtНазвание = "март"
Case 4: txtНазвание = "апрель"
Case 5: txtНазвание = "май"
Case 6: txtНазвание = "июнь"
Case 7: txtНазвание = "июль"
Case 8: txtНазвание = "август"
Case 9: txtНазвание = "сентябрь"
Case 10: txtНазвание = "октябрь"
Case 11: txtНазвание = "ноябрь"
Case 12: txtНазвание = "декабрь"
End Select
End Sub
Другой вариант решения задачи состоит в следующем. В области GeneralDeclarationsмодуля формы объявляем локальный вмодуле формымассивMonth(12) с названиями месяцев. Инициализация этого массива происходит при загрузке формы (процедураForm_Load()).
Dim Month(12) As String
Private Sub Form_Load()
Month(1) = "январь": Month(2) = "февраль": Month(3) = "март"
Month(4) = "апрель": Month(5) = "май": Month(6) = "июнь"
Month(7) = "июль": Month(8) = "август": Month(9) = "сентябрь"
Month(10) = "октябрь": Month(11) = "ноябрь": Month(12) = "декабрь"
End Sub
Процедура для определения названия месяца по его номеру имеет вид:
Private Sub txtНомер_Change()
Dim номер As Integer
номер = Val(txtНомер)
If номер >= 1 And номер <= 12 Then
txtНазвание = Month(номер)
Else
txtНазвание = ""
End If
End Sub
Поясним коды процедуры. После присвоения переменной номериз текстового поляtxtНомер номера месяца проверяется, находится ли номер месяца в пределах [1,12]. Если номер месяца находится в допустимых пределах, то название месяца заносим в текстовое полеtxtНазвание. Название соответствующего месяца хранится в элементе массиваMonth(номер), где индекс элемента совпадает с номер месяца.
Процедура для определения номера месяца по его названию имеет вид:
Private Sub txtНазвание_Change()
Dim i As Integer
If txtНазвание = "" Then txtНомер = ""
For i = 1 To 12
If Left(Month(i), 3) = Left(txtНазвание, 3) Then _
txtНомер = i: Exit For
Next i
End Sub
В этой процедуре, используя цикл с известным числом повторений For…Next, находим элемент массива, у которого первые три буквы совпадают с первыми тремя буквами введенного названия месяца в текстовое полеtxtНазвание.Тогда индекс этого элементаiи будет являться номером месяца. Следует отметить, что вместо полного названия месяца здесь можно ограничится введением первых трех букв названия. Все название при этом допишется автоматически.
Вывод. Алгоритм решения задачи, основанный на использовании операторов выбора кажется более простым, но приводит к написанию более объемных программ.
При отсутствии достаточного опыта программирования использование массивов для реализации алгоритма не очень очевидно, но программы получаются небольшими по объему.
Поэтому знание элементов программирования позволяет составить наиболее оптимальный алгоритм решения задачи.