Estructuras de control condicional Programación básica.

54
Estructuras de control condicional Programación básica

Transcript of Estructuras de control condicional Programación básica.

Page 1: Estructuras de control condicional Programación básica.

Estructuras de control condicional

Programación básica

Page 2: Estructuras de control condicional Programación básica.

Operadores relacionales

Operador Significado

== igualdad

!= Diferente

> Mayor que

< Menor que

>= Mayor o igual

<= Menor o igual

Los operadores relacionales permiten construir expresiones booleanas es decir, expresiones cuyo valor es 1 o 0.

Los operadores relacionales permiten comparar valores o expresiones aritméticas.

En C el valor 1 se interpreta como verdadero y el 0 como falso.

Page 3: Estructuras de control condicional Programación básica.

Ejemplos1 > 2 = 0 falso

3 < 5 = 1 verdadero

(7 – 4) == 3 = 1 verdadero

17 >= (5 + 12) = 1 verdadero

i = 3; j = 7;

i * j != 21 = 0 falso

float a=0.1;

(3*a – 0.3) == 0 = 0 falso (OJO con los reales)

3 > 1 > 0 = 1 verdadero

Asignar a una variable la mayor de otras dos:

a = 17; b = 15;

c = a*(a>=b) + b*(b>=a); c = 17 a>=b = 1 y b>=a = 0

Page 4: Estructuras de control condicional Programación básica.

Tarea

Encuentre el valor de las siguientes expresiones relacionales

2 != 7

3 > 2

-1 <= -2

(5 – 7) > (3 – 4)

(3*2 + 5*4) == (8*5/2 + 4*4 – 10)

Encuentre el valor asignado a la variable x, suponga a = 3, b = 4, c = 12

x = (2*a > c – b)*c + (c == 2*b + 2*a – 2)*a;

x = (a <= b)*(a – b) + (c > 2*a + 5)*(c – 2*a);

Page 5: Estructuras de control condicional Programación básica.

Uso de expresiones para tomar decisiones

Se pueden utilizar expresiones relacionales para seleccionar entre dos o más expresiones a evaluar. Por ejemplo:

(3*a + b)*(a<0) + (5*a – b)*(a>=0)

Será igual a 3*a+ b si a es menor que cero, e igual a 5*a – b si a es mayor o igual a cero. Por ejemplo se a = –3 y b= 4, la expresión se evaluara como:

(3*(–3)+4)*(–3<0)+(5*(–3)–4)*(–3>=0)=(–9+4)*(1)+(–15–4)*(0)= –5

Si a = 2 y b = 4, el valor será

(3*(2)+4)*(2<0)+(5*(2)–4)*(2>=0)=(6+4)*(0)+(10–4)*(1)=6

Page 6: Estructuras de control condicional Programación básica.

Ejemplo de conversión con expresiones relacionales

El siguiente programa convierte una temperatura leída desde el teclado de la escala Celsius a la Farenheit y viceversa.

Se le solicita al usuario el tipo de conversión que desea realizar:

main(){ float tempOriginal,tempConvertida; int opcion; cout << "Teclee temperatura: "; cin >> tempOriginal; cout << "Tipo de conversión (1 - C a F, 2 - F a C): "; cin >> opcion; //solicita tipo de conversión tempConvertida = (opcion==1)*(9*tempOriginal/5+32)+ (opcion==2)*(5.0/9*(tempOriginal-32)); cout << "Valor convertido: " << tempConvertida << endl;}

Page 7: Estructuras de control condicional Programación básica.

ActividadModifique el programa de conversión de temperaturas para incluir conversiones de centígrados a Kelvin y Kelvin a centígrados.

Page 8: Estructuras de control condicional Programación básica.

Sentencia ifLa sentencia if permite decidir ejecutar o no una instrucción o un bloque de instrucciones.

Sintaxis

if (condición)

Instrucción o bloque;

Un bloque es una secuencia de instrucciones englobadas entre llaves (“{}”).

La condición esta formada por una expresión booleana.

condición

sentencias

verdadero

falso

Page 9: Estructuras de control condicional Programación básica.

Ejemplo de if simplePrueba si un número leído desde el teclado es par.

#include <iostream.h>int main(){ int numero; cout << "teclee un número: "; cin >> numero; if(numero % 2 == 0) cout << "número par"; return 0; }

Page 10: Estructuras de control condicional Programación básica.

Ejemplo 2 de if simple

#include <iostream.h>int main(){ int a,b,n; cout << "teclee un número: "; cin >> a; cout << "teclee un número: "; cin >> b; if(a % b == 0){ n = a / b; cout << a << " es " << n << " veces " << b; } return 0; }

Si el número a es divisible por el número b, se despliega el número de veces que a es mayor que b.

Page 11: Estructuras de control condicional Programación básica.

Sentencia if - elseLa sentencia if – else permite decidir entre ejecutar una instrucción (o un bloque de instrucciones) y otra instrucción (o un bloque de instrucciones)

Sintaxis

if (condición)

Instrucción o bloque;

else

Instrucción o bloque;

condición

sentencias

verdadero

sentencias

falso

Page 12: Estructuras de control condicional Programación básica.

Ejemplo de if - else simplePrueba si un número leído desde el teclado es par.

#include <iostream.h>int main(){ int numero; cout << "teclee un número: "; cin >> numero; if(numero % 2 == 0) cout << "número par"; else cout << "número impar"; return 0; }

Page 13: Estructuras de control condicional Programación básica.

TareaEscriba un programa que lea tres números reales y decida si forman un triángulo. Suponga que los números se leen de mayor a menor.

Escriba un programa que lea tres números reales representando los lados de un triángulo y decida si el triángulo es rectángulo o no. Suponga que los números se leen de mayor a menor.

Entregar impreso.

Page 14: Estructuras de control condicional Programación básica.

Intersección de dos rectasPrograma para determinar si dos rectas se interceptan

Suponga que las rectas se representan por la ecuación de la forma

y = m x + b

Donde m es la pendiente y b es la ordenada al origen.

La única forma en que las dos rectas no se interceptan en un punto es cuando son paralelas, es decir, cuando las dos tienen la misma pendiente.

Podemos expresar el algoritmo de la siguiente forma

si pendiente1 diferente de pendiente2

calcular la intersección

imprimir resultado

sino

informar que no se interceptan

Page 15: Estructuras de control condicional Programación básica.

Programa#include <iostream.h>int main(){ float m1,m2,b1,b2,x,y; cout << "teclee la pendiente y ordenada al origen 1: "; cin >> m1 >> b1; cout << "teclee la pendiente y ordenada al origen 2: "; cin >> m2 >> b2; if(m1 != m2){ x = (b2 - b1)/(m1 - m2); y = m1*x+b1; cout << "Las rectas se interceptan en: " << x << ", " << y << endl; } else cout << "Las rectas no se interceptan..."; return 0; }

Page 16: Estructuras de control condicional Programación básica.

Sistema de ecuaciones 2x2Se desea resolver un sistema de ecuaciones de 2x2 de la forma

a x + b y = c

d x + e y = f

El sistema puede resolverse con las fórmulas

x = (c e – b f) / (a e – b d)

y = (a g – c e) / (a e – b d)

El sistema tiene solución si el denominador de estas fracciones es diferente de cero. El algoritmo es:

si (a f – b e ) != 0

calcular solución

mostrar resultado

sino

informar que no hay solución

Page 17: Estructuras de control condicional Programación básica.

Programa sis2x2.cpp

#include <iostream.h>int main(){ float a,b,c,d,e,f,x,y; cout << "teclee los coeficientes a, b, c, d, e, f: "; cin >> a >> b >> c >> d >> e >> f; if( (a*f - b*e) != 0){ x = (c*e - b*f)/(a*e - b*d); y = (a*f - c*d)/(a*e - b*d); cout << " x = " << x << "\ny = " << y << endl; } else cout << "El sistema no tiene solución\n"; return 0; }

Page 18: Estructuras de control condicional Programación básica.

Tarea

Un punto está sobre una recta si al avaluar la ecuación y – mx – b se obtiene un valor positivo y está bajo la recta si se obtiene un valor negarivo. Escriba un programa que lea los valores de la pendiente m y la ordenada al origen b, y las coordenadas (x, y) de un punto e imprima si el punto esta sobre o bajo la recta.

y = mx + b

(x,y)

y – mx + b < 0

y – mx + b > 0

Page 19: Estructuras de control condicional Programación básica.

Operadores lógicosExisten 4 operadores lógicos en C: and = &&, or = ||, not = !, xor = ^. Los operadores lógicos tienen una prioridad más baja que los operadores relacionales.

expresión1

expresión2

expresión1 && expresión2

0 0 0

0 1 0

1 0 0

1 1 1

expresión1

expresión2

expresión1 || expresión2

0 0 0

0 1 1

1 0 1

1 1 1

expresión1

expresión2

expresión1 ^ expresión2

0 0 0

0 1 1

1 0 1

1 1 0

expresión ! expresión

0 1

1 0

Prioridad de evaluación

!

&&

||

Page 20: Estructuras de control condicional Programación básica.

ejemplos de operadores lógicos

x > 5 || x == 3 verdadero para x = 3, 6, 7, ...

! (x == 7) && x % 2 != 0 verdadero para x = 1, 3, 5, 9, 11, ...

x <= -1 || x > 5 || x ==2 verdadero para x = …, -2, -1, 2, 6, 7, 8, ...

En el siguiente fragmento se despliegan solo los múltiplos de 7 o cuadrados perfectos

if(num % 7 == 0 || sqrt(num)-floor(sqrt(num))==0)

Page 21: Estructuras de control condicional Programación básica.

Discusión

Escriba sentencias que sean verdaderas para:

x = 1, 2, 4, 8

x = 7, 14, 21, …, 49

x = 1, 2, 3, 6, 7, 8, 9

x = …, - 5, -3, -1, 0, 2, 4, 6, …

Page 22: Estructuras de control condicional Programación básica.

AnidamientoUna sentencia if puede tener en su parte verdadera o falsa otra sentencia if.

O sea

if(condición1)

if(condición2)

if(condición3)

sentencias;

else

if(condición2)

if(condición3)

...

Page 23: Estructuras de control condicional Programación básica.

Ejemplo de anidamientoSe desea un programa para imprimir un letrero dependiendo de la siguiente tabla:

condición letrero

cal < 6 “Reprobado”

6 <= cal < 7 “Suficiente”

7 <= cal < 8 “Bien”

8 <= cal < 9 “Muy bien”

9 <= cal < 10 “Excelente”

Page 24: Estructuras de control condicional Programación básica.

Diagrama de flujo

cal < 6

cal < 7

cal < 8

cal < 9

“Reprobado”

“Suficiente”

“Bien”

“Muy bien”“Excelente”

verdadero

verdadero

verdadero

verdadero

falso

falso

falso

falso

Page 25: Estructuras de control condicional Programación básica.

#include <iostream.h>int main(){ float cal; cout << "teclee la calificación: "; cin >> cal; if(cal < 6) cout << “Reprobado\n";

else if(cal < 7) cout << “Suficiente\n";

else if(cal < 8) cout << “Bien\n";

else if(cal < 9) cout << “Muy bien\n";

else

cout << “Excelente\n";

return 0; }

#include <iostream.h>int main(){ float cal; cout << "teclee la calificación: "; cin >> cal; if(cal < 6) cout << “Reprobado\n";

if(cal >= 6 && cal < 7) cout << “Suficiente\n";

if(cal >=7 $$ cal < 8) cout << “Bien\n";

if(cal >=8 && cal < 9) cout << “Muy bien\n";

else

cout << “Excelente\n";

return 0; }

Page 26: Estructuras de control condicional Programación básica.

Comparación de 3 númerosSe desea comparar 3 números leídos desde el teclado, imprimiendo el mayor de ellos.

Se puede resolver comparando el primero con el segundo, luego si el primero es mayor, se compara el primero con el tercero.

Si el primero no es mayor que el segundo, entonces se compara el segundo con el tercero.

a>b

b>c a>c

“a mayor”“c mayor”“b mayor” “c mayor”

verdadero

verdadero falso falso verdadero

falso

Page 27: Estructuras de control condicional Programación básica.

Solución con condiciones compuestas

a>=b && a>=c

“a mayor”

Utilizando condiciones compuestas, primero comparamos el primero con los dos restantes, si es mayor que los otros dos, imprimimos el primero, sino, comparamos el segundo con los otros dos, etc.

Note que debe usar >= para que se imprime forzosamente un resultado.

b>=a && b>=c

“b mayor”

c>=a && c>=b

“c mayor”

verdaderofalso

falso verdadero

verdadero

Page 28: Estructuras de control condicional Programación básica.

#include <iostream.h>int main(){ float a, b, c; cout << "teclee 3 números: "; cin >> a >> b >> c; if(a > b)

if(a > c)

cout << a << endl;

else cout << c << endl;

else

if(b > c)

cout << b << endl;

else cout << c << endl;

return 0; }

#include <iostream.h>int main(){ float a, b, c; cout << "teclee 3 números: "; cin >> a >> b >> c; if(a >= b && a >= c)

cout << a << endl; else

if(b >= a && b >= c)

cout << b << endl; else

if(c >= a && c >= b)

cout << c << endl;

return 0; }

AnidamientoCondiciones compuestas

Page 29: Estructuras de control condicional Programación básica.

Tarea

Escriba una sentencia que sea verdadera para

x = ...,-2,-1,0,3,6,9,12,15,18,...

Rescriba las siguientes sentencias de if anidados sin usar ningún anidamiento:

if ( a < c ) if ( a < b )if ( b < c ) if ( a >= b ) x = y; x = z;else else x = z; x = y;

else else x = z; x = z;

Page 30: Estructuras de control condicional Programación básica.

Tarea casera1. Escriba un programa en C que lea tres números y los imprima en orden. Ayuda: existen 6 casos: a>b>c, a>c>b, b>a>c, b>c>a, c>a>b y c>b>a.

Haga una versión con condiciones compuestas y otra con sentencias if anidadas.

Parta del diseño del algoritmo, dibuje el diagrama de flujo y escriba el programa en C. Recuerde que el formateo del código es importante.

2. Escriba un programa que para resolver una ecuación cuadrática. Considere todos los casos posibles: 2 soluciones diferentes, una solución doble y raíces complejas conjugadas.

Page 31: Estructuras de control condicional Programación básica.

Sentencia switchLa sentencia switch permite elegir entre varias alternativas.

Sintaxis

switch (<expresión>){

case <constante>:[case <constante>:]<sentencias>;break; ...

[default:<sentencias>;break;]

}caso a

caso b

Acción delcaso a

break;

Acción delcaso b

break;

caso zAcción del

caso zbreak;

Acción poromisión

Page 32: Estructuras de control condicional Programación básica.

Proceso Dia_de_la_semanaEscribir "Teclee número del día: ";Leer dia;Segun dia Hacer

1:Escribir "domingo";

2:Escribir "lunes";

3:Escribir "martes";

4:Escribir "miércoles";

5:Escribir "jueves";

6:Escribir "viernes";

7:Escribir "sabado";

De Otro Modo:Escribir "día no válido";

FinSegunFinProceso

Page 33: Estructuras de control condicional Programación básica.
Page 34: Estructuras de control condicional Programación básica.

ejemplo de switch

#include <iostream.h>int main(){ int dia; cout << "teclee el número del día: "; cin >> dia; switch(dia){ case 1:cout << "Lunes" << endl;break; case 2:cout << "Martes" << endl;break; case 3:cout << "Miércoles" << endl;break; case 4:cout << "Jueves" << endl;break; case 5:cout << "Viernes" << endl;break; case 6:cout << "Sabado" << endl;break; case 7:cout << "Domingo" << endl;break; default: cout << "día no válido" << endl; } system("PAUSE");}

Programa para leer un número de día (1 – lunés,… 7 – domingo)

SIEMPRE PONGA break AL FINAL DE CADA OPCIÓN EN LA SENTENCIA SWITCH.

Page 35: Estructuras de control condicional Programación básica.

Ejemplo de menú/* Ejemplo-switch-1 */#include <iostream.h>main(){ int a; cout << "\t\tMenu"; cout <<"\n-----------------------------------"; cout <<"\n1 - Microsoft Word"; cout <<"\n2 - Yahoo messenger"; cout <<"\n3 - AutoCAD"; cout <<"\n4 - Java Games"; cout <<"\n-----------------------------------"; cout <<"\nIngrese numero de su preferencia: "; cin >> a; // leer entrada switch (a){ case 1: // si entrada es 1 cout <<"\nPersonal Computer Software\n";break; case 2: // si entrada es 2 cout <<"\nWeb based Software\n";break; case 3: // si entrada es 3 cout <<"\nScientific Software\n";break; case 4: // si entrada es 4 cout <<"\nEmbedded Software\n";break; default: cout <<"\nEntrada incorrecta\n"; } system("PAUSE");}

Se elige entre varias opciones de un menú

1 - Microsoft Word";2 - Yahoo messenger";3 - AutoCAD";4 - Java Games";

Cada opción despliega un mensaje diferente

Page 36: Estructuras de control condicional Programación básica.

Ejemplo de empleados

Calcular el sueldo mensual de un empleado que trabaja por horas, el pago de cada hora trabajada depende de su categoría:

categoria     pago x hora A               26.90 B               24.30 C               21.50

Además si el empleado trabaja mas de 150 horas mensuales tiene una bonificación del 5 % de sueldo.

Page 37: Estructuras de control condicional Programación básica.

Se ingresara el nombre del empleado, seguido de su categoría y al final el número de horas trabajadas.

Algoritmo

1. Leer datos

2. Determinar sueldo con base en su categoría

3. Determinar monto de bonificación

4. Imprimir nombre, categoría y sueldo total

Algoritmo

Variables (entrada)

nombre – cadena de caracterescategoria – carácterhoras - entero

Variables (salida)

pagoHora – real (float)bono – real (float)sueldo – real (float)

Page 38: Estructuras de control condicional Programación básica.

Proceso PagoPorHora1 Escribir "Nombre del trabajador: ";2 Leer nombre;3 Escribir "Categoría: ";4 Leer categoria;5 Escribir "Horas trabajadas: ";6 Leer horas;7 Segun categoria Hacer8 1:9 pagoHora <- 26.90;10 2:11 pagoHora <- 24.30;12 3:13 pagoHora <- 21.5;14 FinSegun15 sueldo <- horas*pagoHora;16 Si horas>150 Entonces17 bonificacion <- sueldo*1.05;18 Sino19 bonificacion <- 0;20 FinSi21 sueldo <- sueldo+bonificacion;22 Escribir "Sueldo total = ",sueldo;23 FinProceso

Page 39: Estructuras de control condicional Programación básica.
Page 40: Estructuras de control condicional Programación básica.

El tipo char y cadena (char[])

La categoría se almacenará en una variable de tipo char (carácter)

El nombre del empleado se almacenará en una cadena de caracteres.

En C hay que especificar la longitud máxima de la cadena.

La declaración sigue la siguiente sintaxis:

char variable[longitud máxima];

Ejemplo: char nombre[30];

La lectura solo lee la cadena hasta el primer espacio o hasta la longitud máxima, si teclea “juan perez”, solo se almacenará “juan”.

Page 41: Estructuras de control condicional Programación básica.

char nombre[7]; //nombre del empleado char categoria; //categoría A, B, C int horas; //horas trabajadas float pagoHora, sueldo, bonificacion; cout << "nombre del empleado: "; cin >> nombre; cout << "categoría: "; cin >> categoria; cout << "horas trabajadas: "; cin >> horas;

Declaración y lectura

Page 42: Estructuras de control condicional Programación básica.

Cálculo del sueldoSe determinará mediante una sentencia switch el pago por hora en función de la categoría.

//determinación del pago por horas switch(categoria){ case 'a':case 'A':pagoHora = 26.90;break; case 'b':case 'B':pagoHora = 24.30;break; case 'c':case 'C':pagoHora = 21.50;break; } //calculo del sueldo sin bonificación sueldo = horas*pagoHora; //cálculo de bonificación if(horas>150) bonificacion = 0.05*sueldo; else bonificacion = 0.0; //sueldo total sueldo = sueldo+bonificacion;

Page 43: Estructuras de control condicional Programación básica.

Salida de resultados

//Salida en forma tabular cout << "\nnombre\tCateg\tHoras\tPago/Hr\tBoni.\tsueldo\n" <<nombre<<"\t"<<categoria<<"\t"<<horas<<"\t"<<pagoHora<< "\t"<<bonificacion<<"\t"<<sueldo<<endl;

La salida se presentará en forma tabular

Page 44: Estructuras de control condicional Programación básica.

ActividadEscriba un algoritmo y el diagrama de flujo y haga el programa en C correspondiente, que lea dos números reales y un símbolo de operación y realice la operación aritmética seleccionada (+, -, *, /, ^(potencia, función pow), %(residuo flotante, función fmod)) entre los dos números tecleados.

Utilice la sentencia switch. Verifique que el segundo número no sea cero para las operaciones de % y / y envíe el mensaje adecuado en estos casos. Si el operador no es alguno de los considerados, envíe el mensaje adecuado al usuario.

Ejemplo:

Teclear obtener3.5 7.8 * 27.37.4 16.3 / 0.453998.44 3.1 % 2.247.6 2.3 ^ 106.138

Page 45: Estructuras de control condicional Programación básica.

Ejemplo

1 Proceso sin_titulo2 Escribir "Ingrese numero de mes"3 Leer mes4 Segun mes Hacer5 1,3,5,7,8,10,12:6 Escribir "el mes ",mes," tiene 31 dias“7 4,6,9,11:8 Escribir "el mes ",mes," tiene 30 dias"9 2:10 Escribir "el mes ",mes," tene 28 dias, 29 si es bisiesto"11 De Otro Modo:12 Escribir "no existe es emes"13 FinSegun14 FinProceso

El siguiente algoritmo despliega el número de días que tiene cada mes del año.

Page 46: Estructuras de control condicional Programación básica.
Page 47: Estructuras de control condicional Programación básica.

Programa en C#include <iostream>using namespace std;main(){ int op; cout << "Ingrese el numero de mes (1-12):"; cin >> op; switch(op){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: cout <<"El mes "<<op<<" tiene 31 días\n";break; case 4:case 6:case 9:case 11: cout <<"El mes "<<op<<" tiene 31 dias\n";break; case 2: cout <<"El mes "<<op<<" tiene 28 días, 29 si es bisieto\n";break; defaul: cout<<"NO EXISTE EL MES "<<op<<endl; } system("pause");}

Page 48: Estructuras de control condicional Programación básica.

Actividad

Escribir una versión del anterior programa utilizando sentencias if-else.

Haga el diagrama de flujo y el programa en pseudo código.

Page 49: Estructuras de control condicional Programación básica.

Sentencia ?:La sentencia if puede abreviarse mediante el operador ?:. La sintaxis es:

condición ? operando1 : operando2;

Esta muy relacionado a la sentencia if/else.

El operador regresa el operando1 si la condición es verdadera y regresa el operando2 si es falsa.

Ejemplo:

cout << ( cal >= 60 ? “Aprobado” : “Reprobado”);

Esta sentencia imprimirá “Aprobado” se cal es mayor o igual a 60 e imprimirá “Reprobado” si es menor que 60. Note que los paréntesis son necesarios dado que el operador ?: tiene la menor precedencia.

También es válido:

cal >= 60 ? cout << “Aprobado” : cout << “Reprobado”;

Page 50: Estructuras de control condicional Programación básica.

EjemplosSentencia if sentencia ?:

if(a>5) x = 6;else x = 7; a>5 ? x=6: x=7;

if(x>8 && x<12) (x>8 && x<12)?a=2*b+c:a=3*b+c;

a = 2*b+c;

else

a = 3*b+c;

if(a>b) (a>b)?(b>c?x=5*a+c:x=6*a+b;):x=8*a+4*b;

if(b>c)

x = 5*a+c;

else

x = 6*a+b;

else

x = 8*a+4*b;

Page 51: Estructuras de control condicional Programación básica.

TareaTraduzca las sentencias if a sentencias con el operador ?:.

if(x>8) y = 23;else z = -5;

if(x>=8 && x!=12)

z = sqrt(6*x);

else

if(x>0)

z = sin(3*x);

else

z = sin(5*x);

Page 52: Estructuras de control condicional Programación básica.

else colgado

if (x < y) if (x < z) cout << "Hola" ;else cout << "Adiós" ;

if (x < y) if (x < z) cout << "Hola" ; else cout << "Adiós" ;

Page 53: Estructuras de control condicional Programación básica.

Solución

if (x < y){ if (x < z) cout << “Hola" ;}else cout << "Adiós" ;

Page 54: Estructuras de control condicional Programación básica.

ActividadHacer los siguientes programas con el operador ?:

1. Escriba un programa que lea un número y determine si es par o impar. Utilice el operador ?:.

2. Escriba un programa que lea tres números reales representando los lados de un triángulo y decida si el triángulo es rectángulo o no. Suponga que los números se leen de menor a mayor.