que - what is a function in algebra
¿Cuál es la diferencia entre una "función" y un "procedimiento"? (17)
Diferencias básicas
- Una función debe devolver un valor, pero en Procedimientos almacenados es opcional: un procedimiento puede devolver 0 o n valores.
- Las funciones solo pueden tener parámetros de entrada, mientras que los procedimientos pueden tener parámetros de entrada / salida.
- Para una función, es obligatorio tomar un parámetro de entrada, pero un procedimiento almacenado puede tomar de 0 a n parámetros de entrada.
- Las funciones se pueden llamar desde un Procedimiento, mientras que los Procedimientos no se pueden llamar desde una Función.
Diferencias avanzadas
- Las excepciones pueden ser manejadas por los bloques try-catch en un Procedimiento, mientras que un bloque try-catch no puede ser utilizado en una Función.
- Podemos ir a Gestión de transacciones en un procedimiento, mientras que en una función no podemos.
En SQL:
- Un procedimiento permite
SELECT
así como DML (INSERT
,UPDATE
,DELETE
), mientras que Función solo permite la instrucciónSELECT
en él. - Los procedimientos no se pueden utilizar en una instrucción
SELECT
, mientras que las Funciones se pueden incrustar en una instrucciónSELECT
. - Los procedimientos almacenados no se pueden usar en las sentencias SQL en ningún lugar de un bloque
WHERE
(o aHAVING
oSELECT
), mientras que las Funciones sí pueden. - Las funciones que devuelven tablas se pueden tratar como otro Rowset. Esto se puede usar en un bloque
JOIN
con otras tablas. - Las funciones en línea se pueden considerar como vistas que toman parámetros y se pueden usar en bloques
JOIN
y otras operaciones de conjuntos de filas.
En términos generales, todos escuchamos acerca de las funciones o procedimientos en los lenguajes de programación. Sin embargo, descubrí que utilizo estos términos de manera casi intercambiable (lo cual probablemente sea muy incorrecto).
Entonces, mi pregunta es:
¿Cuál es la diferencia en términos de su funcionalidad, su propósito y uso?
Un ejemplo sería apreciado.
Dentro del procedimiento podemos usar declaraciones DML (Insertar / Actualizar / Eliminar), pero dentro de la función no podemos usar declaraciones DML.
El procedimiento puede tener ambos parámetros de entrada / salida, pero la función solo puede tener el parámetro de entrada.
Podemos usar Try-Catch Block en el procedimiento almacenado, pero en función No podemos usar el bloque Try-Catch.
No podemos usar el Procedimiento almacenado en la instrucción Select, pero en Function lo podemos usar en la declaración Select.
El procedimiento almacenado puede devolver 0 o n valores (max 1024), pero la función puede devolver solo 1 valor que es obligatorio.
El procedimiento almacenado no puede llamarse desde la función, pero podemos llamar a la función desde el procedimiento almacenado.
Podemos usar la transacción en el Procedimiento almacenado, pero en la función no podemos usar la transacción.
No podemos usar el Procedimiento almacenado en la instrucción Sql en ningún lugar de la sección Dónde / Tener / seleccionar, pero podemos utilizar la función.
No podemos unirnos al Procedimiento almacenado, pero podemos unirnos a la función.
para obtener más información ... haga clic aquí ... http://dotnet-developers-cafe.blogspot.in/2013/08/difference-between-stored-procedure-and.html
Ejemplo en C:
// function
int square( int n ) {
return n * n;
}
// procedure
void display( int n ) {
printf( "The value is %d", n );
}
Aunque debe tener en cuenta que C Standard no habla de procedimientos, solo funciona.
En el contexto de db : El procedimiento almacenado es un plan de ejecución precompilado donde las funciones no lo son.
En general, un procedimiento es una secuencia de instrucciones.
Una función puede ser la misma, pero generalmente devuelve un resultado.
En la mayoría de los contextos: una función devuelve un valor, mientras que un procedimiento no lo hace. Ambas son piezas de código agrupadas para hacer lo mismo.
En el contexto de programación funcional (donde todas las funciones devuelven valores), una función es un objeto abstracto:
f(x)=(1+x)
g(x)=.5*(2+x/2)
Aquí, f es la misma función que g, pero es un procedimiento diferente.
En términos de С # / Java, la función es el bloque de código, que devuelve un valor particular, pero el procedimiento es el bloque de código que devuelve vacío (nada). En C # / Java, tanto las funciones como los procedimientos a menudo se llaman simplemente métodos .
//This is a function
public DateTime GetCurrentDate()
{
return DateTime.Now.Date;
}
//This is a procedure(always return void)
public void LogMessage()
{
Console.WriteLine("Just an example message.");
}
Esto depende del contexto.
En los lenguajes tipo Pascal, las funciones y los procedimientos son entidades distintas, que difieren en si devuelven un valor o no. Se comportan de manera diferente wrt. la sintaxis del lenguaje (por ejemplo, el procedimiento llama a las declaraciones de forma; no puede usar una llamada de procedimiento dentro de una expresión frente a las llamadas de función no forman enunciados, debe usarlos en otras declaraciones). Por lo tanto, los programadores criados en Pascal diferencian entre ellos.
En los lenguajes tipo C, y muchos otros idiomas contemporáneos, esta distinción se ha ido; en los lenguajes tipados estáticos, los procedimientos son solo funciones con un tipo de devolución divertido. Esta es probablemente la razón por la que se usan indistintamente.
En los lenguajes funcionales, normalmente no existe un procedimiento: todo es una función.
Hay una subrutina o subprograma de términos que representa una pieza de código parametrizada que se puede llamar desde diferentes lugares.
Las funciones y procedimientos son implementaciones de aquellos. Por lo general, las funciones devuelven valores y procedimientos que no devuelven nada.
La función se puede usar dentro de una instrucción sql mientras que el procedimiento no se puede usar dentro de una declaración sql.
Las instrucciones Insertar, Actualizar y Crear no se pueden incluir en la función, pero un procedimiento puede tener estas declaraciones.
El procedimiento admite transacciones, pero las funciones no admiten transacciones.
La función tiene que devolver un solo valor (la variable OUT puede devolver otro), pero el procedimiento devuelve tantos conjuntos de datos como valores devueltos.
Los planes de ejecución de ambas funciones y procedimientos se guardan en caché, por lo que el rendimiento es el mismo en ambos casos.
Los procedimientos y las funciones son subrutinas, la única diferencia entre ellos es que un procedimiento devuelve múltiples (o al menos puede hacerlo) valores, mientras que una función solo puede devolver un valor (esta es la razón por la que se usa la notación de función en matemáticas ya que normalmente solo se encuentra un valor en un momento dado) aunque algunos lenguajes de programación no siguen estas reglas, estas son sus verdaderas definiciones
Más estrictamente, una función f obedece a la propiedad de que f (x) = f (y) si x = y, es decir, calcula el mismo resultado cada vez que se invoca con el mismo argumento (y por lo tanto no cambia el estado del sistema.)
Por lo tanto, rand () o print ("Hello"), etc. no son funciones sino procedimientos. Mientras que sqrt (2.0) debería ser una función: no hay ningún efecto observable o cambio de estado sin importar la frecuencia con que uno lo llame y siempre devuelve 1.41 y alguno.
Me opongo a algo que sigo viendo una y otra vez en la mayoría de estas respuestas, que lo que hace que una función funcione es que devuelve un valor.
Una función no es cualquier método antiguo que devuelve un valor. No es así: para que un método sea una función real, debe devolver el mismo valor siempre que se le dé una entrada específica. Un ejemplo de un método que no es una función es el método random
en la mayoría de los idiomas, porque aunque devuelve un valor, el valor no siempre es el mismo.
Por lo tanto, una función es más similar a un mapa (por ejemplo, donde x -> x''
para una función unidimensional). Esta es una distinción muy importante entre los métodos y funciones regulares, ya que cuando se trata de funciones reales, el tiempo y el orden en que se evalúan nunca deberían importar dónde, ya que no siempre es así con las funciones no.
Aquí hay otro ejemplo de un método que no es una función pero que, de lo contrario, devolverá un valor.
// The following is pseudo code:
g(x) = {
if (morning()) {
g = 2 * x;
}
else {
g = x;
}
return g;
}
Me opongo a la noción de que los procedimientos no devuelven valores. Un procedimiento es solo una forma específica de hablar sobre una función o método. Entonces eso significa que si el método subyacente que su procedimiento define o implementa devuelve un valor, adivine qué procedimiento devuelve un valor. Tomemos como ejemplo el siguiente fragmento del SICP :
// We can immediately translate this definition into a recursive procedure
// for computing Fibonacci numbers:
(define (fib n)
(cond ((= n 0) 0)
((= n 1) 1)
(else (+ (fib (- n 1))
(fib (- n 2))))))
¿Has oído hablar de procedimientos recursivos últimamente? Están hablando de una función recursiva (una función real) y está devolviendo un valor y están usando la palabra "procedimiento". Entonces, ¿cuál es la diferencia?
Bueno, otra forma de pensar una función (además del significado mencionado anteriormente) es como una representación abstracta de un ideal como el número 1. Un procedimiento es la implementación real de esa cosa. Personalmente creo que son intercambiables.
(Tenga en cuenta que si lee ese capítulo del enlace que proporciono, puede encontrar que un concepto más difícil de entender no es la diferencia entre una función y un procedimiento, sino un proceso y un procedimiento. ¿Sabía que un procedimiento recursivo puede tener un ¿proceso iterativo?)
Un análogo para procedimientos son recetas. Por ejemplo; supongamos que tiene una máquina llamada make-pies
esta máquina toma en ingredientes de (fruit, milk, flower, eggs, sugar, heat)
y esta máquina devuelve un pie
.
Una representación de esta máquina podría verse como
make-pies (fruit, milk, flower, eggs, sugar, heat) = {
return (heat (add fruit (mix eggs flower milk)))
}
Por supuesto, esa no es la única forma de hacer un pastel.
En este caso, podemos ver que:
A function is to a machine
as a procedure is to a recipe
as attributes are to ingredients
as output is to product
Esa analogía está bien, pero se rompe cuando se tiene en cuenta que cuando se trata de un programa de computadora todo es una abstracción. Entonces, a diferencia de una receta para una máquina, estamos comparando dos cosas que son abstracciones; dos cosas que bien podrían ser lo mismo. Y sostengo que son (para todos los propósitos y propósitos) lo mismo.
Si aquí estamos agnósticos del lenguaje, el procedimiento generalmente especifica una serie de actos necesarios para lograr de manera fiable e idempotente ciertos resultados. Es decir, un procedimiento es básicamente un algoritmo.
Funciones, por otro lado, es una pieza de código algo independiente dentro de un programa más grande. En otras palabras, la función es la implementación de un procedimiento.
Una función devuelve un valor y un procedimiento simplemente ejecuta comandos.
La función de nombre proviene de las matemáticas. Se usa para calcular un valor basado en la entrada.
Un procedimiento es un conjunto de comando que se puede ejecutar en orden.
En la mayoría de los lenguajes de programación, incluso las funciones pueden tener un conjunto de comandos. Por lo tanto, la diferencia está solo en la parte de devolución de un valor.
Pero si desea mantener limpia una función (solo consulte los lenguajes funcionales), debe asegurarse de que una función no tenga un efecto secundario.
Una función devuelve un valor y un procedimiento simplemente ejecuta comandos.
La función de nombre proviene de las matemáticas. Se usa para calcular un valor basado en la entrada.
Un procedimiento es un conjunto de comando que se puede ejecutar en orden.
En la mayoría de los lenguajes de programación, incluso las funciones pueden tener un conjunto de comandos. Por lo tanto, la diferencia está solo en la parte de devolución de un valor.
Pero si desea mantener limpia una función (solo consulte los lenguajes funcionales), debe asegurarse de que una función no tenga un efecto secundario.
Procedimientos: 1.Procedimientos son las colecciones de declaraciones que definen cálculos parametrizados. 2.Procedimientos no pueden devolver valores.
3. No se pueden llamar procedimientos desde la función.
Funciones 1. Las funciones se asemejan estructuralmente a los procedimientos pero se modelan semánticamente en las funciones matemáticas. 2. Puede devolver valores 3. Se puede invocar la función desde los procedimientos.