23 - Concepto de funciones - Programación estructurada
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Hasta ahora hemos trabajado con una metodología de programación lineal. Todas las instrucciones de nuestro archivo *.py se ejecutan en forma secuencial de principio a fin. Esta forma de organizar un programa solo puede ser llevado a cabo si el mismo es muy pequeño (decenas de líneas).
Cuando los problemas a resolver tienden a ser más grandes la metodología de programación lineal se vuelve ineficiente y compleja. El segundo paradigma de programación que veremos es la programación estructurada.
La programación estructurada busca dividir o descomponer un problema complejo en pequeños problemas. La solución de cada uno de esos pequeños problemas nos trae la solución del problema complejo. En Python el planteo de esas pequeñas soluciones al problema complejo se hace dividiendo el programa en funciones.
Una función es un conjunto de instrucciones en Python que resuelven un problema específico.
El lenguaje Python ya tiene incorporada algunas funciones básicas. Algunas de ellas ya las utilizamos en conceptos anteriores como son las funciones: print, len y range.
Veamos ahora como crear nuestras propias funciones.
Los primeros problemas que presentaremos nos puede parecer que sea más conveniente utilizar programación lineal en vez de programación estructurada por funciones.
A medida que avancemos veremos que si un programa empieza a ser más complejo (cientos de líneas, miles de líneas o más) la división en pequeñas funciones nos permitirá tener un programa más ordenado y fácil de entender y por lo tanto en mantener.
Confeccionar una aplicación que muestre una presentación en pantalla del programa. Solicite la carga de dos valores y nos muestre la suma. Mostrar finalmente un mensaje de despedida del programa. Implementar estas actividades en tres funciones.
La forma de organizar nuestro programa cambia en forma radical. El programa ahora no empieza a ejecutarse en la línea 1.
El programa principal comienza a ejecutarse luego del comentario "main program" (programa principal).
Primero declaramos las tres funciones llamadas presentation, loading_operation y goodbye.
La sintaxis para declarar una función es mediante la palabra clave def seguida por el nombre de la función.
El nombre de la función no puede tener espacios en blanco, comenzar con un número y el único caracter especial permitido es el "_"
Luego del nombre de la función deben ir entre paréntesis los datos que llegan o de entrada (parametros), si no llegan datos como es el caso de nuestras tres funciones solo se disponen paréntesis abierto y cerrado. Al final disponemos los ":" (dos puntos).
Todo el bloque de la función se indenta cuatro espacios como venimos trabajando cuando definimos estructuras condicionales o repetitivas.
Dentro de una función implementamos el algoritmo que pretendemos que resuelva esa función, por ejemplo la función presentatation() tiene por objetivo mostrar en pantalla el objetivo del programa:
La función loading_operation() permite ingresar dos enteros por teclado, sumarlos y mostrarlos en pantalla:
La función goodbye() tiene por objetivo mostrar un mensaje que muestre al operador que el programa finalizó:
Luego de definir las funciones tenemos al final de nuestro archivo *.py las llamadas de las funciones:
Si no hacemos las llamadas a las funciones los algoritmos que implementan las funciones nunca se ejecutarán.
Cuando en el bloque del programa principal se llama una función hasta que no finalice no continua con la llamada a la siguiente función ( se ejecutan todas las lineas de la función).
Supongamos que nuestro bloque del programa principal llamamos las funciones en este orden:
Veremos que primero muestra el mensaje de finalización, luego la carga y suma de datos y finalmente aparece por pantalla los mensajes de presentación de nuestro programa.
Luego de ejectuar el programa anterior tenemos:
Hemos declarado dos funciones, una que permite cargar dos enteros sumarlos y mostrar el resultado:
Y otra función que tiene por objetivo mostrar una línea separadora con asteriscos:
Como vemos podemos llamar a la función input_values() y separator() muchas veces en nuestro caso en particular 5 veces.
Desarrollar un programa que solicite la carga de tres valores y muestre el menor. Desde el bloque principal del programa llamar 2 veces a dicha función (sin utilizar una estructura repetitiva)
Confeccionar una aplicación que solicite la carga de dos valores enteros y muestre su suma. Repetir la carga e impresion de la suma 5 veces. Mostrar una línea separadora después de cada vez que cargamos dos valores y su suma.
Ahora nuestro bloque principal del programa, recordemos que estas líneas son las primeras que se ejecutarán cuando iniciemos el programa:
Lo nuevo que debe quedar claro es que la llamada a las funciones desde el bloque principal de nuestro programa puede hacerse múltiples veces (esto es lógico, recordemos que print es una función ya creada en Python y la llamamos múltiples veces dentro de nuestro algoritmo).
Ha llegado una parte fundamental , que es el momento donde uno desarrolla individualmente un algoritmo para la resolución de problemas.
Desarrollar un programa con dos funciones. La primer solicite el ingreso de un entero y muestre el cuadrado de dicho valor. La segunda que solicite la carga de dos valores y muestre el producto de los mismos. LLamar desde el bloque del programa principal a ambas funciones.
Nota : Inténtalo tu mism@, esta es la mejor forma de aprender o si quieres ver otro algoritmo para solucionar el mismo problema.