- •Введение
- •Особенности программирования на Visual Basic
- •1.1. Интегрированная среда разработки ide
- •1.2. Проекты, программы
- •1.3. Стандартные элементы управления
- •Панель элементов управления
- •Написание скриптов с помощью объекта ScriptControl
- •Общие свойства элементов управления
- •1.4. Этапы программирования
- •Первый этап: выбор формы и настройка её свойств
- •Второй этап: разработка интерфейса
- •Третий этап: работа со свойствами элементов управления
- •Четвёртый этап: написание программного кода задачи
- •Начало написания программы
- •Набирайте текст программы только строчными буквами!
- •Объявление переменных
- •Ввод начальных данных
- •Программирование задачи
- •Вывод результатов
- •2. Практические задания по Visual Basic
- •Задание № 1. Знакомство с элементами управления
- •1. Постановка задачи. Последовательность
- •Задание № 2. Разработка многодокументного интерфейса
- •Задание № 3. Программирование задач с линейной структурой алгоритма
- •Задание № 4. Программирование вычислительных задач разветвляющейся структуры
- •Задание № 5. Программирование вычислительных задач циклической структуры
- •Задание № 6. Одномерные массивы
- •Задание № 7. Программирование двумерных массивов
- •Задание № 8. Процедуры-подпрограммы Sub и процедуры-функции Function
- •Задание № 9. Приближенное вычисление определенного интеграла
- •Приложение
- •If условие Then оператор1 [: оператор2 [: оператор3 ]… ]
- •If условие Then оператор1 Else оператор2
- •Область видимости переменных и их объявление
- •Рекомендуемая литература
- •Содержание
Задание № 6. Одномерные массивы
Постановка задачи
Вычислить сумму и произведение четных элементов, а также сумму и произведение отрицательных элементов массива А(n).
Анализ задачи
Анализ постановки задачи показывает, что в алгоритме задачи должны быть элементы циклической и разветвляющейся структур. Исходные данные – размерность массива n и значения элементов массива A(n). Результирующие данные – две суммы и два произведения элементов массива. Обозначим сумму четных элементов sum2, отрицательных как sum_, произведение четных элементов mul2 и произведение отрицательных – mul_.
Алгоритм задачи
Изложим кратко идею алгоритма, используя понятия языка программирования Visual Basic.
После ввода размерности массива n и элементов массива с помощью оператора цикла For … Next просмотрим все элементы массива. С помощью условного оператора If … Then проверяем в цикле, какого знака значение каждого элемента массива – положительного или отрицательного. Если значение элемента положительное, то суммируем положительные элементы и определяем их произведение. Если же значение элементов – отрицательное, то суммируем значения отрицательных элементов и вычисляем их произведение.
После вычисления сумм и произведений выдаем их на форму оператором Print.
Блок-схема алгоритма приведена на рис. 6.1
да
да
Откройте приложение Visual Basic и создайте новый проект, следуя технологии, изложенной в задании № 1. Проект сохраните в своей папке под именем Массив1_СвоиИнициалы.vbp.
Введите Имя (Name) форме frmOdMas и Название (Caption) – Одномерный массив, а затем разработайте интерфейс новой формы.
Интерфейс связан с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.
Введите Имя (Name) форме frmOdMas и Название (Caption) – Одномерный массив, а затем разработайте интерфейс новой формы.
На рис. 6.2 приведен вид формы после разработки интерфейса.
Интерфейс связан с тремя основными блоками: ввода исходных данных, блока вычислений, вывода результатов.
Ввод исходных данных. Ввод размерности массива n проще всего осуществлять с помощью Текстового поля и одной Надписи Введите размерность массива перед этим текстовым полем. Разместите это в верхней части формы. Ввод элементов массива сделайте в 2-х вариантах: ручной ввод (интерактивный) и с помощью функции RND, которая генерирует случайные числа от 0 до 1. Чтобы получить случайные числа Х в заданном диапазоне целых чисел от Мn до Mk используется формула:
Х = Int((RND*(Mk – Mn + 1)) +Mn
Для ввода по этим вариантам разместим на форме две Кнопки с названием Ручной ввод и Случайный ввод.
Блок вычислений. Все вычисления будут запрограммированы в программе (процедуре). Но для начала вычислений необходимо предусмотреть на форме Кнопку с названием Вычислить, которая и будет запускать на выполнение такую процедуру. Еще одну Кнопку с названием Выход необходимо построить на форме для завершения работы с формой. Кнопки разместить справа вверху на форме.
Все четыре кнопки разместите вверху сразу после Надписи и Текстового поля.
Вывод результатов. Поскольку после ввода исходных данных они должны быть выданы для контроля на форму, а их количество не постоянное, то предусмотреть на форме постоянное место для вычисляемых конечных значений не представляется возможным. Поэтому и выдача четырех конечных величин будет происходить в разные места формы и никаких элементов управления для выдачи результатов на форму не следует размещать.
В табл. 6.1 приведены спланированные элементы управления.
Таблица 6.1
Объект |
Свойство |
Установленное значение |
Label1 |
Caption |
Введите размерность массива: |
Text1 |
Имя |
txtN |
|
Text |
Пусто (для ввода n) |
Command1 |
Имя |
cmdРучнойВвод |
|
Caption |
Ручной ввод |
Command2 |
Имя |
cmdСлучВвод |
|
Caption |
Случайный ввод |
Command3 |
Caption |
Вычислить |
|
Имя |
cmdEnd |
Command4 |
Caption |
Выход |
Написание программного кода
Сначала объявляем динамический массив intA() и переменную N в разделе (General) (Declarations), чтобы они были видимы из любой процедуры формы:
Option Explicit
Dim intA() As Integer, N As Integer
Для события Click кнопки cmdРучнойВвод напишите следующий код:
Private Sub cmdРучнойВвод_Click()
'ручной ввод одномерного массива
Dim i As Integer, kvs As Integer
N = Val(Text1.Text)
ReDim intA(N) As Integer
Cls
CurrentY = 1350: CurrentX = 40
FontSize = 8
Print " ИСХОДНЫЕ ДАННЫЕ"
'Print " --------------------------------------"
CurrentY = 1800: CurrentX = 40
kvs = 0
For i = 1 To N
kvs = kvs + 1
intA(i) = Val(InputBox("Введите элемент intA(" & i & _
")", "Ввод массива intA(" & N & ")", , 3700, 4400))
If kvs > 5 Then Print: kvs = 0 ‘ввод в строке по 5 элементов
Print " intA("; i; ")= "; intA(i); " ";
Next i
End Sub
Для события Click кнопки Command2 (Случайный ввод) напишите следующий код:
Private Sub cmdСлучВвод_Click()
'задание массива случайно в диапазоне [-20, 20]
Const Mn As Integer = -20
Const Mk As Integer = 20
Dim i As Integer, kv As Integer
N = Val(txtN.Text)
‘переопределяем динамический массив intA(N)
‘после определения переменной N:
ReDim intA(N) As Integer
Cls
CurrentY = 1300: CurrentX = 40
FontSize = 8
Print " ИСХОДНЫЕ ДАННЫЕ"
kv = 0
For i = 1 To N
kv = kv + 1
intA(i) = Int(Rnd * (Mk - Mn + 1)) + Mn
Print " intA("; i; ")= "; intA(i); " ";
If kv = 5 Then Print: kv = 0
Next i
End Sub
Для события Click кнопки cmdВычислить напишите следующий код:
Private Sub cmdВычислить_Click()
Dim i As Integer, sum_ As Integer
Dim sum2 As Integer, mul_ As Long
Dim mul2 As Long
FontSize = 8
sum_ = 0: sum2 = 0: mul_ = 1: mul2 = 1
For i = 1 To N
If intA(i) Mod 2 = 0 Then sum2 = sum2 + intA(i): _
mul2 = mul2 * intA(i)
If intA(i) < 0 Then sum_ = sum_ + intA(i): _
mul_ = mul_ * intA(i)
Next i
FontItalic = True
FontSize = 10
Print “===================================="
Print " РЕЗУЛЬТАТЫ РАСЧЕТОВ"
Print "===================================="
FontItalic = False
Print " Сумма четных элементов = "; sum2
Print " Произведение четных элементов = "; mul2
Print " Сумма отрицательных элементов = "; sum_
Print " Произведение отрицательных элементов = "; mul_
End Sub
Для ускорения написания кода копируйте одинаковые фрагменты кода из одной процедуры в другую.
Выдачу результатов на форму можно изменить. Поскольку выдаются параметры одного названия и количества, то вместо оператора Print используйте элементы управления этикетки (Label).
