Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В чем разница: подпрограмма, процедура, функция

248
11 августа 2007 года
Dmitry2064
590 / / 06.12.2006
Если не трудно, можно ли пояснить, в чем принципиальная разница между "подпрограммой", "процедурой" и "функцией"? :o
22K
11 августа 2007 года
Pastor
43 / / 16.05.2007
насколько помню.... процедура не возвращает значений, а фукция - возвращает... вроде так...
251
12 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
[COLOR=green]Процедура:[/COLOR]
 
Код:
Sub NoParamsCallback(myString as String, [COLOR=blue]gooD [/COLOR]as Boolean)
     If myString="OK" Then [COLOR=blue]gooD=True[/COLOR]
End Sub

Процедура не возвращает значения, но в предыдущем примере это все-таки можно делать ;)
[COLOR=green]Функция:[/COLOR]
 
Код:
Function [COLOR=blue]IHaveAnswer[/COLOR](TheX as Integer, TheY as Integer) as String
      [COLOR=blue]IHaveAnswer[/COLOR]=Str(TheX*TheY)
End Function

Функция может возвращать данные.
Подпрограмма:
 
Код:
.....
If myVar="myVal" Then Gosub 5000
.....
Exit (Sub|Function|Property...)
5000:
MsgBox "Hello from Subroutine!"
.....
return

Подпрограмма (Subroutine) - устаревшее... это у меня только вызывает ностальгию.. QBasic на ZX80...По команде GOSUB xxx -выполняется переход управления на строку с меткой ххх. Возврат назад на оператор, следующий после GOSUB (go subroutine)- осуществляется командой RETURN (возврат). Не рекомендуется использовать. Да и зачем, если есть процедуры и функции?. Кстати, если юзать функцию без скобок, то она работает, [COLOR=gray]почти[/COLOR] как процедура :)
То есть можно юзать:
 
Код:
a=MsgBox("What R U Doin?",vbYesNo)

тогда выдастся сообщение на экран и результат нажатия на кнопку (vbYes/vbNo)-запишется в переменную а.
Но если сделать так:
 
Код:
MsgBox "I'm Sleepin",vbOkOnly+vbInformation, "Info"

то просто выдастся сообщение, а данные от данной функции здесь даже и нет необходимости записывать, так как ответ будет один и тот же - кнопка-то одна.
248
13 августа 2007 года
Dmitry2064
590 / / 06.12.2006
Типа... что-то.. как бы... понятно... :( Значит, пока у меня в Ворде используются только процедуры (раз начинаются и заканчиваются на Sub и End Sub)? А если я захочу написать функцию, то она отделится, как и все Sub'ы, линией и окажется самостоятельным блоком в списке всех макросов. Т.е. из-под Ворда нельзя использовать функции :eek: (что, мягко говоря, странно)? В чем тут может быть закавыка?

P.S. Все мои познания в VB пока ограничиваются VBA'ом, т.е. только в Ворде применяю и совсем немножко в Екселе.
9.2K
21 августа 2007 года
dmitriy_gdv
22 / / 01.06.2006
по сути процедура от функции ничем не отличается, а подпрограмма - это устаревшее название которое объединяет и функцию и процедуру. Вобщем разница между ними только в том, что имени функции можно присвоить какое - то значение которое будет возвращено в вызывающий участок кода. А параметры у них могут быть как по ссылке, так и по значению. Хотя в литературе говорится, что параметры функций должны передаваться только по значениям - чтобы функция не могла их изменять а возвращала единственный результат - тоесть через своё имя.
309
21 августа 2007 года
el scorpio
1.1K / / 19.09.2006
Цитата:
Т.е. из-под Ворда нельзя использовать функции (что, мягко говоря, странно)? В чем тут может быть закавыка?


В том, что MS Word при помощи "экранных кнопок" и "горячих клавиш" вызывает макросы, которые представлены в виде фрагмента кода без параметров и результата

 
Код:
Sub Macros1
///
End sub

Действия макроса производятся над глобальными объектами типа ActiveDocument (понятно без перевода), Selection (выделенный фрагмент текста) и т.д.
251
21 августа 2007 года
SkyMаn
1.7K / / 31.07.2007
Цитата: Dmitry2064
Т.е. из-под Ворда нельзя использовать функции :eek: (что, мягко говоря, странно)? В чем тут может быть закавыка?


Конечно что можно! В том и сила VBA! В экселе например, они очень аппликабельны. Да и не только

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог