Resumen de funciones
En términos de programación, un functiones un bloque de declaraciones que realiza una tarea específica. Las funciones aceptan datos, los procesan y devuelven un resultado. Las funciones están escritas principalmente para apoyar el concepto de reutilización. Una vez que se escribe una función, se puede llamar fácilmente, sin tener que escribir el mismo código una y otra vez.
Los diferentes lenguajes funcionales usan una sintaxis diferente para escribir una función.
Requisitos previos para escribir una función
Antes de escribir una función, un programador debe conocer los siguientes puntos:
El programador debe conocer el propósito de la función.
El programador debe conocer el algoritmo de la función.
El programador debe conocer las variables de datos de las funciones y su objetivo.
Los datos de la función deben ser conocidos por el programador al que llama el usuario.
Control de flujo de una función
Cuando se "llama" a una función, el programa "transfiere" el control para ejecutar la función y su "flujo de control" es el siguiente:
El programa llega a la declaración que contiene una "llamada de función".
Se ejecuta la primera línea dentro de la función.
Todas las declaraciones dentro de la función se ejecutan de arriba a abajo.
Cuando la función se ejecuta con éxito, el control vuelve a la instrucción desde donde comenzó.
Cualquier dato calculado y devuelto por la función se usa en lugar de la función en la línea de código original.
Sintaxis de una función
La sintaxis general de una función es la siguiente:
returnType functionName(type1 argument1, type2 argument2, . . . ) {
// function body
}
Definición de una función en C ++
Tomemos un ejemplo para entender cómo se puede definir una función en C ++, que es un lenguaje de programación orientado a objetos. El siguiente código tiene una función que suma dos números y proporciona su resultado como salida.
#include <stdio.h>
int addNum(int a, int b); // function prototype
int main() {
int sum;
sum = addNum(5,6); // function call
printf("sum = %d",sum);
return 0;
}
int addNum (int a,int b) { // function definition
int result;
result = a + b;
return result; // return statement
}
Producirá la siguiente salida:
Sum = 11
Definición de una función en Erlang
Veamos cómo se puede definir la misma función en Erlang, que es un lenguaje de programación funcional.
-module(helloworld).
-export([add/2,start/0]).
add(A,B) ->
C = A + B,
io:fwrite("~w~n",[C]).
start() ->
add(5,6).
Producirá la siguiente salida:
11
Prototipo de función
Un prototipo de función es una declaración de la función que incluye tipo de retorno, nombre-función y lista de argumentos. Es similar a la definición de función sin cuerpo de función.
For Example - Algunos lenguajes de programación admiten la creación de prototipos de funciones y otros no.
En C ++, podemos hacer un prototipo de función de la función 'suma' así:
int sum(int a, int b)
Note - Los lenguajes de programación como Python, Erlang, etc. no admiten la creación de prototipos de funciones, necesitamos declarar la función completa.
¿Para qué sirve el prototipo de función?
El compilador utiliza el prototipo de función cuando se llama a la función. El compilador lo usa para asegurar que el tipo de retorno correcto, la lista de argumentos adecuada se pasen y su tipo de retorno sea correcto.
Firma de la función
Una firma de función es similar al prototipo de función en el que el número de parámetros, el tipo de datos de los parámetros y el orden de aparición deben estar en un orden similar. Por ejemplo:
void Sum(int a, int b, int c); // function 1
void Sum(float a, float b, float c); // function 2
void Sum(float a, float b, float c); // function 3
Function1 y Function2 tienen firmas diferentes. Function2 y Function3 tienen las mismas firmas.
Note - La sobrecarga de funciones y la anulación de funciones, que analizaremos en los capítulos siguientes, se basan en el concepto de firmas de funciones.
La sobrecarga de funciones es posible cuando una clase tiene varias funciones con el mismo nombre pero diferentes firmas.
La anulación de funciones es posible cuando una función de clase derivada tiene el mismo nombre y firma que su clase base.