terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat intro-funciones.md
guest@codeandosimple: ~/intro $ cat intro-funciones.md

Funciones y Módulos_

// "La paciencia es un elemento clave del éxito" - Bill Gates

// Lo más básico

Aquí hablaremos de funciones, una de las herramientas fundamentales a la hora de escribir nuestros programas. Veremos qué son y por qué son tan importantes.

# ¿Qué son y para qué sirven las funciones?

Imaginemos un programa grande, como un Word o un Excel: son millones de líneas de código, imposible de manejar si no se organiza de alguna manera.

Para solucionar este tipo de cosas tenemos algo llamado funciones. Una función la podemos ver como un bloquecito de código que hace algo, y sigue la estrategia de “divide y vencerásâ€.

divide y venceras

Tenemos una tarea grande, difícil. La podemos dividir en tareas más pequeñas, fáciles de resolver.

tareas pequeñas

Resolvemos estas tareas y unimos esa solución.

union soluciones

Nuestro programa es como esta tarea: es grande, tiene muchas funcionalidades, hace muchas cosas; y a la hora de programarlo lo dividimos en partes más pequeñas, funcionalidades más simples, y luego invocamos estas soluciones. Por lo general nuestro programa principal termina teniendo unas pocas líneas que invocan funciones.

invocacion funciones

Estuvimos usando funciones pero no las vimos: todo programa arranca por una función principal, por ejemplo Main.

funcion main

También usamos las primitivas read, print, que son funciones que se comunican con el sistema operativo.

primitivas SO

A las funciones las podemos ver también como una cajita: tiene un nombre, una entrada y una salida. Es un bloquecito que hace algo.

cajita funcion

A la hora de crearla encapsula la tarea que ejecuta y a la hora de usarla es como una caja negra: invoco a la función, no me importa cómo lo hace, solo sé que lo hace y me sirve tomar el resultado.

caja negra

Tiene un nombre la función: tiene que ser algo que lo represente, que indique lo que hace, para poder entenderlo.

nombre representativo

La entrada son los parámetros: los parámetros son los datos, las variables que le pasamos a una función.

parametros entrada

Pensemos a la función como una caja cerrada: sólo puede usar lo que le pasamos.

aislamiento funcion

Y desde afuera tampoco vemos lo que tiene adentro, solo vemos el resultado.

resultado exterior

Esto nos lleva al concepto de scope: el ámbito de las variables, donde viven, desde dónde se pueden usar.

Una función puede crear sus propias variables: son variables locales a la función, desde afuera no las vemos.

variables locales

Y también tenemos variables globales, que según el lenguaje se crean afuera o se declaran como variables globales, y se pueden usar en todo el programa, incluso dentro de las funciones por más que no las pasemos como parámetro.

variables globales

Es una mala práctica usar variables globales porque viven toda la vida del programa ocupando memoria, y el programa se vuelve más difícil de depurar, porque cuesta detectar dónde cambiar el valor de la variable. Así que nos olvidamos de las variables globales y pasamos parámetros de entrada a la función.

Y la salida, el resultado que devuelve, devuelve un solo resultado.

retorno unico

Debemos decir qué tipo de dato retorna.

tipo de retorno

Por ejemplo tenemos la función promedio, que retorna un tipo decimal y recibe tres parámetros, tres notas que pueden ser de tipo decimal. Crea la variable local resultado, suma las tres notas, las divide por 3 y retorna ese resultado.

analisis promedio

Donde queremos usarla la invocamos con el nombre y pasándole los parámetros. La podemos usar las veces que queremos.

reutilizacion funcion

# Ventajas de usar funciones

  • Evita que dupliquemos código: podemos invocar la función las veces que necesitemos, no tenemos que escribir el mismo código dos veces.
  • Uso de bibliotecas: podemos usar bibliotecas de funciones hechas por otros, incluirlas en nuestro programa y ganar tiempo, favoreciendo la reutilización de código.
  • Trabajo en equipo: permite dividir el trabajo en partes, módulos o funciones. Cada uno hace una parte y luego se integran.

# Parámetro por valor y referencia

Algo importante de las funciones son los pasajes de parámetros por valor y por referencia.

Cuando le pasamos un parámetro, un dato de entrada, a una función, podemos cambiar su valor dentro de la función, y que este nuevo valor se vea reflejado afuera de la misma. Esto se conoce como pasaje por referencia.

Para indicar pasaje por referencia se pasa el parámetro con una indicación especial, que depende del lenguaje (por ejemplo, un ampersand &). Si se modifica adentro, el cambio se ve reflejado afuera.

referencia

En el pasaje por valor, si la variable cambia dentro de la función, no se ve afectado el valor afuera; al salir de la función mantiene el que tenía al ingresar.

valor

Para concluir el tema funciones, las buenas prácticas dicen que cada función debe realizar una sola tarea y que su nombre debe ser representativo.

Hasta aquí llegamos con el tema funciones. Este es uno de los temas básicos que debe dominar un programador, y la única forma de lograrlo es practicando, no alcanza con solo leer teoría. En el próximo artículo veremos Arrays, una variable que permite almacenar más de un valor.

Recursos utilizados