Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по информатике (3).docx
Скачиваний:
17
Добавлен:
23.11.2019
Размер:
1.62 Mб
Скачать

4.3. Структурный подход к разработке алгоритмов и программ на vba.

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

Следование.

Пример. Составить блок-схему алгоритма и программу вычисления площади круга.

Рис. 4.2. Блок-схема структуры СЛЕДОВАНИЕ.

Sub Proc1()

Dim r as single, s as single

Const pi as single = 3.14159

r=cells(2,1)

s=pi*r^2

cells(2,2)=s

End Sub

1. Объявлены переменные r и s, как вещественные.

2. Объявлена константа pi, как вещественная со значением 3.14159.

3. Вводится значение переменной r из ячейки текущего листа EXCEL.

4. Переменной s присваивается вычисленное значение.

5. Выводится значение переменной s в ячейку текущего листа EXCEL.

Ветвление.

Составить блок-схему алгоритма и программу вычисления функции:

Рис. 4.3. Блок-схема структуры ВЕТВЛЕНИЕ.

Sub blok2()

Dim a as single, y as single

a=Cells(2,1)

If a<0 Then

y=Sqr(abs(a))

Else

y=tan(a)

End If

Cells(2,2)=y

End Sub

Повторение.

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

Пример. Составить блок-схему алгоритма и программу вычисления суммы n чисел натурального ряда.

S=1+2+3+…. + n

Для решения используем оператор цикла с предварительной проверкой условия.

Рис. 4.4. Блок – схема использования оператора цикла с предварительным условием.

Sub Blok4()

Dim S!, i%, n%

n=Cells(2,1)

S=0

i=1

Do While i<=n

S=S+i

i=i+1

Loop

cells(3,3)=S

End Sub

Тот же пример реализуем с использование оператора цикла с постусловием.

Рис. 4.5. Блок-схема использования оператора цикла с постусловием.

Sub Blok3()

Dim S!, i%, n%

n=Cells(2,1)

s=0

i=1

Do

S=S+i

i=i+1

Loop While i<=n

cells(2,3)=S

End Sub

Тот же пример с использованием оператора цикла с параметром.

Рис. 4.6. Блок – схема с использованием оператора цикла с параметром.

Sub Blok5()

Dim S!, i%, n%

n=Cells (2,1)

S=0

For i=1 to n

S=S +i

Next i

Cells (4,3)=S

End Sub

4.4. Примеры программ на vba

Пример 1. Написать программу по блок-схеме.

Рис. 4.7. Блок– схема к примеру 1.

Option Explicit

Function f!(x!)

f = x ^ 2 - 5

End Function

Sub prog1()

Dim a!, b!, e!, h!, x!, fa!, fx!, i%

a = InputBox("a=")

b = InputBox("b=")

e = InputBox("e=")

h = (b - a) / 2: x = a: fa = f(x)

i = 1

Do While Abs(h) > e

x = x + h

fx = f(x)

Cells(i, 1) = x

Cells(i, 2) = fx

i = i + 1

If f(a) * f(x) < 0 Then

x = x - h

Else

fa = fx

End If

h = h / 2

Loop

Cells(1, 4) = x: Cells(1, 5) = fx

End Sub

Рис. 4.8. Окна программы и результатов.

Пример 2. Написать программу по блок-схеме.

Рис. 4.9. Блок–схема к примеру 2.

Option Explicit

Function f!(x!)

f = x ^ 2

End Function

Sub dopblok1()

Dim x!, dx!, e!, d1!, d2!, i%

x = InputBox("x=")

dx = InputBox("dx=")

e = InputBox("e=")

d2 = (f(x + dx) - f(x)) / dx

i = 1

Do

d1 = d2

dx = dx / 2

d2 = (f(x + dx) - f(x)) / dx

Cells(i, 1) = d1

Cells(i, 2) = d2

i = i + 1

Loop While Abs(d1 - d2) > e

MsgBox ("d2=") & d2

End Sub

Рис. 4.10. Окна программы и результатов