Результаты расчетов в Mathcad (листинг приведен ниже)
Задание 4
Разработать алгоритм и написать программу на языке программирования Бейсик для обработки данных, представленных одномерным массивом. В алгоритме и программе предусмотреть ввод и вывод данных на форму согласно требованиям, указанным в задании, с использованием метода PRINT.
Указания к выполнению задания
Массивы.
Массивом называется совокупность индексированных элементов. Например, двумерный массив можно выразить a(i,j), где i означает номер строки, j – номер столбца. Массивы в VB можно классифицировать по следующим признакам : числу измерений, области видимости, способу распределения памяти. VB позволяет создавать одномерные и многомерные массивы. Число размерностей массива может достигать до 60.
Нумерация элементов массива начинается с нуля. Для изменения индексации с нуля на единицу используется оператор Option Base N, где N может принимать значения 0 и 1. Оператор Option Base записывается в раздел General.
Объявление массивов осуществляется следующим образом
Dim B(10) As Double – одномерный массив, содержит 11 элементов;
Dim C(5 TO 8, 1 TO 10) As Integer – двухмерный массив, имеет 4 строкb и 10 столбцов. Нумерация строк начинается с 5, а нумерация столбцов с единицы. Следует различать:
Массивы со статическим распределением памяти.
Эти массивы объявляются один раз и не меняют своих размерностей в процессе выполнения программы. Границы размерностей задаются только числами, нельзя использовать для указания размерности переменные.
Массивы с динамическим распределением памяти. Эти массивыобъявляются в два этапа. Сначала они объявляются без указания размерности:
Dim AMassiv ( ) As Variant.
Затем с помощью оператора ReDim устанавливаются фактические размерности массива. В отличие от оператора Dim оператор ReDim используется только в процедурах. Оператор ReDim допускает использование переменных для указания размерностей массивов:
ReDim MassivA(5, 10 ) As Integer
ReDim MassivB(m, n ) As Single
Метод Print
Метод Print может выводить информацию непосредственно в форму или графический объект PictureBox. Синтаксис метода Print имеет следующую структуру
Print [“текстовое сообщение”] [;/_/,] <список выражений> [;/,]
Здесь “текстовое сообщение” – символьное выражение;
[;/_/,] - управляющие символы: если в качестве разделителя используется “;” или пробел “_”, то очередное значение выводится непосредственно вслед за предыдущим значением. При этом, выводимая информация сливается Если в качестве разделителя используется запятая, то очередное значение выводится в соседнюю зону. Выводная строка оператора Print разбита на пять зон по 14 символов в каждой, что позволяет позиционировать выводимую информацию;
<список выражений> - в качестве выводимых значений могут использоваться константы, переменные, функции, арифметические выражения или текст;
[;/,] - управляющие символы. При наличии этих символов по окончании вывода информации курсор остается в текущей строке и поэтому следующий оператор Print будет продолжать печать с этой позиции. При отсутствии этих управляющих символов по окончании вывода информации курсор переходит на новую строку.
Варианты задач
Варианты задач представлены в таблице 9.
Таблица 9. Индивидуальные варианты задания 1
Вариант | Условие задачи | Исходные данные | Представление исходных данных и результатов |
Определить среднее арифметическое D минимального и максимального значений массива А | А=(0; 1; -5; 6; 9; 7; -6; -4; 1; -1) | Вывести исходный массив и результаты в строку | |
Определить среднее геометрическое D абсолютных значений максимального М и минимального N значений массива A. ( ) | A=(0; 1; -3; 6; 9; 7; 6; 4; 1; -1) | Вывести исходный массив А в столбец, а массив D и значения M,N в строку | |
Упорядочить массив А по возрастанию, а массив В по убыванию | А=(-6;8;0;-1;1) В=(7;-7;5;-1;0) | Вывести построчно значения исходных и упорядоченных массивов | |
Сформировать массив А из положительных, а массив В из отрицательных элементов исходного массива С | С=(-7; 7; -1; 0; 5; 6; -6; 4; 7; –9) | Вывести исходный массив С в строку, а массивы А и В в столбец | |
Сформировать массив А из элементов массива В по условию Аi =| Bi-2 |, при 1<Bi£4,Bi³9 Ai=sin2(Bi+1), при Bi£1, 4<Bi<9 | B=(0; -5; 7; -1; 2; 1; 1; 3; 4; 9; 6) | Вывести исходный массив В в строку, а массив А в столбец | |
В массиве А определить минимальное и максимальное значения и их порядковые номера. | А=( -7; 5; 0; 5; -7; 8; 5; 9; 1; 5) | Вывести исходный массив А в строку, а результаты в столбец | |
Определить сумму квадратов отклонений каждого элемента массива А от среднего арифметического | А=(2; 0; 4; 5; 3; 2; 5; 2; 1; 7; 4) | Вывести исходный массив в строку, а результаты в столбец | |
Сформировать массив А из положительных значений элементов исходного массива В, а массив С из отрицательных. Определить количество элементов равных 0. | В=(-20; 6; -1; 5; 7; 4; 0; 1; -2; 0; 9) | Вывести значения исходного массива в строку, а результирующих массивов А и С в два, рядом стоящих столбца | |
Записать в массив А номера положительных, в массив В номера отрицательных, в массив С номера нулевых значений элементов исходного массива D | D=(-60; -10; 10; 7; 0;-7; 4; 0; 13; -4) | Вывести построчно значения элементов массивов A, B, C, D | |
Вычислить среднее арифметическое М положительных элементов и среднее геометрическое К абсолютных значений отрицательных элементов массива А | А=(-8; 6; 7; -4; -9; 5; 9; -5; -2; 7) | Вывести значения элементов массива А в столбец, а значения М и К в строку | |
Сформировать массив А из положительных и массив В из отрицательных значений функции F=sin(k*x*e)*cos(k*x*e) | k = 1;2;…;10; е=0.25; x=0.3 | Вывести исходные данные в строку, а значения массивов А и В в два рядом стоящих столбца | |
Найти минимальное значение исходного массива А и его порядковый номер. Упорядочить массив по возрастанию | А=(20; 9; 6; 4; 7; 10; 40; 8; 9; 13) | Вывести построчно значения исходного, упорядоченного массива и расчетных значений | |
Сформировать массив А из положительных и массив В из отрицательных значений функции F=sin(k*x+p/4)*cos(k*x-p/4) | k = 1;2;…;10; x=0.3 | Вывести исходные данные в строку, а значения массивов А и В в два рядом стоящих столбца | |
Определить максимальное М и минимальное N значение массива A и поменять их местами | A=(0; 1; -3; 6; 9; 7; 6; 4; 1; -1) | Вывести исходный массив А и результирующий в два, рядом стоящих столбца, а результаты M,N в строку | |
Сформировать массив А из номеров положительных значений элементов исходного массива В, а массив С из номеров отрицательных. | В=(-20; 6; -1; 5; 7; 4; -10; 1; -2; 20; 9) | Вывести значения исходного массива в строку, а результирующих массивов А и С в два столбца |
Пример выполнения задания
1. Сформировать массив А из элементов массива В= (-5, 6, 3, 0, 2) и С= (2, 7, -8, 9, 3) по признаку
ì |Bi +Ci| , при 0 £ Bi £ 2, Bi ³ 6
Аi =í
î (Bi + Ci)2 , при Bi < 0, 2 < Bi < 6
Вывести значения исходных массивов В и С в столбик, а результирующего массива А в строку
Значения искомой функции А определены на всей числовой оси
Вычислительный процесс представляет собой циклический процесс. В теле цикла анализируется условие 0 £ Bi £ 2, Bi ³ 6. В результате анализа данного условия вычисляется значение текущего элемента А по формуле
Аi = |Bi +Ci| , если условие 0 £ Bi £ 2, Bi ³ 6 выполняется, и по формуле
Аi = (Bi + Ci)2 , если предыдущее условие не выполняется.
Условие Bi < 0, 2 < Bi < 6 отдельно не анализируется, так как оно включает все оставшиеся значения числовой оси Вi, не удовлетворяющие первому условию.
2. Интерфейс программы представляет пустую форму.
3. Программный код, реализующий алгоритм решения.
Private Sub Form_Load()
REM ПРИМЕР ПРОГРАММЫ ОБРАБОТКИ ОДНОМЕРНЫХ МАССИВОВ
Dim A()as double
Dim B() as double
Dim c() as double
Dim N as integer
N= val(INPUTBOX( "ВВЕДИТЕ РАЗМЕРНОСТЬ ОДНОМЕРНОГО МАССИВА "))
REM ОБЪЯВЛЕНИЕ МАССИВА И ВВОД ИСХОДНЫХ ДАННЫХ
Redim A(N)
Redim B(N)
Redim c(N)
Rem Ввод значений элементов массива B()
FOR I = 1 TO N
B(I)= val(INPUTBOX("ВВЕДИТЕ значения элементов массива B()"))
NEXT I
Rem Ввод значений элементов массива С()
FOR I = 1 TO N
С(I)= val(INPUTBOX("ВВЕДИТЕ значения элементов массива С()"))
NEXT I
REM РАСЧЕТ ЗНАЧЕНИЙ МАССИВА А
FOR I = 1 TO N
IF B(I) >= 0 AND B(I) <= 2 OR B(I) >= 6 THEN
A(I) = ABS(B(I) + c(I))
ELSE
A(I) = (B(I) + c(I)) ^ 2
END IF
NEXT I
REM ВЫВОД ИСХОДНЫХ ДАННЫХ И РЕЗУЛЬТАТОВ РАСЧЕТОВ
PRINT "ЗАДАНИЕ ВЫПОЛНИЛ СТ-Т ИВАНОВ И.И., ГР.БГТУ , ВАРИАНТ 1"
PRINT "ИСХОДНЫЕ ДАННЫЕ: значения элементов массива В С"
FOR I = 1 TO N
PRINT TAB(10); B(I); TAB(20); c(I)
NEXT I
PRINT "РЕЗУЛЬТАТЫ РАСЧЕТОВ"
FOR I = 1 TO N
PRINT A(I);
NEXT I
END Sub
4. Результаты расчетов в VB 6
Литература
1. В.Л. Быков, Ю.П. Ашаев Основы информатики. Пособие. Издательство БГТУ. – Брест, 2006. – 430 с.: ил.
2. В.Л. Быков, Ю.П. Ашаев Основы информатики. Практикум. Пособие для студентов технических специальностей. Издательство БГТУ. – Брест, 2006. – 316 с.: ил.
3. А. А. Попов Excel: практическое руководство – Москва: ДЕССКОМ,2000
4. С. Ковальски Excel 2000 – М.: ЗАО «Издательство БИНОМ», 1999
5. Ч. Рабин Эффективная работа с Microsoft Word 2000 – СПб: Издательство «Питер», 2000