Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

21
Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica

Transcript of Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

Page 1: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

Estructuras de control condicional

Curso Propedéutico

Maestría en Ingeniería Electrónica

Page 2: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

Operadores relacionales

Operador Significado

== igualdad

!= Diferente

> Mayor que

< Menor que

>= Mayor o igual

<= Menor o igual

Los operadores relacionales generan un valor 1 si es verdadera y 0 si es falsa

Page 3: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 4: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 5: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 6: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 7: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 8: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 9: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 10: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 11: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 12: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 13: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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

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. Escriba una versión con if-else y otra con el operador ?:.

Escriba un programa para resolver una ecuación cuadrática. Considere el caso en que las soluciones sean complejas.

Page 14: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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

falso falso falso

falso verdadero falso

verdadero falso falso

verdadero verdadero verdadero

expresión1

expresión2

expresión1 || expresión2

falso falso falso

falso verdadero verdadero

verdadero falso verdadero

verdadero verdadero verdadero

expresión1

expresión2

expresión1 ^ expresión2

falso falso falso

falso verdadero verdadero

verdadero falso verdadero

verdadero verdadero falso

expresión !expresión

falso verdadero

verdadero falso

Prioridad de evaluación

!

&&

||

Page 15: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 16: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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

O sea

if(condición1)

if(condición2)

if(condición3)

sentencias;

...

Page 17: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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”

#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; }

Page 18: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

Comparación de 3 números#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;

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

cout << b << endl;

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

cout << c << endl;

return 0; }

Page 19: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

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 20: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

ejemplo de switch#include <iostream.h>int main(){ int dia; cout << "teclee el número del día: "; cin >> a; switch(a){

case 0:cout << “Lunes” << endl;break;

case 1:cout << “Martes” << endl;break;

case 2:cout << “Miércoles” << endl;break;

case 3:cout << “Jueves” << endl;break;

case 4:cout << “Viernes” << endl;break;

case 5:cout << “Sabado” << endl;break;

case 6:cout << “Domingo” << endl;break;

default cout << “día no válido” << endl;

return 0; }

Page 21: Estructuras de control condicional Curso Propedéutico Maestría en Ingeniería Electrónica.

Tarea #4Escriba un programa determine el mayor y el menor de dos números. Luego determine el cociente y el residuo del mayor entre el menor y despliegue los resultados.

Modifique el programa de comparación de tres números para que despliegue los tres números leídos en orden ascendente. Si se teclea 3 6 1 deberá desplegar 1 3 6. Haga las dos versiones con if anidados y con condiciones compuestas.

Modifique el programa de los días de la semana para desplegar “entre semana” si el día es de 0 a 4, “sabado” si es 5 y “domingo” si es 6.