Está en la página 1de 6

 

Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 

CASO DE ESTUDIO: PITÁGORAS 

1. ENUNCIADO: 
Elabore  una  solución  por  medio  de  un  algoritmo  que  resuelva  el  siguiente 
enunciado: 

1.  Pedir  los  dos  catetos  de  un  triángulo   rectángulo  y  entregar  como  resultado  la 
hipotenusa. 

  2.  Pedir  un  cateto  y  la  hipotenusa  de  un  triángulo  rectángulo   y   entregar  como 
resultado el cateto faltante (realice este proceso para ambos catetos). 

Contexto del caso: 
El  teorema  de  Pitágoras  establece  que   en  todo 
triángulo  rectángulo  el cuadrado  de  la  hipotenusa (el 
lado  de  mayor   longitud  del  triángulo  rectángulo)  es 
igual  a  la  suma  de  los cuadrados  de  los  catetos  (los 
dos  lados  menores  del  triángulo,  los  que conforman 
el ángulo recto). 

Si  un  triángulo  rectángulo  tiene catetos de longitudes 


 y  , y la medida de la hipotenusa es   entonces se establece que:  

De esta ecuación se deduce fácilmente 3 corolarios de aplicación práctica: 

     
El  teorema de Pitágoras  tiene  este  nombre  porque  su descubrimiento recae sobre 
la  escuela  pitagórica.  Anteriormente,  en  Mesopotamia  y  el  Antiguo  Egipto  se 
conocían  ternas  de  valores  que  se  corresponden  con  los  lados  de   un  triángulo 
rectángulo,  y  se  utilizaban  para  resolver  problemas  referentes  a  los  citados 
triángulos,  tal  como  se  indica  en  algunas  tablillas  y  papiros.  Sin  embargo,  no  ha 
perdurado  ningún  documento  que exponga  teóricamente su relación.  La pirámide 
 
Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 
de  Kefrén,  datada  en  el  siglo  XXVI  a.  C.,  fue  la  primera  gran  pirámide  que  se 
construyó  basándose  en  el  llamado  triángulo  sagrado  egipcio,  de  proporciones 
3­4­5. 

2. ESTRUCTURA DE DATOS:  
Una  de  las  propiedades  de  los  algoritmos  es  (1)  tener  una  o  más  ​
ENTRADAS​ , 
esto  significa  que  los  datos  son  proporcionados  como  insumo  para  llevar  a  cabo 
las  operaciones necesarias.  En  nuestro  caso es conveniente seleccionar los datos 
en (datos de entrada y datos de salida): 

De acuerdo al enunciado: 

1.  Pedir  los  dos  catetos  de  un  triángulo  rectángulo,  almacenarlos  en 
variables y entregar como resultado la hipotenusa. 

Se  definen  como  datos  de  entrada  los  valores  de  los  catetos  a  y  ​
b​
.  Dato  de 
salida, el valor de la hipotenusa: ​ C 
 
  2.  Pedir  un  cateto  y  la  hipotenusa  de  un  triángulo  rectángulo  y  entregar 
como resultado el cateto faltante (realice este proceso para ambos catetos). 

Caso  (1)  Se  definen  como  datos  de  entrada  los  valores  del  cateto  a  y  la 
C​
hipotenusa ​ b 
. Dato de salida, el valor del cateto: ​
 
Caso  (2)  Se  definen  como  datos  de  entrada  los  valores  del  cateto  b  y  la 
C​
hipotenusa ​ a 
. Dato de salida, el valor del cateto: ​
 
Procedimiento para definir variables: 

1) Tenga  en  cuenta  el  tipo  de  Dato  (numérico  o  alfanumérico)  a  la  hora  de 
necesitarlos para hacer cálculos. 
2) Defina  los  nombres  de  cada  una  de  las  variables  (tenga  en  cuenta  las 
normas para nombrar variables). 

Normas para nombres de variables 

● No espacios en blanco 
● No caracteres extraños (* + ! = ? ¡ ? ~ ^ { }) 
● Use nombres que se relacionen con el dato que almacena 
● Puede utilizar letras con números, o solo letras 
 
Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 
● Puede utilizar el guión de piso _ 
 
Dato de entrada  Tipo de dato  Nombre variable 
Valor del Cateto a  Numérico  cateto_a 
Valor del Cateto b  Numérico  cateto_b 
Valor de la Hipotenusa C  Numérico  hipotenusa_c 
 

3. REQUERIMIENTOS FUNCIONALES: 
Otra  propiedad  de  los algoritmos  es  (2) tener  una  o más  ​
SALIDAS​
, esto  significa 
que siempre debe devolver un resultado y este se debe entender como medio para 
apreciar los efectos de las acciones del algoritmo. 

El  algoritmo  debe ser DEFINIDO  sin ambigüedad, debe indicar la acción a realizar 


sin criterios de interpretación, esta es otra propiedad de los algoritmos (3).  

● RF1​: El programa  deberá  entregar como resultado el valor de la hipotenusa 


de un triángulo rectángulo dados los catetos. 

cout<<"\nEl valor de la hipotenusa C es:"<<hipotenusa_c; 

● RF2​
: El programa  deberá  calcular  cateto faltante  de un triángulo rectángulo 
dados un cateto y la hipotenusa. 

cout<<"\nEl valor del cateto a es:"<<cateto_a; 

cout<<"\nEl valor del cateto b es:"<<cateto_b; 

