- •Литература:
- •Язык программирования Visual Basic является основой не только системы программирования, его версия -
- •Методика программирования на Visual Basic сводится к следующему:
- •В основе ООП лежат три принципа: инкапсуляции, наследования и полиморфизма.
- •Программный объект в ООП называется «контейнером». Контейнер включает в себя данные и программный
- •Рисунок 2. Первоначальное состояние среды разработки Visual Basic
- •1.2. Алфавит и лексемы языка
- •При запуске Редактора кода (Code Editor) появляется окно, котором можно вводить текст программы.
- •Лексемы языка Visual Basic. Программирование линейного вычислительного процесса
- •Лексема — это единица текста программы,
- •Visual Basic накладывает на имена следующие ограничения:
- •Примеры имен переменных:
- •В Visual Basic, как и в других языках программирования, есть зарезервированные (ключевые) слова,
- •Существуют соглашения по стилю имен, которых желательно придерживаться:
- •Длинное целое (Long) – занимает четыре байта памяти; Короткое целое (Byte) – всего
- •Переменные — это объекты, предназначенные для хранения данных. В разные моменты времени переменные
- •Option Explicit ‘запрещение запуска программы
- •Константы — это объекты, значения которых остаются постоянными и не могут быть изменены
- •Вещественные константы представляются в памяти
- •Примеры использования предопределенных констант:
- •Различают динамические и статические
- •2.2. Встроенные функции Visual Basic
- •Randomise — генератор случайных чисел;
- •Арифметическое выражение в Visual Basic
- •Составить программу для вычисления результата по формуле:
- •Текст программного модуля приведён ниже. Процедура запускается по щелчку мыши на свободном поле
- •При программировании часто приходится выводить информацию непосредственно на форму с помощью метода Print.
- •В ситуации, когда необходимо продолжать печатат значения в той же строке, вызывая новые
- •Алгоритмизация
- •Алгоритм и его свойства
- •Алгоритм и его свойства
- •Начало
- •Язык блок-схем
- •Требования к изображению блок-схем
- •Алгоритм решения квадратного уравнения
- •Текст модуля
- •Текст модуля (продолжение)
- •Базовые алгоритмы циклической
- •Базовые алгоритмы циклической
- •Программирование разветвляющихся процессов
- •Условный оператор
- •Условный оператор
- •Пример программы
- •Оператор выбора Select Case
- •Оператор выбора Select Case
- •Программный код должен содержать 5 одинаковых процедур для 5 событий – щелчок мышью
- •Sub Summa(v1%, v2%, v3%, v4%, v5%, s%, m%)
- •Private Sub Проверка1_Click()
- •Системные функции, функции RND, Timer, IIf
- •К системным функциям относятся функции, действие которых напрямую зависит от работы Windows. Мы
- •Окно ввода
- •Текст модуля
- •Функция MsgBox служит для выдачи сообщени пользователю через системное окно.
- •Простая экранная форма – приветствие приведена на рисунке. В этом окне имеются три
- •Рассмотрим использование ещё нескольких функций: датчика случайных чисел, счётчика времени и IIf.
- •Private Sub Комманда1 _Click()
- •Программирование циклических процессов
- •Объявление массивов
- •Объявление массива имеет следующий вид: Dim / Public / Private Имя_Массива (индексы)_Аs Тип_Данных
- •Объявление одномерного массива из восьми
- •Динамические массивы применяются в том случае, когда количество элементов массива заранее неизвестно и
- •Пример:
- •Для того, чтобы организовать повторени операций используют оператор цикла For Next. Оператор используется
- •Задача 1:
- •Задача2: Сумма элементов массива
- •Задача 3.
- •Программирование циклических процессов (продолжение)
- •Электронная форма для задачи поиск максимального элемента в одномерном массиве.
- •Private Sub Комманда1_Click() Dim MyArray As Single
- •Сортировка методом «пузырька»
- •Текст модуля: Сортировка
- •Пользовательское меню программы
- •Private Sub Комманда1_Click()
- •Пользовательское меню программ
- •Private Sub Комманда1_Click()
- •Оператор цикла Do-Loop. Логическ управляемый цикл, оператор Do — начало оператор Loop —
- •3) Условие False в начале цикла.
- •Условие проверяется в конце цикла.
- •Пример программы на использование цикла с условием. Расчёт количества расфасованных пакетов.
- •Цикл For Each. Оператор относится к категории объектных операторов, т.е. применяется к массивам,
- •Формула линейной интерполяции
- •Пример программы с оператором For Each.
- •Пример программы с оператором For Each (продолжение).
- •Использование процедур в VB
- •Программные модули на VB состоят из процедур. Использование процедур упрощает программирование, разбивая код
- •В противоположность ей процедура обработки события после вызова остаётся в ожидания событий, вызванных
- •Если имя процедуры уникально, то включать имя модуля
- •присваивается переменной с именем процедуры. Обычно процедуре для выполнения требуется некоторая информация о
- •Ключевое слово ByVal служит признаком того, что параметр передаётся по значению. Например:
- •Private Sub Комманда1_Click() Dim M, Y As Single
- •Function arcsin(x)
- •Использование файлов в Visual Basic
- •Работа с файлами в языке Visual Basic
- •Следовательно, для ввода и вывода данных в файл имеет значение не имя файла,
- •Важнейшим атрибутом файла является его
- •Операторы и функции для работы с файлами последовательного доступа
- •Формат записи оператора:
- •Пример:
- •Записывать данные в текстовый файл можно
- •Пример результата для оператора Write:
- •В качестве примера запишем программу, которая помещает в объект Text1 класса Текстовое поле
- •Разработать приложение, в котором необходимо: создать список группы студентов с указанием их фамилии,
- •Программный код для приложения можно
- •Private Sub Command2_Click()
- •Do Until EOF(2)
- •Выход
Программирование циклических процессов
Объявление массивов
В VBA различают два вида переменных — простые переменные и переменные структурного типа.
Простые переменные служат для идентификации и резервации памяти для одного данного. Переменные структурного вида предназначены для идентификации и резервации памяти для нескольких данных. Частным случаем переменной структурного вида является массив.
Массив представляет собой структуру, все элементы которой имеют одинаковый тип. Например, это могут быть данные, определяющие вектор или матрицу. Массивы могут быть одномерными и многомерными. Так, для отображения вектора может быть использован одномерный массив, а для отображения матрицы — многомерный.
Объявление массива имеет следующий вид: Dim / Public / Private Имя_Массива (индексы)_Аs Тип_Данных где:
Dim / Public / Private — ключевые слова, декларирующие массив в области его видимости; Имя_Массива —идентификатор, определяющий имя массива; Индексы — значение индекса (номера) последнего
элемента в массиве, считая с нулевого;
As — ключевое слово, определяющее указание типа элементов массива;
Тип_Данных—любой, действительный для Visual Basic тип данных базовый или созданный пользователем.
Примеры описания статических массивов:
Dim B (5) As Single ' описан одномерный массив из 6 чисел вещественного типа
Dim C (1 To 12) As Integer ' описан одномерный массив из 12 целых чисел.
Объявление одномерного массива из восьми |
|
элементов выглядит следующим образом: |
|
Dim МуАrrау (7) As integer 'одномерный целочисленный |
|
массив из 8 элементов. |
|
При объявлении многомерного массива в поле индекса |
|
указывают несколько индексов в соответствии с |
|
размерностью массива. Двумерный массив из шести |
|
столбцов и пяти строк объявляется следующим |
|
образом: |
|
Dim StrArray (4,5) As String ' двумерный массив из |
|
5строк и 6 столбцов. |
|
Примеры описания статических массивов: |
|
Dim B (5) As Single ' описан одномерный массив из 6 |
|
чисел вещественного типа |
|
Dim C (1 To 12) As Integer ' описан одномерный массив |
|
из 12 целых чисел. |
|
Пример заполнения массива: |
|
Dim B ( ) As Single, N As Integer, i As Integer |
|
N = Val(InputBox("Ввод количества элементов массива |
|
В")) |
|
ReDim B (1 To N) |
|
For i = 1 To N |
элемента |
B(i) =Val (InputBox("Ввод " & i |
|
массива","Ввод с клавиатуры")) |
|
Динамические массивы применяются в том случае, когда количество элементов массива заранее неизвестно и будет определяться в процессе выполнения программы.
В этом случае первоначально массив объявляется как динамический. Для этого в объявлении не указывается размерность. Например:
Dim strMyArray () As String
Количество элементов в объявленном массиве и его размерность в процессе выполнения программы можно переопределить с помощью ключевого слова ReDim. Синтаксическая конструкция переопределения массива имеет вид:
ReDim [Preserve] ИмяМассива (индексы) [As ТипДанных] где:
ReDim — ключевое слово, указывающее что переопределяется размеры массива;
Preserve — необязательное ключевое слово, с помощью которого дается указание, чтобы все элементы переопределенного массива сохранили свое значение; Индексы — размерность массива (до 60).
Пример:
Dim strMyArray () As String 'объявление динамического масива
Dim intValarray As integer 'объявление переменной для хранения размерности intValArray = 9 'инициализация значения
ReDim strMyArray (intValArray) 'одномерный массив из 10 элементов (базовый индекс равен 0)
Или другой пример:
Dim array ( ) As Long ' объявление динамического массива ……..
n = Val(InputBox("Ввод количества элементов |
|
массива array")) |
' одномерный массив |
ReDim array (1 To n) |
|
из n элементов |
|
Для того, чтобы организовать повторени операций используют оператор цикла For Next. Оператор используется тогда, когд заранее известно число повторений цикла Это многострочный оператор, его синтакси таков:
For Имя=Значение1 To Значение2 [Step Значение3] исполняемые операторы
Next [Имя]
Имя – это имя переменной, котору называют счётчиком.
Значение1 – начальное значение счётчика. Значение2 – конечное значение счётчика. Значение3 – величина шага.
Задача 1:
Вычислить факториал от числа. Число заносится в
текстовое поле 1, а результат в текстовое поле 2. Вычисления производятся при нажатие командной
кнопки.
Текст программы:
Private Sub Комманда1 _Click()
Dim n,I As Integer, Nf As Long n = Val(Текст1.Text)
Nf = 1
For I=1 To n Nf = Nf *I
Next I
Текст2.Text = Str(Nf)
End Sub
Задача2: Сумма элементов массива
Private Sub Комманда1 _Click() Dim MyArray As Single
Dim intValarray As Integer intValarray = Текст1.Text S = 0
For i = 0 To intValarray
MyArray = InputBox("Введите элемент массива :", " a(i)=") S = S + MyArray
Next Текст2.Text = S End Sub
Задача 3.
Разработать приложение, реализующее табулирование функции y=1,2sin(3x) при изменении аргумента х в диапазоне [x0,xk] с шагом h с выводом результатов вычисления непосредственно на форму с помощью метода Print.
Программный код для кнопки Расчет можно записать так:
Private Sub Комманда1 _Click() ' Кнопка Расчет
Dim x0 As Single, xk As Single, h As Single, x As Single, y As Single Cls ' Очистка формы
x0 = Val(InputBox("Ввод x0 - начального значения аргумента")) xk = Val(InputBox("Ввод xk - конечного значения аргумента")) h = Val(InputBox("Ввод h - шага изменения аргумента"))
Font.Size = 10 |
' Установка размера шрифта |
Font.Bold = True |
' Установка полужирного начертания |
Print Tab(7); "Функция y = 1.2sin(3x)" |
|
Font.Bold = False |
' Отмена полужирного начертания |
Print: Print "x0="; x0, "xk="; xk, "h="; h: Print Print Tab(3); "x"; Tab(17); "y"
For x = x0 To xk + h/2 Step h y = 1.2 * Sin(3 * x)
Print Format(x, "0.00"), Format(y, "0.000") Next x
Print: Print "Программу разработал Иванов И.И., гр. ДЭм-1-1" End Sub
Результат работы программы для x0=0, xk=2, h=0.25 представлен на рисунке.