Разница между процедурой и функцией в программировании

 

Разница между процедурой и функцией в программировании

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

Как с тем сусликом: он есть, но его никто не видит. Посмотрим, настолько ли невидимы отличия.

Определение

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

Сравнение

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

Функция возвращает значение, процедура в большинстве языков программирования — нет, либо (в Си, например) возвращает пустое значение. В последнем случае (в Си) процедура считается подчиненной разновидностью функции.

Разница между процедурой и функцией в программировании

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

Заголовок процедуры содержит слово “procedure”, идентификатор (имя процедуры) и вариативно список параметров. Вызов функции осуществляется в составе выражений там, где эти выражения применяются, вызов процедуры требует отдельного оператора.

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

ru.natapa.org

Функции и процедуры играют жизненно важную роль в большинстве языков программирования. Они в основном используются в модульном программировании.

Модульное программирование отвечает за разделение большого кода на части более мелких фрагментов кода. Они очень полезны в программировании, поскольку они уменьшают ненужное дублирование кода. Это обеспечивает ясность программного кода.

Функции и процедуры полезны при повторном использовании кода. В таких языках, как C и C ++, функция и процедура называются одним и тем же. Однако в языках программирования, ориентированных на базы данных, таких как PL / SQL и Oracle, между ними есть заметная разница.

Функция должна возвращать значение в PL / SQL и Oracle. Однако процедура в PL / SQL не может возвращать значение. В Oracle процедура может возвращать ноль или n значений.

В Oracle процедуры могут иметь входные / выходные параметры для них, тогда как функции могут иметь только входные параметры.

Разница между процедурой и функцией в программировании

Функцию можно описать как набор инструкций, выполняющих определенную задачу. Функции присваивается имя. Важно отметить, что обычно фрагмент кода часто называют процедурой, а процедуру, которая возвращает значение, часто называют функцией. Таким образом, оба имеют много общего. Они имеют схожие компоненты, такие как механизмы объявления и вызова. Разница между ними зависит от контекста языка программирования.
В Visual Basic процедура объявлена ??как —
[AccessSpecifier] Sub ProcessName ([ParameterList])
В Visual Basic функция объявлена ??как —
[AccessSpecifier] Функция FunctionName ([ParameterList]) _
(Возвращаемое значение указывается в выражении возврата)
Сравнение между функцией и процедурой:
Функция может быть вызвана из SQL
Не может вернуть значение
Процедура не может быть вызвана из SQL

  • Должно вернуть одно значение
  • Функции могут иметь только входные параметры
  • Функции могут быть вызваны из процедуры
  • Может возвращать ноль или n значений
  • Процедуры могут иметь параметры ввода / вывода для него
  • Процедуры не могут быть вызваны из функции
Вызывается в выражениях; этот вызов функции имеет значение в выражении
Вызывается в процедуре заявления. Они не дают возвращаемое значение
Функции — это блочные программы (процедуры), которые выполняют определенную задачу, а также возвращают результат или значение. Они отмечены операторами Function и End Function.
Общее имя для блока операторов VB, которые имеют декларативный оператор (sub или function) и соответствующий оператор завершения объявления.

В чем различие между процедурами и функциями

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

Как с тем сусликом: он есть, но его никто не видит. Посмотрим, настолько ли невидимы отличия.

Определение

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

Сравнение

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

Функция возвращает значение, процедура в большинстве языков программирования — нет, либо (в Си, например) возвращает пустое значение. В последнем случае (в Си) процедура считается подчиненной разновидностью функции.

Разница между процедурой и функцией в программировании

Заголовок функции содержит слово “function”, идентификатор (собственное имя функции), вариативно список параметров и обязательно — тип результата.

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

Заголовок процедуры содержит слово “procedure”, идентификатор (имя процедуры) и вариативно список параметров. Вызов функции осуществляется в составе выражений там, где эти выражения применяются, вызов процедуры требует отдельного оператора.

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

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

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

На примере сложения двух целых чисел проиллюстрируем возможности Турбо Паскаля 7.0 по оформлению программ при помощи процедур и функций, а также рассмотрим различия между этими двумя подходами.
Procedure Summa1(Var Sum: integer; a, b : integer);

Function Sum(a, b : integer) : integer;
writeln (‘С помощью процедуры сумма чисел равна ‘,SumNumbers);
writeln (‘С помощью функции сумма чисел равна ‘,Sum(a, b));
Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение – сумму.

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

Этот параметр соответствует параметру-переменной Sum процедуры.

При объявлении функции ей в соответствие ставят определенный тип данных – тип возвращаемого функцией значения.
Function Sum(a, b : integer) : integer;
внешне похоже на объявление переменной Sum типа integer.

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

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

Компилятор, кончно же, знает, что Sum – это имя функции (т.к. определение предшествует использованию) и организует вычисления соответствующим образом.

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

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

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент — человек, постоянно откладывающий неизбежность. 10571 —

| 7330 —

или читать все.
78.85.5.224 © studopedia.ru Не является автором материалов, которые размещены.

Основы Python #6: функции

Но предоставляет возможность бесплатного использования. Есть нарушение авторского права?

Напишите нам | Обратная связь.
Отключите adBlock!
и обновите страницу (F5)

очень нужно
Вообще говоря, все мы слышим о функциях или процедурах в языках программирования. Тем не менее, я только выяснил, что я использую эти термины почти взаимозаменяемо (что, вероятно, очень не так).
В чем разница в их функциональности, их предназначении и использовании?
Функция возвращает значение, и процедура просто выполняет команды.
Функция имени исходит из математики. Он используется для вычисления значения на основе ввода.
Процедура — это набор команд, который может быть выполнен в порядке.
В большинстве языков программирования даже функции могут иметь набор команд. Следовательно, разница заключается только в возврате части ценности.
Но если вы хотите, чтобы функция была чистой (просто посмотрите на функциональные языки), вам нужно убедиться, что функция не имеет побочного эффекта.
В языках типа Pascal функции и процедуры представляют собой разные сущности, отличающиеся тем, что они делают или не возвращают значение. Они ведут себя по-другому. синтаксис языка (например, процедуры, вызывающие формы, вы не можете использовать вызов процедуры внутри выражения или вызовы функций, не формируя операторов, вы должны использовать их в других операторах).

