Главная » Просмотр файлов » Метод. по подпрограммам (vba)

Метод. по подпрограммам (vba) (811586), страница 3

Файл №811586 Метод. по подпрограммам (vba) (М.Д. Силин, А.Н. Любин - Процедуры и функции в языке программирования VISUAL BASIC FOR APPLICATION) 3 страницаМетод. по подпрограммам (vba) (811586) страница 32020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

ОБЛАСТЬ ДЕЙСТВИЯ ПРОЦЕДУРПроцедуры в VBA, как и переменные имеют определённуюобласть действия. Их область действия может распространятьсятолько на процедуру или процедуры модуля или проекта.Область действия любой процедуры определяется при её объявлении с помощью ключевых слов – Private или Public.Можно выделить три области действия процедур.1.

Область действия процедуры – модуль. Процедуру можно вызвать, обратиться к ней из любой процедуры того модуля в котором она объявлена с помощью ключевого слова Private.Private Sub Имя [(аргументы)](операторы)End Sub242.Область действия процедуры – все модули всех проектов.Процедуру можно вызвать, обратиться к ней из любого модулялюбого проекта. Эта область действия процедуры принята поумолчанию, поэтому использовать ключевое слово Public не обязательно.[ Pablic ] Sub Имя [(аргументы)](операторы)End Sub3.

Область действия процедуры – все процедуры только одногоданного проекта. Для этого надо указать в модуле ключевые слова Option Private Module тогда процедуры, объявленные с использованием ключевого слова Pablic, будут доступны всем процедурам данного проекта и не доступны для других проектов.Переменная, объявленная в процедуре, будет доступна в пределах этой процедуры.

Такие переменные называются локальными.После завершения процедуры такие переменные теряют свои значения. Однако может возникнуть ситуация, когда переменнаядолжна сохранить своё значение после завершения процедуры, илимежду двумя её вызовами. В таком случае при её объявлении вместо ключевого слова Dim надо указать ключевое слово Static.

Вэтом случае переменные называются статическими, и они сохраняют свои значения после завершения процедуры.Рассмотрим пример представленный на рис. 15-16. Переменная с именем СУММА объявлена как статическая. Это означает,что в ней каждый раз после завершения процедуры, будет сохраняться присвоенное ей значение, и с ним она будет фигурироватьпри следующем запуске процедуры.25Рисунок 16.- Процедура Main1 и результат работыпосле первого её запуска.Рисунок 17.- Процедура Main1 и результат работыпосле второго её запуска.Из рис.17 видно, что при втором запуске процедуры, при переменной ПРИХОД=55, переменная СУММА имела начальноезначение 25, полученное при первом её запуске.Если указать ключевое слово Static непосредственно передпроцедурой Static Sub…, то все переменные этой процедуры будутстатическими, т.

е. будут сохраняться после завершения выполнения процедуры.261.5. ПРЕРЫВАНИЕ ПРОЦЕДУРДля того чтобы прервать выполнение процедуры или функциииспользуется одна из двух форм VBA - оператора Exit:Exit SubExit Function.Действия операторов Exit Sub и Exit Function приводят к тому, что VBA немедленно прекращает выполнение кода процедурыили функции. После выполнения этих операторов VBA прекращаетвыполнение текущей процедуры и возвращается к выполнению тойпроцедуры или функции, которая вызвала процедуру, содержащуюоператор Exit Sub или Exit FunctionДля полного завершения выполнения процедуры используетсяключевое слово End в отдельной строке. При выполнении этогооператора VBA прекращает выполнение всех операторов процедуры или функции. Любые имеющиеся переменные перестают существовать и их значения теряются.

Так как, в этом случае, программаполностью прерывается, пользователю рекомендуется перед оператором End выводить сообщение о том, что будет происходить ипочему. В противном случае пользователи вашей процедуры могутне понять, почему процедура, которую они используют, внезапнопрекратила работу.272. ПРАКТИЧЕСКАЯ ЧАСТЬВ практической части представлены примеры выполнения заданий аналогичные тем, которые обучающиеся должны выполнитьсамостоятельно, а так же задания для самостоятельного выполнения.Перед выполнением заданий необходимо освоить изложеннуювыше теоретическую часть, только тогда обучающиеся смогут разобраться в представленных примерах, ответить на вопросы преподавателя и самостоятельно выполнить задания.2.1. ПРИМЕРЫ ВЫПОЛНЕНИЯ ЗАДАНИЙЗадание 1.

Написать и отладить процедуру вычисления нижепредставленных функций f и g используя процедуру типа Function.f=иg=.Теоретическая часть по процедуре типа Function изложена вразделе 1.2.1 данного пособия.На рис.18 представлена процедура с именем Основ_прог кданному заданию, в которой используется процедура типа Function с именем Fun. На рис.19 представлен результат работы процедур.Процедуру Fun имеет следующие формальные аргументы A,D, Z, B которые служат для вычисления выраженияFun=A*EXP(D) +Z*SIN(B).

