Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Introducción
En esta práctica abordaremos el proceso de la construcción de un programa que comprende,
como hemos visto en teoría:
En la fase de prueba y depuración utilizaremos los bancos de prueba para comprobar el correcto
funcionamiento del programa.
En caso de ser necesario depuraremos el código realizando una traza del mismo. Para ello
emplearemos funciones de Spyder que vemos lo primero en la práctica.
1
Práctica 3: Construcción de programas
En el caso de Python, si queremos ejecutar sólo una línea nos podría bastar con marcar el código
que queremos probar y pulsar sobre el icono con el cuadro y el triángulo verde (que está al lado
del triángulo verde y sirve para ejecutar la celda actual).
En cualquier caso, se puede hacer una ejecución línea a línea del código mediante las opciones
de depuración (los iconos azules del menú).
depuración”
Los puntos de ruptura se pueden añadir en una línea pulsando sobre la barra a la izquierda del
código, justo a la derecha del número de línea, quedando marcada la línea con un punto rojo.
En la siguiente figura se ha colocado un punto de ruptura en la línea 16. Haciendo click sobre el
punto se puede quitar.
2
Práctica 3: Construcción de programas
Este programa divide dos números entre sí y a continuación invierte el resultado. Siendo el
numerador igual a 1 y el denominador igual a 4 esperaríamos que la división fuera 0.25 y el
inverso 4.
Ejecuta el código y verás que obtienes un error en el que se dice que se ha tratado de realizar
una división por 0.
Vamos a ejecutar el código paso a paso para entender cuál es el error en el código:
3
Práctica 3: Construcción de programas
Tarea 1.0 Crea un documento de texto de análisis y diseño y llámalo “P3_Tarea1.docx”. Crea
dos secciones: la primera de “Análisis del problema”, la segunda de “Diseño del algoritmo”.
En los siguientes pasos iremos rellenando este documento a medida que realizamos el análisis
y el diseño. Crea una subsección en la sección de “Análisis del problema” que se llame
“Descripción e información” y añade la descripción anterior.
Lo primero que haríamos sería buscar la equivalencia entre los metros y las distintas unidades
del sistema británico y las organizaríamos, por ejemplo, en forma de tabla.
Tarea 1.1 Busca las equivalencias necesarias y recógelas en una tabla como la siguiente. Luego
añade a la subsección de “Descripción e información” del documento de análisis y diseño la
información del problema anterior y la siguiente tabla rellenada.
1 metro =
pulgadas pies yardas millas leguas
4
Práctica 3: Construcción de programas
Entradas
La información que necesitamos que nos proporcione el usuario para poder resolver el problema
son los metros que desea transformar.
Entre paréntesis hemos indicado el posible nombre de la variable a utilizar en el código para
guardar esta información.
Salidas
La información que espera obtener el usuario tras utilizar el programa es la transformación de
la distancia en metros a las distintas unidades de longitud del sistema anglosajón.
De nuevo, entre paréntesis hemos indicado el posible nombre para las variables usadas para
guardar esta información.
Tarea 1.2 Incluye las distintas explicaciones anteriores en el documento de análisis y diseño
“P3_Tarea1.docx”, en dos subsecciones de la sección de “Análisis del problema” llamadas,
respectivamente, “Entradas” y “Salidas”.
metros (m) pulgadas (in) pies (ft) yardas (yd) millas (mi) leguas
(imperiales)
0.0254
0.3048
0.9144
1609.34
4828.032
Tarea 1.3 Completa la tabla con los resultados esperados para cada una de las entradas en
metros. Para ello usa una calculadora o cualquier otro medio, pero nunca el mismo programa
que queremos realizar. Añade esta tabla en la sección “Análisis del problema” del documento
de análisis y diseño “P3_Tarea 1.docx.”, dentro de una subsección nueva llamada “Banco de
pruebas”.
5
Práctica 3: Construcción de programas
Tarea 1.4 Completa los puntos suspensivos del algoritmo y añádelo al fichero
“P3_Tarea1.docx” dentro de la sección de “Diseño del algoritmo”.
Tarea 1.5 Copia el siguiente código sin ninguna modificación al área de trabajo de Spyder y
guárdalo como “P3_Tarea1.py”. Sustituye los puntos suspensivos por los valores adecuados.
"""
P3_Tarea1.py
Version 1.1
Autor: Ricardo Ferrís Castell / David Martín-Sacristán
Fecha: 05/10/2020
"""
def main():
print("Este programa pasa una cierta medida de distancia en")
print("metros a las distintas medidas de distancia del sistema")
print("anglosajón: pulgadas, pies, yardas, millas y leguas.")
if __name__ == '__main__':
main ()
Al ejecutar el código nos aparece el siguiente mensaje que indica un error de traducción, en
concreto de sintaxis. Es decir, se ha construido una frase de forma incorrecta.
File ".../P3_Tarea1.py", line 27
distancia_en_pulgadas = distancia_en_metros * METROS2PULGADAS
^
SyntaxError: invalid syntax
De hecho, si nos fijamos en la zona de edición, aparece en esa línea (la línea 27) un círculo rojo
con una ‘x’ que indica que en el análisis del código ha aparecido un 'invalid syntax’). Si
analizamos la línea está bien escrita, pero en la línea anterior (la del print) falta un paréntesis.
Una vez corregido el problema de escritura, volvemos a intentar ejecutar el programa. Ahora sí
que se ejecuta y queda a la espera de que el usuario introduzca valores.
En este punto debemos probar los valores del banco de pruebas y corroborar que el programa
funciona correctamente.
Al intentar introducir el primer valor, por ejemplo, 0.23, vuelve a producirse un error, en este
caso un error de ejecución:
File ".../P3_Tarea1.py", line 25, in main
distancia_en_metros = int(input("Valor en metros: ") )
ValueError: invalid literal for int() with base 10: '0.23'
7
Práctica 3: Construcción de programas
Este mensaje nos está diciendo que al introducir la cadena ‘0.23’ e intentar pasarla a entero,
no ha podido encontrar un entero que se corresponda con ese valor.
Tarea 1.7 Efectivamente no queremos introducir enteros, sino reales, así que tendremos que
cambiar la línea para poder introducir reales. Realiza la modificación.
Si vamos poniendo los distintos valores del banco de pruebas nos podremos dar cuenta de que
sistemáticamente el valor de las millas no coincide con el valor esperado. Eso significa que, muy
probablemente, la fórmula usada para las millas no es correcta. Si nos fijamos en el programa,
efectivamente no hemos utilizado la operación correcta. Hemos puesto:
millas = metros / METROS2MILLAS
Este tipo de errores puede que los veamos a simple vista o que para encontrarlos necesitemos
realizar una depuración línea a línea del código como hemos visto en la sección anterior.
Tarea 1.8 Corrige esta línea para que la operación que se realice sea la correcta
Tras el nuevo cambio ya vemos que los diferentes valores obtenidos son correctos y se está
cumpliendo el banco de pruebas, por lo que podremos estar bastante seguros de que nuestro
programa es correcto.
8
Práctica 3: Construcción de programas
4. Ejercicio autónomo
Una vez establecida la metodología de trabajo con el ejemplo del problema anterior, se plantea
a continuación un nuevo problema para el cual debéis seguir las diferentes fases de la realización
de un programa.
Al final debéis tener dos ficheros: un fichero de análisis y diseño “P3_Tarea2.docx”, donde
estarán documentadas las fases de análisis (incluyendo el banco de pruebas) y diseño del
algoritmo, y un programa en Python “P3_Tarea2.py”.
El problema es el siguiente:
Notas:
Tarea 2.2 Realiza un banco de pruebas con, al menos, tres casos posibles de demanda para
validar el correcto funcionamiento de tu programa. En un caso no debería haber ninguna clase
llena. En otro, alguna clase, pero ningún gimnasio lleno. Y en el último caso, debería haber
varias clases y algún gimnasio llenos.
Escribe este banco de pruebas en el fichero “P3_Tarea2.docx”.
9
Práctica 3: Construcción de programas
Tarea 2.3 Escribe la secuencia de pasos que al seguirla nos proporcione el resultado deseado.
Utiliza un diagrama de flujo.
Tarea 2.4 Traduce los pasos indicados en tu algoritmo a Python. Guarda este programa como
“P3_Tarea2.py”.
Tarea 2.5 Comprueba, no sólo que el programa se ejecuta, sino que a partir de él se obtiene
los valores esperados según el banco de pruebas propuesto en la Tarea 2.2.
P3_Apellido1_Apellido2.zip
Donde Apellido1 será el primer apellido del primer miembro de la pareja de prácticas, y
Apellido2 será el primer apellido del segundo miembro de la pareja.
P3_Apellido1.zip
Sube el zip generado a la tarea creada para la práctica en el Aula Virtual. Basta con que un
miembro de la pareja suba el zip a la tarea.
10