Программирование алгоритмов разветвляющейся структуры

Алгоритм разветвляющейся структуры – это алгоритм такого процесса, в котором его реализация осуществляется по одному из заранее предусмотренных (возможных) направлений в зависимости от исходных условий или промежуточных результатов. Каждое отдельное направление обработки информации в таком процессе называется ветвью. Выбор ветви определяется проверкой выполнения логического условия, определяющего свойства исходных данных или промежуточных результатов. В каждом конкретном случае процесс обработки данных выполняется лишь по одной из ветвей. Для их реализации используются операторы управления порядком выполнения команд, рассмотренные выше.

Пример. Дано действительное число x. Вычислить y.

Программа.

Sub Raz2()

Dim x, y As Double

x = Val(InputBox("Введите x")) 'ввод значения переменной x

If x > 0 Then y = Sin(x) Else y = 2 * x

MsgBox ("Значение y=" + Str(y#))

End Sub

Пример. Дано действительное число x. Вычислить y.
Программа

Sub Raz3()

Dim x, y As Double

x = Val(InputBox("Введите x"))

If x < 0.1 Then y = Cos(x ^ 2) Else If x > 0.1 Then y = Exp(x) Else y = x ^ 3 - 2

MsgBox ("Значение y=" + Str(y#))

End Sub

Пример. Даны три числа. Выяснить, существует ли треугольник с такими сторонами.

Программа

Sub Treug()

Dim a, b, c As Double

a = Val(InputBox("Введите сторону a"))

b = Val(InputBox("Введите сторону b"))

c = Val(InputBox("Введите сторону c"))

If (a + b) > c And (b + c) > a And (a + c) > b Then MsgBox ("Треугольник существует") Else MsgBox ("Треугольник не существует") ‘оператор печатать в одной строке

End Sub

Пример. Дано действительное число x. Вычислить z,y,h, если известно, что

Программа

Sub Raz3()

Dim x, z, y, h As Double

x = Val(InputBox("Введите x"))

If x > 0.8 Then

z = 2 * Sin(x)

y = Log(x) + 4 * x

h = Cos(x)

Else

If x = 0.8 Then

z = Sqr(Sin(x))

y = Cos(x ^ 2) + x

h = 2 * x

Else

z = Abs(x - 2)

y = 2 + x ^ 2 * Sin(x)

h = 0

End If

End If

Cells(1, 1) = "x=": Cells(1, 2) = x

Cells(2, 1) = "z=": Cells(2, 2) = z

Cells(3, 1) = "y=": Cells(3, 2) = y

Cells(4, 1) = "h=": Cells(4, 2) = h

End Sub
^ Программирование алгоритмов циклической структуры

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

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

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

Оператор циклаWhile... Wend

Оператор имеет синтаксис

While условие

[операторы]

Wend

Синтаксис инструкции While... Wend содержит следующие элементы:

условие — обязательный элемент. Числовое выражение или строковое выражение, которое имеет значение True или False.

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

Этот оператор называют оператором цикла с предусловием. Выполняется оператор While... Wend следующим образом. Если условие имеет значение True, выполняются все операторы до инструкции Wend. Затем управление возвращается инструкции While и вновь проверяетсяусловие. Если условие по-прежнему имеет значение True, процесс повторяется. Если оно не имеет значение True, выполнение возобновляется с инструкции, следующей за инструкцией Wend. В связи с этим элемент условие здесь является условием выполнения цикла. Циклы While... Wend могут иметь любую глубину вложенности.

^ Оператор циклаDo...Loop

Оператор Do...Loop также используется для выполнения наборов операторов неопределенное число раз. Оператор имеет синтаксис:

Do

[операторы]

Loop Until [условие]

Синтаксис инструкции Do Loop содержит следующие элементы:

условие — необязательный элемент. Числовое или строковое выражение, которое имеет значение True или False.

операторы— один или несколько операторов, выполнение которых повто- ряется, пока условие не приобретет значение True.

Этот оператор называют оператором цикла с постусловием. Выполняется оператор Do...Loop следующим образом. Если условие имеет значение False, выполняются все операторы после инструкции Do. Затем управление передается инструкции Until и вновь проверяется условие. Еслиусловие по-прежнему имеет значение False , процесс повторяется. Если оно имеет значение True, управление передается следующему за инструкцией Loop Until оператору. В связи с этим элемент условие здесь является условием выхода из цикла.

^ Оператор цикла For...Next.

Часто при составлении макроса заранее известно количество повторений группы операторов, в таких случаях можно использовать инструкцию For...Next.

Оператор For...Next используется для выполнения наборов операторов указанное число раз. Циклы For используют в качестве счетчика переменную, значение которой увеличивается или уменьшается при каждом выполнении цикла на указанное значение.

Синтаксис инструкции For...Next

For счетчик = начало То конец [step шаг]

[операторы]

Next [ счетчик]

счетчик — обязательный элемент. Это должна быть числовая переменная. Она не может иметь тип Boolean или быть элементом массива.

начало — обязательный элемент, содержит начальное значение переменной счетчик.

конец — обязательный элемент, содержит конечное значение переменной счетчик.

шаг — элемент необязательный, это значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен единице. Шаг может быть как положительным, так и отрицательным.

операторы— необязательный элемент. Один или несколько операторов между For и Next, которые выполняются указанное число раз.

Инструкция For...Next работает следующим образом: начальное значение элемента счетчик сравнивается с конечным значением. Если шагположителен и начальное значение меньше конечного или если шаг отрицателен и начальное значение больше конечного, то управление передается внутрь тела цикла. После выполнения всех операторов в теле цикла значение шаг добавляется к текущему значению переменнойсчетчик. После этого операторы тела цикла либо выполняются еще раз (на основе того же условия, которое привело кначальному выполнению цикла), либо цикл завершается и выполнение продолжается с оператора, следующей за Next.

Допускается вложение циклов For...Next (один цикл For...Next располагается внутри другого). Счетчик каждого цикла должен иметь уникальное имя.

Пример. Составить таблицу значений функции y=x2 на отрезке [2,8] с шагом 0.5.

Программа

Sub Tablica()

Dim x, y As Double, i As Integer

i = 1

Cells(1, 1) = "X": Cells(1, 2) = "Y"

For x = 2 To 8 Step 0.5

y = x ^ 2

i = i + 1

Cells(i, 1) = x: Cells(i, 2) = y

Next x

End Sub

Пример. Вычислить сумму квадратов n чисел: 1,4,9,16,25,… . Число n задать произвольно при вводе.

Программа

Sub sum()

Dim n, i As Integer, s As Double

n = Val(InputBox("Введите количество слагаемых n"))

s = 0

For i = 1 To n

s = s + i ^ 2

Next i

MsgBox ("Сумма s=" + Str(s#))

End Sub

Пример. Вычислить произведение квадратов n чисел: 1,4,9,16,25,… . Число n задать произвольно при вводе.

Программа

Sub Proiz()

Dim n, i As Integer, p As Double

n = Val(InputBox("Введите количество слагаемых n"))

p = 1

For i = 1 To n

p = p * i ^ 2

Next i

MsgBox ("Произведение p=" + Str(p#))

End Sub

Пример. Дана числовая последовательность:

Вычислить сумму данной последовательности при n=µ с точностью 0.000001.
Программа

Sub Iter()

Dim a, e, s As Double

a = 1 'первый член ряда

s = a 'сумма ряда

e = Val(InputBox("Введите точность вычислений"))

Do 'начало цикла

a = -a / 2 'вычисляем очередной член последовательности

s = s + a 'накапливаем сумму

Loop Until Abs(a) < e 'конец цикла

MsgBox ("Сумма s=" + Str(s#))

End Sub
^ Вложенные циклы

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

Пример. Составить таблицу значений функции на отрезке [1,4] c шагом h=0.5.

Программа

Sub VlCircle()

Dim x, s, a, b, h As Double, i, n, k As Integer

a = Val(InputBox("Введите а"))

b = Val(InputBox("Введите b"))

h = Val(InputBox("Введите шаг h"))

n = Val(InputBox("Введите количество слагаемых n"))

k = 1

Cells(1, 1) = "X": Cells(1, 2) = "S"

For x = a To b Step h

s = 0

For i = 1 To n

s = s + x / i

Next i

k = k + 1

Cells(k, 1) = x: Cells(k, 2) = s

Next x

End Sub








Дата добавления: 2016-04-02; просмотров: 1332;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.019 сек.