Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/55: Рейтинг темы: голосов - 55, средняя оценка - 4.98
13 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 282

Возврат значения процедурой

30.03.2013, 18:14. Показов 10949. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно начал изучать бейсик и застрял на процедурах. В книге сказано, что есть процедуры, которые возвращают значения, а есть которые не возвращают. Что это такое вообще?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2013, 18:14
Ответы с готовыми решениями:

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

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

Как сделать возврат функцией (или процедурой) массива
Ниже приведенный код не работает: function GetArrContents1(): array of integer; var a1: array of integer; begin ...

12
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
30.03.2013, 18:19
Процедуры ничего не возвращают, возвращают функции
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.03.2013, 18:42
Вероятно, имели в виду передачу аргумента по ссылке, а не по значению.

По умолчанию, в VB6 используется ссылочный тип.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub main()
    Dim num1, num2, num3
    
    num1 = 1
    num2 = 1
    num3 = 1
 
    Call myproc(num1, num2, num3)
    
    Debug.Print num1; num2; num3
End Sub
 
Sub myproc(num1, ByRef num2, ByVal num3)
    num1 = num1 + 1
    num2 = num2 + 1
    num3 = num3 + 1
End Sub
2 2 1
1
13 / 1 / 0
Регистрация: 25.03.2013
Сообщений: 282
30.03.2013, 19:10  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Процедуры ничего не возвращают, возвращают функции
как понять не возвращают?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.03.2013, 19:30
Цитата Сообщение от Noob32 Посмотреть сообщение
как понять не возвращают?
По определению.
Цитата Сообщение от Noob32 Посмотреть сообщение
В книге сказано, что есть процедуры, которые возвращают значения, а есть которые не возвращают.
Вы точно про Visual Basic 6 книжку читаете?
Если да, то выбросите её срочно в помойку!
Просто есть Бейсики ( PureBasic тому пример), где процедура может возвращать значение.
Но VB6 значение возвращает только функция.
Изменить значение можно и в процедуре.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
30.03.2013, 19:52
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но VB6 значение возвращает только функция.
- есть устоявшаяся терминология:

1) автономный блок кода, имеющий имя, называется процедурой;
2) процедура, возвращающая значение, называется функцией
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
30.03.2013, 20:05
Короче, процедура, которая не может ничего возвращать называется процедурой, а которая может - называется функцией.

Не по теме:

Навеяло

В автобусе едут чёрные и белые. И начинают спорить кто будет сидеть впереди, а кто сзади. После долгих споров водила не выдерживает:
- Давайте не будем заниматься дискриминацией!! ВСЁ!! Все зелёные!! Темно зелёные назад, светло-зелёные вперед!!

1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
30.03.2013, 20:13
Цитата Сообщение от SoftIce Посмотреть сообщение
Короче, процедура, которая не может ничего возвращать называется процедурой, а которая может - называется функцией.
Лучше, наверно, так: процедура, которая не может ничего возвращать называется подпрограммой (Sub -> Subroutine = подпрограмма), а которая может - называется функцией (Function = функция).

То есть и Sub, и Function - это процедуры.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.03.2013, 20:33
Цитата Сообщение от Казанский Посмотреть сообщение
процедура, которая не может ничего возвращать называется подпрограммой
Нет. Наоборот.
Подпрограмма - это отдельная функционально независимая часть программы. Имеется два вида подпрограмм - процедуры и функции.
Процедуры и функции представляют собой часть программного кода, снабженную именем. Процедуры и функции различают:
событийные, которые выполняются, когда происходит соответствующее событие;
общие, которые выполняются при соответствующем обращении к ним с использованием их имени;
процедуры – свойства, которые применяются, если объект нужно снабдить новым свойством.
За исключением объявления переменных, типов и т.п. в главной секции модуля или формы весь код программы VB состоит из процедур и функций.
В отличие от процедуры функция возвращает значение результата в точку вызова.
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
30.03.2013, 20:43
Из процедуры тоже можно вернуть результат вычислений, через глобальную переменную.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
30.03.2013, 20:58
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Нет. Наоборот.
Ну может, и так. Я академиев не кончал книжек не читал
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Процедуры и функции различают:
событийные, которые выполняются, когда происходит соответствующее событие;
Можете привести пример событийной функции?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.03.2013, 21:21
Цитата Сообщение от Казанский Посмотреть сообщение
Можете привести пример событийной функции?
Нет, не могу. Зато процедур сколько угодно.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
30.03.2013, 23:06
У меня в справочнике написано так:
Sub Процедура Sub представляет собой последовательность инструкций языка Visual Basic, ограниченных инструкциями Sub и End Sub, которая выполняет действия, но не возвращает значение. Процедура Sub может получать аргументы, как например константы, переменные, или выражения, передаваемые ей вызывающей процедурой. Если процедура Sub не имеет аргументов, инструкция Sub должна содержать пустые скобки.

В следующей процедуре Sub содержатся комментарии, объясняющие каждую строк.

' Описывает процедуру с именем GetInfo
' Эта процедура Sub не имеет аргументов
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub GetInfo()
' Описывает строковую переменную с именем answer
Dim answer As String
' Присваивает переменой answer возвращаемое значение функции
answer = InputBox(Prompt:="Как Ваше имя?")
    ' Условная инструкция If...Then...Else
    If answer = Empty Then
        ' Вызов функции MsgBox
        MsgBox Prompt:="Введите имя."
    Else
        ' Функция MsgBox объединена с переменной answer
        MsgBox Prompt:="Имя переменной " & answer
 
' Завершает инструкцию If...Then...Else
    End If
' Завершает процедуру Sub
End Sub


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

В следующем примере функция Celsius пересчитывает градусы Фаренгейта в градусы Цельсия. Когда функция вызывается процедурой Main, переменная, содержащая значение аргумента, передается функции. Результат вычислений возвращается вызывающей процедуре и выводится в окно сообщения.

Visual Basic
1
2
3
4
5
Sub Main()
    temp = Application.InputBox(Prompt:= _
        "Введите температуру в градусах Фаренгейта.", Type:=1)
    MsgBox "Температура равна " & Celsius(temp) & " градусов Цельсия."
End Sub
Visual Basic
1
2
3
Function Celsius(fDegrees)
    Celsius = (fDegrees - 32) * 5 / 9
End Function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2013, 23:06
Помогаю со студенческими работами здесь

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

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

Возврат значения С++
Hi people! Вот такое задание: 1) Реализовать заданную динамическую структуру данных, с которой можно работать через перегруженные...

Возврат значения методом
В строке 70 нужно вернуть значение, как это сделать в Windows Foms ? #pragma endregion private: void show(int **array, int size)...

Возврат значения из Task
Здравствуйте. Есть код, который сканирует данные с USB, и он работает (принимает байты с ардуино). Но, как известно, C# не позволяет двум...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru