Está en la página 1de 5

ALGORITMOS Y PROGRAMACIN

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.

public class CalculoArea {


// este es el cdigo que comienza la ejecucin. Respetamos la secuencia de pasos indicada en
// el algoritmo, y los implementamos en el lenguaje JAVA
public static void main(String[] args) {
/* Primero declaramos las variables que vamos a utilizar (segn lo indicado en el algoritmo),
* ahora a cada una le asociamos un tipo, entonces tendremos 3 variables, que estn preparadas para
* guardar o mantener valores reales.
* No debemos olvidar que las variables DEBEN ser INICIALIZADAS!!
* La inicializacin se puede hacer en la misma declaracin, o antes de la utilizacin
* de la variable. En el caso que se realice una operacin de ingreso de datos sobre
* la variable esto se considera una inicializacin
*/
float altura, base, area;
//las siguientes son dos operaciones de ingreso de datos, que implementan las operaciones
// leer(base) y leer(altura) del algoritmo
System.out.println ("ingrese la medida de la base en cm: ");
base = TecladoIn.readLineInt();
System.out.println ("ingrese la medida de la altura en mm: ");
altura = TecladoIn.readLineInt();
// se realiza el cambio de medidas de mm a cm
altura = altura / 10;
// ahora ya se puede realizar el calculo del area
area = base * altura;
/* 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 area del rectangulo es: " + area);
}
}
Pruebe el programa cambiando el tipo de las variables y analice que sucede si todas las variables son declaradas de tipo
int, o si algunas son declaradas de tipo int. Recuerde que Java provee los siguientes tipos primitivos numricos:
byte, short, int, long, float, double
Recuerde que // se utiliza para escribir comentarios de una lnea, y /*...*/ se utiliza para escribir comentarios de mas
lneas.
Recuerde que son buenas prcticas de programacin las siguientes:
- utilizar nombres de variables significativos y autodocumentados
- comentar el cdigo
- escribir cada instruccin en una nueva lnea.

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)

Programa para el algoritmo original:


public class CalculoPerimetroFigura {
// este es el cdigo que comienza la ejecucin. Respetamos la secuencia de pasos indicada en
// el algoritmo, y los implementamos en el lenguaje JAVA
public static void main(String[] args) {
/* Primero declaramos las variables que vamos a utilizar (segn lo indicado en el algoritmo),
* ahora a cada una le asociamos un tipo, entonces tendremos 3 variables, que estn preparadas para
* guardar o mantener valores reales.
*/
float perimetroT, perimetroRect;
float alturaR, ladoT;
double perimetroFigura, longitudSc;
//las siguientes son dos operaciones de ingreso de datos, que implementan las operaciones
// leer(perimetroT) y leer(perimetroRect) del algoritmo
System.out.println ("ingrese la longitud del permetro de un
tringulo equilatero en cm: ");
perimetroT = TecladoIn.readLineInt();
System.out.println ("ingrese la longitud del permetro del
rectngulo en cm: ");
perimetroRect = TecladoIn.readLineInt();
// se realizan los clculos para averiguar el valor del lado del triangulo y la altura del rectangulo
// Recordar que un triangulo equilatero tiene sus 3 lados iguales
ladoT = perimetroT / 3;
alturaR = perimetroRect / 2 - ladoT;
// utilizando el valor del lado del triangulo obtenido se calcula la longitud de la semicircunferencia.
// Tomamos el valor del numero Pi como 3.14
longitudSc= 3.14 * ladoT;
// ahora ya se puede realizar el calculo del perimetor de la figura
perimetroFigura = longitudSc + ladoT * 2 + alturaR * 2;

}
}

/* 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

Programa para el algoritmo mejorado:


public class CalculoPerimetroMejorado {
public static void main(String[] args) {
float perimetroT, perimetroRect, ladoT;
double perimetroFigura, longitudSc;
System.out.println ("ingrese la longitud del permetro de un
tringulo equilatero en cm: ");
perimetroT = TecladoIn.readLineInt();
System.out.println ("ingrese la longitud del permetro del
rectngulo en cm: ");
perimetroRect = TecladoIn.readLineInt();
// se realizan los clculos para averiguar el valor del lado del triangulo que se necesita
// para calcular la longitud de la semicircunferencia
ladoT = perimetroT / 3;
longitudSc= 3.14 * ladoT;
// ahora ya se puede realizar el calculo del perimetro de la figura
perimetroFigura = longitudSc + perimetroRect;
/* 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 de main
}

Por qu se declaran algunas variables como float y otras como double?


Es posible utilizar menos variables? Cmo? Cal es la diferencia?

También podría gustarte