La modularización ó modularidad es un principio de diseño que permite dividir un programa en partes más pequeñas y manejables llamadas módulos. Cada módulo representa una unidad lógica y funcional que se puede desarrollar, mantener y probar de forma independiente. Esto facilita el desarrollo y la gestión del código, ya que cada módulo se puede trabajar por separado sin afectar a otros módulos.
En resumen, la división de programas en módulos ofrece beneficios como modularidad, reutilización de código, mantenibilidad, escalabilidad y facilidad de colaboración. Estas prácticas ayudan a mejorar la eficiencia, calidad y soporte del software.
La modularidad puede llevarse a cabo mediante varias técnicas y prácticas, entre ellas:
La modularidad puede llevarse a cabo mediante varias técnicas y prácticas, entre ellas:
Una de las formas es mediante funciones. Los lenguajes de programación proveen instrucciones para definir funciones.
Estas funciones son prácticamente un bloque de código que se definen pero se ejecutan solo en el momento del programa que son invocadas.
Las funciones pueden tener datos de entrada y retornar un valor como resultado.
Ejemplo de una función simple. Sin parámetros de entrada ni retorno de resultado.
def saludo():
print("Hola")
print("Bienvenido al programa")
saludo()
Bienvenido al programa
Hola
Podemos utilizar muchas veces la función
def saludo():
print("Hola")
print("Bienvenido al programa")
saludo()
saludo()
saludo()
Bienvenido al programa
Hola
Hola
Hola
Por lo general, una función devuelve un valor de retorno resultado de su ejecución. Si nuestra función se encarga de devolver un número aleatorio, el resultado sería ese número en particular.
Supongamos que queremos implementar esa función
from random import randint
# Comienza la función
def lanzar_dado():
return randint(1,6)
# El programa
mi_dado = lanzar_dado()
print(f"El resultado es {mi_dado}")
La función NO se ejecutará hasta que sea invocada. Diferencia entre definir e invocar.
La función debe estar definida antes de invocarla. Sino, puede dar el mismo error de querer invocar a una variable si no está definida, por ejemplo:
NameError: name 'saludo' is not defined
Las funciones pueden recibir valores de entrada mediante los llamados parámetros. Esos valores se definen en la cabecera de la función dentro de los paréntesis separados por coma si son mas de uno.
def saludo(nombre):
print("Hola",nombre)
nom = input("Ingrese su nombre: ")
saludo(nom)
Ingrese su nombre: Cristian
Hola Cristian
Observar que variable que se usó para enviar el dato no se corresponde con el nombre del parámetro.
Las funciones pueden recibir valores de entrada mediante los llamados parámetros. Esos valores se definen en la cabecera de la función dentro de los paréntesis separados por coma si son mas de uno.
def saludo(nombre, apellido):
print(f"¡Hola {nombre} {apellido}!")
nom = input("Ingrese su nombre: ")
ape = input("Ingrese su apellido: ")
saludo(nom, ape)
Ingrese su nombre: Sergio
Ingrese su apellido: Pérez
¡Hola Sergio Pérez!
Como se habrá observado, el parámetro se trata internamente en la función como si fuera una variable mas.
Cuando tenemos mas de un parámetro es importante saber que importa el orden que enviemos los datos ya que se respeta el orden de los parámetros y no el nombre de los mismos.
Qué imprime este código.
def saludo(nombre, apellido):
print(f"¡Hola {nombre} {apellido}!")
nom = input("Ingrese su nombre: ")
ape = input("Ingrese su apellido: ")
saludo(ape, nom)
Ingrese su nombre: Sergio
Ingrese su apellido: Pérez
¡Hola Pérez Sergio!
Las funciones pueden tener variables para usar internamente.
Las variables locales son exactamente igual a las variables vistas hasta el momento, solo que pueden verse dentro de la función y una vez que la función termina su ejecución las variables son eliminadas.
def funcion_prueba(numero):
x=0
if numero == x:
print("El número es igual a x")
else:
print("El número NO es igual a x")
funcion_prueba(3)
funcion_prueba(2)
funcion_prueba(0)
El número NO es igual a x
El número NO es igual a x
El número es igual a x
Observar que se puede enviar valores directamente.
y=99
def funcion_prueba(numero):
x=y
if numero == x:
print("El número es igual a x")
else:
print("El número NO es igual a x")
funcion_prueba(3)
funcion_prueba(2)
funcion_prueba(99)
El número NO es igual a x
El número NO es igual a x
El número es igual a x
Desde las funciones se puede acceder (solo lectura) a las variables que están definidas en el programa.
Escriba un programa que solicite al usuario que ingrese su nombre y apellido y luego una función que se encargue de saludar (similar a lo visto en los ejemplos). En caso que el nombre y el apellido sean "Sergio" y "Pérez" respectivamente debe saludar como "¡Hola, Checo!" de lo contrario un Hola nombre apellido.
Crea un programa que simule una calculadora. Le debe pedir al usuario dos números y una operación (puede ser suma, resta, multiplicación y división). Posteriormente debe imprimir el resultado.
Escribir una función para cada operación.
Escriba el op1: 9
Escriba el op2: 2
Elija una operación (+ - * /): +
El resultado es 9+2=11
En caso de la división, verificar que op2 NO sea 0. Dado que no puede realizarse una división por 0. En tal caso debe imprimir "No se puede dividir por 0".
Escribe un programa que convierta una temperatura ingresada por el usuario en grados Celsius a grados Fahrenheit y viceversa. Crea dos funciones: una llamada celsius_a_fahrenheit() que tome una temperatura en grados Celsius y devuelva su equivalente en grados Fahrenheit, y otra llamada fahrenheit_a_celsius() que haga lo contrario.
Celsius a Fahrenheit: (x°C * 9/5) + 32 = y°F
Fahrenheit a Celsius: (x°F -32) * 5/9 = y°C
¡Bienvenido al conversor de temperaturas!
Ingresa una temperatura: 64
64.0 grados Celsius equivalen a 147.2 grados Fahrenheit.
64.0 grados Fahrenheit equivalen a 17.77 grados Celsius.