При обращении к процедуре Fun в неёпередаются фактические аргументы. Например, для вычислениячислителя функции f обращение к процедуре будет выглядеть так:28Fun (4.5, X^2, 0, 0). В скобках указаны фактические аргументы. Напервом месте константа 4.5, которая соответствует формальномуаргументу А, который является сомножителем экспоненты. Далее вскобках идет фактический аргумент в виде выражения Х^2, вычисленное значение которого встанет на место формального аргументаD. На третьем и четвёртом месте в скобках - фактический аргументв виде константы 0. Это сомножитель, стоящий перед функциейсинуса, и аргумент синуса. Аналогичным образом и другие фактические аргументы в обращениях к процедуре Fun замещают формальные.

Заметим, что имена фактических и формальных аргументов могут совпадать.Рисунок 18.- Процедура к заданию 1 и ввод данных для неё.29Рисунок 19 - Результат работы процедуры к заданию 1.Задание 2. Написать и отладить процедуру. Заданы два массива А(4,4) и В(3,3). Для каждого из них определить в заданнойстроке (заданной через её индекс, номер) сумму и количество элементов больших нуля.

Использовать процедуру типа Sub.На рис. 20 представлена главная процедура с именем Main длязадания 2. Процедуры типа Sub, которые используются в процедуре Main, изображены на рис. 21. Ввод данных осуществлён черезоткрытый файл с именем Dan.txt. Содержимое этого файла, расположение в нём исходных данных показано на рис. 22.

Вывод результатов организован в файл с именем Rez.txt, расположение внём исходных данных и результатов показано на рис. 23.В процедуре Main используются три подпрограммы или процедуры типа Sub см. рис. 21. Процедуры с именами ВводМас иВвыводМас используются соответственно для ввода и выводамассивов. Формальные аргументы этих процедур: Х- имя массива иN-его размерность.

Процедура с именем АВ определяет сумму иколичество элементов больших нуля в заданной строке массива.Формальные аргументы процедуры АВ : Х – массив, N – его размерность и Nstr - заданный индекс, номер строки, это входные аргументы; S и K – соответственно сумма и количество элементовбольших нуля в заданной строке Nstr массива Х, это выходные аргументы.30Рисунок 20 – Процедура Main к заданию 2.31В основной процедуре Main имеются два обращения к подпрограмме, процедуре типа Sub с именем АВ. При первом обращении к процедуре АВ в неё передаются фактические аргументы ввиде массива А, его размерность в виде константы 4 и индексстроки массива А в виде переменной К, это входные аргументы ивыходные аргументы в виде имен переменных SА и KА это соответственно сумма и количество элементов больших нуля в строке Кмассива А.

Указанные фактические аргументы занимают соответствующие места формальных. При втором обращении к процедуреАВ в неё аналогичным образом передаются фактические аргументы: массив В, его размерность 3, индекс М строки, SB и КВ соответственно сумма и количество элементов больших нуля в строкеМ массива В.Рисунок 21 – Процедуры типа Sub для процедуры Main задания 2.32Рисунок 22 – Содержимое файла Dan.txt - исходные данныек процедуре Main задания 2.Рисунок 23 – Содержимое файла Rez.txt - результат работыпроцедуры Main задания 2.В рассмотренной процедуре Main задания 2 (см. рис. 20) использовались статические массивы А и В, т. е. со статическим распределением памяти. В таких массивах размерность указываетсяпри их объявлении и не может изменяться в процессе выполнения.33Рисунок 23 – Процедура Main с использованиемдинамических массивов.34На рис.

24 представлен вид процедуры Main задания 2 прииспользовании динамических массивов, т. е. с динамическим распределением памяти. В таких массивах их размерность можно перезадавать, как в процессе выполнения процедуры, так и при перезапусках процедуры. В данном случае следует обратить вниманиена то, что количество вводимых элементов массивов А и В в файлеDan.txt должно соответствовать количеству указанному при вводе переменны NA и NB и соответственно в операторе ReDim.2.2. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯЗадание.

Написать и отладить программу в соответствии сзаданием своего варианта. Использовать динамические массивы.Ввод данных и вывод результатов организовывать по указаниюпреподавателя либо используя файлы, либо таблицы Excel.1.Заданы две матрицы А(4, 4) и В(4, 4). Написать програм-му суммирования двух векторов Х и Y, где Х – вектор, в которомразмещены элементы столбца матрицы А с минимальным среднимарифметическим значением, Y – то же для матрицы В.2. Заданы две матрицы А(4, 4) и В(4, 4).

Написать программу вычисления вектора Z = Х + У, где Х – строка матрицы А,включающая минимальный элемент ее главной диагонали, Y – тоже для матрицы В.3. Заданы две матрицы А(4, 4) и B(3, 3) и два вектора C(4) иD(3). Написать программу вычисления произведений матриц на соответствующие им вектора. Определить минимальное среднееарифметическое значение для полученных векторов.4. Заданы две матрицы В(4,4) и D(3,3). Написать программутранспонирования каждой из заданных матриц с последующим пе-35ремножением транспортированной матрицы на соответствующуюей исходную.5.

Заданы две матрицы А(3, 3) и В(3, 3). Написать программу проверки – является ли произведение этих матриц перестановочным, т.е. проверить равенство АВ = ВА.6. Заданы две матрицы С(4, 4) и D(3, 3). Написать программу определения количества симметричных матриц. Матрица называется симметричной, если транспонированная матрица равна исходной.

Характеристики

Тип файла
PDF-файл
Размер
1,02 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6263
Авторов
на СтудИзбе
317
Средний доход
с одного платного файла
Обучение Подробнее