Algoritmos Programas
Algoritmos Programas
Recordemos:
A partir de un problema se disea un algoritmo para hallar una solucin a todos los problemas de esa clase.
A partir de un algoritmo, que es independiente del lenguaje de programacin, se genera un programa, que es
una implementacin del algoritmo en un lenguaje de programacin particular.
A partir de un algoritmo se pueden producir programas del mismo en varios lenguajes de programacin.
A partir de un programa fuente, que es el cdigo escrito en el lenguaje de programacin, y que es una entidad
esttica se llega a la ejecucin del programa.
Utilizamos "diagramas de llaves" como metodologa de diseo de algoritmos y el lenguaje de programacin
Java.
Vamos a aplicar todo el proceso desde el enunciado del problema hasta llegar al programa que lo resuelve, y su traza
para 2 ejercicios.
Ejercicio 1
Considere el siguiente problema:
Se desea calcular el area de un rectngulo de base y altura dados. La longitud de la base esta dada en cm y la longitud
de la altura est dada en mm. El area del rectngulo se requiere en cm.
Datos de entrada:
longitud de la base en cm
longitud de la altura en dm.
Frmula a utilizar:
area: base * altura
Algoritmo
Nivel 1
ingresar datos de entrada
transformar unidades de medida
calcular el area
mostrar resultados
Nivel 2
leer (base)
leer (altura)
altura altura / 10
area altura * base
escribir (area)
utilizamos las siguientes variables:
- base, para mantener el valor de la longitud de la base del rectngulo
- altura, para mantener el valor de la longitud de la altura del rectngulo. Inicialmente esta variable recibe un valor
ingresado por el usuario que se considera en mm, y luego la misma variable se utiliza para mantener la modificacin del
valor como resultado de la transformacin de unidades de mm a cm, al dividir el valor inicial por 10.
- area, para mantener el valor del resultado del clculo.
Siguiente paso: Implementar el algoritmo en Java
Todo cdigo de programa Java debe estar en una "clase", cuyo nombre ser utilizado para el archivo que lo contiene, es
decir tendremos un archivo "CalculoArea.Java". La palabra "public" significa ... , lo veremos mas adelante, por ahora
solo la utilizamos porque asi lo requiere el lenguaje.
Ejercicio 2
Considere la siguiente figura:
Se desea calcular el permetro de la figura
sabiendo que el tringulo es equilatero, y conociemdo el permetro
del tringulo y el permetro del rectngulo
Datos de entrada:
permetro del triangulo
permetro del rectngulo
Frmulas a aplicar:
perimetro = lado * 3
perimetro = base * 2 + altura * 2
longitud = 2 * Pi * radio
Relaciones:
- el lado del tringulo equilatero es igual a la base del rectngulo (o su lado menor)
- el lado del tringulo equilatero es igual al dimetro del semicrculo
Algoritmo
Nivel 1
ingresar datos de entrada
calcular valor lado tringulo
calcular valor altura rectngulo
calcular valor longitud semicircunferencia
calcular permetro figura
mostrar resultados
Nivel 2
leer (perimetroT)
leer (perimetroRect)
ladoT perimetroT / 3
alturaR (perimetroRect / 2 - ladoT)
longitudSc (3.14 * ladoT)
perimetroFigura (ladoT * 2 + alturaR * 2 + longitudSc)
escribir (perimetroFigura)
Si bien este algoritmo realiza el clculo deseado, se puede mejorar en cuanto al uso de variables y realizacin de
clculos innecesarios, trabajando con las ecuaciones antes de disear el algoritmo.
Podemos observar que el tamao de la base del rectngulo coincide con el tamao del lado del tringulo. Adems para
el permetro de la figura se requiere considerar 2 lados del tringulo y solo los dos lados mayores del rectngulo. O
dicho de otra forma: al permetro del rectngulo hay que restarle los 2 lados menores, y luego sumar 2 lados del
tringulo, lo que nos lleva nuevamente al permetro del rectngulo.
Matemticamente sera:
perimetroFigura = ladoT * 2 + alturaR * 2 + longitudSc
si reemplazamos alturaR, y resolvemos, obtenemos lo siguiente:
perimetroFigura = ladoT * 2 + (perimetroRect / 2 - ladoT) * 2 + longitudSc
si aplicamos propiedad distributiva y cancelamos
perimetroFigura = ladoT * 2 + perimetroRect - ladoT * 2 + longitudSc
perimetroFigura = perimetroRect + longitudSc
Luego podemos mejorar nuestro algoritmo:
ingresar datos de entrada
calcular valor lado tringulo
calcular valor longitud semicircunferencia
calcular permetro figura
mostrar resultados
leer (perimetroT)
leer (perimetroRect)
ladoT perimetroT / 3
longitudSc (3.14 * ladoT)
perimetroFigura (perimetroRect + longitudSc)
escribir (perimetroFigura)
}
}
/* ya tenemos el resultado, ahora lo vamos a mostrar por la pantalla. Los mensajes son cadenas de
* caracteres, y el simbolo "mas" se utiliza para concatener el mensaje de texto con el valor calculado
*/
System.out.println ("el perimetro de la figura es: " +
perimetroFigura);
//fin del main