• Ешқандай Нәтиже Табылған Жоқ

РАЗДЕЛ 1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ. ЛЕКЦИОННЫЙ КУРС ПО

1.4 Выбор в программе, организация циклов

Выбор в программе выполняют условные операторы. Условные опера- торы помогают осуществить «ветвление» программы, т.е. передать управле- ние по условию, на ту или иную «ветку» - это может быть фрагмент текста, процедура, подпрограмма или даже другой модуль.

Виды условных операторов Visual Basic:

If ... Then ... Else ...

Select ... End Select

Ветвление If ... Then ... Else

31

Этот оператор обычно используется, когда проверяется одно или два условия в программе. Конструкцию If ... Then ... Else ...(Если ... Тогда ... Ина- че ...) можно записать в одном из двух форматов - блочном (в несколько строк) и линейном (в одной строке).

Линейный формат:

If логич_выражение Then блок_команд_1 [Else блок_команд_2]

Если логич_выражение принимает значение «истина», выполняется блок_команд_1, иначе выполняется блок_команд_2. Else можно опустить, в этом случае, , если логич_выражение ложно, блок_команд_1 просто пропус- кается (рис. 1.3).

Пример 1:

Если значение переменной А больше нуля, то вычислить А2, иначе - вычислить А3

If A>0 Then S= A^2 Else S=A^3 Пример 2:

Если значения переменных А и В равны между собой , то прервать выполнение процедуры

If A=B Then Exit Sub

Рисунок 1.3 - Блок-схема организации условного оператора

32

Блочный формат:

If логич_выражение_1 Then блок_команд_1

