una subrutinas subrutina sub que procedimientos llamar entre ensamblador ejemplos diferencia bibliotecas terminology

terminology - subrutinas - que es una subrutina en ensamblador



¿Cuál es la diferencia entre una función y una subrutina? (9)

¿Cuál es la diferencia entre una función y una subrutina? Me dijeron que la diferencia entre una función y una subrutina es la siguiente:

Una función toma parámetros, trabaja localmente y no altera ningún valor ni trabaja con ningún valor fuera de su alcance (alta cohesión). También devuelve algún valor. Una subrutina trabaja directamente con los valores de la persona que llama o el segmento de código que la invocó y no devuelve valores (baja cohesión), es decir, se bifurca algo de código a otro código para realizar algún procesamiento y regresar.

¿Es esto cierto? ¿O no hay diferencia, solo dos términos para denotar uno?


Cada subrutina realiza alguna tarea específica. Para algunas subrutinas, esa tarea es calcular o recuperar algún valor de datos. Las subrutinas de este tipo se llaman funciones. Decimos que una función devuelve un valor. Generalmente, el valor devuelto está destinado a ser utilizado de alguna manera en el programa que llama a la función.


En términos de Visual Basic, una subrutina es un conjunto de instrucciones que realiza una tarea bien definida. Las instrucciones se colocan dentro de las declaraciones Sub y End Sub .

Las funciones son similares a las subrutinas, excepto que las funciones devuelven un valor. Las subrutinas realizan una tarea pero no informan nada al programa de llamada. Una función comúnmente realiza algunos cálculos e informa el resultado a la persona que llama.


Estoy escribiendo esta respuesta desde una VBA para la perspectiva de Excel. Si está escribiendo una función, entonces puede usarla como una expresión, es decir, puede llamarla desde cualquier celda de Excel.

Por ejemplo: la función vlookup normal en Excel no puede buscar valores> 256 caracteres. Así que utilicé esta función:

Function MyVlookup(Lval As Range, c As Range, oset As Long) As Variant Dim cl As Range For Each cl In c.Columns(1).Cells If UCase(Lval) = UCase(cl) Then MyVlookup = cl.Offset(, oset - 1) Exit Function End If Next End Function

Este no es mi código. Lo tengo de otro post de internet. Funciona bien.

Pero la verdadera ventaja es que ahora puedo llamarlo desde cualquier celda en Excel. Si escribiera una subrutina no podría hacer eso.


Si hablamos en C, C ++, Java y otro lenguaje de alto nivel relacionado:

a. Una subrutina es una construcción lógica que se utiliza para escribir algoritmos (o diagramas de flujo) para designar la funcionalidad de procesamiento en un solo lugar. La subrutina proporciona una salida basada en la entrada donde el procesamiento puede permanecer sin cambios.

segundo. Una función es una realización del concepto de subrutina en el lenguaje de programación.


Tanto la función como la subrutina devuelven un valor, pero mientras que la función no puede cambiar el valor de los argumentos que entran IN en su camino OUT, una subrutina puede hacerlo. Además, debe definir un nombre de variable para el valor saliente, donde, en cuanto a la función, solo necesita definir las variables entrantes. Por ejemplo, una función:

double multi(double x, double y) { double result; result = x*y; return(result) }

tendrá solo argumentos de entrada y no necesitará la variable de salida para el valor de retorno. Por otro lado, la misma operación realizada a través de una subrutina se verá así:

double mult(double x, double y, double result) { result = x*y; x=20; y = 2; return() }

Esto hará lo mismo que hizo la función, es decir, devolverá el producto de x e y, pero en este caso usted (1) necesita definir el resultado como una variable y (2) puede cambiar los valores de x e y en su camino de vuelta.


Un procedimiento de función devuelve un valor después de realizar su tarea asignada, mientras que un procedimiento Sub no devuelve un valor.


Una de las diferencias podría ser desde el origen de donde proviene la terminología.

La subrutina es más bien una terminología de arquitectura / organización de computadora que significa un grupo de instrucciones reutilizables que realiza una tarea. Se almacena en la memoria una vez, pero se usa tantas veces como sea necesario.

La función tiene su origen en una función matemática donde la idea básica es mapear un conjunto de entradas a un conjunto de salidas permitidas con la propiedad de que cada entrada está relacionada con exactamente una salida.


Una función devuelve un valor mientras que una subrutina no lo hace. Una función no debería cambiar los valores de los argumentos reales, mientras que una subrutina podría cambiarlos.

Esa es mi definición de ellos ;-)


Estoy en desacuerdo. Si pasa un parámetro por referencia a una función, podrá modificar ese valor fuera del alcance de la función. Además, las funciones no tienen que devolver un valor. Considere void some_func() en C. Por lo tanto, las premisas en el OP no son válidas.

En mi opinión, la diferencia entre función y subrutina es semántica. Es decir, algunos lenguajes usan terminología diferente.