
Лекция_4-2_VBA_программирование_4-2_двум_массив.ppt
- Количество слайдов: 51
6. ОБРАБОТКА ДВУМЕРНЫХ МАССИВОВ
Двумерный массив можно представить себе в виде таблицы, в которой все строки и столбцы пронумерованы. Каждый элемент такого массива имеет два индекса: Первый индекс – это номер строки; Второй индекс – номер столбца. A(1, 1) A(1, 2) A(1, 3) A(1, 4) A(1, 5) A(2, 1) A(2, 2) A(2, 3) A(2, 4) A(2, 5) A(3, 1) A(3, 2) A(3, 3) A(3, 4) A(3, 5) A(4, 1) A(4, 2) A(4, 3) A(4, 4) A(4, 5)
При работе с матрицами нужно перебирать строки и столбцы, поэтому следует организовать двойной (вложенный) цикл. Например, при работе с матрицей А(3, 2): Перебор столбцов Перебор строк
Описание двумерных массивов: Dim A (4, 5) as Integer Строки Столбцы A (2, 4) A(1, 1) A(1, 2) A(1, 3) A(1, 4) A(1, 5) A(2, 1) A(2, 2) A(2, 3) A(2, 4) A(2, 5) A (4, 2) A(3, 1) A(3, 2) A(3, 3) A(3, 4) A(3, 5) A(4, 1) A(4, 2) A(4, 3) A(4, 4) A(4, 5)
Если необходимо описать массив, то с помощью индексов указывается размерность массива и при этом 0 - базовый индекс. то: Dim B(3, 3) As Single описывает В двумерный массив - 4*4 матрицу, состоящую из действительных чисел. Первый элемент массива будет В(0, 0) а последний В(3, 3)
Двумерные массивы создаются путем ввода данных с клавиатуры, с помощью случайных чисел и вычислений по формулам. Для формирования массива используется два вложенных цикла. Первый цикл перебирает строки, а второй – столбцы. For i=1 to n For j=1 to m For i=1 to n a(i , j)=Input. Box(“Ввод”) Next I For j=1 to m Next j a(i , j)=Rnd() For i=1 to n Next I For j=1 to m Next j a(i , j)=i*j Next I Next j
Операции с массивами 5 Задачи обработки двумерных массивов 1. Составить программу, которая создает массив случайных чисел, выводит его на экран и вычисляет сумму всех его элементов; 2. Составить программу, которая в двумерном массиве случайных чисел находит в каждой строке наибольший элемент и записывает его в одномерный массив ; 3. Составить программу, которая вычисляет суммы элементов столбцов двумерного массива и записывает их в одномерный массив. 4. Составить программу, которая в двумерном массиве случайных чисел элементы всех четных строк делает нулевыми. 5. Составить программу, которая в каждом столбце двумерного массива случайных чисел находит наименьший элемент и записывает его индекс в одномерный массив. 6. Составить программу, которая в двумерном массиве находит самое большое значение и элементы строки и столбца, на пересечении которых он стоит, делает нулевыми. 1/21/2018 Массивы 7
Операции с массивами 5 Алгоритмы обработки одномерных массивов 1. Поиск максимального и минимального элемента; 2. Вычисление произведения элементов массива 3. Вычисление суммы элементов массива 4. Поиск количества элементов по данному правилу или номер (например Посчитать количество отрицательных элементов в массиве или Указать индекс первого нулевого элемента в массиве ); 5. Нахождение элементов массива по элементам другого массива; 6. Умножение двух векторов (Найти скалярное произведение); 7. Сортировка массива чисел методом ‘’пузырька 1/21/2018 Массивы 8
Пример. Найти сумму элементов матрицы А(3, 2) Пример
Пример. Найти произведение положительных и Пример отрицательных элементов матрицы М(6, 12)
Контрольный пример Сколько чисел будет просуммировано в результате работы приведенного фрагмента программы? D 1 2 3 4 S=0 1 1 2 3 4 10 2 1 4 7 8 20 For I = 1 To 5 3 4 1 6 8 11 15 12 16 30 40 5 1 10 19 20 50 For J = 1 To 4 5 30 55 60 S = S + D(I, J) Варианты ответов: Next А. 5 Next В. 4 С. 20 D. 9
Контрольный пример Чему равно S в результате работы приведенного фрагмента программы? D 1 2 3 4 S=0 1 2 1 2 4 3 7 4 8 10 20 For I = 1 To 5 3 4 1 6 8 11 15 12 16 30 40 For J = 1 To 4 5 1 5 10 30 19 55 20 60 50 S = S + D(I, J) Варианты ответов: Next А. 10 Next В. 150 С. 60 D. 50
Контрольный пример Чему равно S в результате работы приведенного фрагмента программы? D 1 2 3 4 For I = 1 To 5 1 2 4 3 7 4 8 10 20 3 1 6 11 12 30 S=0 4 1 8 15 16 40 5 1 10 19 20 50 For J = 1 To 4 5 30 55 60 Варианты ответов: S = S + D(I, J) Next А. 10 Next В. 150 С. 60 D. 50
Контрольный пример Какой результат вычисляет приведенный фрагмент программы? Варианты ответов: P=1 А. Суммы индексов элементов For I = 1 To 7 пятой строки. For J = 1 To 5 В. Произведения элементов 7 –ой P = P*A(I, J) строки. Next С. Сумма всех элементов. Next D. Произведение всех элементов
Контрольный пример Какой результат вычисляет приведенный фрагмент программы? S=0 Варианты ответов: For I = 1 To 3 А. Сумму элементов третьего For J = 1 To 5 столбца. S = S + C(3, J) В. Сумму элементов третьей Next строки. Next С. Сумму всех элементов. D. Утроенную сумму элементов третьей строки. .
Контрольный пример Какой результат вычисляет приведенный фрагмент программы? S 3 = 0 Варианты ответов: For I = 1 To 3 А. Сумму элементов третьего For J = 1 To 5 столбца. S= S 3 + C(3, J) В. Сумму элементов третьей Next строки. Next С. Сумму всех элементов. D. A, B, C - не верны. .
Контрольный пример Какой результат вычисляет приведенный фрагмент программы? P=1 For I = 1 To 7 For J = 1 To 5 P = P*A(I, J) Варианты ответов: Next А. Суммы всех строк. В. Произведения всех столбцов. С. Сумма всех элементов. D. Произведение всех элементов
Пример. Массив D расположен в ячейках A 2: F 5 ЭТ с Пример именем Массив. Найти произведения его элементов по столбцам и записать их в массив с именем Р. Результат поместить на лист Произведение, в ячейки D 1: D 6. Решение 1. Исходный массив: 2. Результат: Массив D(4, 6) Массив Р(6)
Контрольный пример Сколько чисел будет получено в результате работы приведенного фрагмента программы? For I = 1 To 7 P(I) = 1 For J = 1 To 5 P(I) = P(I)*N(I, J) Варианты ответов: Next А. 5 Next В. 7 С. 35 D. 12
Пример. Массив К расположен в ячейках C 4: D 8 листа Пример Первый. Записать удвоенное значение элементов этого массива в ячейки В 2: С 6 листа Второй. Исходный массив Результат вычислений К(5, 2) Четвертая строка, Вторая строка, второй Третий столбец столбец
Контрольный пример Укажите адрес ячейки, начиная с которой осуществляется считывание массива М из ЭТ? For I = 1 To 5 For J = 1 To 8 M(I, J) = Старый. Cells(I+3, J+1) Новый. Cells(I, J+4) = 3*M(I, J) Next Варианты ответов: Next А. Лист Старый, ячейка В 4. В. Лист Старый, ячейка D 2. С. Лист Новый, ячейка В 4. D. Лист Новый, ячейка D 2.
Контрольный пример Укажите адрес ячейки, начиная с которой осуществляется запись массива Р в ЭТ? For I = 1 To 7 For J = 1 To 6 Р(I, J) = Третий. Cells(I+4, J) Четвертый. Cells(I+6, J+3) = 5+Р(I, J) Next Варианты ответов: А. Лист Третий, ячейка А 5. В. Лист Третий, ячейка Е 1. С. Лист Четвертый, ячейка D 7. D. Лист Четвертый, ячейка G 4.
Работа с подпрограммами Visual Basic for Application позволяет осуществлять: • обращение из одной процедуры в другую; • передачу параметров из одной процедуры в другую.
Обращение из одной процедуры к другой Осуществляется в теле основной программы посредством указания имени процедуры, к которой происходит обращение.
Передача параметров из одной процедуры в другую Для задания конкретных (фактических) значений параметров при обращении к вспомогательной процедуре (подпрограмме) из основной используют оператор Call. Его синтаксис: Call Имя. Процедуры(фактические параметры) Описание параметров в скобках после имени процедуры. Имя вспомогательной процедуры (подпрограммы) имеет синтаксис: Имя. Процедуры(формальные параметры)
Пример Создать программу Главная, из которой осуществляется обращение к двум вспомогательным процедурам: Исходная и Результат. Каждая из вспомогательных процедур должна выводить окно с сообщением, какая программа работает.
Программа Главная
При запуске программы (F 5) курсор должен находиться в тексте основной программы. В результате появляется первое диалоговое окно, затем после нажатия на кнопку Ок, окно закрывается и начинает работать вторая подпрограмма.
Пример Создать процедуру, вычисляющую площадь круга по значению радиуса R. Осуществить несколько обращений к этой процедуре, различными способами задавая фактические параметры. Решение Вспомогательную процедуру, содержащую алгоритм вычисления площади круга, помещаем внизу основной программы, передающей значения фактических параметров.
Результат работы программы
Тренировочный тест
1. Программа, осуществляющая перевод программ с алгоритмического языка в машинный код, называется: А. Переводчиком. В. Транслятором. С. Преобразователем. D. Коммутатором.
2. Укажите значения переменной В полученные в результате работы фрагмента программы: i=2 А. 7, 13, 19, 25, 31 В. 7, 13, 19, 25 Нет С. 7, 13, 19 i<10 Да D. 7, 10, 13, 16, 19, 22, 25 В=i*3+1 i=i+2
3. Что вычисляется в результате фрагмента программы? i=1 А. Сумма нечетных положительных элементов Нет массива. хi>0 В. Сумма четных Да положительных элементов S=S+xi массива i=i+2 С. Сумма отрицательных элементов массива. i<N D. Сумма положительных Да элементов массива
4. Укажите запись, где тип переменной А – вещественное число: A. Dim A as Single B. Dim A as Currency C. Dim A as Integer D. Dim A as Long
5. Какое значение примет переменная D после выполнения фрагмента программы, если Х=25? If X>30 Then D=4*X Else. If X<15 Then A. 100 D=X/25 B. 5 Else C. 25 D=X D. 0 End If
6. Массив Х(10) задан числами: 2, 1, 2, 1, 1, 1, 3, 1, 3. Чему равна переменная С 1 после выполнения фрагмента программы? C 1=0 C 2=0 A. 8 For I=1 to 10 If X(I)>0 Then B. 0 C 1=C 1+X(I) C. Ошибка в операторе Else C 2=C 2+X(I) D. -8 End If Next I
7. Сколько чисел запишется в массив S ? For J=1 To 8 A. 8 S(J)=0 B. 40 For I=1 To 5 S(J)=S(J) +A(I, J) C. 12 Next I D. 5 Next J
8. Дана матрица В Какое сообщение будет напечатано в диалоговом окне? I=2 A. Cумма 1 -й строки равна 12. S=0 B. Сумма 2 -й строки равна 4. For J=1 To 4 C. Сумма равна 56. S=S+B(I, J) D. Ошибка в тексте программы. Next J Msg. Box(“Сумма” & I & “-й строки равна“ & S)
9. Какие числа будут выведены на экран после выполнения программы? Public Sub Пример ( ) Sub Сложение (X, Y, R ) Dim А, В, С As Integer R= X + Y A = 100 Msg. Box R B = 200 End Sub Call Сложение (A, В, C) Sub Вычитание (X, Y, Z) С=С+200 Z= Z – (X + Y) Call Вычитание (В, 50, C) Msg. Box Z End Sub End Sub А. Ошибка в программе B. 300 и 250 С. 500 и 300 D. 300 и 200
10. Для создания пользовательской формы нужно выполнить команды: А. Сервис – Макрос – Редактор Visual Basic – Show – User. Form. B. Сервис – Макрос – Редактор Visual Basic – Insert – User. Form. C. Сервис – Макрос – Редактор Visual Basic – Activate - User. Form. D. Сервис – Макрос – Редактор Visual Basic – Caption - User. Form.
Пример. (Защита лабораторных работ) Создать процедуру для выполнения следующих заданий: 1. Записать в массив с именем N данные, хранящиеся в ячейках C 4: F 6 листа Excel с именем «Данные» . 2. Найти сумму элементов второго столбца массива N и присвоить ее значение переменной D. 3. Вывести диалоговое окно с сообщением «Сумма элементов второго столбца равна» D. 4. Если D < -5, записать D в ячейку Е листа Excel с именем «Коэффициент» . Если – 5 =< D < 3, записать D в ячейку Е 2 листа «Коэффициент» .
При 3 =< D < 7 поместить D в ячейку Е 3, иначе – в ячейку Е 4 листа «Коэффициент» . 5. Проанализировать значение ячейки В 3 листа Excel с именем «Коэффициент» . Если это значение больше нуля, записать в ячейки B 5: E 7 листа с именем «Новый» утроенное значение массива N. Если значение ячейки ВЗ<=0, то вычислить и записать в ячейки D 3: G 5 листа ЭТ с именем «Новый» значения функции синус от элементов массива N Sin(N(I, J)).
Решение Определяем размерность исходного массива на листе «Данные» N(3, 4) Первый элемент массива находится в четвертой строке (I + 3), третьем столбце (J + 2).
Выполнение задания 5. Запись результатов вычислений на лист Новый Значение ячейки В 3 >0 Значение ячейки В 3 <=0 Первый элемент – третья пятая строка (I + 4), строка (I +2), четвертый второй столбец (J + 1). столбец (J + 3).
Лекция_4-2_VBA_программирование_4-2_двум_массив.ppt