Ver índice de contenidos del libro

3.3. Cómo usar una función en un programa

Una función es útil porque nos permite repetir la misma instrucción (puede que con argumentos distintos) todas las veces que las necesitemos en un programa.

Para utilizar las funciones definidas anteriormente, escribiremos un programa que pida tres duraciones, y en los tres casos las transforme a segundos y las muestra por pantalla.

1. Análisis: El programa debe pedir tres duraciones expresadas en horas, minutos y segun-dos, y las tiene que mostrar en pantalla expresadas en segundos.

2. Especificación:

  • Entradas: Tres duraciones leídas de teclado y expresadas en horas, minutos y segundos.
  • Salidas: Mostrar por pantalla cada una de las duraciones ingresadas, convertidas a segundos. Para cada juego de datos de entrada (h, m, s) se obtiene entonces 3600 * h + 60 * m + s, y se muestra ese resultado por pantalla.

3. Diseño:

Se tienen que leer tres conjuntos de datos y para cada conjunto hacer lo mismo, se trata entonces de un programa con estructura de ciclo definido de tres pasos:

repetir 3 veces:
    <hacer cosas>

El cuerpo del ciclo (<hacer cosas>) tiene la estructura Entrada-Cálculo-Salida. En pseudocódigo:

Leer cuántas horas tiene el tiempo dado 
(y referenciarlo con la variable hs)
 
Leer cuántos minutos tiene tiene el tiempo dado
(y referenciarlo con la variable min)
 
Leer cuántos segundos tiene el tiempo dado 
(y referenciarlo con la variable seg)
 
Mostrar por pantalla 3600 * hs + 60 * min + seg

Pero convertir y mostrar por pantalla es exactamente lo que hace nuestra función print_asegundos, por lo que podemos hacer que el cuerpo del ciclo se diseñe como:

Leer cuántas horas tiene la duración dada 
(y referenciarlo con la variable hs)
 
Leer cuántos minutos tiene tiene la duración dada
(y referenciarlo con la variable min)
 
Leer cuántas segundos tiene la duración dada 
(y referenciarlo con la variable seg)
 
Invocar la función print_asegundos(hs, min, seg)

El pseudocódigo final queda:

repetir 3 veces:
    Leer cuántas horas tiene la duración dada
    (y referenciarlo con la variable hs)
 
    Leer cuántos minutos tiene la duración dada
    (y referenciarlo con la variable min)
 
    Leer cuántos segundos tiene la duración dada
    (y referenciarlo con la variable seg)
 
    Invocar la función print_asegundos(hs, min, seg)

4. Implementación: A partir del diseño, se escribe el programa Python que se muestra en el siguiente listado que se guardará en el archivo tres_tiempos.py.

# tres_tiempos.py
def print_asegundos (horas, minutos, segundos):
    """ Transforma en segundos una medida de tiempo expresada en
        horas, minutos y segundos """
    segsal = 3600 * horas + 60 * minutos + segundos
    print "Son",segsal, "segundos"
 
def main():
    """ Lee tres tiempos expresados en hs, min y seg, y usa
        print_asegundos para mostrar en pantalla la conversión a
        segundos """
    for x in range(3):
        hs = raw_input("Cuantas horas?: ")
        min = raw_input("Cuantos minutos?: ")
        seg = raw_input("Cuantos segundos?: ")
        print_asegundos(hs, min, seg)
 
main()

5. Prueba: Probamos el programa con las ternas (1,0,0), (0,1,0) y (0,0,1):

>>> import tres_tiempos
Cuantas horas?: 1 
Cuantos minutos?: 0 
Cuantos segundos?: 0 
Son 3600 segundos 
Cuantas horas?: 0 
Cuantos minutos?: 1 
Cuantos segundos?: 0 
Son 60 segundos 
Cuantas horas?: 0 
Cuantos minutos?: 0 
Cuantos segundos?: 1 
Son 1 segundos
>>>

Ejercicio 3.5. Resolver el problema anterior usando ahora la función calc_asegundos.

Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano, Nicolás Paez. La copia y redistribución de esta página se permite bajo los términos de la licencia Creative Commons Atribución - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.