Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика ЛБ / Методичка ЛБ.doc
Скачиваний:
32
Добавлен:
08.02.2016
Размер:
8.14 Mб
Скачать

Лабораторная работа №14

Тема: Основы программирования в интегрированной среде Visual Basic. Массивы данных. Использование функций и процедур для работы с массивами.

Цель работы:

  • освоить работу с массивами данных в VBA.

Теоретические сведения

Массивы представляют собой организованный набор однотипных переменных, компактно расположенных в оперативной памяти.

Объявление массива с использованием оператора Dimимеет следующий синтаксис:

Dim VarName([Subscripts]) [As Type]

VarName- любое имя массива, использующее допустимый идентификатор имени;

Subscripts- измерение массива. Если размерность массива больше единицы, то Subscripts разделяются запятыми.

Оператор Subscriptsимеет следующий синтаксис:

[lower To] upper [,[lower To] upper]..

lower- определяет нижний диапазон допустимых индексов для массива (необязательный аргумент);

upper- определяет верхний предел для индексов массива (обязательный аргумент).

Примеры правильного объявления массивов:

Dim Array_Str (1 To 10) As String- одномерный статический строковый массив, включающий 10 элементов;

Dim Array_Var()- динамический массив;

Dim Array_Mult (0 To 5, 0 To 7) As Integer- двумерный статический массив целых чисел, включающий 6*8=48 элементов.

При объявлении массивов следует помнить, что включение оператора Subscriptsв объявлении массива создает статический массив с фиксированным числом элементов, пропуск оператораSubscriptsв объявлении массива создает динамический массив, а установка директивы компилятораOption Baseвлияет на общее число элементов в массиве.

Для доступа к элементу массива необходимо указывать имя массива, за которым следует значение индекса, заключеное в круглые скобки. При помощи вложенных циклов довольно легко можно организовать инициализацию двумерного массива:

Могут сложиться обстоятельства, при которых точно неизвестно, сколько элементов потребуется в массиве. В VBA имеется возможность при помощи оператора ReDimпереопределять размерность массива, а во время объявления не указывать его размерность.

Синтаксис ReDim:

ReDim [Preserve] varname(subscripts) [As Type] [, varname(subscripts) [As Type]]

varname - имя существующего массива;

subscripts - размерность существующего массива;

Type - любой тип VBA. Необходимо использовать отдельный оператор As Type для каждого массива, который определяется;

Preserve - необязательный аргумент. Его использование приводит к тому, что данные уже имеющиеся в массиве, сохраняются после изменения его размерности.

Примеры правильного использования оператора ReDim:

Dim Array_Month() As String- одномерный строковый динамический массив

ReDim Array_Month(29)- устанавливет размерность динамического массива равную 29 элементам

ReDim Array_Month(1 To 30)- изменяет размер массива до 30 элемента

ReDim Preserve Array_Month(1 To 31)- изменяет размер массива до 31 элемента, сохраняя содержимое

Dim Array_DBL() As Single- объявляет динамический массив

ReDim Array_DBL(2, 9)- делает массив двумерным

ReDim Array_DBL(3, 7)- изменяет размер двумерного массива

ReDim Preserve Array_DBL(1 To 3, 1 To 5)- изменяет последний размер массива, сохраняя содержимое

Можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserve.

Функции LBound, UBound возвращают нижнее и верхнее граничные значения индексов статического или динамического массива.

Синтаксис:

LBound (array_Name [, dimension])

UBound (array_Name [, dimension])

array_Name - имя массива

dimension - целое число (необязательный аргумент). Определяет измерение массива, для которого надо получить верхний или нижний предел. При отсутствии dimension возвращается предел для первого измерения массива.

Оператор Erase позволяет выполнять очистку для статических массивов и удаление - для динамических. Когда элементы массива заполнены, данные в массиве остаются до тех пор, пока пользователь не присвоит новые значения элементам массива или пока VBA не освободится от массива. Это можно сделать следующим образом:

Erase My_Array

Данный оператор обнуляет (если массив статический) или очищает (если массив динамический) массив My_Array.

Оператор Eraseудаляет из памяти динамические массивы, освобождая область памяти, ранее используемую этим массивом. При удалении динамического массива с помощью оператораEraseнеобходимо повторно создать массив с помощью оператора ReDim перед тем, как можно будет использовать этот определенный динамический массив снова.

Ячейка рабочего листа не является объектом Excel. К отдельной ячейке рабочего листа можно получить доступ через объектRange, который представляет собой совокупность ячеек. ОбъектRangeможет представлять как единственную ячейку таблицы, так и строку или столбец, некоторую прямоугольную область,а также объединения подобных несмехных элементов.

Пример адресации ячеек рабочего листа:

Dim MyRange As Range

Set MyRange = Range (“C1:C4”)

MyRange.Range(“A1”)=7

MyRange.Range(“A2”)=“=A1+2”

MyRange.Range(“A3:A4”)=“=A1+A2”

Первая инструкция объявляет имя MyRangeкак имя диапазона.Вторая инструкция задает объектMyRange, заданный диапазономC1:C4. Третья инструкция задает ячейку С1 в абсолютных адресах. В четвертой и пятой инструкциях ссылки слева от знака равенстваделаются относительно объектаMyRange,а ссылки справа от знака равенства привязаны к абсолютным адресам.

Задание 1. Для заданного массива чисел Х и некоторой величины С, определить, сколько элементов массива меньше С. Для решения этой задачи необходимо разработать функцию.

