- •Информатика
- •Тверь-2008
- •15 Сентября 2008 г., протокол n1
- •Содержание
- •Глава 1. Языки программирования (яп)…………………………………..8
- •Глава 2. Основы алгоритмизации……………………………………………24
- •Глава 3. Язык и система программирования
- •Глава 4. Объектно-ориентированное программирование (ооп)……….56
- •Глава 5. Лабораторные работы и практические задания ………………..68
- •Введение
- •Глава 5 содержит перечень лабораторных работ (8) по этим темам, а также список индивидуальных заданий для самостоятельного выполнения студентами по желанию или рекомендации преподавателя.
- •Глава 1. Языки программирования (яп)
- •1.1. Эволюция яп (поколения яп)
- •1.2. Элементы яп
- •1.3. Способы описания яп
- •1.4. Типы данных
- •1.5. Краткие сведения о некоторых яп
- •1.5.1. Бейсик (Basic)
- •1.5.2. Паскаль (Pascal)
- •1.6. Системы программирования
- •Глава 2. Основы алгоритмизации
- •2.1. Понятие алгоритма
- •2.2. Свойства алгоритма
- •2.3. Основные этапы решения задачи с помощью эвм
- •2.4. Способы записи алгоритмов
- •2.5. Основные элементы блок-схемы
- •2.6. Типовые структуры алгоритмов
- •2.7. Стандартные алгоритмы
- •2.7.1. Алгоритм накопления суммы (произведения)
- •2.7.2. Алгоритм поиска максимального (минимального) элемента
- •2.7.3. Алгоритмы сортировки
- •2.7.3.1. Метод выбора
- •2.7.3.2. Пузырьковая сортировка
- •Глава 3. Язык и система программирования
- •3.1. Общая характеристика языка и системы программирования vba
- •3.2. Типы данных в языке vba
- •Описание переменных и идентификаторы типов данных
- •3.3. Арифметические и логические выражения
- •3.4 Основные операторы языка vba
- •1. Оператор присваивания.
- •2. Условный оператор.
- •3. Оператор цикла с заданным числом повторений.
- •4. Оператор цикла с незаданным числом повторений.
- •3.5. Разбиение строки программы, несколько операторов в одной строке, задание комментариев в тексте программы
- •3.6. Типы процедур
- •Глава 4. Объектно-ориентированное программирование (ооп)
- •4.1. Структурное программирование и ооп
- •4.2. Понятие программного объекта
- •4.3. Наследование, инкапсуляция и полиморфизм
- •4.4. Понятие класса объектов
- •4.5. Типы программных компонентов
- •Глава 5. Лабораторные работы и практические задания
- •2) По заданным значениям сторон а, в, с найти площадь треугольника по формуле Герона , где р – полупериметр треугольника. (Без проверки условия на существование треугольника.)
- •Лабораторная работа n2 Создание функций пользователя с разветвляющейся структурой алгоритма
- •Практическое задание
- •Лабораторная работа n3 Создание функций пользователя с циклической структурой алгоритма и накоплением суммы (произведения)
- •Практическое задание
- •Лабораторная работа n4 Создание функций пользователя с циклической структурой алгоритма и поиском максимума (минимума)
- •Практическое задание
- •Лабораторная работа n5 Автоматическая запись программы с помощью макрорекодера
- •Практическое задание.
- •Лабораторная работа n6 Создание оконных форм пользователя
- •Практическое задание.
- •Самостоятельное задание к лабораторной работе n6
- •Лабораторная работа n7 Вычисления по разным сценариям
- •Практическое задание.
- •Лабораторная работа n8 Сортировка элементов массива
- •Самостоятельное задание к лабораторной работе n8
- •Список индивидуальных заданий для самостоятельного выполнения
- •Список рекомендуемой литературы
Лабораторная работа n3 Создание функций пользователя с циклической структурой алгоритма и накоплением суммы (произведения)
Рассмотрим пример решения задачи по разработке алгоритма и составления функции пользователя на VBA в MS Excel с циклической структурой алгоритма и накоплением суммы:
Вычислить сумму положительных элементов в одномерном массиве размера n.
Введем обозначения переменных, используемых при решении задачи:
Х – одномерный массив размера n,
n – количество элементов в массиве,
i – номер очередного элемента,
SP – сумма положительных элементов массива.
Составим блок-схему алгоритма.
Примечание:
При программировании на VBA в MS Excel значения элементов массива можно предварительно записать в ячейки ЭТ, расположенные подряд в одной из строк ЭТ. Тогда, так же как в задачах из лабораторных работ N1-2 в теле функции будут отсутствовать операторы ввода/вывода. Достаточно будет в качестве аргумента функции (при ее вызове) указать адрес блока ЭТ, в котором записаны эти значения. Конечный результат (сумма положительных элементов) будет возвращаться по имени функции SP при ее вызове.
Количество элементов массива может быть определено с помощью функции Count, которая может подсчитать количество ячеек в заданном блоке, столбце или строке. Count с атрибутом Columns будет подсчитываться количество столбцов (ячеек) в блоке-строке. Count с атрибутом Rows будет подсчитывать количество строк (ячеек) в блоке-столбце.
Если элементы массива записаны в одну строку, то следует использовать Count.Columns. Если элементы массива записаны в столбец, то следует использовать Count.Rows. Если элементы будут записаны в произвольный блок ЭТ, тогда нужно использовать функцию Count с атрибутом Cells (будет подсчитываться количество ячеек в блоке). В решаемом примере предполагается, что значения элементов массива записаны в произвольной строке ЭТ.
Составим программу на VBA, оформленную в виде функции пользователя.
Function SP(X As Variant) As Double
Dim i, n As Integer
n = X.Columns.Count
SP = 0
For i = 1 To n
If X(i) > 0 Then SP = SP+X(i)
Next i
End Function
Практическое задание
1. Составить блок-схему алгоритма и записать функцию на VBA для решения следующей задачи:
Вычислить произведение отрицательных элементов в одномерном массиве размера n.
2. Запустить MS Excel на ПК.
3. Открыть редактор VBA с помощью команды Сервис → Макрос→ Редактор Visual Basic.
4. В редакторе VBA открыть окно модуля для записи программного кода (текста составленных функций) с помощью команды Insert→Module (Вставка→Модуль).
5. В окне модуля набрать текст составленной функций, а также функции рассмотренной в качестве примера.
6. Перейти в окно ЭТ через кнопку на Панели Задач.
7. Проверить работу заданных функций, заполнив некоторую строку ЭТ произвольными числами (как положительными, так и отрицательными). При вызове функций в качестве аргумента задать адрес этой строки (как адрес блока).
