Enunciado:
Diseña un programa que muestre una ventana de diálogo con un menú similar a este:1-Triángulo
2-Cuadrado
3-Rectángulo
4-Círculo
La ventana dispondrá de un campo de texto para introducir el número de la opción elegida (utilizar la función Dialogo.preguntar). El programa, a continuación, solicitará los datos necesarios para poder calcular el perímetro y el área de la figura que haya elegido el usuario y los mostrará como solución.
Utilizar variables tipo float para los datos y las soluciones.
Nota: para calcular el área de un triángulo a partir de sus tres lados, se recomienda utilizar la fórmula de Herón:
donde s es la mitad del perímetro del triángulo, es decir:
Solución:
Este programa se puede MEJORAR y SIMPLIFICAR. Vamos a hacer 2 mejoras.
1º) Por ejemplo, instrucciones del tipo:
texto = Dialogo.preguntar("Cuadrado","Introduzca el lado");
a = float(texto);
se pueden condensar en una única instrucción, con lo que hacemos el código más ligero (más fácil de leer) y nos ahorramos la variable texto de tipo String. Esto es mejor y más breve:
a = float(Dialogo.preguntar("Cuadrado","Introduzca el lado"));
Es decir, el texto que devuelve la función Dialogo.preguntar se le pasa directamente a la función float para que lo transforme en un número decimal y se almacene en la variable a. En realidad no necesitamos almacenar el texto si lo "traducimos" a número en un solo paso.
La única precaución que hay que tener son los paréntesis (véanse los paréntesis azules de la función float).
2º) Otra mejora que podemos hacer es introducir en las instrucciones println las soluciones directamente, sin almacenarlas en las variables area y perimetro. Esto nos ahora las dos variables y hace más BREVE el código. Por ejemplo, en lugar de escribir
perimetro = 2*a + 2*b;
area = a*b;
println("Perímetro: " + perimetro);
println("Área: " + area);
se podría escribir simplemente:
println("Perímetro: " + (2*a+2*b));
println("Área: " + a*b);
Hay que tener cuidado. Algunas fórmulas hay que encerrarlas entre paréntesis (como se ve en el resaltado de color rojo) porque el "+" cuando se mezclan textos y números puede significar CONCATENACIÓN (es decir, "pegar" textos y números). Por ejemplo:
println("Perímetro: " + 2*a+2*b);
Estaría mal porque imprimiría el texto "Perímetro: " después el número 2*a y después el número 2*b, cuando lo que queremos es que imprima el texto "Perímetro: " y después el número (2*a+2*b). Para evitar problemas, lo mejor es ENCERRAR SIEMPRE LAS FÓRMULAS EN PARÉNTESIS para asegurarnos que Processing resuelve primero todas las operaciones matemáticas que hay entre los paréntesis y después la labor de "pegado" de textos y números.
Veamos ahora, el código mejorado:
Mucho más breve y claro.
Lo malo de este programa es que no nos permite realizar varios cálculos en la misma sesión. Hay que arrancar el programa cada vez que deseamos hacer un cálculo. Esto se podría resolver colocando un bucle que se repita hasta que la opción elegida sea "Salir".
En el siguiente programa, hacemos las modificaciones pertinentes. El código puede verse a continuación, las modificaciones y añadidos aparecer marcados en rojo:
No hay comentarios:
Publicar un comentario