Вычислительная техника и програмирование
Рассмотрение аппаратного обеспечения персональных компьютеров. Среда Windows. Программные операции с документами. Основные операции с редактором Word. Основные операции с электронной таблицей Excel. Линейная программа VBA: работа с элементами управления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 20.10.2008 |
Размер файла | 2,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
4. В редакторе VBA разработать приложение.
5. Выполнить приложение и подготовить отчет.
Содержание отчета
Условие задачи
Интерфейс приложения
Схема алгоритма
Программный код
Использованные операторы и функции
Контрольные вопросы
1. Что такое разветвляющаяся структура алгоритма?
2. Какой символ используется в схемах алгоритмов, чтобы показать выбор условия?
3. С помощью какого оператора можно организовать ветвление в программе? Написать cинтаксис этого оператора для однострочной формы записи
4. Чем отличается блочная форма записи условного оператора от однострочной? Написать синтаксис условного оператора в блочной форме или привести пример его использования.
5. Назвать известные вам элементы ActiveX, используемые при разработке приложений VBA. Какие элементы и какие свойства этих элементов были использованы в вашей программе?
Задания к выполнению
I
1. Вычислить значение функции:
_ 0, если х=0,
f(x) = квадрат х, если х <>0.
2. Вычислить значение функции:
_ sin(x), если х>0,
f(x) = 0, если х = 0,
сos(x), если х< 0.
3. Ввести три целых числа и определить, сумма каких двух является наибольшей.
4. Вычислить значение функции:
sin(x), если х>0,
f =
0, если х< = 0,
5. Вычислить значение функции:
_ tg(x), если х=0,
f =
tg(x)/2, если х< = 0,
6. Вычислить значение функции:
_ vx, если х=0,
f =
tg(x)/2, если х< = 0
II
1. Ввести число Х и определить, делится ли оно:
на 2,
на 3,
на 5.
На 8
Ввести число Х и определить, является ли оно четным.
Ввести число N и определить делится ли оно без остатка на число M.
2 часть. Программирование с использованием объектов EXCEL
Разрабатывать приложения в редакторе VBA можно и с использованием объктов приложений Office(объктов EXCEL,WORD и др.) Рассмотрим разработку приложения примера2 с использованием объектов EXCEL. Будем использовать объекты:
WORKSHEETS() -для обозначения листа EXCEL
RANGE() - для обозначения диапазона ячеек или одной ячейки
свойство .Value для обращения к значению ячейки.
Т.е., если мы хотим записать в ячейку значение F программным способом, нужно написать в программе так:
Worksheets().Range().Value = F, где в скобках указать имя или номер листа EXCEL и адрес ячейки. Например, чтобы :
Присвоить ячейке С1 На листе “лист1” значение переменной F |
Нужно написать Worksheets(“лист1”).Range(“C1”).Value = F |
|
Изменить значение в ячейке A1 на листе “лист1” |
WorkSheets(“лист1”).Range(“A1”).Value=3 |
|
Установить формулу для ячейки B1 на активном листе |
Range(“B1”).Formula = “= - 5 + A1” |
Порядок выполнения работы:
В Ячейку А1 ввести текст « Исходные данные»
В ячейку А2 ввести текст «Х=»
В ячейку В2 ввести значение Х.
В ячейку C1 ввести текст «результат при х>0»
В ячейку D1 ввести текст « результат при х<0»
Выполнить команду СЕРВИС /МАКРОС/РЕДАКТОР VBA
Выполнить команду ВСТАВКА/МОДУЛЬ
Ввести имя модуля SUB LL()
Набрать текст программы:
Sub LL ()
X=Worksheets(1).Range(“B2”).Value
IF Х>0 Then
F=X/2
Worksheets(1).Range(“C2”).Value = F
Else
F=(X+1)/2
Worksheets(1).Range(“D2”).Value = F
End If
End Sub
10. Выполнить программу и подготовить отчет. Содержание отчета указано в первой части работы
11. Решить одну из задач самостоятельно.
Контрольные вопросы
1. Какие объекты Еxcel вы знаете?
2. Как обратиться к ячейке на рабочем листе из программы?
3. Какая форма записи условного оператора была использована в вашей программе?
Лабораторная работа №20
Vba. Оператор выбора
Цель: Познакомиться с инструкцией With и Select Case. И закрепить полученные знания на практике.
Как известно, многие задачи в математике можно разрешить различными способами. В программировании также путь к решению задачи можно найти по-разному. Например, когда в условии задачи часто используется постановка вопроса начиная с если, то в коде программы мы реализуем оператор условия If...Then...Else ., причем ограничения на вложенность этого оператора нет. Если таковых вложенных условий два, три и даже пять, то это не сильно смущает программиста, т.к. программа вполне наглядна и "читаема". Но что делать, когда таких условий десять, пятнадцать? В этом случае для облегчения чтения программы вместо многократно вложенных инструкций If...Then...Else иногда предпочтительнее использовать инструкцию Select Case. В то время как If...Then...Else для каждой инструкции ElseIf оценивает разные выражения, инструкция Select Case оценивает выражение только один раз, в начале управляющей структуры.
Select Case выполняет одну из нескольких групп инструкций в зависимости от значения выражения.
Синтаксис: Select Case <выражение>
[Case <списокВыражений-n>
[инструкции-n]] ...
[Case Else
[инструкции_else]]
End Select
Синтаксис инструкции Select Case содержит следующие элементы:
<выражение> - oбязательный. Любое числовое выражение или строковое выражение.
<списокВыражений-n> - oбязательный при наличии предложения Case. Список с разделителями, состоящий из одной или нескольких форм следующего вида:
выражение,
выражение To выражение,
Is операторСравнения выражение.
Ключевое слово To задает диапазон значений. При использовании ключевого слова To перед ним должно находиться меньшее значение. Ключевое слово Is с операторами сравнения (кроме Is и Like) задает диапазон значений. Если ключевое слово Is не указано, оно вставляется по умолчанию.
<инструкции-n> - Необязательный. Одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка <списокВыражений-n>.
<инструкции_else >- Необязательный. Одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает не совпадает ни с одним из предложений Case.
Если выражение совпадает с любым выражением из спискаВыражений в предложении Case, выполняются все инструкции, следующие за данным предложением Case до следующего предложения Case, или, для последнего предложения, до инструкции End Select. Затем управление передается инструкции, следующей за End Select. Если выражение совпадает с выражениями из списка в нескольких предложениях Case, выполняется только первый подходящий набор инструкций.
Предложение Case Else задает список инструкции_else, которые будут выполнены, если не обнаружено ни одно совпадение выражения и компонента списокВыражений ни в одном из остальных предложений Case. Хотя данное предложение не является обязательным, рекомендуется помещать предложение Case Else в блок Select Case, чтобы предусмотреть неожиданные значения выражения. Если ни в одном предложении Case списокВыражений не содержит компонента, отвечающего аргументу выражение, и отсутствует инструкция Case Else, выполнение продолжается с инструкции, следующей за инструкцией End Select.
В каждом предложении Case допускается использование нескольких выражений или диапазонов. Например допустима следующая строка:
Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber
Примечание. Следует отличать оператор сравнения Is от ключевого слова Is, используемого в инструкции Select Case.
Имеется также возможность задать диапазоны или несколько выражений для строковых значений. В следующем примере предложение Case выполняется для строк, которые точно совпадают со строкой "все", для строк, лежащих в алфавитном порядке между "орехи" и "яблоки", и для строк со значением, равных текущему значению переменной TestItem:
Case "все", "орехи" To "яблоки", TestItem
Допускаются вложенные инструкции Select Case. Каждой вложенной инструкции Select Case должна соответствовать инструкция End Select.
Пр.: по введенному числу определить день недели
Select Case x
Case 1
MsgBox ("Пон-ник")
Case 2
MsgBox ("Вторник")
Case 3
MsgBox ("Среда")
Case 4
MsgBox ("Четверг")
Case 5
MsgBox ("Пятница")
Case 6
MsgBox ("Суббота")
Case 7
MsgBox ("Воскресенье")
Case Else
MsgBox ("Такого дня не существует")
End Select
Очень часто, работая с UserForms в VBA с различными объектами, возникает необходимость изменить непосредственно в коде программы не одно и не два, а целый ряд свойств одного и того же объекта в силу каких либо обстоятельств или просто по требованию заказчика (будущего пользователя). В этом случае многие начинающие программисты, изменяя свойства объекта, указывают и его полное имя, что отнимает драгоценное время и место в коде. Например:
Label1.Height = 2000
Label1.Width = 2000
Label1.Caption = "Объект Label1"
Label1.Visible = True
Label1.Enabled =True
Во избежании этого и существует инструкция Whith…End With . Whith…End With - выполняет последовательность инструкций над одиночным объектом или определяемым пользователем типом данных.
Синтаксис
With <объект>
[инструкции]
End With
Синтаксис инструкции With содержит следующие элементы:
Элемент Описание
объект - Обязательный. Имя объекта или определяемого пользователем типа.
инструкции - Необязательный. Одна или несколько инструкций, выполняемых над объектом.
Инструкция With позволяет выполнить последовательность инструкций над указанным объектом, не повторяя задание имени объекта. Например, если имеется несколько свойств , которые необходимо изменить для одиночного объекта, то удобнее поместить инструкции присвоения свойств внутрь управляющей структуры With, указав ссылку на объект один раз, вместо того, чтобы ссылаться на объект при каждом присвоении его свойств. Следующий пример демонстрирует использование инструкции With для присвоения значений нескольким свойствам одного объекта.
With Label1
Height = 2000
Width = 2000
Caption = "Объект Label1"
Visible = True
Enabled =True
End With
Примечание. После входа в блок With значение аргумента объект изменить невозможно. В результате, невозможно использование одной инструкции With для воздействия на различные объекты.
Допускается создание вложенных конструкций With внутри другого. Однако, поскольку ссылки на объекты внешних блоков With перекрываются во внутренних блоках, необходимо во внутренних блоках With задавать полные ссылки на любой компонент объекта из внешнего блока With.
Внимание! Нельзя выполнять переходы внутрь или из блоков With. Если не выполнены инструкции With или End With, возможно возникновение ошибок или непредсказуемое поведение объектов.
Пример
В данном примере инструкция With используется для выполнения набора инструкций над одним объектом. Объект MyObject и его свойства используются исключительно в иллюстративных целях.
With MyObject
.Height = 100 ' Эквивалентно MyObject.Height = 100.
.Caption = "Привет" ' Эквивалентно MyObject.Caption = "Привет".
With .Font
.Color = Red ' Эквивалентно MyObject.Font.Color = Red.
.Bold = True Эквивалентно MyObject.Font.Bold = True.
End With
End With
Задания для выполнения
Результат выводить на форму в поле, при этом размерами его управлять программно в зависимости от результата.
По введенному числу определить пору года: 1 - зима и т.д.
По введенному числу определить месяц зимы: 1 - декабрь, ...
По введенному числу определить месяц весны: 1 - март, ...
По введенному числу определить месяц лета: 1 - июнь, ...
По введенному числу определить месяц осени: 1 - сентябрь, ...
По введенному числу определить день недели: 1 - понедельник,
По введенному числу определить областной город Беларусии: 1 - Брест, ...
По введенному числу определить государственный ВУЗ Могилева.
По введенному числу озвучить оценку:"5" - отлично, ...
Контрольные вопросы
Каков принцип работы инструкции Select Case, особенности применения.
Когда и как рекомендуется использовать инструкцию With…End With .
Лабораторная работа №21
Vba. Цикл с параметром (for…next)
1. Краткие теоретические сведения
1.1 Цикл For
Оператор цикла For позволяет повторять группу операторов заданное число раз. Синтаксис:
For счётчик_цикла =начало TO конец [step шаг]
Тело цикла
Next [счётчик_цикла]
Здесь счётчик_цикла--это числовая переменная. В начале выполнения цикла она принимает значение, задаваемое числовым выражением начало. Числовое выражение конец--- задает заключительное выражение счётчика цикла. Числовое выражение шаг не обязательно и по умолчанию=1. Тело цикла-- это последовательность операторов которая будет выполнена заданное число раз. Если шаг положителен, цикл завершится, когда впервые выполнится условие:
счетчик_цикла>конец
Если шаг цикла отрицателен, условие его завершения:
счетчик_цикла<конец
Это условие проверяется перед началом выполнения цикла, а затем--после каждого прибавления шага к счётчику цикла в операторе Next. Если оно выполнено, управление передается на оператор, следующий за Next, нет--выполняются операторы из тела цикла. Завершить цикл For…Next можно и с помощью оператора Exit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти не дожидаясь выполнения условия завершения.
Пример использования оператора
Условие:
Вычислить значение функции:
где n=1,2,…,5
Схема алгоритма программы
Порядок выполнения работы:
Заполнить диапазон ячеек А1:А5 значениями Х.
Текст программы:
Sub mm ()
N=5 : Y=0
For i=1 to n
X=Worksheets(1).Cells(i,1)
Y=Y+log(x)/2^i
Next i
Worksheets(1).Range (“A6”).Value = ”результат”
Worksheets(1).Range (“A7”).Value = Y
End Sub
1.2 Массивы
Описание массивов
Dim <имя массива>(<начальное значение индекса> To <конечное значение индекса>) As <тип элементов массива>
Пр: Dim A(1 To 10) As Integer - массив состоит из 10 элементов, тип каждого элемента - Integer.
б) Обращение к элементу массива
Обращение к элементу массива осуществляется следующим образом: указывается имя массива, а затем в круглых скобках указывается номер элемнта в массиве.
Пр: A(1)=5 - первому элементу массива А присваивается значение 5
А(17)=А(1) - 17-ому элементу массива А присваивается значение первого элемента массива А.
в) Ввод массивов
Массивы можно вводить как с листа Excel, так и испрользуя встроенную функцию InputBox.
Пр: вводятся массивы А,В,С из 15 элементов:
For i=1 To 15
Ввод массива A с листа Excel, используя свойство Range (элементы вводятся из столбца А, строки изменяются с 1 по 15.
A(i)=Worksheets(1).Range("A" & i).Value
Ввод массива B с листа Excel, используя свойство Cells (строки изменяются с 1 по 15, столбец 2 (столбец B)
B(i)=Worksheets(1).Cells(i,2)
Ввод массива C через функциюInputBox
C(i)=InputBox("Введите " & i & "ый элемент массива")
Next i
г) Решение задачи из примера через массивы
1. Заполнить диапазон ячеек А1:А5 значениями элементов массива.
2. Текст программы:
Sub mm ()
Dim A(1 to 5) As Integer
N=5
Y=0
For i=1 to n
A(i)=Worksheets(1).Cells(i,1)
Next i
For i=1 To n
Y=Y+log(A(i))/2^i
Next i
Worksheets(1).Range (“A6”).Value = ”результат”
Worksheets(1).Range (“A7”).Value = Y
End Sub
2. Задания для выполнения
Найти количество положительных
Найти количество отрицательных чисел.
Найти сумму положительных
Найти сумму отрицательных чисел.
Найти количество элементов массива больших или равных заданному значению.
Найти произведение положительных элементов массива.
Найти сумму элементов, стоящих на четных местах .
Найти сумму элементов стоящих на нечетных местах.
Заменить отрицательные элементы нулями.
Обнулить элементы, имеющие четный индекс.
Найти произведение, элементов стоящих на четных местах.
Сформировать новый массив по правилу: с[i]=x*sqrt(a[i]), где х--некоторая постоянная.
1.3. Двумерные массивы
а) Описание массивов
Dim <имя массива>(<начальное значение индекса по строкам> To <конечное значение индекса по строкам >,
< начальное значение индекса по столбцам> To < конечное значение индекса по столбцам>) As <тип элементов массива>
Пр: Dim A(1 To 10, 1 to 5) As Integer - массив состоит из 50 элементов (10 строк и 5столбцов), тип каждого элемента - Integer.
б) Обращение к элементу массива
Обращение к элементу массива осуществляется следующим образом: указывается имя массива, а затем в круглых скобках через запятую указывается номер строки и номер столбца, где размещен элемент в массиве.
Пр: A(1,4)=15 - элементу, находящемуся в первой строке и четвертом столбце массива А присваивается значение 15
в) Ввод массивов
Массивы можно вводить как с листа Excel, так и испрользуя встроенную функцию InputBox.
for i=1 to 10
for j=1 to 4
A(i,j)=InputBox("Введите A(" & i & "," & j & ")")
next j
next i
for i=1 to 10
for j=1 to 4
A(i,j)=Worksheets(1).Cells(i,j)
next j
next i
г) Изображение ввода двумерных массивов в блок-схемах
2. Содержание отчета
Название лабораторной работы.
Цель работы.
Задание
Схема алгоритма.
Текст программы.
Выводы.
3. Контрольные вопросы
Приведите форму записи оператора FOR?
Что такое счётчик цикла?
Что такое тело цикла?
Лабораторная работа №22
Vba. Циклы с предусловием и постусловием
Составим алгоритм следующей задачи, используя различные циклы с предусловием и постусловием: вводите числа, пока их сумма не превысит введенного числа m.
1) Циклы с предусловием
a) Do While P б) Do While P
S S
[Exit Do] Wend
Loop
Тело цикла S будет выполняться в том случае, когда условие P имеет значение истина (цикл продолжается при истинном значении условия P). Если условие P ложно, то выполняются операторы, стоящие после цикла. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do.
Ниже приведен пример решение указанной выше задачи, используя цикл с предусловием
Do While …Loop.
Public Sub uuu()
Dim x As Integer
Dim m As Integer
Dim s As Integer
Dim i As Integer
m = InputBox("Введите число")
MsgBox ("Вводите числа")
i = 1
s = InputBox("Введите 1 число")
Do While s <= m
i = i + 1
x = InputBox("Введите " & i & "число")
s = s + x
Loop
MsgBox ("Количество введенных чисел " & i)
End Sub
в) Кроме уже описанных выше циклов с предусловием существует еще один - это цикл Do Until … Loop. Тело S этого цикла выполняется до тех пор, пока условие P не примет значение истина (цикл продолжается при ложном значении условия P). Есть возможность досрочного выхода из цикла. Его синтаксис следующий:
Do Unlil P
S
[Exit Do]
Loop
Далее смотрите код программы той же задачи, но с использованием цикла Do Until … Loop.
Public Sub uuu()
Dim x As Integer
Dim m As Integer
Dim s As Integer
Dim i As Integer
m = InputBox("Введите число")
MsgBox ("Вводите числа")
i = 1
s = InputBox("Введите 1 число")
Do Until s > m
i = i + 1
x = InputBox("Введите " & i & "число")
s = s + x
Loop
MsgBox ("Количество введенных чисел " & i)
End Sub
2) Циклы с постусловием.
а) Do
S
[Exit Do]
Loop While P
Тело цикла S будет выполняться в том случае, когда условие P имеет значение истина (цикл продолжается при истинном значении условия P). Если условие P ложно, то выполняются операторы, стоящие после цикла.Предоставлена возможность досрочного выхода из цикла
Далее приведен код программы, с использованием цикла Do …Loop While.
Public Sub uuu()
Dim x As Integer
Dim m As Integer
Dim s As Integer
Dim i As Integer
m = InputBox("Введите число")
MsgBox ("Вводите числа")
i = 0
s = 0
Do
i = i + 1
x = InputBox("Введите " & i & "число")
s = s + x
Loop While s <= m
MsgBox ("Количество введенных чисел " & i)
End Sub
б) Do
S
[Exit Do]
Loop Until P
Тело S этого цикла выполняется до тех пор, пока условие P не примет значение истина (цикл продолжается при ложном значении условия P). Есть возможность досрочного выхода из цикла.
Ниже находится код все той же задачи, но с использованием последнего описанного цикла.
Public Sub uuu()
Dim x As Integer
Dim m As Integer
Dim s As Integer
Dim i As Integer
m = InputBox("Введите число")
MsgBox ("Вводите числа")
i = 0
s = 0
Do
i = i + 1
x = InputBox("Введите " & i & "число")
s = s + x
Loop Until s > m
MsgBox ("Количество введенных чисел " & i)
End Sub
Задание для самостоятельного выполнения
Присутствует ли во введенном массиве введенное число (количество элементов массива ввести).
Присутствует ли в массиве два равных соседних элемента. Если да, то под какими номерами имееи место первое равенство.
Начиная с какого номера n имеет место неравенство n!>xn, x - любое действительное число.
Вводить последовательность до тех пор, пока не встретятся три подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было всего чисел.
Вводить последовательность до тех пор, пока не встретятся три подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было положительных чисел.
Вводить последовательность до тех пор, пока не встретятся три подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было отрицательных чисел.
Определить сколько натуральных подряд идущих четных чисел нужно сложить (найти минимальное число таких слагаемых), чтобы их сумма была больше введенного числа.
Дано натуральное N и первый член бесконечного ряда: Y1=1. Вычислить сумму членов бесконечного ряда, образованного по следующему реккррентному соотношению: Yi=2*Yi-1 (то есть S=1+2+4+8+16+...). Вычисление суммы продолжать до тех пор, пока соблюдается условие |Yi-Yi-1|<N.
Последовательно вводятся числа до тех пор, пока во введенной совокупности не окажется три нуля. Вывести количество введенных чисел.
Присутствуют ли во введенном массиве отрицательные числа. Если да, то под каким номером встречается первое из них.
Лабораторная работа №23
Vba. Пользовательские функции
Приведем некоторые общие сведения об организации программ в VBA. Программа VBA состоит из одного или нескольких модулей. Модуль -- это лист с текстом программы, вставленный в рабочую книгу. Обычно текст программы VBA начинается с опций, которые управляют описанием переменных, способом сравнения строк и т. д. Затем следует объявление глобальных переменных или констант для данного модуля, т. е. таких переменных, которые используются во всех процедурах модуля. Далее располагается непосредственно текст функций пользователя и процедур, составляющих саму программу.
При написании программ удобно внутрь текста помещать комментарии. Комментарии -- это пояснительный текст, который можно записать в любом месте программ. Каждая строка комментариев начинается со знака апострофа. Комментарии игнорируются компилятором, и поэтому никакого влияния на программу не оказывают. Комментарии удобно использовать также при отладке операторов для их временного отключения.
Правильно организованной программой является такая программа, которая достигает результата наименьшим количеством итераций и при этом использует оптимальный вариант решения поставленной задачи. Это достигается многими компонентами, одним из которых и является функция.
Возьмем к примеру ситуацию, когда при проектировании программы вы замечаете, что одну и ту же многошаговую операцию необходимо будет произвести с различными переменными. Разумным шагом в сложившейся ситуации является следующий - один раз написать код многошаговой операции и использовать его во всех необходимых местах данной программы, а в последствии и при написании других программ.
Процедура Function представляет собой набор команд, с помощью которого можно решить определенную задачу. Отличие процедуры Function от процедуры Sub состоит в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция.
Синтаксис описания функции выглядит следующим образом:
Function имя ([аргументы] )[As тип]
Инструкции
имя=выражение
End Function
1. Ключевые слова Function и End Function используются в описании любой функции.
2. Параметр имя определяет имя функции.
3. Необязательные параметры аргументы позволяют передать в функцию требуемые значения.
4. Параметр As тип позволяет явно задать тип данных, который возвращает функция. Если он опущен, то по умолчанию возвращается значение типа Variant.
5. Внутри функции обычно имеется инструкция имя=выражение, которая используется для задания возвращаемого значения. Обратите внимание, что имя функции стоит слева от знака равенства, а параметр выражение определяет значение, которое должно быть совместимым с объявленным в параметре As тип типом данных для функции.
Процедуры Function возвращают значение, поэтому они обычно используются при выполнении вычислений, например, можно создать функцию, которая возвращает длину окружности заданного радиуса:
Function Circumference (Radius As Double) As Double
Const Pi = 3.14159
Circumference = 2 * Pi * Radius
End Function
1. Функция Circumference возвращает значение типа Double.
2. Внутри тела функции определяется константа Pi и выполняется расчет длинны.
3. Обратите внимание, что в вычисляемом выражении участвуют аргумент Radius и константа Pi, а результат расчета присваивается переменной Circumference, которая является именем функции.
Задания к выполнению
1. Создать программу, которая обеспечит ввод данных y при помощи InputBox, произведет вызов функции g с двумя условиями:
и выведет результат в MsgBox.
2. Создать программу, которая обеспечит ввод данных t при помощи InputBox, произведет вызов функции z с тремя условиями:
и выведет результат в MsgBox.
Лабораторная работа №24
Vba. Пользовательские процедуры.
Процедура - это набор описаний и инструкций, сгруппированных для вычисления. Существует три типа процедур Sub, Function, Property. Имя процедуры всегда определяется на уровне модуля. В процедурах должны содержаться все исполняемые программы. Вложенность процедуры в другие процедуры не допускается. Для того, чтобы вставить процедуру необходимо вызвать редактор VBA и в меню редактора Вставка выбрать подменю Модуль. Затем снова выбрать Вставка и, в открывшемся подменю выбрать Процедура…. Появляется диалоговое окно Вставка процедуры следующего вида:
В окне Имя пишется название процедуры. В рамке Тип выбирается необходимая процедура. А в рамке Область определения выбирается необходимая область определения для вашей процедуры.
Инструкция Sub описывает имя, аргументы и текст программы, составляющий тело процедуры Sub.
Синтаксис
[Private | Public] [Static] Sub имя [(списокАргументов)]
[инструкции]
[Exit Sub]
[инструкции]
End Sub
Синтаксис инструкции Sub содержит следующие элементы:
Элемент Описание
Public Необязательный. Указывает, что процедура Sub доступна для всех других процедур во всех модулях. При использовании в личном модуле (модуле, который содержит инструкцию Option Private) такая процедура является недоступной вне проекта.
Private Необязательный. Указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана.
Static Необязательный. Указывает, что локальные переменные процедуры Sub сохраняются в промежутках времени между вызовами этой процедуры. Атрибут Static не действует на переменные, описанные вне процедуры Sub, даже если они используются в процедуре.
имя Обязательный. Имя процедуры Sub, удовлетворяющее стандартным правилам именования переменных.
списокАргументов Необязательный. Список переменных, представляющий аргументы, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой.
инструкции Необязательный. Любая группа инструкций, выполняемых в процедуре Sub.
Дополнительные сведения
Процедуры Sub, тип которых не указан явно с помощью слов Public или Private, являются общими по умолчанию. Если не используется слово Static, значения локальных переменных не сохраняются между вызовами процедур.
Допускаются рекурсивные процедуры Sub; т.е. они могут вызывать сами себя для выполнения определенных задач. Однако рекурсия может приводить к переполнению стека. Ключевое слово Static обычно не используется с рекурсивными процедурами Sub.
Все выполняемые команды должны содержаться в процедурах. Не допускается определение процедуры Sub внутри другой процедуры Sub, Function или Property.
Инструкция Exit Sub приводит к немедленному выходу из процедуры Sub. Выполнение программы продолжается с инструкции, следующей за инструкцией, содержащей вызов процедуры Sub. В любом месте процедуры Sub допускается наличие любого числа инструкций Exit Sub.
Подобно процедурам Function, процедура Sub является самостоятельной процедурой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Однако в отличие от процедуры Function, которая возвращает значение, процедура Sub не может применяться в выражении.
Если в процедуре используются общие переменные (Public) и они получают там новые значения , то при вызове этой процедуры другой процедурой Sub, в которой так же используются эти переменные они будут содержать уже полученные значения. А вызвать одну процедуру другой можно следующим способом:
Процедура Sub вызывается в выражении по своему имени, за которым следует список аргументов в скобках. Для вызова процедур Sub обычно используют инструкцию Call.
Call Primer(0)
Вышеуказанная строка вызывает процедуру Primer с аргументом 0 .
Переменные, используемые в процедурах Sub, разбиваются на две категории: явно описанные внутри процедуры и не описанные внутри процедуры. Переменные, которые явно описаны в процедуре (с помощью ключевого слова Dim или эквивалентного ему), всегда являются локальными для этой процедуры. Переменные, которые используются, но явно не описаны в процедуре, также являются локальными, если они явно не описаны на более высоком уровне. Примером явного описания на более высоком уровне являются общие переменные:
Public Girl As Integer
Такого рода переменные описываются в отдельном модуле.
Примечание. Для входа или выхода из процедуры Sub нельзя использовать инструкции GoSub, GoTo или Return.
Пример для выполнения
Необходимо вычислить площадь параллелепипеда со сторонами a, b, c. Для этого нужно создать две процедуры - Plosh и Argum. В процедуре Plosh обеспечить ввод a, b, c и вывод результата S. А в Argum обеспечить расчет площади S. Причем, процедура Plosh должна получить результат S путем вызыва процедуры Argum.
Решение
Public a As Integer ' Описываются общие переменные в отдельном модуле
Public b As Integer
Public c As Integer
Public S As Integer
Public Sub Plosh()
a = Range("a1").Value
b = Range("a2").Value
c = Range("a3").Value
Call Argum ' Вызов процедуры Argum
Range("a5").Value = S
End Sub
Public Sub Argum()
S = a * b * c
End Sub
Задания к самостоятельному выполнению
Создать одномерный массив из 10 элементов. Его ввод обеспечить используя InputBox . Необходимо отсортировать массив по возрастанию, а так же найти сумму всех его элементов. Задачу разрешить при помощи создания трех процедур.
Создать одномерный массив из 10 элементов. Его ввод обеспечить используя InputBox . Найти максимальный и минимальный элементы, а так же найти среднее арифметическое массива. Задачу разрешить при помощи создания трех процедур.
Создать одномерный массив из 10 элементов. Поменять местами соседние элементы массива и вывести произведение элементов, стоящих на чётных местах преобразованного массива.
Подобные документы
Архитектура персонального компьютера. Операционная сиcтема WINDOWS 9.x. Основные характеристики накопителей и носителей. Табличный процессор EXCEL. Объектно-ориентированная платформа WINDOWS: операции с окнами. Пути распространения компьютерных вирусов.
контрольная работа [1,1 M], добавлен 17.05.2010Арифметические операции над числами, представленными в различных системах счисления. Представление чисел в компьютере. Элементы вычислительных машин. Информационная и аналитическая модели решения задачи. Работа с MS Excel и текстовым редактором MS Word.
курсовая работа [1,0 M], добавлен 25.04.2013Порядок работы при создании деловых бумаг в текстовом редакторе Microsoft Word. Возможности и применение табличного процессора MS Excel, алгоритм работы с электронной таблицей. История создания и структура глобальной компьютерной сети, сервисы Internet.
контрольная работа [825,9 K], добавлен 28.11.2009Общие сведения о текстовом редакторе Microsoft Word. Основные операции редактора по работе с документами. Запуск программы, средства редактирования. Ввод и исправление текста, использование буфера обмена, форматирование абзацев, работа со шрифтами.
контрольная работа [25,5 K], добавлен 12.03.2011Miсrosoft Word 2000 – текстовый редактор, программа для создания и обработки текстовых документов. Специфика работы с окнами, режимы отображения документа. Операции с документами, с текстом. Оформление страниц документа. Вставка графических объектов.
учебное пособие [341,8 K], добавлен 05.12.2010Понятие базового и прикладного программного обеспечения. Информация, ее свойства и виды. Интерфейс ОС Windows. Программа управления файлами "Проводник". Windows-редакторы Paint и MS Word. MS Excel: расчет амортизации. Программа Internet Explorer.
практическая работа [1,1 M], добавлен 16.01.2011Краткая история появления и развития информатики как науки. Понятие и основные свойства информации, формы ее адекватности. Структурная организация персональных компьютеров. Основные понятия электронных таблиц Microsoft Excel. Операционная система Windows.
лекция [820,6 K], добавлен 22.09.2013Microsoft Word — текстовый процессор, предназначенный для создания, просмотра и редактирования текстовых документов с использованием таблично-матричных алгоритмов. Область применения Microsoft Excel; общие операции над листами и ячейками рабочей книги.
реферат [2,5 M], добавлен 23.02.2012Правила работы с текстовым редактором Microsoft Word, оценка его возможностей и перспектив развития. Ввод текста и закономерности работы с таблицами. Создание документа "Рекламный лист". Особенности работы с табличным редактором MS Excel, создание диаграм
методичка [6,4 M], добавлен 15.02.2011Программное обеспечение - совокупность программ для осуществления на компьютере автоматизированной обработки информации. Текстовый редактор Microsoft Word - универсальная программная среда для работы с текстовыми документами. Табличный процессор Excel.
контрольная работа [132,9 K], добавлен 01.12.2010