Студопедия — Процедуры и функции. Примеры
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Процедуры и функции. Примеры






В языке Basic процедуры и функции объединяются под общим названием подпрограммы.

Для создания процедуры в программе надо ввести в окне редактирования кода заголовок Sub ИМЯ_ПРОЦЕДУРЫ, появится пустой шаблон процедуры:

Sub ИМЯ_ПРОЦЕДУРЫ

End Sub

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

Для выбора существующих процедур в окне редактирования кода надо выбрать " (General)" из списка Object и выбрать процедуру в окне Procedure.

Для просмотра процедуры в другом модуле надо: 1) выбрать View / Object Browser, 2) в окне Project / Library выбрать проект, 3) выбрать модуль из списка Classes и процедуру из списка Members, 4) выбрать View Definition.

Способы вызова процедуры: Call Proc1(arg1, arg2), или Proc1 arg1, arg2.

Процедуры Public в других модулях могут вызываться отовсюду в проекте; возможно, потребуется специфицировать модуль, который содержит вызываемую процедуру – это зависит от вида модуля:

1. Все вызовы снаружи модуля формы должны указывать на модуль формы, содержащий процедуру: имя_модуля.имя_процедуры();

2. При вызове процедуры из модуля класса также должен указываться экземпляр класса, но в отличие от формы экземпляр класса предварительно должен быть объявлен как объектная переменная, например Dim DemClass As New Class1, тогда обращение будет иметь вид DemClass.Sub1.

Параметры пользовательских процедур по умолчанию имеют тип Variant.

При передаче параметров по значению используется ключевое слово By Val; фактически, передается только копия переменной и процедура не изменяет оригинальную переменную. Пример:

Sub CC(By Val x As Integer)

....

End Sub

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

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

Примеры процедур:

1. Передача параметра из процедуры

Rem Программа_2.4 – Передача параметра из процедуры с помощью переменной s

Sub Main()

Dim s As Single, x As Single, y As Single

x = 5: y = 15

Call sumir (x, y, s) ‘ вызов процедуры суммирования

MsgBox " s = " & Str(s)

End Sub

 

Sub sumir (x!, y!, s!) ‘ определение процедуры суммирования двух чисел

s! = x! + y! ‘ в переменную s помещается сумма двух чисел

End Sub

 

2. Массив, как параметр процедуры

Rem Программа_2.5 – Массив, как параметр процедуры

Sub Main()

Dim n As Integer

Dim s As Single

Dim x(2) As Single

n = 2

x(1) = 5: x(2) = 15: s = 0

Call sumir(x(), n, s) ‘ вызов процедуры суммирования элементов массива

MsgBox " s = " & Str(s)

End Sub

 

Sub sumir (x() As Single, n As Integer, s As Single)

Dim i As Integer

For i = 1 To n

s = s + x(i)

Next i

End Sub

 

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

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

Function ИМЯ_ФУНКЦИИ

End Function

В пространство между именем функции и ключевыми словами End Function вносятся необходимые операторы.

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

Общий синтаксис определения функции:

Function ИМЯ_ФУНКЦИИ(ПАРАМЕТР_1[, ПАРАМЕТР_2]...) [Static]

ОПЕРАТОР_1

[ОПЕРАТОР_2]

...

ИМЯ_ФУНКЦИИ = ВЫРАЖЕНИЕ

End Function

где ПАРАМЕТР – элемент данных, передаваемый функции при ее вызове; Static – при наличии в объявлении функции данного ключевого слова локальные переменные, объявленные в теле функции, сохраняют свои значения в промежутках между вызовами этой функции.

Способы вызова функций: X = fun1(Y), или Call fun1 Y.

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

Каждая функция всегда возвращает только одно значение.

Примеры функций:

1. Передача параметра из функции

Rem Программа_2.6 – Передача параметра из функции

Sub Main()

Dim x As Single, y As Single, s As Single

x = 5: y = 15

s = sumir(x, y) ‘ вызов функции суммирования двух чисел

MsgBox " s = " & Str(s)

End Sub

 

Function sumir! (x!, y!) ‘ определение функции суммирования двух чисел

sumir! = x! + y!

End Function

 

2. Пример функции, возвращающей строковое (символьное) значение

Rem Пример_2.7 – Использование Функции, возвращающей строковое значение

Sub Main()

Dim sl As String

sl = " БЫЛО"

MsgBox sl

sl = fun$(sl) ’ функция меняет для переменной sl значение ‘’БЫЛО “ на значение “СТАЛО”

MsgBox sl

End Sub

 

Function fun$ (sl As String)

sl = " СТАЛО"

fun$ = sl ‘Этим оператором функция возвращает значение – отличие от Sub

End Function

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

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

Переменные типа Private доступны всем процедурам модуля, переменные Public доступны другим модулям; как и все переменные уровня модуля, они объявляются в начале модуля.

Переменные уровня процедуры объявляются в операторах Dim и Static; первые существуют только во время выполнения процедуры, а вторые – в течение всего времени выполнения приложения. Если поместить перед именем процедуры Static, то все ее локальные переменные будут статическими.

Переменная в модуле не может иметь то же имя, что и процедура или тип, которые определены в этом же модуле.

Если переменные Public в различных модулях имеют одно имя. то для их различения надо квалифицировать имена именем модуля. Например, если в модулях М1 и М2 имеются переменные intX, то обращение к этим переменным должно иметь следующий вид: М1.intX и М2.intX.







Дата добавления: 2014-11-10; просмотров: 755. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

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

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия