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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

Следование

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

  Рис. 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 имеются большие возможности для реализации циклов. Покажем использование трёх из них на одном примере программирования конкретной задачи (рис. 4.4, 4.5, 4.6).

Пример. Составить блок-схему алгоритма и программу вычисления суммы 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 step 1

S=S +i

Next i

Cells (4,3)=S

End Sub


Примеры программ на VBA

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

 

Рис. 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).

    Рис. 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. Окна программы и результатов

 

Операции с массивами

Пример 3. В одномерном массиве а(n) найти максимальный по значению элемент и указать его номер (рис. 4.11).

Рис. 4.11. Размещение массива в ячейках Excel

Блок-схема алгоритма приведена на рис. 4.12.

Рис. 4.12.  Блок-схема алгоритма нахождения максимального по значению

элемента и его порядкового номера

Текст программы:

Option Explicit

Option Base 1

Sub progmass()

Dim a!(), Nrowa%, i%, AMax!, NMax%, n%

n = Cells(1, 2)

ReDim a(n)

'Ввод элементов вектора

For i = 1 To n

a(i) = Cells(i + 1, 4)

Next i

AMax = a(1)

NMax = 1

For i = 2 To n

If a(i) > AMax Then

AMax = a(i)

NMax = i

End If

Next i

Cells(8, 1) = AMax

Cells(8, 3) = NMax

End Sub

 

Пример 4. В двумерном массиве A (nrow, ncoln) подсчитать количество положительных, отрицательных и нулевых элементов (рис. 4.13).

Рис. 4.13. Размещение массива в ячейках Excel

 

Блок-схема алгоритма приведена на рис. 4.14.

Выбор идентификаторов для переменных и их типов:

· A! (nrow%, ncoln%);

· npol %, notr %, nnul %;

· j %, i % – рабочие переменные.

 

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

и нулевых элементов

Текст программы:

Option Explicit

Option Base 1

Sub matr()

Dim A!(), nrow%, i%, ncoln%, j %, npol%, notr %, nnul %

nrow = Cells (2, 1)

ncoln = Cells (2, 2)

ReDim A(nrow, ncoln)

For i = 1 To nrow

For j = 1 To ncoln

A(i, j) = Cells (i + 1, j + 2)

Next j

Next i

npol = 0

notr = 0

nnul = 0

For i = 1 To nrow

For j = 1 To ncoln

If A(i, j) > 0 Then

npol = npol + 1

ElseIf A(i, j) = 0 Then

nnul = nnul + 1

Else

notr = notr + 1

End If

Next j

Next i

Cells(3, 2) = npol

Cells(4, 2) = notr

Cells(5, 2) = nnul

End Sub



Поделиться:


Последнее изменение этой страницы: 2021-04-04; просмотров: 99; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.110.119 (0.017 с.)