Guía de estudio 5 -- Funciones (cont)

  1. Cuál es el efecto de llamar a una función?
  2. Cuál es el efecto de la sentencia return?
  3. Para cada uno de los siguientes fragmentos de código, indique si la sentencia a = 5 se ejecuta i) ninguna vez, ii) alguna vez, iii) en cada llamada:
    a) def f1():              b) def f2():
         b=4                       b=4
         return b*2                return b*2
         a=5                       if b > 0:
                                      a=5
    
    c) def f3(b):             d) def f4(b):
         return b*2                if b > 0:
         if b > 0:                    a=5
            a=5                    return b*2
    
  4. Indique qué es el código muerto (dead code).
  5. Dado el siguiente enunciado, comparar las soluciones ofrecidas:
    Escriba una función que toma un string como argumento y devuelve un entero. El string es el nombre de la categoría de movilidad: "automóvil", "camión", "colectivo", y el entero es el código de la categoría: 1, 2, 3, respectivamente.
    	def f1(nombre):
    		if nombre == "automóvil":
    			return 1
    		if nombre == "camión":
    			return 2
    		if nombre == "colectivo":
    			return 3
    
    	def f2(nombre):
    		if nombre == "automóvil":
    			return 1
    		else:
    			if nombre == "camión":
    				return 2
    			else:
    				if nombre == "colectivo":
    					return 3
    
    	def f3(nombre):
    		if nombre == "automóvil":
    			return 1
    		if nombre == "camión":
    			return 2
    		return 3
    
    	def f4(nombre):
    		salida=0
    		if nombre == "automóvil":
    			salida=1
    		if nombre == "camión":
    			salida=2
    		if nombre == "colectivo":
    			salida=3
    		return salida
    	
    1. Compare f1() con f3(). Qué pasa cuando se llama fx('motocicleta')? Proponga una o más soluciones al problema.
    2. Compare f1() con f2(). Cuál le resulta más fácil de entender?
    3. Compare f1() con f4(). f4() tiene un único punto de retorno. Cuál le resulta más claro?
    4. Escriba f5(), una versión anidada de f4(), al estilo de f2().
  6. Explique el significado de la frase "cada camino posible" en una estructura condicional. Dé un ejemplo.
  7. Qué es el "andamiaje" (scaffolding)?
  8. El desarrollo incremental es una técnica con los siguientes pasos:
    1. definir nombre, argumentos y valor de retorno de la función
    2. paso a paso incorporar código, y vigilar como funciona con prints.
    3. ejecutar la función con diversas pruebas para ver si todo sigue bien.
    4. eliminar el andamiaje innecesario
    5. si no se terminó de incorporar toda la funcionalidad, volver al segundo paso.
    Proponga la construcción de una función mediante esta técnica. Indique cada paso que realiza. [Ayuda: si no se le ocurre ningún enunciado, use alguno de la guía de ejercicios.]
  9. Describa el concepto de "composición" en las expresiones de un programa en Python.
  10. Defina "expresión booleana".
  11. Defina "operador lógico".
  12. Busque en la documentación de su sistema si existen los valores "verdadero" (true) y "falso" (false) en su sistema Python.
  13. Qué valores son interpretados como "verdadero"?
  14. Qué valores son interpretados como "falso"?
  15. Si Python evalúa una expresión booleana que es verdadera, cuál es el valor de la expresión? Dé un ejemplo.
  16. Si Python evalúa una expresión booleana que es falsa, cuál es el valor de la expresión? Dé un ejemplo.
  17. Escriba una expresión booleana que sea cierta si:
    1. a es igual a 4
    2. a es diferente de 5
    3. a es verdadero y b también
    4. a, b, c son todas falsas
    5. a y b son ambas verdaderas o ambas falsas
    6. a es un año bisiesto
    7. x es positivo
    8. y es entero positivo
    9. a, b, c son los lados de un triángulo
    10. h y b son los lados de un rectángulo que no es un cuadrado
  18. Defina qué es una función booleana.
  19. Describa lo que entiende por "código guardián".
  20. Hasta dónde hay que controlar el trabajo de una función que estoy escribiendo? Defina "correcto" y "robusto" cuando se refieren al código de un programa.
  21. Explique lo que entiende por "variable temporal".
  22. Qué es None en Python?
  23. Indique cuáles son los operadores de comparación en Python.

Si tiene preguntas no deje de leer de qué maneras contactarme.

Copyright (C) 2004 César Ballardini

Está permitida la copia textual y distribución de este artículo en su totalidad por cualquier medio, siempre y cuando esta nota se preserve.

Actualizado: $Id: guia-estudio-05.html,v 1.1 2004/09/09 21:28:58 cballard Exp $

Valid HTML 4.0!


Hosted by www.Geocities.ws

1