Область видимости процедур
В начале заголовка процедуры, т.е. перед словом Sub или Function, может указываться слово Private или Public, задающее область видимости процедуры:
- Private: процедура может вызываться только из процедур того модуля, в котором она находится;
- Public: процедура может вызываться из процедур как того модуля, в котором она находится, так и других модулей.
Если область видимости не указана, то по умолчанию предполагается видимость процедуры во всех модулях (т.е. область видимости, соответствующая слову Public). Если программа состоит только из одного модуля, то область видимости процедур этой программы никак не влияет на ее работу.
Варианты заданий
Примечания:
1 Варианты 1-7 – простые, остальные – более сложные.
2 Предполагается, что для решения задач из вариантов 15-21 будет использоваться (наряду с другими конструкциями VBA) оператор цикла DO WHILE.
3 При выполнении данной работы рекомендуется выполнить три задания: по одному из вариантов 1-7, 8-14, 15-21.
Вариант 1 – Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; вывод на экран номеров строк массива, где число x встречается хотя бы один раз.
Вариант 2 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; ввод некоторого целого числа i; замена всех чисел в i-й строке, превышающих введенное число x, на это число x (например, если введено x=5, i=2, то требуется во второй строке массива заменить на 5 все числа, превышающие 5); вывод измененного массива на экран.
Вариант 3 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; вычисление суммы каждой строки массива; вывод на экран номеров тех строк, суммы которых превышают x.
Вариант 4 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству столбцов в массиве a); ввод некоторого целого числа i; сравнение каждого элемента i-й строки массива a с соответствующим элементом массива b и подсчет количества случаев, когда элемент массива a превышал соответствующий элемент массива b; вывод подсчитанного количества случаев на экран.
Вариант 5 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива; ввод некоторого числа x; для каждого столбца массива – подсчет и вывод на экран количества вхождений числа x.
Вариант 6 –Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству столбцов в массиве a); в каждой строке массива a – замена всех элементов, превышающих соответствующий элемент массива b, на этот элемент массива b; вывод измененного массива a на экран.
Вариант 7 – Составить программу, выполняющую следующие действия: ввод двумерного числового массива a; ввод одномерного числового массива b (количество элементов в массиве b должно быть равно количеству строк в массиве a); ввод некоторого числа j; сложение каждого элемента j-го столбца массива a с соответствующим элементом массива b; вывод на экран измененного массива a.
Вариант 8 – В программе вводятся два двумерных массива (a и b) одинаковой размерности. Сравниваются суммы соответствующих строк массивов: сумма первой строки массива a – с суммой первой строки массива b, сумма второй строки a – с суммой второй строки b, и т.д. Если сумма строки массива a оказывается меньше суммы соответствующей строки массива b, то строки меняются местами (т.е. строка в массиве a заменяется на соответствующую строку из массива b, и наоборот). Обмен строками должен быть реализован в виде отдельной процедуры.
Вариант 9 – В программе вводятся два массива: двумерный (обозначим его как a) и одномерный (b), причем количество элементов в одномерном массиве должно быть равно количеству строк в двумерном массиве. Для каждого элемента массива b определяется ближайший к нему элемент в соответствующей строке массива a (т.е. элемент, разность с которым минимальна). Поиск ближайшего элемента должен быть реализован в виде отдельной процедуры. Из номеров этих ближайших элементов составляется одномерный массив.
Вариант 10 – В программе вводится двумерный массив. Из него должен составляться новый массив, включающий все строки исходного массива, кроме тех, которые состоят из одинаковых чисел. Проверка строк (чтобы выяснить, состоит ли данная строка из одинаковых чисел) должна быть реализована в виде отдельной процедуры.
Вариант 11 – В программе вводится двумерный массив. В каждой строке определяется максимальное и минимальное число, и вычисляется их разность. Строка, где эта разность максимальна, должна меняться местами со строкой, где разность минимальна. Определение минимального и максимального значения в строке должно быть реализовано в виде отдельной процедуры.
Вариант 12 – В программе вводится двумерный массив. Из него составляются два новых массива: в первый из них включаются те строки исходного массива, где нет ни одного отрицательного числа, во второй – те строки, где есть хотя бы одно отрицательное число. Проверка строки на наличие отрицательного числа должна быть реализована в виде отдельной процедуры.
Вариант 13 – В программе вводится двумерный массив. В каждой строке вычисляется среднее значение. Составляется новый массив такой же размерности, что и исходный массив. Строки нового массива составляются из элементов соответствующей строки исходного массива, превосходящих среднее значение по своей строке. Так как количество элементов, отбираемых из каждой строки, оказывается при этом разным, недостающие элементы в конце строк нового массива остаются равными нулю. Вычисление среднего по строке массива должно быть реализовано в виде отдельной процедуры.
Вариант 14 – В программе вводятся два двумерных массива (a и b). Количество строк в этих массивах должно быть одинаковым. Сравниваются суммы соответствующих строк массивов: сумма первой строки массива a – с суммой первой строки массива b, сумма второй строки a – с суммой второй строки b, и т.д. Составляется новый массив из двух строк. В первой строке нового массива содержатся номера тех строк исходных массивов, где сумма строки массива a оказалась больше суммы соответствующей строки массива b. Во второй строке нового массива содержатся номера всех остальных строк (т.е. тех, где сумма строки массива a не превысила сумму строки массива b). Суммирование строки массива должно быть реализовано в виде отдельной процедуры.
Вариант 15 – В программе вычисляется значение функции sh x (гиперболический синус) на основе ее представления в виде ряда Тейлора: . Значение переменной x, а также требуемая точность вводятся с клавиатуры. Вычисление ряда Тейлора должно быть реализовано в виде функции (вызывающая процедура должна содержать только ввод исходных данных, вызов функции и вывод результата).
Вариант 16 – В программе вводится квадратная матрица (обозначим ее как a) и некоторое число s. Элемент матрицы a(1,1) сравнивается с числом s. Если a(1,1) > s, то программа завершает работу. В противном случае вычисляется сумма элементов квадратной матрицы 2x2 из левого верхнего угла матрицы a. Если эта сумма снова оказывается меньше s, то вычисляется сумма матрицы 3x3, и т.д., пока не будет достигнута сумма, превышающая s. Вычисление суммы квадратной матрицы, выделенной из исходной матрицы a, должно быть реализовано в виде функции. Программа должна выводить на экран размерность квадратной матрицы, сумма которой превысила s. Если число s не превышено при суммировании всей матрицы a, то должно выводиться сообщение об ошибке.
Вариант 17 – В программе вводится одномерный массив a, состоящий из целых чисел, не превышающих 100. Вводятся также два числа: g (вводится значение 100) и k (некоторое произвольное целое число). В программе подсчитывается количество элементов массива a, превышающих величину g. Если это количество составляет не меньше k, то программа завершает работу; при этом из чисел, превышающих g, составляется новый массив. В противном случае величина g уменьшается на 0,5, и проверка повторяется. Подсчет количества элементов массива, превышающих заданную границу g, должен быть реализован в виде функции.
Вариант 18 – В программе вводится одномерный массив a и некоторое число s. Вычисляется среднее значение элементов массива. Если среднее значение превышает s, то программа завершает работу; при этом из ненулевых элементов массива a составляется новый массив. В противном случае в массиве определяется минимальное число, оно заменяется на ноль, снова вычисляется среднее, и проверка повторяется. Определение минимального элемента массива должно быть реализовано в виде функции.
Вариант 19 – В программе вычисляется интеграл от некоторой функции y = f(x) на отрезке [a, b] на основе метода левых прямоугольников. Для этого отрезок [a, b] разбивается на k участков одинаковой длины d=(b-a)/k, т.е. определяются точки x0 = a, x1 = a+d, x2=a+2d, …, xk-1 = a+(k-1)d. Вычисляются значения функции y в этих точках: y0 = f(x0), y1 = f(x1), …, yk-1 = f(xk-1). Оценка интеграла вычисляется как (y0+y1+…+yk-1)·d. Затем k увеличивается на единицу, и вычисление повторяется. Процесс завершается, когда разность оценок интеграла при двух последовательных значениях k оказывается меньше заданной точности. Требуется разработать программу для вычисления интеграла от функции этим методом. В программе должны запрашиваться границы отрезка (a и b), а также требуемая точность. Начальное значение k задается в программе (например, k=2). Непосредственно алгоритм вычисления интеграла должен быть реализован в виде функции.
Вариант 20 – В программе определяется решение некоторого уравнения f(x) = 0 на отрезке [a, b] методом дихотомии. Для применения этого метода необходимо выбрать точки a и b таким образом, чтобы величины f(a) и f(b) имели разные знаки. Определяется середина этого отрезка c = (b+a)/2, и в этой точке вычисляется значение f(c). Если это значение отличается от нуля на величину, не превышающую заданной точности, то задача решена (c – решение). В противном случае отрезок [a, b] разбивается пополам. Выбирается тот из двух полученных отрезков, на концах которого исследуемая функция f(x) принимает разные знаки, и для этого отрезка процесс повторяется. Требуется разработать программу для решения уравнения sin x / x = 0 этим методом. В программе должны запрашиваться границы отрезка (a и b), а также требуемая точность. Непосредственно алгоритм решения уравнения должен быть реализован в виде функции.
Вариант 21 – В программе вводятся два одномерных массива (обозначим их как a и b), состоящих из положительных чисел, причем известно, что сумма массива a меньше суммы массива b (если это не так, то должно выводиться сообщение об ошибке). Составляется новый одномерный массив c. Сначала в него включаются все элементы массива a; затем к нему добавляются элементы массива b, начиная с b(1), до тех пор, пока сумма массива a не превысит сумму оставшихся элементов массива b. Суммирование элементов массива должно быть реализовано в виде функции. На экран выводится полученный массив c.
ЛАБОРАТОРНАЯ РАБОТА №5
ОПЕРАЦИИ С ЯЧЕЙКАМИ И РАБОЧИМИ ЛИСТАМИ MS EXCEL В ПРОГРАММАХ НА VBA
Цель работы –Освоение разработки программ на VBA для обработки данных, размещенных в рабочих листах табличного процессора MS Excel.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|