Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа5.doc
Скачиваний:
20
Добавлен:
25.11.2018
Размер:
2.46 Mб
Скачать

Условные алгоритмы

В практических задачах часто бывает необходимо обеспечить выбор одного из альтернативных путей работы алгоритма в зависимости от результатов проверки условия. В этом случае говорят о базовой алгоритмической конструкции – ветвлении. Оператор ветвления позволяет проверить некое условие и в зависимости от результатов проверки выполнить то или иное действие, т.е. он является средством ветвления вычислительного процесса.

Синтаксис оператора:

If <условие> Then

<инструкции_1>

[Else

<инструкции_2>

End If]

Здесь If, Then, Else, End If – зарезервированные слова VBA (если, то, иначе, конец ветвления);

<условие> – произвольное выражение логического типа;

< инструкции_1>, < инструкции_2> – любые операторы языка VBA.

Условный оператор работает по следующему алгоритму. Вначале вычисляется значение условного выражения <условие>. Если результат есть True (истина), то выполняются <инструкции_1>, а <инструкции_2> пропускаются. Если результат есть False (ложь), наоборот, <инструкции_1> пропускаются, а выполняются <инструкции_2>.

Часть условного оператора, начинающаяся со слова Else, может быть опущена, в этом случае имеет место неполная форма условного оператора. При этом, если условное выражение имеет значение True, выполняются инструкции, стоящие за Then; в противном случае весь оператор пропускается.

Задания:

  1. Для данного x вычислить значение функции:

Пример:

Sub Большее_из_двух ()

Dim A As Integer, B As Integer, C As Integer

A= Val (InputBox (“Введите число”, ”Ввод числа”))

B= Val (InputBox (“Введите число”, ”Ввод числа”))

If A>=B Then

C=A

Else

C=B

End If

MsgBox “Наибольшее число ”& C , ”Вывод результата”

End Sub

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

Цикл — многократное повторение последовательности действий по некоторому условию. В VBA существуют операторы, реализующие несколько типов циклов.

Цикл с предусловием (цикл-пока) — наиболее универсальная циклическая структура. Он организует выполнение операторов, составляющих тело цикла, неизвестное заранее число раз. Реализуется оператором While. Формат оператора:

Do While <условие>

<тело цикла>

Loop

Здесь Do, While, Loop – зарезервированные слова;

<условие> – выражение логического типа;

<тело цикла> – операторы VBA.

Алгоритм работы оператора следующий. Вначале вычисляется значение выражения <условие>. Если <условие> имеет значение True, выполняется <тело цикла>; после чего вычисление значения выражения <условие> повторяется. Если <условие> имеет значение False, оператор прекращает свою работу.

Таким образом, выход из цикла осуществляется, если логическое выражение принимает значение ложь. Истинность логического выражения проверяется вначале каждого прохождения цикла, поэтому тело цикла может не выполняться ни разу.

Цикл с постусловием (цикл-до) позволяет организовать многократное выполнение операторов, если число повторений заранее неизвестно.

Цикл с постусловием может быть записан в одном из следующих видов:

Do Until <условие>

<тело цикла>

Loop

или

Do

<тело цикла>

Loop Until <условие>

Здесь Do, Until, Loop – зарезервированные слова;

<условие> – выражение логического типа;

<тело цикла> – операторы VBA.

Оператор работает по следующему алгоритму. Вначале выполняется <тело цикла>, после чего вычисляется значение логического выражения <условие>. Если его значение есть False, операторы, образующие <тело цикла>, повторяются. В противном случае оператор завершает свою работу.

То есть выход из цикла осуществляется, если логическое выражение принимает значение True (истина). Поскольку значение логического выражения вычисляется в конце каждого прохождения цикла, тело цикла выполнится хотя бы один раз.

Цикл с параметром (цикл со счетчиком, цикл – для) служит для организации циклов с заранее известным числом повторений.

Синтаксис оператора:

For <параметр> = <начальное значение> To <конечное значение> [Step <шаг>]

<тело цикла>

Next

Здесь For, To, Step, Next – зарезервированные слова VBA;

<параметр> – простая переменная порядкового типа ;

<начальное значение> – выражение того же типа что и <параметр>, определяющее начальное значение параметра;

<конечное значение> – выражение того же типа, определяющее конечное значение параметра;

<шаг> – некоторое значение типа <параметр>, задающее, на сколько изменяется значение параметра при каждом проходе цикла;

<тело цикла> – операторы VBA.

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

При выполнении оператора вначале вычисляется значение выражения <начальное значение> и осуществляется присваивание <параметр> = <начальное значение>. После этого циклически повторяется:

- проверка условия <параметр> <= <конечное значение>, если значение выражения <шаг> задано и имеет положительное значение, или <параметр> >= <конечное значение>, если значение выражения <шаг> задано и имеет отрицательное значение;

- выполнение <тела цикла>;

- изменение значения переменной <параметр> на величину, указанную после слова Step; если <шаг> не указан, он полагается равным 1.

Задания:

  1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?

  2. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, б, 9, 12, .... 24 часа.

  3. Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии y м от стены. Определить значение синуса угла между палкой и полом для значений y, изменяющихся от 2 до 3 м с шагом h м.

  4. У гусей и кроликов вместе 64 лапы. Сколько могло быть кроликов и гусей (указать все сочетания, которые возможны)?

  5. Составить алгоритм решения задачи: сколько можно купить быков, коров и телят, платя за быка 10 р., за корову — 5 р., а за теленка — 0,5 р., если на 100 р. надо купить 100 голов скота?

  6. Покупатель должен заплатить в кассу S р. У него имеются 1, 2, 5, 10, 50, 100, 500 р. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных?

  7. Ежемесячная стипендия студента составляет А р., а расходы на проживание превышают стипендию и составляют В р. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

  8. Составить программу для проверки утверждения: “Результатами вычислений по формуле х2 + х + 17 при 0 < х < 15 являются простые числа”. Все результаты вывести на экран.

  9. Составить программу для проверки утверждения: “Результатами вычислений по формуле х2 + х + 41 при 0 < х < 40 являются простые числа”. Все результаты вывести на экран.

  10. Составить программу, которая запрашивает пароль (например, четырехзначное число) до тех пор, пока он не будет правильно введен.

Пример:

  1. Найти сумму всех четных чисел в первой десятке:

Sub Summa ()

Dim j As Integer, sum As Integer

For j = 2 To 10 Step 2

sum = sum + j

Next

MsgBox "Сумма равна " & sum

End Sub

  1. Написать программу, осуществляющий вывод на экран введенного числа после его проверки. Ввод должен завершиться, когда вводимое значение окажется положительным числом.

Sub Пример()

Dim d As Integer

Do

d = Val(InputBox("Введите положительное чиcло", "Ввод числа"))

Loop Until d > 0 And (IsNumeric(d))

MsgBox "Введеное число " & d

End Sub

  1. Найти максимальное из n введенных с клавиатуры чисел.

Sub Max_n_while()

Dim n As Byte, k As Single, i As Byte, Max As Single

n = Val(InputBox("Введите количество чисел"))

i = 1

Do While i <= n

k = Val(InputBox("Введите число", "Ввод чисел"))

If i = 1 Then Max = k

If k > Max Then Max = k

i = i + 1

Loop

MsgBox "Наибольшее из чисел " & Max

End Sub