Создание процедур и (или) определяемых функций
Для создания процедуры или функции пользователя нужно выполнить такие действия:
· Если в проекте нет модуля, то создать его, выполнив команду меню редактора VB: Вставка\Модуль;
· Выполнить команду меню редактора VB: Вставка\Процедура;
· В открывшемся диалоговом окне Вставка процедуры (рис. 16) установить переключатель либо Подпрограмма, либо Функция (в зависимости от того, что вы создаете);
Рис. 17. Окно Вставка процедуры
· В окне Имя ввести имя подпрограммы (функции);
· Установить соответствующий переключатель Область определения;
· Щелкнуть на OK. После выполнения этих действий в окне модуля появится заготовка подпрограммы (функции) (заголовок и окончание), между которыми нужно поместить код тела подпрограммы (функции);
· Ввести список параметров подпрограммы (функции), их типов данных, а для функции также указать тип возвращаемого функцией значения;
Объявление переменных
Определение 7. Переменные — это объекты, предназначенные для хранения данных. В различные моменты времени переменные могут хранить различные значения. В переменных можно запоминать какие-либо значения и извлекать их из них.
Переменную можно представить как простейший объект программы следующим образом: имя переменной связывает переменную с некоторой областью памяти. Имена переменных позволяют различать их в программе, осуществлять доступ к различным участкам памяти для записи данных и их извлечения.
Перед использованием переменных в программе их нужно объявлять (декларировать). При объявлении переменной необходимо указать, что объявляется переменная, задать имя переменной и указать ее тип. Тип определяет способ представления переменной. В переменных можно хранить практически любые типы данных: число, строку текста, экземпляр объекта, элементы управления и т. д. В Visual Basic различают две группы типов данных: основные (иногда их называют базовыми или встроенными) и типы данных, определяемые пользователем.
Для эффективного использования памяти необходимо правильно выбирать тип переменной. В табл.2 приведены базовые типы переменных Visual Basic, необходимая для их размещения память и диапазон возможных значений.
Таблица 2
Базовые типы переменных Visual Basic
Тип | Хранимая информация | Занимаемая память | Интервалы значений |
Целочисленные типы | |||
Вуtе | Целые числа | 1 байт | от 0 до 255 |
Воо1еап | Логические значения | 2 байта | Тrue (Истина) или False (Ложь) |
Integer | Целые числа | 2 байта | от -32768 до 32767 |
Long Integer | Длинные целые числа | 4 байта | +/- 2.1Е9 |
Типы с плавающей точкой | |||
Single | Вещественные числа одинарной точности с плавающей точкой | 4 байта | От -3.402823Е38 до -1.401298Е-45 для отрицательных чисел и от 1.401298Е -45 до 3.402823Е38 для положительных |
Double | Вещественные числа двойной точности с плавающей точкой | 8 байт | от -1. 79763 13486232Е308 до -4.94065645841247Е-324 для отрицательных чисел и от 4.94065645841 247Е-324 до 1. 79763 13486232Е308 для положительных |
Строковые типы | |||
String (строка фиксированной длины) | Текстовая информация (строка) | 1 байт на каждый символ | От 1 до 65400 |
String (строка переменной длины) | Текстовая информация (строка) | 10 байт + 1 байт на каждый символ | От 0 до двух миллиардов символов |
Объектные типы | |||
Object | Рисунок или ссылка на любой другой объект | 4 байта | Ссылка на объект |
Окончание табл. 2
Тип | Хранимая информация | Занимаемая память | Интервалы значений |
Типы Variant | |||
Variant | Значения любого из перечисленных типов данных | 16 байт для чисел, 22 байта + 1 байт на каждый символ для строк | Любое числовое или строковое значение |
Прочие типы | |||
Decimal | Десятичное число | 14 байт | Целое — 29 знаков Вещественное — 27 знаков после запятой |
Date | Информация о дате и времени | 8 байт | от 1 января 1000 г. до 31-го декабря 9999 г. |
Currency | Числа, имеющие до 15 цифр до десятичной точки и 4 цифры после нее (ден. единицы) | 8 байт | От -922337203685477.5808 до 922337203685477.5808 |
Декларация переменных может быть явной или неявной. Для явного определения переменных существует два способа. Первый предпочтительный способ, предполагает использование следующего синтаксиса:
[Static | Private | Public] Dim ИмяПеременной [ As Тип]
где Dim(Размер) — ключевое слово, которое сообщает Visual Basic, что декларируется переменная и резервируется область памяти для ее хранения; ИмяПеременной — имя переменной (идентификатор, не входящий в перечень ключевых слов Visual Basic); As (Как) — ключевое слово, которое сообщает Visual Basic, что определяется тип данных для переменной; Тип — тип данных для объявляемой переменной; Private (Частный), Public (Общий) — ключевые слова, определяющие область видимости переменной; Static (Статический) — ключевое слово, которое определяет, сохраняет ли переменная свое значение при завершении блока программы (процедуры, функции) и выходе из него.
Следует отметить, что хороший стиль программирования предполагает использование явной декларации с помощью ключевых слов Dim, Private, Public, Static. Неявное объявление переменных без необходимости применять не следует, так как в последующем можно получить неверный результат (дело в том, что VBA по-разному обрабатывает данные разных типов, а в случае отсутствия описания ко всем данным будет применен один тип – Variant).
Чтобы избежать неприятностей необходимо в общей области программного модуля помещать оператор Option Explicit.
Примеры декларации переменных:
Dim x As Integer, M$, B&
Dim y As Integer
Оператор Option Explicit в новом модуле появляется не всегда, а только тогда, когда в диалоговом окне Параметры (Options) на вкладке Редактор (Editor) установлен флажок опции Явное описание переменных (Require Variable Declaration). Диалоговое окно открывается в редакторе командой Сервис\Параметры (Tools\Options).
Если в верхней части окна модуля вы увидите оператор Option Explicit, то вы обязаны описывать все переменные и константы. Если вы попытаетесь использовать их без объявления, то при компиляции будет выдана ошибка.
Лабораторная работа № 4 на тему
«Программирование некоторых численных методов
решения нелинейных уравнений на VBA»
Цель работы:
1. Получение практических навыков в организации итерационных процессов.
2. Знакомство с численными методами решения алгебраических и трансцендентных уравнений.
3. Получение навыков составления блок-схемы алгоритма и определения данных.
4. Овладение практическими навыками решения нелинейных уравнений средствами программы MS Excel.
Постановка задачи:
Предварительно локализовав отрезок, содержащий первый положительный корень нелинейного уравнения f(x)=0, разработать проект VBA, позволяющий уточнить его с заданной точностью, используя: а) метод половинного деления; б) метод хорд; в) метод касательных; г) метод простой итерации.
Выбор метода решения нелинейного уравнения осуществить с помощью элементов управления OptionButton, помещённых на пользовательскую форму (UserForm).Элементы управления OptionButton сгруппировать с помощью элемента управления Frame. Для каждого из перечисленных выше численных методов спроектировать отдельную пользовательскую форму (UserForm) на которой разместить необходимые объекты (элементы управления Label – для подписи на форме комментариев для пользователя; элементы управления TextBox – для ввода точности, и вывода найденного корня и числа итераций, за которое удалось найти требуемое значение корня с заданной точностью; элементы управления CommandButton – для выхода, вычисления корня и перехода на следующую и (или) предыдущую формы). Необходимые вычисления оформить процедурами функциями.
Содержание отчета :
1. Постановка задачи для конкретного варианта.
2. Описание процесса отделения отрезка, содержащего положительный корень для конкретной функции из своего варианта (см. лаб. раб. №1).
3. Обоснование сходимости (применимости метода) каждого из перечисленных в условии итерационных процессов в применении к конкретной функции и найденному отрезку.
4. Эскизы всех пользовательских форм (UserForm) с подписанными именами нанесённых на них элементов управления.
5. Тексты программ и блок-схемы всех необходимых процедур с указанием названия модуля в которых они сохранены.
6. Результаты работы для каждого из методов решения нелинейных уравнений выписать в следующем виде:
Решение уравнения f(x)=0 | Название численного метода | |||
метод половинного деления | метод хорд | метод касательных | метод простой итерации | |
Вычисленное значение корня | ||||
Число итераций |
7. Расписать структуру полученного проекта.
8. Отразить на схеме взаимосвязь имеющихся модулей.
9. Проанализировать полученные результаты и сравнить с результатами предыдущих лабораторных работ.