- •Информатика Сборник лабораторных работ по программированию в среде Visual Basic for Applications
- •Содержание
- •Введение
- •Лабораторная работа №1. Vba. Основные понятия. Среда разработки. Основы пРоГраммирования. Переменные
- •Среда программирования vba
- •Основы программирования на vba
- •Переменные
- •Математические операторы
- •Лабораторная работа №2. Диалоговые окна
- •Контрольные вопросы
- •Лабораторная работа № 3. Разветвляющиеся алгоритмы
- •1. Операторы условия if...Then
- •1.1 Строчный оператор If…Then…Else
- •1.2 Блочный условный оператор
- •1.3 Вложенные операторы If
- •1.4 Логические операции
- •2. Безусловный переход GoTo
- •3. Оператор выбора – переключатель
- •5. Задачи для самостоятельного решения!
- •Лабораторная работа № 4. Циклы со счетчиком
- •Лабораторная работа № 5. Циклы с условием
- •1. Циклы с предусловием
- •2. Цикл с постусловием
- •3. Цикл For Each … Next
- •4. Задания к лабораторной работе
- •5. Контрольные вопросы
- •Лабораторная работа № 6. Работа с формами. Создание интерактивных программ.
- •Примеры создания программ для работы с объектами окна диалога
- •Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню.
- •Варианты для самостоятельных работ:
- •Литература
5. Задачи для самостоятельного решения!
1.Составить блок-схему и написать программу вычисления функции пользователя Y :
2.Составить блок-схему и программу вычисления функции пользователя Т:
3.Составить блок-схему и программу вычисления функции пользователя Р:
4.Составить блок-схему и программу . Проанализировав числа в ячейках А2 и В2 , записать в соответствующие ячейки А3 и В3 “+” , если оба числа положительны, “-“ , если оба числа отрицательны и “+-“, в противном случае.
5.Составить блок-схему и программу. Даны две переменные. Меньшую из них заменить полусуммой, а большую – удвоенным произведением. Ввод и вывод оформить с помощью окна сообщений.
6.Составить блок-схему и программу, находящую максимальное число из трех заданных. Ввод и вывод оформить с помощью окна сообщений.
7.Составить блок-схему и программу: по заданной в сфере услуг численности работников определить тип предприятия: до 10 человек – малое, до 50 – среднее, более 50 – крупное. Сделать об этом сообщение.
8.Составить блок-схему и программу. Если в ячейках В1, В2, В3 есть положительные значения, то подсчитать их количество и результат занести в ячейку А1.
9.Составить блок-схему и программу . Используя оператор Select case, задать фон ячейки С4 желтым цветом (код цвета 6), если число в ячейке В4 равно 0; зеленым (код цвета 4), если - меньше 0; красным (код цвета 3), если -положительное и меньше 60; синим (код цвета 5), если - больше 60.
10.Составьте блок-схему и программу, которая по заданному номеру месяца выводит название времени года (номер квартала). Используйте оператор Select case.
Лабораторная работа № 4. Циклы со счетчиком
Циклический процесс – многократное исполнение одного и того же участка программы, следовательно, цикл – это последовательность действий, которая может выполняться многократно, т.е. более одного раза. Соответственно алгоритм, в котором есть один или несколько циклов, называется циклическим.
Различают 3 типа циклов:
- циклы со счетчиком (или с известным числом повторений);
- циклы с предусловием;
- циклы с постусловием.
В любом цикле должна быть переменная, которая управляет выходом из цикла, т.е. определяет число повторений цикла.
Последовательность действий, которая должна выполняться на каждом шаге цикла (т.е. при каждом повторении цикла), называется телом цикла или рабочей частью цикла.
Циклы со счетчиком
В циклах такого типа известно число повторений цикла, т.е. оно является фиксированным числом. В этом случае переменная, которая считает количество повторений (шагов) цикла, называется счетчиком цикла (или параметром цикла, или управляющей переменной цикла).
Блок-схема такого циклического алгоритма в общем виде:
Работает такой цикл следующим образом: перед выполнением первого шага цикла счетчику цикла (в нашем случае переменной I ) должно быть присвоено начальное значение (Iн) (какое-то число в зависимости от алгоритма). Если значение счетчика цикла не превышает свое конечное значение (Iк), то далее будет выполняться группа действий, составляющих тело цикла (оператор 1, …, оператор n). После выполнения тела цикла счетчик цикла изменяется на определенную величину – шаг изменения счетчика цикла h. Если полученное значение счетчика цикла не превысит конечное значение, то вновь будет выполняться тело цикла. Как только счетчик цикла станет больше конечного значения –управление передается действию, следующему за циклом (т.е. осуществляется выход из цикла).
Для изображения цикла со счетчиком в блок-схемах можно использовать блок «Подготовка», в котором записывается переменная счетчика цикла (I), далее последовательно указываются начальное значение (Iн), конечное значение (Iк) счетчика цикла и шаг его изменения (h). Если шаг изменения h равен 1, его можно не записывать. Желательно, чтобы линия потока входила в блок сверху, линия потока к телу цикла выходила снизу, слева (или справа) входила линия потока перехода к следующему шагу цикла, а справа (или слева) выходила линия потока – выход из цикла.
При использовании цикла со счетчиком необходимо соблюдать некоторые требования:
- в теле цикла нельзя принудительно изменять значение счетчика цикла;
- не разрешается передавать управление оператору тела цикла извне, т.е. вход в цикл допускается только через начало цикла.
Оператор цикла FOR … NEXT
Операторы цикла используются для организации многократного повторения выполнения одних и тех же операторов.
Оператор For…Next позволяет циклически выполнить группу операторов заданное число раз.
Синтаксис оператора For… Next :
For <счетчик цикла> = <начальное значение > To <конечное значение> [Step<шаг>]
Тело цикла
Next [ < счетчик цикла > ]
Тело цикла – последовательность операторов, которая будет выполняться заданное число раз.
Параметр <счетчик цикла> - это числовая переменная, которая автоматически увеличивается после каждого повторения цикла.
Значение счетчика цикла изменяется от заданного начального значения до конечного значения с шагом цикла.
Шаг цикла по умолчанию равен 1, но его можно изменить, указав необязательное ключевое слово Step и величину шага.
Значение шага цикла может быть как положительным, так и отрицательным, это позволяет создать циклы для счета в обратном направлении.
Для безусловного выхода из цикла используется оператор Exit For.
В этом случае будет передано управление на оператор, следующий за Next.
Пример 1.
Составить блок-схему и программу для проведения расчетов в таблице 7, также клетки с отрицательной температурой окрасить бирюзовым цветом (ColorIndex=20).
Температура воздуха в городах мира с 12 по 18 декабря.
Таблица 7.
|
Лондон |
Рим |
Париж |
Киев |
Понедельник |
10 |
15 |
5 |
0 |
Вторник |
12 |
13 |
8 |
-3 |
Среда |
7 |
10 |
4 |
2 |
Четверг |
8 |
14 |
6 |
4 |
Пятница |
4 |
8 |
5 |
2 |
Суббота |
-2 |
9 |
-4 |
-5 |
Воскресенье |
0 |
5 |
-2 |
3 |
Количество дней с температурой выше нуля |
|
|
|
|
1). Рассмотрим первоначально решение этой задачи для одного города, например,
для Лондона.
Примечание: Исходные числовые данные в таблице записаны в блоке ячеек B3 : E9.
Блок-схемa 1:
Программа 1:
Sub pr1()
k = 0
For i = 3 To 9
If Cells(i, 2).Value > 0 Then ‘ Исходные числовые данные
k = k + 1 ‘ записаны в блоке ячеек B3 : E9
ElseIf Cells(i, 2).Value < 0 Then
Cells(i, 2).Interior.ColorIndex = 20
End If
Next i
Cells(10, 2) = k
End Sub
Сложные циклы
Циклы, которые содержат внутри себя (в теле цикла) один или несколько других циклов, называются сложными или вложенными циклами.
При этом циклы, охватывающие другие циклы, называются внешними, а циклы, входящие во внешние, – внутренними циклами
На каждом шаге внешнего цикла внутренний цикл «прокручивается» полностью.
2). Блоки For … Next могут быть вложены друг в друга.
Пример 2.
Рассмотрим вложенный цикл для решения первого примера для всей таблицы 7.
Б
лок-схема
2:
В блок-схеме 2 представлен вложенный цикл.
Программа 2:
Sub pr2()
Dim i, j, k As Integer
For j = 2 To 5 ‘ Исходные числовые данные
k = 0 ‘ записаны в блоке ячеек B3 : E9.
For i = 3 To 9
If Cells(i, j).Value > 0 Then
k = k + 1
ElseIf Cells(i, j).Value < 0 Then
Cells(i, j).Interior.ColorIndex = 20
End If
Next i
Cells(10, j) = k
Next j
End Sub
Пример 3.
В ячейках H1:H10 записаны числа.
Составить блок-схему и написать программу сортировки этого массива по возрастанию.
Блок-схема 3:
Программа 3:
Sub pr3()
Dim i, j As Integer, d As Single
For i = 1 To 9
For j = 1 To 10 - i
If Cells(j, 8) > Cells(j + 1, 8) Then
d = Cells(j, 8) : Cells(j, 8) = Cells(j + 1, 8)
Cells(j + 1, 8) = d
End If
Next j
Next i
End Sub
Массив – это упорядоченный набор однотипных значений – элементов массива. Массив имеет:
имя, которое записывается по тем же правилам, что и имена переменных;
размер – количество элементов в массиве;
базовый тип, который определяется типом элементов массива.
Имя массива задает имя каждому элементу массива: каждый элемент массива обозначается этим именем и индексом, который определяет номер (место) этого элемента в массиве.
Имя, размер и базовый тип массива задаются при описании массива.
Массивы могут быть одномерными и многомерными. Мы будем рассматривать только одномерные и двумерные массивы.
Одномерные массивы – массивы, в которых элементы пронумерованы последовательно по порядку: первый элемент, второй, третий и т.д. Для обозначения элементов одномерного массива используется один индекс.
Двумерные массивы – массивы, в которых данные условно организованы в виде таблицы (матрицы), где положение каждого элемента определяется номером строки и номером столбца. Для обозначения элементов двумерного массива используются два индекса: первый индекс для обозначения номера строки, второй индекс для обозначения номера столбца.
Значения индексов можно задать непосредственно числом (прямая адресация) или косвенно, указав в индексе идентификатор переменной, которая позволит вычислить индекс, (косвенная адресация).
Прямая адресация элементов массива:
для одномерных массивов – a(1), a(2), a(3), a(4),…;
для двумерных массивов – a(1,1), a(1,2), a(1,3), a(2,1), a(2,2), a(2,3), …
Косвенная адресация элементов массива:
для одномерных массивов – a(i), a(i+1), …;
для двумерных массивов – a(i,j), a(i+1, j),…
Описание массивов
При работе с массивами в программе они должны быть объявлены (описаны), т.е. указано имя массива, тип элементов массива, его размерность.
Оператор описания массива:
Dim <имя>(<размерность>) As <тип>
В качестве размерности указывается либо верхняя граница изменения индекса, либо конкретный диапазон изменения значений индексов: Iн TO Iк:
Примеры:
Dim a(10) As Integer
Dim b(10, 5) As Integer
Dim c(1 TO 20) As Double
В том случае, когда размерность массива не указана, необходимо до первого использования переменной массива в программе массив переопределить с помощью оператора ReDim.
Рассмотрим пример с заданной числовой последовательностью.
Числовая последовательность – это функция натурального аргумента. Т.е., задать последовательность – значит указать формулу, по которой можно вычислить любой член последовательности по его номеру.
Для задания последовательности необходимо, чтобы были известны хотя бы два члена последовательности – первый и второй.
Формула, которая позволяет вычислить каждый член последовательности, называется рекуррентной.
Пример 4.
Дана числовая последовательность:
a1={ Cos(2)/2; a2=Sin(3)/5; …;a n = a n-1 – 4*a n-2}
Найти сумму отрицательных элементов при n=37. (Ответ : -3,604246Е+09).
Блок-схема 4:
Программа 4:
Sub pr4()
Sheets("Лист1").Cells.Clear
Dim N, i As Integer
Dim A(), S As Double
N = Val(InputBox("Введите число"))
ReDim A(1 To N) ‘ Переопределение массива
A(1) = Cos(2) / 2
A(2) = Sin(3) / 5
For i = 3 To N
A(i) = A(i - 1) - 4 * A(i - 2)
Next i
Range("A1") = "Числовая последовательность:"
S = 0
For i = 1 To N
Cells(3, i) = A(i)
If A(i) < 0 Then S = S + A(i)
Next i
Range("A5") = "S отрицательных чисел равно:"
Cells(7, 1) = S
MsgBox "См. последовательность на Листе 1"
End Sub
Контрольные вопросы :
Определение циклического процесса.
Типы циклов.
Циклы со счетчиком.
Блок-схема цикла со счетчиком.
Оператор FOR…NEXT.
Сложные циклы.
Определение массива. Виды массивов.
Описание массивов.
Определение числовой последовательности.
Рекуррентная формула.
Задачи для самостоятельного решения .
1. В ячейках А1 : А10 записаны числа.
Составить блок-схему и написать программу сортировки данного массива по убыванию.
2. Просуммировать отдельно положительные и отрицательные элементы
массива чисел, записанных в блоке ячеек B2 : B12. Полученные суммы
записать соответственно в ячейки A1 и A2. Составить блок-схему и написать программу.
3. В матрице, записанной в блоке ячеек А1 : F4, найти произведение положительных чисел и количество нулей. Составить блок-схему и написать программу.
4. Дана числовая последовательность
{ a1 = 0, a2 = 4,…,a n = a n-1 – 3 a n-2}.
Составить блок-схему и найти сумму отрицательных элементов при n = 63.
Ответ: -1,179872Е+15.
