Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Элементы программирования - методичка.doc
Скачиваний:
60
Добавлен:
06.03.2016
Размер:
449.02 Кб
Скачать

Оператор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

В этой процедуре, используя цикл с известным числом повторений ForNext, находим элемент массива, у которого первые три буквы совпадают с первыми тремя буквами введенного названия месяца в текстовое полеtxtНазвание.Тогда индекс этого элементаiи будет являться номером месяца. Следует отметить, что вместо полного названия месяца здесь можно ограничится введением первых трех букв названия. Все название при этом допишется автоматически.

Вывод. Алгоритм решения задачи, основанный на использовании операторов выбора кажется более простым, но приводит к написанию более объемных программ.

При отсутствии достаточного опыта программирования использование массивов для реализации алгоритма не очень очевидно, но программы получаются небольшими по объему.

Поэтому знание элементов программирования позволяет составить наиболее оптимальный алгоритм решения задачи.