En la Lección 5 aprendiste que una función es un código reutilizable que proporciona instrucciones para realizar una acción o para crear una salida con base en una entrada.
Para definir una función, necesitarás tres piezas clave: un identificador único, el tipo de información que se espera como su resultado y la acción que realizará la función cuando se la llame.
Cómo definir una función
Firmas de funciones
En la Lección 3, viste cómo declarar una variable o constante al asignarle un nombre y otorgarle el tipo de valor que usará.
Una firma de función funciona de forma similar. La firma de función usa un identificador único para la función, junto con los parámetros que describen la entrada que necesitará y, por último, el tipo de valor devuelto para el resultado o la salida.

Lo que en realidad hace la función está definido en el bloque de código.
Bloque de código
El bloque de código es el grupo de expresiones que viene después de la firma de la función. Esta es la sintaxis para la función y su bloque de código:
name() : type =
codeblock
Hay varias maneras de aplicar formato a un bloque de código. Una manera es aplicar sangría a las líneas de código después del identificador. Puedes ver esto en la sintaxis de la función que se muestra arriba. (Más adelante, aprenderás más sobre cómo configurar bloques de código, pero por ahora puedes usar esto).
Las expresiones en el bloque de código definen qué hará esa función cuando se la llame.
Estas expresiones se ejecutarán solo cuando se llame a esa función. Cuando el programa llegue al final de ese bloque de código, estas expresiones se realizarán (al menos hasta la próxima vez que se llame a esa función) y el programa ejecutará el próximo segmento de código que sigue a esta llamada a función.

Cuerpo
El bloque de código también se denomina cuerpo cuando define qué hace la función.
Ámbito
Hasta ahora, aprendiste que:
- Una función tiene un identificador único que se usa para activarlo para hacer algo en el programa.
- Lo que hace una función se basa en las expresiones del cuerpo de la función.
- Cuando está lista la última línea de código en el cuerpo, la llamada a función termina y el programa pasa a la siguiente línea de código después de la llamada a función que se encuentra en el programa.
Las instrucciones en esa función y todos los valores que se originan de la función determinan el ámbito de la función.
Ahora volvamos a las expresiones que puedes usar para definir la función. Puedes crear constantes y variables (¿lo recuerdas de la Lección 3?) y agregarlas al cuerpo de la función.
Cuando colocas una variable en el cuerpo, es local al ámbito de la función. Local, en este sentido, significa que el código reside y funciona solo en ese cuerpo, y únicamente cuando se llama a la función.
¿Qué es el ámbito entonces? Es la asociación del nombre de la función con el valor producido por la función. Ese valor solo se puede usar dentro del bloque de código donde se crea o dentro de ese ámbito.
Instanciación
Una instancia es una aplicación única de esa función cuando se la llama y ejecuta. La creación de esta instancia es la instanciación. Ten en cuenta que la instancia y la instanciación están las dos relacionadas con la palabra instante, que significa una cantidad de tiempo muy breve.
Y esto trae el concepto de duración.
Duración
Una instancia tiene una duración, un principio, un momento medio y un final.
Esto significa que la duración de lo que está en ese cuerpo de función se limita al ámbito del cuerpo, y no puedes acceder a las variables locales (aquellas limitadas a este ámbito actual) fuera del ámbito.
Condicionales
El siguiente ejemplo muestra cómo calcular el número máximo de ratoneras que un jugador puede comprar con la cantidad de monedas que tiene.
La constante MousetrapsYouCanBuy
se crea dentro del bloque if
y el ámbito se limita al bloque if
.
Cuando la constante MaxMousetrapsYouCanBuy
se usa fuera del bloque de código if
, produce un error porque el nombre MaxMousetrapsYouCanBuy
no existe fuera del ámbito. Verás un mensaje de error: Identificador desconocido. Esto significa que MaxMousetrapsYouCanBuy
solo tiene validez dentro de ese ámbito.

Cuando la expresión se completa, las constantes y las variables locales creadas en el cuerpo ya no existen. Llegaron al final de su duración.
Piensa que el ámbito es como un pequeño fragmento de código donde las cosas funcionan hasta que están listas.
Sintaxis de función
Observemos otra vez la sintaxis de la función, pero esta vez de manera un poco más detallada.
name() : type =
codeblock
name() : type = |
Esta es la firma de la función. Se trata de La firma de la función incluye el tipo de entrada que se usará. El valor que devuelve la función (lo que viene después de |
codeblock |
El bloque de código de la función, o cuerpo, es donde agregas constantes, variables u otras expresiones para mostrar qué hará la función cuando se la llame. |
Por ejemplo, una función para pagar una ratonera puede tener el aspecto siguiente:
var Coins : int = 500
CoinsPerMousetrap : int = 100
BuyMousetrap() : void =
set Coins = Coins - CoinsPerMousetrap
Print("¡Compraste la ratonera! Te quedan {Coins} monedas.")
Las reglas y convenciones de nomenclatura para los nombres de funciones son las mismas que usarías para las variables y constantes. Dado que las funciones realizan una secuencia de acciones, una buena práctica es asignarles un nombre que refleje las acciones que realizan, como BuyMousetrap()
.
Void
Es posible que hayas advertido la palabra void
en la firma de la función para BuyMousetrap()
. El tipo void para una función significa que su llamada a función no devolverá nada. Aprenderás más acerca de qué se trata 'void' y cómo se usa en la próxima lección.
No repetir
Un principio importante de la programación es No repetir.
Es decir, si repites una línea de código tres veces o más, debes considerar escribirlo de otra forma. Y sí, hay una razón para esto.
Cuanto mayor sea la cantidad de líneas de código que escribas, mayor será la dificultad para mantener ese código, y mayores serán las probabilidades de que termines con errores lógicos cuando debas cambiar de forma inevitable el código en un lugar, pero no en otro.
Las funciones, como las constantes, son una manera de no repetir código cuando esto es innecesario, por lo que las funciones no solo permiten ahorrar tiempo porque ayudan a no repetir código, sino que también reducen las tareas de mantenimiento y disminuyen la probabilidad de que se produzcan errores de código.
Presta atención al uso de mayúsculas al escribir código cuando defines qué nombre asignarás a las expresiones y funciones, y cuando uses palabras clave y funciones integradas. Verse distingue mayúsculas y minúsculas. Los errores en el uso correcto y consistente de mayúsculas pueden provocar errores lógicos y de compilación.
Resumen Una función es código reutilizable que proporciona instrucciones para realizar una acción o crear una salida con base en una entrada.
- Las funciones necesitan tres partes: un identificador, un tipo y un bloque de código que contiene lo que será el resultado de la función cuando se la llame.
- Las funciones se llaman mediante sus firmas de función.
- Un bloque de código también se conoce como cuerpo cuando define qué hace la función.
- Ámbito se refiere al valor asociado con la función, que a su vez, se define según el contenido del bloque de código.
- El código contenido dentro de un bloque de código es local a ese ámbito.
- Duración es el intervalo del ámbito.
- No repetir.