«Программирование в среде Visual Basic»
Вид материала | Лабораторная работа |
- Тематическое планирование учебного времени раздела «Введение в программирование» (15, 68.18kb.
- Н. Г. Волчёнков программирование на visual basic 6 Учебное пособие, 128.99kb.
- Краткий курс по изучению языка программирования Visual Basic, 357.37kb.
- Даний курс призначений для тих, хто: ніколи не програмував, але хоче навчитися, 360.9kb.
- Тема урока: Массивы в Visual Basic, 35.5kb.
- Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006, 1339.31kb.
- Язык Visual Basic имеет разнообразные средства визуализации разрабатываемых приложений., 41.17kb.
- Опис модуля назва модуля: Visual Basic для додатків. Код модуля, 40.19kb.
- Myreferatik at ua, 109.55kb.
- Visual Basic Основы работы с базами данных, 1336.88kb.
Задание к лабораторной работе
Модифицировать программу лабораторной работы №2 таким образом, чтобы вычислялось многократно значение функции при изменении аргумента в указанном диапазоне и с заданным шагом (см. таблицу вариантов).
Реализовать циклическую структуру с помощью:
- оператора Do... - для нечетных вариантов;
- оператора For... - для четные вариантов.
(в программе предусмотреть выод результатов вычислений в виде таблицы: аргумент и соответствующее значение функции).
Лабораторная работа № 4
Тема "Одномерный массив"
Цель: приобретение навыков создания программ обработки одномерных массивов.
Теоретические сведения
Массив – это последовательный, упорядоченный набор однотипных элементов с общим именем. Каждый элемент массива имеет индекс – уникальный номер, который заключается в скобки. Массивы в зависимости от количества индексов, могут быть одномерные и многомерные. Как и другие переменные, массивы обязательно объявляются в начале программы с помощью оператора Dim, с указыванием размерности массива. Массивы могут быть динамические и статические, с фиксированной размерностью – статические,- динамические – размерность которых определяется во время выполнения программы.
Описание массивов
Dim имя (индекс1[,индекс2]) [As тип], …
где имя - имя массива, удовлетворяющее стандартным правилам именования переменных;
индекс1, индекс2 - размерности переменной массива; допускается описание до 60 размерностей; индексы записывается следующим образом:
[нижний1 To] верхний1 [,[нижний2 To] верхний2] ,
если нижний индекс не задан явно, нижняя граница массива определяется оператором Option Base, если отсутствует Option Base, нижняя граница массива равняется нулю;
тип - тип данных массива (Integer, Long, Single, Double, String и т.д.).
Для описания динамических массивов инструкцию Dim записывают с пустыми скобками. После ввода или расчета размерности массива, массив переопределяется оператором ReDim
ReDim имя (индекс1[,индекс2])
Оператор Option Base применяется для задания нижней границы индексов массива
Option Base {0 | 1} По умолчанию используется значение 0.
Оператор Option Base располагается в модуле перед процедурой и должна предшествовать описаниям массивов, включающих размерности.
Оператор цикла For Each...Next повторяет выполнение блока операторов для каждого элемента массива или семейства.
For Each элемент In группа
Блок операторов
[Exit For]
Next [элемент]
где элемент - переменная, используемая для выполнения итераций по элементам семейства или массива, для массива она может быть только переменной типа Variant;
группа - имя семейства объектов или массива (за исключением массивов с определяемыми пользователем типами);
блок операторов - один или несколько операторов, которые выполняются над каждым элементом группы.
При работе с массивами данных возникает необходимость использования вложенных циклов (один цикл For...Next или Do…Loop или For...Each...Next располагается внутри другого):
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
Однако, в случае For...Next счетчик каждого цикла должен иметь уникальное имя, For...Each...Next - каждый элемент цикла должен быть уникальным.
Пример:
Задан одномерный числовой массив Х(n), определить произведение всех чисел массива, минимальное значение, первый отрицательный, его значение и индекс, отсортировать массив по возрастанию.Предусмотреть ввод и вывод элементов массива и результатов расчета.
Option Base 1 ‘задание нижней границі массива =1
Sub lab5()
‘Объвление типов переменных
Dim n AsInteger, st AsIinteger, i As Integer, Min As Single, P As Single, S As Single
Dim mas As String
Dim x() As Single ‘объявление динамического массива Х
newline = Chr(13)
n = Val(InputBox("Введите к-во элементов в массиве", "Задание размерности массива"))
ReDim x(n) ‘Переопределение размерности массива X
'Ввод элементов массива _______________________________________________________
For i = 1 To n
‘из диалогового окна
' генератор случайных чисел
x(i) = Val(InputBox("Ввод " & i & "-го _ элемента", "Ввод элементов массива")) | ‘ x(i) = Int(n * Rnd - n / 2) |
' вывод элементов массива в окно Отладки
Debug.Print "X("; i; ")= "; x(i)
Next i
'Расчет произведения_________________________________________________________
P = 1 ‘начальное значение произведения P=1, суммы=0
For i = 1 To n
P = P * x(i)
Next i
‘Вывод результата в окно Отладки
Debug.Print “Произведение” + P
' Использование оператора For Each… Next
‘для расчета суммы
‘обязательно оператор Option Base 1,
‘ For Each element In x
‘ s = s + element
‘Next
'Поиск минимального элемента _________________________________________________
Min = x(1) ‘Присвоить первоначальное значение = 1-ому элементу
For i = 1 To n
If Min > x(i) Then Min = x(i)
Next i
‘Поиск первого отрицательного элемента______________________________
For i = 1 To n
If x(i)<0 Then
xotr = x(i ) ‘ значение 1-го отрицательного
iotr = I ‘индекс 1-го отрицательного
Exit For ‘досрочный выход из цикла
End If
Next I
‘Вывод в окно Отладки 1-го отрицательного и его индекса
Debug.Print “1-ое отрицательное”, xotr, “индекс 1-го отрицательного”, iotr
'Вывод элементов массива, минимума и произведения в диалоговое окно ____________
mas = "Введенные числа:"
For i = 1 To n
mas =mas & " " & Str(x(i))
Next i
MsgBox mas, vbOKOnly + vbExclamation, "Элементы массива"
MsgBox "min=" + Str(Min) & newline & "Произведение=" & P, vbInformation, _ "Результаты"
‘Сортировка массива по возрастанию _________________________
For i = 1 To n - 1
flag = 0 ‘флаг, отмечающий, были ли перестановки
For j = 1 To n – 1
‘Если следующий элемент меньше текущего, тогда меняем местами
If x(j + 1) < x(j) Then
pr = x(j): x(j) = x(j + 1): x(j + 1) = pr ‘перестановка элементов
flag = 1 ‘была перестановка
End If
Next j
‘если перестановок больше нет, то - досрочный выход из цикла
If flag = 0 Then Exit For
Next i
Debug.Print ‘Вывод пустой строки или переход на другую строку
‘вывод отсортированного массива в окно Отладки
For i = 1 To n
Debug.Print x(i); ‘ в строку
Next
End Sub
Пример для формы:
Задан одномерный числовой массив Х(n), найти сумму и произведение всех чисел массива, а также минимальное и максимальное значения. Создать форму для этой задачи.
В программе предусмотреть возможность ввода размерности массива, а также ввод элементов массива с помощью окон сообщений или генератора случайных чисел. Вывод массива и результатов вычислений предусмотреть либо в окно сообщений либо в окно Просмотра.
Таблица новых свойств элементов создаваемой формы
Элемент | Свойство | Описание | Значение |
CommandButton1 | Enabled | Доступность элемента к действиям | False |
| Picture | Рисунок на кнопке (если Style=1) | Имя файла |
| DisablePicture | Рисунок на кнопке, когда она недоступна (если Enabled = False, Style=1) | Имя файла |
| DownPicture | Рисунок на кнопке, если она нажата (если Style=1) | Имя файла |
| Style | Стиль кнопки | 1 - графический |
Label1 | BorderStyle | Установление стиля рамки надписи | 1 |
| Alignment | Выравнивание текста в границах элемента | Center |
| WordWrap | Перенос слов (если AutoSize=True ) | True |
Общие свойства элементов | BackColor ForeColor | Цвет фона Цвет выводимой информации | |
Рис. Форма до и после нажатия на кнопки Ввести массив…
Процедура кнопки Ввести массив…
Ввод элементов массива можно осуществить «вручную» или же с помощью генератора случайных чисел (переключатели «с клавиатуры» и «генератором»).
Нажатия на кнопку Ввести массив… приводит к следующим действиям:
- в диалоговом окне вводится число, определяющее размерность массива, а если выбран «с клавиатуры», то вводятся также последовательно элементы массива,
- кнопки Вывод массива на форму и Вычислить, которые не действовали до этого (надписи на них – серым цветом) - активизируются,
- на кнопке Ввести массив… меняется надпись на Массив введен!.
Dim n As Integer, i As Integer
Dim x() As Single
Private Sub CmdVvod_Click()
'Изменение свойств
'кнопкам Проверка ввода и Вычислить
CmdTest.Enabled = True
CmdWork.Enabled = True
n = Val(InputBox("Введите число", "Задание размерности массива"))
ReDim x(n)
If OpbHand.Value = True Then
For i = 1 To n
x(i) = Val(InputBox("Ввод " & i & "-го элемента", "Ввод массива"))
Next i
Else
For i = 1 To n
x(i) = Int(n * Rnd - n / 2)
Next i
End If
CmdVvod.Caption = "Массив введен!"
‘После ввода массива меняется надпись на кнопке Ввести массив…
End Sub
Процедура кнопки Вывод массива на форму:
Ввыводит элементы введенного массива в Поле ввода.
Private Sub CmdTest_Click()
Dim newline As String, elements As String
newline = Chr(13) + Chr(10)
TxtX.Text = "Элементы массива:" + newline
For i = 1 To n
TxtX.Text = TxtX.Text + Format(x(i), "0.0 ")
Next i
End Sub
Процедура кнопки Вычислить… :
Private Sub CmdWork_Click()
Dim Sum As Single, Product As Single
If ChbSum.Value = 1 Then
Sum = 0
For i = 1 To n
Sum = Sum + x(i)
Next i
LblSum.Caption = Sum
Else
LblSum.Caption = ""
End If
If ChbProduct.Value = 1 Then
Product = 1
For i = 1 To n
Product = Product * x(i)
Next i
LblProduct.Caption = Product
Else
LblProduct.Caption = ""
End If
End Sub
Процедура кнопка Сброс:
производит очистку Поля ввода и Надписей, а также отключение кнопок Вывод массива на форму и Вычислить, возвращает надпись кнопке Ввести массив….:
Private Sub CmdReset_Click()
CmdTest.Enabled = False
CmdWork.Enabled = False
CmdVvod.Caption = "Ввести массив..."
CmdVvod.SetFocus
TxtX.Text = ""
LblSum.Caption = ""
LblProduct.Caption = ""
Sum = 0
Product = 0
For i = 1 To n
x(i) = 0
Next i
End Sub
Процедура кнопки Выход при нажатии кнопки появляется на кнопке рисунок.
Лабораторная работа № 5
Тема "Обработка двумерных массивов"
Цель: приобретение навыков создания программ обработки многомерных массивов и использование процедур.
0>