Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информ..docx
Скачиваний:
32
Добавлен:
26.04.2019
Размер:
413.7 Кб
Скачать

21)Условный оператор if…then

If ... Then — линейный и блочный.

Линейный оператор чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным.

Синтаксическая конструкция

If <Условие> Then <Оператор_1> Else <Оператор_2>

При значении Условия = True выполняется Оператор_1, следующий за словом Then, а затем следующий за условным оператор. Если Условие принимает значение False, то выполняется следующий за Else оператор Оператор_2. Else может отсутствовать, тогда оператор называется безальтернативным и, если Условие= True, то выполняется Оператор_1, а затем следующий за условным оператор. Если Условие= False, а выполняется следующий оператор.

Блочный оператор имеет синтаксис:

If <Условие_1> Then

<Операторы_1, если Условие=True>

[ElseIf <Условие_2> Then

<Операторы_2, если Условие_2=True>]

[ElseIf <Условие_3> Then

<Операторы_3, если Условие_3=False>]

[Else

<Операторы>]

End If

<Условие_1> – необходимая часть оператора, это то Условие, которое должно проверяться. Если значение этого условия True, то выполняется Операторы_1 следующие за словом Then. Если необходимо проверить еще условия, то добавляется зарезервированное слово ElseIf с последующим условием. Если Условие_2=True, то выполняются Операторы_2. Если необходимы еще условия, то добавляются еще структура ElseIf и если все Условия не выполняются, то выполняются Операторы следующие за словом Else.

Операторы If могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является True и включить альтернативу Else.

Задача 6 (алгоритм ветвления) Найти наибольшее из трех чисел a,b и c. Составить программу.

Решение

Дано: три числа a, b, c.

Найти: наибольшее из трех чисел.

Набирать процедуру на месте курсора:

Private Sub CommandButton1_Click()

Dim a, b, c As Single

Dim max As Single

’Ввод данных

a = Range("A1").Value

b = Range("B1").Value

c = Range("C1").Value

’Вычисление

If a > b And a > c Then

max = a

Else

If b > c Then

max = b

Else

max = c

End If

End If

’Вывод результатов в ячейку B4

Range("B4").Value = "Максимальное число = " & max

End Sub

23)Операторы цикла

Цикл — представляет собой многократно повторяющуюся последовательность операторов. Операторы повторяются конечное число раз до выполнения условия

Циклы со =циклы For, или циклами For … Next. Синтаксис цикла For … Next таков:

For Счетчик = Начало To Конец [Step Шаг]

Операторы

[Exit For]

[Операторы]

Next [Счетчик],

где For – зарезервированное слово VBA, обозначающее начало цикла; Счетчик – переменная, определенная в качестве счетчика цикла, при первом выполнении циклв принимает значение Начало и каждый раз при выполнении оператора Next увеличивается на величину, заданную параметром Шаг; To – зарезервированное слово VBA, разделяющее значения Начало и Конец; Step – зарезервированное слово VBA, используемое для задания шага цикла, необязательный аргумент; Шаг – число, задающее значение, на которое увеличивается

Exit For – оператор экстренного выхода из цикла; Next – зарезервированное слово VBA, обозначающее конец цикла.

Step отсутствует, то значение шага равен единице.

пример

Составить программу вычисления суммы и произведения числовой

последовательности. ,

Дано: начало a и конец n суммирования и произведения.

Найти: Sum, Pr.

Private Sub CommandButton1_Click()

Dim a, n, h, i As Integer

Dim Sum, Pr, b As Single

'Ввод данных

a = Range("A1").Value

n = Range("B1").Value

h = Range("C1").Value

'Вычисления

Sum = 0

Pr = 1

For i = a To n Step h

b = Sin(2 * i + 0.4)

Sum = Sum + b

Pr = Pr * b

Next i

’Вывод результатов в ячейки B4 и B5

Range("B4").Value = "Сумма = " & Sum

Range("B5").Value = "Произведение = " & Pr

End Sub

Программирование цикла с условием

Циклы с условием применяются , когда число повторений неизвестно, а некоторые действия в программе должны повторяться до тех пор, пока выполняется определенное условие или до тех пор, пока не будет выполнено определенное условие. Условием может быть любым выражением, принимающим значение True (Истина) или False (Ложь). В VBA есть два основных цикла с условием — цикл Do While ... Loop и цикл Do Until ... Loop. Оба они могут быть с предусловием или с постусловием.

Циклы Do While | Until имеют следующий синтаксис:

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

Do While | Until <Условие>Операторы [Exit Do]Loop

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

Операторы[Exit Do]Loop While | Until <Условие>,

где Do — зарезервированное слово VBA, указывающее на начало цикла; While|Until — зарезервированные слова VBA, если используется While -> цикл выполняется, если <Условие> принимает значение True и заканчивает свою работу, если <Условие> принимает значение False. Если используется Until -> цикл выполняется, если <Условие>=False и заканчивает свою работу, если <Условие>=True; <Условие> — логическое выражение, принимающее значение True или False; Loop — зарезервированное слово VBA, указывающее на окончание цикла.

Цикл с предусловием и Цикл с постусловием отличаются тем, что Цикл с постусловием выполняется хотя бы один раз до проверки <Условие>, а Цикл с предусловием может не выполняться ни разу, если не выполняется <Условие>.

Для заданного найти наименьшее n такое, что 2n/n!< . Вывести все члены последовательности от 1-го до n-го.

u = 1 'первый множитель

n = 0 'количество шагов

Range("C1:E20").Clear

Do Until (u < Eps) Or (n >= Limit)

n = n + 1

q = 1

For i = 1 To n

q = q * i

Next i

u = 2 ^ n / q 'очередной множитель

Cells(n, 4).Value = n

Cells(n, 5).Value = u

Loop

но при таких вычислениях может быстро накапливаться ошибка и мы можем получить не верный результат.

Обратим внимание, что

u1=2\1/1!,

u2=2\2/2!=2*2/(1*2)= u1*21/2,

u3=2\3/3!=22*2/(1*2*3)= и2*2/3 и т.д,

т.е. у нас возникает множитель 2/n, умноженный на значение предыдущего шага.

Нам необходимо учесть, что число шагов может быть невообразимо много, поэтому мы введет константу для ограничения шагов Limit = 100.

Public Sub Степень_двух()

'Описание констант

Const Limit As Integer = 100

'Описание переменных

Dim Eps As Single

Dim u As Single

Dim u1 As Single

Dim n As Integer

'Ввод переменных

Eps = Range("b1").Value

'Задание начальных значений

u = 1 'первый множитель

n = 0 'количество шагов

Range("C1:E20").Clear

'Вычисление значений

Do Until (u < Eps) Or (n >= Limit)

Cells(n, 4).Value = n

u1 = u

u = u1 * 2 / n 'очередной множитель

n = n + 1

Cells(n - 1, 5).Value = u

Loop

'Вывод результатов

Range("A6:A7").Clear

If n >= Limit Then

Range("A7").Value = n & " шагов не хватило для достижния точночти."

End If

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]