Поэтому программисты, разработанные Паскалем, различают их.
В C-подобных языках и многих других современных языках это различие отсутствует; в статически типизированных языках процедуры — это просто функции со смешным возвращаемым типом. Вероятно, поэтому они используются взаимозаменяемо.
В функциональных языках обычно нет такой вещи, как процедура — все это функция.
Хотя вы должны отметить, что стандарт C не говорит о процедурах, только функции.
В общем, процедура представляет собой последовательность инструкций.
Функция может быть одинаковой, но обычно возвращает результат.
Здесь термин подпрограмма или подпрограмма, которая обозначает параметризованный фрагмент кода, который может вызываться из разных мест.
Функции и процедуры — это их реализация. Обычно возвращаемые значения функций и процедуры ничего не возвращают.
Более строго, функция f подчиняется тому, что f (x) = f (y), если x = y, т.е. вычисляет тот же результат каждый раз, когда он вызывается с тем же аргументом ( и, следовательно, он не изменяет состояние системы.)
Таким образом, rand(http://fashiontarget.ru/ — женский сайт о моде, одежде, любви, отношениях) или print ( "Hello" ) и т.д. не являются функциями, а процедурами. Хотя sqrt (2.0) должен быть функцией: нет наблюдаемого эффекта или изменения состояния независимо от того, как часто его называет, и он всегда возвращает 1.41 и некоторые.
Внутри процедуры мы можем использовать операторы DML (Insert/Update/Delete), но внутри функции мы не можем использовать инструкции DML.
Процедура может иметь как входные, так и выходные параметры, но функция может иметь только входной параметр.
Мы можем использовать Try-Catch Block в хранимой процедуре, но в функции Мы не можем использовать блок Try-Catch.
Мы не можем использовать хранимую процедуру в инструкции Select, но в функции. Мы можем использовать в выражении Select.
Сохраненная процедура может возвращать 0 или n значений (макс. 1024), но функция может возвращать только 1 значение, которое является обязательным.
Сохраненная процедура не может быть вызвана из функции, но мы можем вызывать функцию из хранимой процедуры.
Мы можем использовать транзакцию в хранимой процедуре, но в функции мы не можем использовать транзакцию.
Мы не можем использовать хранимую процедуру в инструкции Sql в любом месте раздела Where/Have/select, но в функции In, которую мы можем использовать.
Мы не можем присоединиться к хранимой процедуре, но мы можем присоединиться к функции.

Основные отличия

  • Функция должна возвращать значение, но в хранимых процедурах это необязательно: процедура может возвращать значения 0 или n.
  • Функции могут иметь только входные параметры для него, тогда как процедуры могут иметь параметры ввода/вывода.
  • Для функции обязательно принимать один входной параметр, но хранимая процедура может принимать от 0 до n входных параметров.
  • Функции можно вызывать из процедуры, тогда как процедуры не могут быть вызваны из функции.

Расширенные отличия

  • Исключения могут обрабатываться блоками try-catch в процедуре, тогда как блок try-catch не может использоваться в функции.
  • Мы можем пойти для управления транзакциями в процедуре, тогда как в функции мы не можем.

В SQL:

  • Процедура позволяет SELECT , а также DML ( INSERT , UPDATE , DELETE ) в ней, тогда как функция допускает в ней только оператор SELECT .
  • Процедуры не могут использоваться в инструкции SELECT , тогда как функции могут быть встроены в оператор SELECT .
  • Хранимые процедуры не могут использоваться в операторах SQL в любом месте блока WHERE (или HAVING или SELECT ), тогда как функции могут.
  • Функции, возвращающие таблицы, можно рассматривать как другой Rowset. Это можно использовать в блоке JOIN с другими таблицами.
  • Встроенные функции можно рассматривать как представления, которые принимают параметры и могут использоваться в блоках JOIN и других операциях Rowset.

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

В контексте функционального программирования (где все функции возвращают значения), функция является абстрактным объектом:
Здесь f является той же функцией, что и g, но это другая процедура.

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

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

Функция возвращает значение, и процедура просто выполняет команды.
Функция имени исходит из математики.

Он используется для вычисления значения на основе ввода.

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

Следовательно, разница заключается только в возврате части значения.

 

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

Операторы Insert, Update и Create не могут быть включены в функцию, но процедура может иметь эти инструкции.
Процедура поддерживает транзакции, но функции не поддерживают транзакции.

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

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

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

Таким образом, функция больше сродна карте (например, где x -> x’ для одномерной функции). Это очень важное различие между регулярными методами и функциями, поскольку при работе с реальными функциями время и порядок их вычисления никогда не должны иметь значения, так как это не всегда происходит с не-функциями.

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

Процедура — это просто конкретный способ говорить о функции или методе.

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

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

Итак, какая разница, тогда?
Ну, другой способ мышления о функции (помимо упомянутого выше значения) является абстрактным представлением идеала, такого как цифра 1. Процедура заключается в том, что фактическая реализация этой вещи.

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

Знаете ли вы, что рекурсивная процедура может иметь итеративный процесс?)
Аналогом для процедур являются рецепты.

Уроки C++ с нуля / Урок #15 — Функции в C++

Например; предположим, что у вас есть машина под названием make-pies , эта машина принимает ингредиенты (fruit, milk, flower, eggs, sugar, heat) , и этот аппарат возвращает pie .
Представление этой машины может выглядеть как
Конечно, это не единственный способ сделать пирог.

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

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

В чем разница между "функцией" и "процедурой"?

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

в чем разница с точки зрения их функциональности, их назначения и использования?

пример был бы признателен.

Видеокурс по SQL Essential. Урок 8. Хранимые процедуры. Пользовательские функции

17 ответов:

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

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

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

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

Поэтому программисты, воспитанные Паскалем, различают их.
В C-like языки и многие другие современные языки, это различие исчезло; в статически типизированных языках процедуры-это просто функции с забавным типом возврата. Вероятно, поэтому они взаимозаменяемы.
в функциональных языках обычно нет такой вещи, как процедура — все это функция.
хотя вы должны отметить, что стандарт C не говорит о процедурах, а только о функциях.
В общем, процедура представляет собой последовательность инструкций.
Функция может быть такой же, но она обычно возвращает результат.
есть такой термин подпрограмма или подпрограмма что означает параметризованный фрагмент кода, который может быть вызван из разных мест.
функции и процедуры реализации этих. Обычно функции возвращают значения, а процедуры ничего не возвращают.

Основные Различия

  • функция должна возвращать значение, но в хранимых процедурах это необязательно: процедура может возвращать 0 или n значения.
  • функции могут иметь только входные параметры для него, в то время как процедуры могут иметь параметры ввода/вывода.
  • для функции обязательно принимать один входной параметр, но хранимая процедура может принимать от 0 до n параметры ввода.
  • функции могут быть вызывается из процедуры, в то время как процедуры не могут быть вызваны из функции.

Дополнительные Различия

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

