Función (programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 26 de abril de 2022; las comprobaciones requieren 7 ediciones .

Una función en programación , o una subrutina  , es un fragmento de código de programa al que se puede acceder desde otro lugar del programa . En la mayoría de los casos , el identificador está asociado con una función , pero muchos idiomas también permiten funciones sin nombre . La dirección de la primera instrucción ( operador ) incluida en la función, a la que se transfiere el control cuando se llama a la función, está indisolublemente unida al nombre de la función . Después de ejecutar la función, el control vuelve a la dirección de retorno, el punto del programa donde se llamó a la función.

La función puede tomar parámetros y debe devolver algún valor, posiblemente vacío. Las funciones que devuelven un valor vacío a menudo se denominan procedimientos . En algunos lenguajes de programación, las declaraciones de funciones y procedimientos tienen una sintaxis diferente, en particular, se pueden usar diferentes palabras clave.

La función debe estar correctamente declarada y definida . La declaración de la función, además del nombre, contiene una lista de nombres y tipos de parámetros (o: argumentos ), así como el tipo del valor devuelto por la función. Una definición de función contiene el código ejecutable de la función. En algunos lenguajes de programación, la declaración de una función precede inmediatamente a la definición de la función, mientras que en otros lenguajes es necesario declarar primero la función y solo luego traer su definición.

En la programación orientada a objetos , las funciones cuyas declaraciones son parte integral de la definición de una clase se denominan métodos . También en los lenguajes OOP es posible declarar una función abstracta (virtual) sin declarar el cuerpo de la función.

Para utilizar una función previamente definida, es necesario indicar el nombre de la función en el lugar requerido del código del programa y listar los parámetros pasados ​​a la función. Los parámetros que se pasan a una función se pueden pasar tanto por valor como por referencia: se crea una copia local para una variable pasada por valor, y cualquier cambio que ocurra en el cuerpo de la función con la variable pasada, de hecho, ocurre con una copia local y no afecta de ninguna manera a la variable en sí, mientras que los cambios que se producen en el cuerpo de la función en una variable pasada por referencia se producen en la propia variable pasada.

La función define su propio ámbito (local), que incluye parámetros de entrada, así como aquellas variables que se declaran directamente en el cuerpo de la propia función.

Es posible llamar a una función dentro de la función misma: tal llamada de función se llama recursiva , y el proceso de sucesivas llamadas de funciones anidadas se llama recursión . Dado que es necesario recordar (en la pila) la dirección de retorno de la función (y también asignar memoria en la misma pila para parámetros y variables locales que no son dinámicas), la recursividad sin restricciones conduce al desbordamiento de la pila , por lo tanto, en la programación idiomas, se establece un cierto nivel máximo de anidamiento de llamadas recursivas.

Ejemplos de funciones

JavaScript

función max ( a , b ) { devuelve a >= b ? un : b ; }

ActionScript

nombre de la función pública ( texto : cadena ) { var textfield : TextField = new TextField (); campo de texto texto = texto ; }

C++

nombre vacío ( texto de cadena ) _ { cout << texto ; }

en el estándar C++ también hay funciones con argumentos por defecto

foo vacío ( int arg1 , int arg2 = 10 ) { cout << arg1 << arg2 ; } foo ( 9 ); // se llamará y se mostrará 910

Óxido

#[en línea (siempre)] fn máx < T > ( a : T , b : T ) -> T dónde T : Orden Parcial , { si a > b { a } más { b } } máximo ( 3 , 5 );

C#

public void Nombre ( cadena de texto ) { Consola . WriteLine ( texto ); }

Java

nombre vacío público ( texto de cadena ) { sistema _ fuera _ println ( texto ); }

Pascual

nombre del procedimiento ( var text : string ) begin write ( texto ) ; fin ;

PHP

nombre de la función ( $texto ) { echo $texto ; }

ML estándar

nombre divertido t = imprimir t

o, lo que es lo mismo (ver funciones de primera clase y función lambda ):

val nombre = fn t => imprimir t

Rápido

func foo ( arg1 : Int , arg2 : Int = 10 ) { imprimir ( arg1 * arg2 ) } foo ( arg1 : 9 ) // (9 * 10) Respuesta: 90

Visual Basic

Sub Nombre ( texto ) Consola . WriteLine ( texto ) End Sub

PureBasic

procedimiento _ l Nombre ( texto . s ) ImprimirN ( texto ) Finalizar procedimiento

Pitón

def func ( p1 : str , p2 : int = 10 ): print ( p1 , p2 ) func ( 123 ) # 123 10

Nim

proc myfunc ( texto : cadena ) = texto de eco

Véase también

Enlaces