Поместить в окно кода модуля заготовку создаваемой функции. Выполнить команду Вставить, Процедура. В появившемся окнеДобавить процедуруустановить переключатель типа процедуры в положение функция и ввести имя функцииFRP1. Ввести код функцииFRP1.

Public Function FPR1(X As Variant, C As Variant) As Integer

1: Dim k As Integer, I As integer, j As Integer

2: n= X.Rows.Count

3: m= X.Columns.Count

4: k=0

5: For i=1 To n

6: For j=1 To m

7: If X(i,j) < C Then

8 k=k+1

9: End If

10: Next

11: Next

12: FPR1 = k

End Function

Свернуть окно редактора VBA. В открывшемся окнеExcelМассивы.xlsпротестировать созданную функцию.

Задание 2. По работе с одномерными массивами выполнить индивидуальное задание в соответствии с вариантом заданным преподавателем (Таблица 14.1). Количество элементов массива задано числомN.

Таблица 14.1

Вариант

Размер массива N

Условия задания

1

10

Для заданного одномерного массива чисел В, состоящего из Nцелочисленных элементов найти максимальный среди четных по индексу и положительных по значению элементов массива.

2

8

Для заданного одномерного массива чисел С, состоящего из Nцелочисленных элементов найти среднее арифметическое отрицательных, нечетных по значению элементов массива.

3

9

Для заданного одномерного массива чисел D, состоящего изNцелочисленных элементов найти количество положительных элементов, кратных по значению 3.

4

7

Для заданного одномерного массива чисел L, состоящего изNцелочисленных элементов найти сумму элементов данного массива, четных по индексу и не превышающих по значению первый элемент массива.

5

6

Для заданного одномерного массива чисел L, состоящего изNцелочисленных элементов найти произведение всех нечетных по значению, отрицательных элементов массива..

6

8

Для заданного одномерного массива чисел М, состоящего из Nцелочисленных элементов найти сумму элементов, не превышающих по абсолютному значению последний элемент.

7

10

Для заданного одномерного массива чисел С, состоящего из Nцелочисленных элементов найти минимум между средними арифметическими четных отрицательных и нечетных отрицательных элементов массива.

8

8

Для заданного одномерного массива чисел V, состоящего изNцелочисленных элементов найти максимальное по модулю значение четных элементов массива.

9

6

Для заданного одномерного массива чисел F, состоящего изNцелочисленных элементов найти среднее арифметическое четных отрицательных элементов массива.

10

7

Для заданного одномерного массива чисел Z, состоящего изNцелочисленных элементов найти произведение всех четных элементов не равных нулю

Задание 3. По работе с двумерными массивами выполнить индивидуальное задание в соответствии с вариантом заданным преподавателем (Таблица 14.2). Размеры массива заданы числамиNиM.

Таблица 14.2.

Вариант

N

M

Условия задания

1

5

4

Найти максимальный по величине элемент в матрице.

2

4

6

Найти сумму значений элементов главной диагонали матрицы.

3

5

5

Найти минимальный по величине элемент в главной диагонали матрицы.

4

4

4

Найти произведение значений всех элементов четных строк матрицы.

5

6

6

Найти сумму значений всех элементов, расположенных по периметру матрицы.

6

6

4

Найти сумму значений всех элементов нечетных столбцов матрицы.

7

5

6

Найти среднее арифметическое значений элементов каждого столбца матрицы.

8

4

3

Найти число элементов в матрице, значения которых равны единице.

9

5

4

Найти число положительных элементов в матрице.

10

3

5

Найти произведение значений элементов нечетных столбцов матрицы.

Контрольные вопросы.

  1. Дайте понятие массива данных.

  2. Как задаются элементы массива? Приведите примеры массивов.

  3. Как можно объявить массив?

  4. Какой тип переменных должен быть задан для элементов массива при работе с ячейками таблицы?

  5. Как можно задать одномерный массив?

  6. Опишите объект Range.

  7. Для каких целей используется метод Offset?

Литература[5, 8].

Список использованной и рекомендуемой литературы

  1. Слетова Л.А. Word2007 / Л.А. Слетова. – М.: Эксмо, 2007. – 160с.

  2. Пащенко И. Word2007. Шаг за шагом. / И. Пащенко. . – М.: Эксмо, 2008. – 464с.

  3. Курбатова Е.А.MicrosoftExcel2007: Самоучитель / Е.А. Курбатова. – К.: Диалектика, 2010, 315с.

  4. Романенко В.Н. Работа в интернете от бытового до профессионального поиска: практическое пособие с примерами и упражнениями / В.Н. Романенко, Г.В. Никитина, В.С. Неверова. – СПб.: Профессия, 2008. – 416с.

  5. Зиборов В. Visual Basic 2010 на примерах / В. Зиборов. – БХВ: Петербург, 2010. – 320с.

  6. Донцов Д. Word2007. Начали / Д. Донцов. – СПб.: Питер, 2008. – 128с.

  7. Уокенбах Джон. Excel2007. Библия: пер. с англ. / Джон Уокенбах. – К.: Диалектика, 2008, 768с.

  8. Коноплева И.А. Информационные технологии / И.А. Коноплева, О.А. Хохлова, А.В. Денисов. – Проспект, 2013. – 328с.

Неля Викторовна Сикерина

Методические указания

по выполнению лабораторных работ

для курсантов специальности

Соседние файлы в папке Информатика ЛБ