Tutorial Python (in Work)
  • 1 - Objetivos del tutorial de Python
  • 2 - Instalación del lenguaje y pasos para crear nuestro primer programa
  • 3 - Codificación del diagrama de flujo en Python
  • 4 - Errores sintácticos y lógicos
  • 5 - Estructura de programación secuencial
  • 6 - Estructuras condicionales simples y compuestas
  • 7 - Estructuras condicionales anidadas
  • 8 - Condiciones compuestas con operadores lógicos
  • 9 - Estructura repetitiva while
  • 10 - Estructura repetitiva for
  • 11 - Definición de comentarios en el código fuente
  • 12 - Variables enteras, flotantes y cadenas de caracteres
  • 13 - Procesar cadenas de caracteres
  • 14 - Estructura de datos tipo lista
  • 15 - Listas: carga por teclado de sus elementos
  • 16 - Listas: mayor y menor elemento
  • 17 - Listas paralelas
  • 18 - Listas: ordenamiento de sus elementos
  • 19 - Listas: ordenamiento con listas paralelas
  • 20 - Listas: componentes de tipo lista
  • 21 - Listas: carga por teclado de componentes de tipo lista
  • 22 - Listas: eliminación de elementos
  • 23 - Concepto de funciones - Programación estructurada
  • 24 - Funciones: parámetros
Con tecnología de GitBook
En esta página
  • Ejemplos
  • Problemas propuestos

¿Te fue útil?

23 - Concepto de funciones - Programación estructurada

Anterior22 - Listas: eliminación de elementosSiguiente24 - Funciones: parámetros

Última actualización hace 4 años

¿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.

El tema de funciones en un principio puede presentar dificultades para entenderlo y ver sus ventajas ante la metodología de programación lineal que veníamos trabajando en conceptos anteriores.

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.

Ejemplos

Ejemplo 1

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.

# program

# function: presentation of program
def presentation():
    print("Welcome, this program that allows prompt two values by keyBoard")    
    print("it shows the result of sum")
    print("*****************************")

# function: loading data and sum
def loading_operation():
    val1=int(input("Ente value1: "))
    val2=int(input("Ente value2: "))
    suma=val1+val2
    print("Sum: ",suma)

# goodbye
def goodbye():
    print("thank you for uses this program")
    print("*******************************")
    print("goodbye")

# main program
presentation()
loading_operation()
goodbye() 

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).

# main program
presentation()
loading_operation()
goodbye() 

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:

def presentation():
    print("Welcome, this program that allows prompt two values by keyBoard")    
    print("it shows the result of sum")
    print("*****************************")

La función loading_operation() permite ingresar dos enteros por teclado, sumarlos y mostrarlos en pantalla:

def loading_operation():
    val1=int(input("Ente value1: "))
    val2=int(input("Ente value2: "))
    suma=val1+val2
    print("Sum: ",suma)

La función goodbye() tiene por objetivo mostrar un mensaje que muestre al operador que el programa finalizó:

def goodbye():
    print("thank you for uses this program")
    print("*******************************")
    print("goodbye")

Luego de definir las funciones tenemos al final de nuestro archivo *.py las llamadas de las funciones:

presentation()
loading_operation()
goodbye() 

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).

El orden en que llamamos a las funciones es muy importante.

Supongamos que nuestro bloque del programa principal llamamos las funciones en este orden:

goodbye()
loading_operation()
presentation()

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.

Ejemplo 2

#function for loading values
#keyBoard inpt
def input_values():    
    val1=int(input("Ente value1: "))
    val2=int(input("enter value2:"))
    suma=val1+val2
    print("sum: ",suma)

# separator
def separator():
    print("**********************")
# main
for f in range(5):
    input_values()
    separator()

Luego de ejectuar el programa anterior tenemos:

Hemos declarado dos funciones, una que permite cargar dos enteros sumarlos y mostrar el resultado:

def input_values():    
    val1=int(input("Ente value1: "))
    val2=int(input("enter value2:"))
    suma=val1+val2
    print("sum: ",suma)

Y otra función que tiene por objetivo mostrar una línea separadora con asteriscos:

def separator():
    print("**********************")
# main
for f in range(5):
    input_values()
    separator()

Como vemos podemos llamar a la función input_values() y separator() muchas veces en nuestro caso en particular 5 veces.

Problema 1

Problema 2

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)

# squaring a number
def squaring():
    val1=int(input("Enter a number: "))
    val1=val1**2
    print("squaring: ",val1)
    print("**************************")

# multiplication two numbers
def multiplication():
    val1=int(input("Enter a number1: "))
    val2=int(input("Enter a number: "))
    m=val1*val2
    print("multiplication: ",m)

#main 
squaring()
multiplication()
# lower number
def lower_number():
    v1=int(input("Enter a number1: "))
    v2=int(input("Enter a number2: "))
    v3=int(input("Enter a number3: "))
    #lower
    if(v1<=v2 and v1<=v3):
        m=v1
    elif(v2<v1 and v2<v3):
        m=v2
    else:
        m=v3
    print("minor: ",m)
    print("***********************************")
    
#main
lower_number()
lower_number()

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).

Problemas propuestos

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.

Solución

Nota : Inténtalo tu mism@, esta es la mejor forma de aprender o si quieres ver otro algoritmo para solucionar el mismo problema.

✍🏾
🤕
😁
🤖
👨🏽‍🔧
😵
👨🏾‍🏫
🖥️
🤖
👨🏾‍🏫
🤓
📚
😀
✍🏾
☎️
🆘
👩‍🏫
📈
👀
👨‍💻
Código ejemplo 1
Salida ejecución ejemplo 1
Salida ejecución ejemplo 2