Основы офисного программирования




Лекция №10

ТЕМА ЛЕКЦИИ

Основные вопросы лекции

  1. Понятие вычислительного процесса.
  2. Виды вычислительных процессов.
  3. Описание входных, промежуточных и конечных данных.
  4. Понятие алгоритма. Алгоритмизация задач.
  5. Алгоритмы разных типов вычислительных процессов.
  6. Создание макросов языком Visual Basic For Applications.
  7. Внедрение объектов с использованием OLE и DDE принципов в Excel и в Winword

 

Понятие «вычислительный процесс» (или просто – «процесс») является одним из основных при рассмотрении операционных систем. Как понятие процесс является определенным видом абстракции, и мы будем придерживаться следующего неформального определения. Последовательный процесс (иногда называемый «задачей») – это выполнение отдельной программы с её данными на последовательном процессоре. Концептуально процессор рассматривается в двух аспектах: во-первых, он является носителем данных и, во-вторых, он (одновременно) выполняет операции, связанные с их обработкой.

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

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

Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.

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

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

По количеству выполнения циклы делятся на

· циклы с определенным (заранее заданным) числом повторений;

· циклы с неопределенным числом повторений.

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

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

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

· выполнить команду Сервис~Макрос~Редактор Visual Basic~;

· выполнить команду Вставка~Модуль~ или дважды щелкнуть левой кнопкой манипулятора мышь по значку модуля в окне Проект, если модуль уже вставлен;

· ввести текст программы функции пользователя (рис. 10.1).

Рис. 10.1. Окно редактора Visual Basic.

Пример такой программы приведен ниже:

Function Y (x)

Y = Sin (Application. Pi() * x) *Exp (-2 * x)

End Function

Функция Pi() в VBA возвращает значение постоянной p (в Excel - функция ПИ()). Заметим, что поскольку функция Pi() не является внутренней функцией VBA, то ее необходимо записать в форме Application.Pi().

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

Пусть требуется найти значения данной функции в интервале [-1; 1] с шагом 0,1, используя функцию пользователя и формулу Excel а также построить графики функции, по ее значениям, полученным с помощью функции пользователя и формул Excel. Для этого необходимо:

· ввести в ячейки A1, B1, C1 имена аргумента x и функций y 1(x), y 2(x) соответственно;

· ввести значения ряда независимой переменой x в диапазон ячеек А2:А22;

· в ячейку В2 вставить формулу =Y(A2), используя функцию пользователя Y, с помощью мастера функций (рис. 10.2);

· скопировать формулу =Y(A2), из ячейки В2 в диапазон В3:В22.

Рис. 10.2. Вставка функции пользователя Y с помощью мастера функций

Тот же результат можно получить если просто ввести в ячейку С2 формулу Excel =SIN (ПИ()*А2) * EXP (-2*A2) и скопировать ее в диапазон ячеек C3:C22. Однако при постоянном ее использовании лучше все же создать соответствующую функцию пользователя, чтобы не вводить эту формулу каждый раз заново.

Чтобы построить графики функций y 1(x), y 2(x) необходимо воспользоваться мастером диаграмм, выполнив команду Вставка~Диаграмма…~ или нажав кнопку Мастер диаграмм на панели инструментов Стандартная. На первом шаге мастера диаграмм задается тип диаграммы Точечная, вид Сглаженная. На втором шаге мастера диаграмм вводится адрес исходного диапазона. Для функции y 1(x) исходным диапазоном будет диапазон А1:В22. Для функции y 2(x) в качестве исходного диапазона следует задать диапазон А1:А22; С1:С22 (для выделения несмежных диапазонов необходимо удерживать клавишу Ctrl). Значения и графики функций y 1(x) и y 2(x) приведены на рис. 10.3.

Рис. 10.3. Значения и графики функций y 1(x) и y 2(x)

Общий вид функции пользователя:

Function ИМЯ_ФУНКЦИИ (СПИСОК_ПАРАМЕТРОВ)

ТЕЛО_ФУНКЦИИ

End Function

ТЕЛО_ФУНКЦИИ состоит из описательной части и блока параметров, выполняющихся один за другим. Если необходимо прекратить выполнение функции в некотором конкретном месте, это можно сделать с помощью оператора Exit function. При определении функции иногда бывает удобно описать типы параметров и вычисляемого значения функции.

Именем функции или переменной может быть любой идентификатор, определенный пользователем. Идентификатор это последовательность букв, цифр и символа подчеркивания, начинающаяся с буквы. Отметим, что пробелы внутри идентификатора недопустимы, поэтому они заменяются символом подчеркивания. Для упрощения чтения и понимания значения идентификатора на практике рекомендуется при написании сложных идентификаторов использовать строчные и прописные буквы, а также символ подчеркивания. Например, вместо идентификатора datetoday лучше написать DateToday или Date_Today.

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

С помощью ключевого слова Optional можно сделать некоторые переменные в функции пользователя необязательными (те, которые можно при вызове не задавать). Необязательные переменные должны иметь тип Variant

Рассмотрим функцию пользователя Miss_Side_Tr, которая находит длину недостающей стороны прямоугольного треугольника, где переменные А и В отведены под длины катетов, а переменная С – под гипотенузу. Например, формула =Miss_Side_Tr(B2; C2) вычисляет катет А по введенным в ячейки В2 и С2 катету В и гипотенузе С. При работе с необязательными переменными необходимо использовать функцию IsMissing, возвращающую True, если соответствующий аргумент не был передан в процедуру, и False — в противном случае.

 

Function Miss_Side_Tr (Optional A; Optional B; Optional C)

(If Not (IsMissing (A)) And Not(IsMissing (B)) Then

Miss_Side_Tr = Sqr (A ^ 2 + B ^ 2)

End If

If Not (IsMissing (A)) And Not (IsMissing (C)) Then

Miss_Side_Tr = Sqr (C ^ 2 - A ^ 2)

End If

If Not (IsMissing (B)) And Not (IsMissing (C)) Then

Miss_Side_Tr = Sqr (C ^ 2 - B ^ 2)

End If

End Function



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: