La primera etapa para resolver este problema consiste en una fase
de análisis (de las entradas, salidas y del
objetivo de nuestro programa) que da como resultado un algortimo.
En cualquier análisis
se trata habitualmente de encontrar respuestas a una serie de preguntas:
¿Qué información recibirá mi programa (qué entradas)?. 3 valores
reales que identificaremos como lado1, lado2 y lado3.
¿Qué información mostrará mi
programa (qué salidas)?. El programa
debe informar si los 3 valores representan o no los
lados de un triángulo, si es o no un
triángulo equilátero, si
es o no un isósceles
o si es o no un escaleno. Podemos representar
entonces las salidas como los valores de cuatro variables lógicas
(cuyo valor puede ser "cierto" -true-
o "falso" -false-
) identificadas como Triangulo,
Equilatero, Isosceles,Escaleno (observar que estos son identificadores
de variables, se omiten los acentos apropósito).
Ya tenemos el análisis de entradas/salidas:
- Entrada: lado1,
lado2, lado3: números reales
- Salida: Triangulo,Equilatero,Isosceles,Escaleno:
valores lógicos (booleanos)
|
Y podemos enunciar el objetivo de nuestro programa a partir del
análisis de entradas y salidas que acabamos de hacer:
- Objetivo: Determinar si lado1,
lado2 y lado3 representan o no las longitudes de
los lados de un triángulo (si lo representan,
la salida Triangulo toma
el valor "Cierto", si no es así toma
el valor "Falso") e informar si el triángulo
es isósceles
(la salida Isosceles toma
el valor "Cierto"), equilátero
(Equilatero es "Cierto")
o escaleno (Escaleno es "Cierto").
|
Aun falta por analizar los aspectos esenciales de la solución
a nuestro problema, lo que dará como resultado los pasos de nuestro
algoritmo, a saber:
- ¿Cómo determino que lado1,
lado2 y lado3 son longitues de los
lados de un triángulo? Para eso hay que leer la información que
nos dan en el problema: "la suma de
dos cualesquiera de sus lados debe ser mayor que el tercero" y encontrar
una forma de representarla en el algoritmo considerando las entradas y salidas (variables)
que hemos definido en el análisis (teniendo en mente que al final
lo vamos a plasmar en un programa en Pascal);
por
ejemplo,
así:
lado1
+
lado2 es
mayor que lado3 Y lado1 + lado3 es
mayor que lado2 Y lado2 +
lado3
es mayor
que lado1. Cuando esta condición sea cierta, entonces Triangulo (la
variable) tomará el valor "Cierto".
- ¿Como puedo determinar si el triángulo es equilátero?. De nuevo,
la fuente es el enunciado del problema: "un triángulo
con los tres lados iguales" y puede representarse así Triangulo
es Cierto Y lado1 = lado2 = lado3. (Dos observaciones: (1) hay
que considerar primero que los lados deben ser de un triángulo
para que pueda determinarse que es equilátero.(2) La fórmula
que se ha usado para comparar 3 variables no se corresponde exactamente
con la sintaxis de Pascal, en el programa habrá que utilizar
una expresión "ligeramente distinta" para representar la comparación
de 3 variables).
- ¿Como determinar si es isósceles?. "al
menos dos lados iguales",
por ejemplo así: Triangulo es CiertoY
lado1 = lado2 O lado2
= lado3 O lado3 = lado1
- ¿Cómo determinar si es escaleno?. "no
tiene dos lados iguales"
o lo que es lo mismo "los tres lados
son distintos", por ejemplo
así: Triangulo
es Cierto Y lado1 <> lado2 <> lado3 (Observación:
el operador "<>" es usado para representar la desigualdad en
Pascal).
Finalmente:
- Pasos del algoritmo:
- Leer los valores lado1, lado2, lado3
- Inicializar
las salidas Triangulo, Equilatero, Isosceles, Escaleno
a "Falso"
- SI (lado1
+ lado2) es mayor que lado3 Y (lado1
+ lado3) es mayor que lado2 Y (lado2
+ lado3)es mayor que lado1
ENTONCES Triangulo vale "Cierto"
- SI Triangulo
es "Cierto"
ENTONCES SI lado1 = lado2 = lado3
ENTONCES Equilatero
vale "Cierto"
- SI Triangulo es "Cierto"
ENTONCES SI (lado1
= lado2) O (lado2 = lado3) O (lado3
= lado1
)
ENTONCES Isosceles
vale "Cierto"
- SI Triangulo es "Cierto"
ENTONCES SI lado1 <> lado2 <> lado3
ENTONCES Escaleno
vale "Cierto"
- Escribir en pantalla:
"Es triangulo: " Triangulo
"Es equilátero: " Equilatero
"Es isósceles: " Isosceles
"Es escaleno: " Escaleno
|
(Nota: Este algoritmo no es único, seguramente estés pensando que se
podría haber hecho más estructurado, aprovechando la sentencia
SI_ENTONCES_SINO. Si lo consideras conveniente, trata de hacerlo
utilizando esta sentencia).
Ejercicio Individual: Una vez realizado el análisis y elaborado
el algoritmo, escribir el correspondiente programa en Pascal. |