[ElseIf логич_выражение_2 Then блок_команд_2

...

[Else

блок_команд_n End If

Если логич_выражение_1 принимает значение «истина», выполняется блок_команд_1, иначе, если логич_выражение_2 истинно, выполняется блок_команд_2 и т.д. Если ни одно условие не удовлетворяется, то выполня- ется блок_команд_n, следующий за Else.

Пример 1:

Если значения переменных А и В положительны, то вывести их сумму и произведение, в противном случае - вывести сообщение об ошибке.

If A>0 And B>0 Then Print A+B

Print A*B Else

Print «ошибка»

End If Пример 2:

Если значение переменной В меньше 10, то увеличить его в 2 раза, если значение от 10 до 20, то увеличить в 3 раза, в остальных случаях - уменьшить в 10 раз.

If B<10 Then B=B*2

ElseIf B>=10 And B<=20 Then B=B*3

Else B=B/10 End If

Оператор множественного выбора Select Case

Используется при необходимости осуществить проверку более слож- ных условий.

Формат команды

Select Case арифм_выражение или симв_выражение

33

Case условие 1 блок команд 1 Case условие 2 блок команд 2 ...

Case Else блок команд n End Select

В поле операндов Select Case записывается произвольное арифметиче- ское выражение или символьное выражение, которое в процессе выполнения программы принимает то или иное числовое, логическое или символьное значение.

В поле операндов каждого оператора Case надо указать условие в од- ном из трех форматов:

1. Case константа_1, константа_2,...

2. Case Is знак_отношения константа

3. Case константа_1 To константа_2

Алгоритм множественного выбора заключается в следующем. Сначала вычисляется значение выражения, записанного в Select Case. Далее проверя- ется, удовлетворяет ли это значение одному из указанных в Case условий.

Если значение удовлетворяет какому-то условию, выполняется блок команд, следующий за данным Case. Если ни одно условие не удовлетворяется, вы- полняется блок команд, следующий за Case Else. При выполнении того или иного блока команд управление передается команде, следующей за End Se- lect.

Пример:

Input A

Select Case A Case 1,5

Print «А равно 1 или 5»

Case Is >5

Print «А больше 5»

Case -8 TO 2.5

Print «А не меньше -8, но не больше 2.5»

Case Else

Print «Ни одно условие не выполняется»

End Select

Цикл - это многократно повторяемая часть программы.

В языке Visual Basic предусмотрено два основных способа организации циклов:

− повторение блока команд заданное количество раз (цикл со счетчи- ком);

34

− циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие.

Цикл со счетчиком For ...Next (Для ... Следующий)

Цикл For ... Next - это цикл с заранее заданным количеством повторе- ний.

For переменная_цикла=нач_значение To конеч_значение [Step шаг]

блок_команд

Next переменная_цикла

В поле операндов оператора For указываются:

− числовая переменная, которая называется счетчиком или перемен- ной цикла.

− начальное и конечное значение счетчика.

Если необходимо, укажите шаг изменения счетчика по окончании каж- дого цикла (по умолчанию этот шаг равен 1).

Конструкция завершается оператором Next.

Принцип работы оператора:

Переменной цикла присваивается начальное значение, после этого пер- вый раз выполняется блок команд (тело цикла). Оператор NEXT увеличивает текущее значение переменной цикла на величину шага , и, если новое значе- ние переменной цикла не превышает заданное конечное значение, в очеред- ной раз выполняется блок команд.

Пример 1:Вывести 10 раз текст «привет»

For I=1 To 10 Print «привет»

Next I

Пример 2: Вывести все четные натуральные числа от 10 до 20.

For K=10 To 20 Step 2 Print K

Next K

Можно выйти из цикла не дожидаясь выполнения всех повторений при помощи оператора Exit For. Управление будет передано на оператор, стоя- щий после Next.

С помощью For ... Next можно организовывать вложенные циклы - каждый со своим For, Next и счетчиком.

Универсальный цикл Do ...Loop (Делать ... Цикл)

Наиболее гибкий и универсальный способ организации цикла по усло- вию обеспечивает конструкция Do ...Loop. Конструкция имеет четыре фор- мата:

35

Циклы с предусловием.

1. Do While логич_выражение блок_команд

Loop (рис.1.4)

Рисунок 1.4 – Блок-схема алгоритма с предусловием

2. Do Until логич_выражение блок_команд

Loop

Циклы с постусловием

При первом входе условие не проверяется, поэтому блок_команд будет выполнен хотя бы один раз (рис. 1.5).

3 . Do блок_команд

Loop While логич_выражение

Блок_команд выполняется до тех пор, пока значение ло- гич_выражения истинно.

Блок_команд выполняется до тех пор, пока значение логич_выражения ис- тинно.

36

Рисунок 1.5 – Блок-схема алгоритма с постусловием 4. .Do

блок_команд

Loop Until логич_выражение

Можно выйти из цикла не дожидаясь выполнения всех повторений при помощи оператора Exit Do. Управление будет передано на оператор, стоя- щий после Loop.

Решение нелинейного уравнения методом половинного деления

Целью данной работы является приобретение навыков решения задач итерационными методами, в частности решение нелинейных уравне- ний

методом половинного деления, используя конструкцию DO WHILE…LOOP.

Метод половинного деления (или дихотомии)

При решении нелинейного уравнения методом половинного деления задаются интервал [a,b], на котором существует только одно решение, и же- лаемая точность ε (рис. 1.6).

Постановка задачи.

Пусть функция y=f(x) определена и непрерывна на отрезке [a; b].

f(a)*f(b)<0

Требуется найти корень на отрезке [a; b] с точностью 0,00001 . Последовательность решения задачи.

Для реализации алгоритма дихотомии отрезок [a; b] делится пополам точкой c = (a + b)/2 (рис. 1).

Если f(c) не равно 0, то возможны два случая:

а) f(x) меняет знак на отрезке [a; c];

б) f(x) меняет знак на отрезке [c; b].

Выбираем тот отрезок, на котором функция меняет знак. Если f(x)

Блок_команд выполняется до тех пор, пока значение логич_выражения лож- но.

37

меняет знак на отрезке [a; c], то b=c; если f(x) меняет знак на отрезке [c;b], то a=c.

Деление отрезка пополам продолжается пока |b-a|>ε . Корень уравнения: x = (a + b)/2

Рисунок 1.6 – Блок-схема алгоритма решения нелинейного уравнения методом половинного деления

38

Алгоритм решения нелинейного уравнения методом половинного деления

Результат решения нелинейного уравнения методом половинного деле- ния отображен на форме и представлен на рисунке 1.7.

39

Рисунок 1. 7 - Результат решения нелинейного уравнения методом по- ловинного деления