в SQL:

  • процедура позволяет SELECT а также DML ( INSERT , UPDATE , DELETE ) операторы в нем, тогда как функция позволяет только SELECT заявление в ней.
  • процедуры не могут быть использованы в режиме SELECT заявление, в то время как функции могут быть встроены в SELECT заявление.
  • хранимые процедуры не могут использоваться в операторах SQL нигде в WHERE (или HAVING или SELECT ) блок, тогда как функции могут.
  • функции, возвращающие таблицы, можно рассматривать как другой набор строк. Это может быть использовано в JOIN блок с другими столами.
  • встроенные функции можно рассматривать как представления, которые принимают параметры и может использоваться в JOIN блоки и другие операции набора.

более строго, функция f подчиняется свойству, что f(x) = f (y), если x = y, т. е. она вычисляет тот же результат каждый раз он вызывается с одним и тем же аргументом (и, таким образом, он не изменяет состояние системы.)
таким образом, rand(http://fashiontarget.ru/ — женский сайт о моде, одежде, любви, отношениях) или print("Hello") и т. д. не функции, а процедуры. В то время как sqrt(2.0) должен быть функцией: нет никакого наблюдаемого эффекта или изменения состояния независимо от того, как часто его вызывают, и он всегда возвращает 1.41 и некоторые.

внутри процедуры мы можем использовать операторы DML (Insert /Update/Delete), но внутри функции мы не можем использовать операторы DML.
процедура может иметь оба входных\выходных параметра, но функция может иметь только входной параметр.

мы можем использовать блок Try-Catch в хранимой процедуре, но в функции мы не можем использовать блок Try-Catch.
мы не можем использовать хранимую процедуру в инструкции Select, но в функции мы можем использовать в инструкции Select.

сохраненные Процедура может возвращать 0 или n значений (максимум 1024), но функция может возвращать только 1 значение, которое является обязательным.
хранимая процедура не может быть вызвана из функции, но мы можем вызвать функцию из хранимой процедуры.

Функции c++ примеры. Синтаксис. Объявление, реализация функции. Параметры, аргументы. C++ #33

мы можем использовать транзакцию в хранимой процедуре, но в функции мы не можем использовать транзакцию.
мы не можем использовать хранимую процедуру в инструкции Sql в любом месте в разделе Where/Having/select, но в функции мы можем использовать.

мы не можем присоединиться Хранимая процедура, но мы можем присоединиться к функции.
в большинстве случаев: функция возвращает значение, а процедура нет.

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

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

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

функция возвращает значение, а процедура просто выполняет команды.

имя функции происходит от математики. Он используется для вычисления значения на основе входных данных.

процедура-это набор команд, которые могут быть выполнены по порядку.

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

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

инструкции Insert, Update и Create не могут быть включены в функцию, но процедура может иметь эти инструкции.
процедура поддерживает транзакции, но функции не поддерживают транзакции.

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

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

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

функция больше похожа на карту (например, где x -> x’ для одномерной функции). Это очень важное различие между регулярными методами и функциями, потому что при работе с реальными функциями время и порядок, в котором они оцениваются, никогда не должны иметь значения, где это не всегда происходит с нефункциями.

вот еще один пример метода, который не является функцией, но в противном случае все равно вернет a значение.
Я также возражаю против того, что процедуры не возвращают значения.

Процедура-это просто определенный способ говорить о функции или метода.

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

Они разговаривают о рекурсивной функции (реальной функции), и она возвращает значение, и они используют слово "процедура". Так в чем же тогда разница?

Ну другой способ мышления функции (помимо упомянутого выше значения) — это абстрактное представление идеала, такого как число 1. Процедура — это фактическая реализация этой вещи. Я лично считаю, что они взаимозаменяемы.

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

Например; предположим, что у вас есть машина с именем make-pies эта машина принимает ингредиенты (fruit, milk, flower, eggs, sugar, heat) и эта машина возвращает pie .
представление этой машины может выглядеть как
конечно, это не единственный способ сделать пирог.
в этом случае мы видим, что:
эта аналогия в порядке, но она ломается, когда вы принимаете во внимание, что когда вы имеете дело с компьютерной программой, все является абстракцией.

Так что в отличие от рецепта с машиной мы сравниваем две вещи, которые сами по себе являются абстракциями; две вещи, которые могли бы быть тем же самым. И я держу это они (для всех намерений и целей) одно и то же.

 

Автор: admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

19 + 20 =