4. REQUERIMIENTOS INSTRUCCIONALES: 
A continuación  damos solución  al problema teniendo en cuenta las etapas básicas 
Input / Output​
 que comprenden, datos de entrada, proceso y datos de salida. 

Dos  de  las propiedades de los  algoritmos,  (4) El  algoritmo debe  ser ​FINITO​, debe 


componerse  de  un  número  específico  y  numerable  de  pasos,  el  cual  deberá 
finalizar  al completarlos. (5)  Además  el  tiempo  y  esfuerzo por cada paso realizado 
debe  ser  preciso.  Sólo  debe  usarse  lo  que  se  requiera  para  su  ejecución  con 
EFECTIVIDAD​ .  

Etapas I/O 
 
Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 
A. Entrada:  ​
En  esta  etapa  se  debe  tener  en  cuenta el  análisis  de  las estructuras 
de datos, en especial los datos de entrada. 

Para  capturar  los  datos  numéricos  (float  si  son  reales,  int  si  son  enteros), 
con su respectivo mensaje, utilizamos la siguiente instrucción: 

cout<<"\nDigite valor para el cateto  a:"; 
cin>>cateto_a; 
 
cout<<"\nDigite valor para el cateto b:"; 
cin>>cateto_b; 
 

B. Proceso:  ​ Después de obtener la información o datos de entrada, procedemos a 
realizar las operaciones que nos permiten entregar resultados. 

Después  de  capturar  los  datos  de  entrada  y  tenerlos  almacenados  en  sus 
respectivas variables  se procederá a las  operaciones  teniendo en cuenta el 
enunciado: 

hipotenusa_c = sqrt(cateto_a*cateto_a + cateto_b*cateto_b); 

Esta  es  una  operación de ​


Asignación​,  esto es,  a la  variable  ​
hipotenusa_c  ​
se  le 
está asignando el valor de la operación sqrt(cateto_a**2 + cateto_b**2), o sea:  

   

C. Salida: ​
Finalmente se imprime el resultado: 

cout<<"\nEl valor de la hipotenusa C es:"<<hipotenusa_c; 

Código fuente (​
pitagoras.cpp​

// calcular hipotenusa y catetos de acuerdo a pitágoras 
#include <cmath> 
#include <iostream> 
using namespace std; 
 
int main() 

float cateto_a, cateto_b, hipotenusa_c; 
 
cout<<"\nDigite valor para el cateto  a:"; 
cin>>cateto_a; 
 
Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 
cout<<"\nDigite valor para el cateto b:"; 
cin>>cateto_b; 
hipotenusa_c = sqrt(cateto_a*cateto_a + cateto_b*cateto_b); 
cout<<"\nEl valor de la hipotenusa C es:"<<hipotenusa_c; 

cout<<"\nDigite valor para el cateto  a:"; 
cin>>cateto_a; 
cout<<"\nDigite valor para la hipotenusa C:"; 
cin>>hipotenusa_c; 
cateto_b=sqrt(hipotenusa_c*hipotenusa_c + cateto_a*cateto_a); 
cout<<"\nEl valor del cateto b es:"<<cateto_b; 

cout<<"\nDigite valor para el cateto  b:"; 
cin>>cateto_b; 
cout<<"\nDigite valor para la hipotenusa C:"; 
cin>>hipotenusa_c; 
cateto_a=sqrt(hipotenusa_c*hipotenusa_c + cateto_b*cateto_b); 
cout<<"\nEl valor del cateto a es:"<<cateto_a; 

cout<<"\n\n"; 

return 0; 

Operaciones básicas: 
SUMA  RESTA  MULTIPLICACIÓN  DIVISIÓN 

A = 10;  A = 7;  A = 2;  A = 10; 


B = 15;  B = 3;  B = 8;  B = 3; 
Resultado=  A  +  Resultado=  A  –  Resultado= A​  B; 
 *​ Resultado= A​  B; 
 /​
B;  B;  //RESULTADO  = 
3.333333 

MODULO O RESIDUO DE UNA DIVISIÓN  EXPONENCIAL 

A = 10;  A = 2; 
B = 3;  Resultado= pow(A,3); 
 B; 
%​
Resultado= A ​ // 2 elevado a la 3 
//Resultado = 1  // Resultado = 8 

Después  de  codificar  las  actividades  y/o  procesos  en  la  herramienta 
computacional  seleccionada,  es  necesario  realizar  las  debidas  pruebas  que 
 
Facultad de Ingeniería 
Programa de Ingeniería de Sistemas 
Programación I 
CASO 1 
 
garanticen el  correcto funcionamiento del programa construido bajo un conjunto de 
situaciones posibles a las que se pueda enfrentar. 

Datos de prueba (Entrada y salida) 
cateto_a = 4  cateto_b = 5  hipotenusa_c = 6.40312423743 

cateto_b = 5  hipotenusa_c = 10  cateto_a = 8.66025403784 

cateto_a = 10  hipotenusa_c = 20  cateto_b = 17.3205080757 


 

cateto_a = 12  cateto_b = 9  hipotenusa_c = 15.0  

cateto_b = 2  hipotenusa_c = 6  cateto_a = 5.65685424949 

cateto_a = 9  hipotenusa_c = 14  cateto_b = 10.7238052948 


 
Tenga en cuenta que la hipotenusa es mayor que los catetos y que en ningún caso 
pueden ser cero(0). 

5. ENTREGABLES: 
1. Código fuente​  (pitagoras­T00000000.cpp) 
2. Análisis de las etapas​ I/O, ​
colocar comentarios utilizando el símbolo​
 // 

También podría gustarte