Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Тема: Основы программирования в интегрированной среде 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 Условия задания
    Для заданного одномерного массива чисел В, состоящего из N целочисленных элементов найти максимальный среди четных по индексу и положительных по значению элементов массива.
    Для заданного одномерного массива чисел С, состоящего из N целочисленных элементов найти среднее арифметическое отрицательных, нечетных по значению элементов массива.
    Для заданного одномерного массива чисел D, состоящего из N целочисленных элементов найти количество положительных элементов, кратных по значению 3.
    Для заданного одномерного массива чисел L, состоящего из N целочисленных элементов найти сумму элементов данного массива, четных по индексу и не превышающих по значению первый элемент массива.
    Для заданного одномерного массива чисел L, состоящего из N целочисленных элементов найти произведение всех нечетных по значению, отрицательных элементов массива..
    Для заданного одномерного массива чисел М, состоящего из N целочисленных элементов найти сумму элементов, не превышающих по абсолютному значению последний элемент.
    Для заданного одномерного массива чисел С, состоящего из N целочисленных элементов найти минимум между средними арифметическими четных отрицательных и нечетных отрицательных элементов массива.
    Для заданного одномерного массива чисел V, состоящего из N целочисленных элементов найти максимальное по модулю значение четных элементов массива.
    Для заданного одномерного массива чисел F, состоящего из N целочисленных элементов найти среднее арифметическое четных отрицательных элементов массива.
    Для заданного одномерного массива чисел Z, состоящего из N целочисленных элементов найти произведение всех четных элементов не равных нулю

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

Таблица 14.2.

Вариант N M Условия задания
      Найти максимальный по величине элемент в матрице.
      Найти сумму значений элементов главной диагонали матрицы.
      Найти минимальный по величине элемент в главной диагонали матрицы.
      Найти произведение значений всех элементов четных строк матрицы.
      Найти сумму значений всех элементов, расположенных по периметру матрицы.
      Найти сумму значений всех элементов нечетных столбцов матрицы.
      Найти среднее арифметическое значений элементов каждого столбца матрицы.
      Найти число элементов в матрице, значения которых равны единице.
      Найти число положительных элементов в матрице.
      Найти произведение значений элементов нечетных столбцов матрицы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

 

 

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

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

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

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

26.05.05 Судовождение

очной формы обучения

Тираж экз. Подписано к печати

Заказ №…………..Объем 4 п.л.

Изд-во ФГБОУ ВО «Керченский государственный морской технологический университет».

298309, г.Керчь, Орджоникидзе,82

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...