Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Структурный подход к разработке алгоритмов и программ на 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.
Ветвление Составить блок-схему алгоритма и программу вычисления функции:
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 Для решения используем оператор цикла с предварительной проверкой условия.
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 Тот же пример реализуем с использованиемоператора цикла с постусловием.
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 Тот же пример с использованием оператора цикла с параметром.
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).
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; просмотров: 100; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.234.62 (0.017 с.) |