4decisionescsharp

Anuncio
SELECCIÓN
Estatutos de Control C#
IF Condición THEN Estatuto1 ELSE Estatuto2
Estatutos de Decisión (Selección)
true
Estatuto1
Statement
Condición
Antes de ver esta presentación:
Lee el Capítulo correspondiente a “Decisiones”, en tu libro de texto.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
...
false
Estatuto2
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Para representar estas condiciones:
Tipo de dato boolean
  C# tiene el tipo de dato bool, primitivo, que
puede tomar los valores verdadero (true) y
falso (false).
  true y false son palabras reservadas.
Expresiones Boleanas
  La combinación de condiciones las llamamos
expresiones boleanas. Estas son
expresiones que al evaluarse dan como
resultado un valor de verdadero (true) o falso
(false).
  Es posible declarar variables de tipo boleano
de la siguiente forma:
  Una expresión boleana se forma utilizando
operadores relacionales o lógicos.
bool nombre_var;
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Representación Gráfica de las
decisiones:
false
Estatuto condicional if
Eres menor de
edad en EUA
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
El estatuto if
La condición es una
expresión booleana (true/false)
if (condición)
estatuto;
else
estatuto;
true
edad >=
21 ?
Eres mayor de
edad en EUA
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
El estatuto if:
if (condición)
{
bloque de estatutos
}
else
{
bloque de estatutos
Si se requiere poner
más de un estatuto, los
estatutos se deben
encerrar entre llaves
El else es opcional
}
* La parte del else es opcional
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplos:
Ejemplos:
if (num < 0)
Console.WriteLine(“El número es negativo”);
num<0 ?
false
num<0 ?
núm es negativo
El número es
negativo
num =
Math.Abs(num)
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplos:
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplo con if anidados:
if (num<0)
Console.WriteLine(“El número es negativo”);
else
Console.WriteLine(“El número es positivo o cero”);
El número es
negativo
false
true
true
true
if (num < 0)
{
Console.WriteLine(“núm es negativo, calcular su valor absoluto”);
num = Math.Abs(num);
}
num<0 ?
•  Cuando adentro de una condición if tenemos otro if, se
dice que tenemos if’s anidados, o condiciones anidadas.
false
El número es
positivo o cero
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
if (num<0)
Console.WriteLine(“El número es negativo”);
else if (num = = 0)
Console.WriteLine( “El número es cero”);
else
Console.WriteLine ( “El número es positivo”);
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Operadores Relacionales
Operadores Relacionales
Operador
Significado
==
!=
<
>
<=
>=
Igual
Ejemplos de expresiones que utilizan operadores relacionales:
ExpresiónA
ExpresiónB
Diferente
Menor que
Mayor que
Menor o igual que
Mayor o igual que
temperatura
B*B - 4.0*A*C
uno + dos
dos * tres
numero
inicial
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Suponiendo que x,y fueron declaradas e inicializadas:
int x, y;
x = 4; y = 6;
EXPRESION
VALOR
x < y
true
x + 2 < y
false
x != y
true
x + 3 >= y
true
y == x
false
y == x+2
true
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
>
>=
<
<=
==
!=
humedad
0.0
0
cuatro
35
‘J’
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplos de expresiones que utilizan operadores
relacionales:
comparación !!
Operador
Operadores Lógicos
Operador
&&
||
!
Significado
And
Or
Not
Sus operandos deben ser expresiones boleanas
y = x+2
asignación !!
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Operadores Lógicos
AND
OR
Operadores lógicos
NOT
C#
X
T
T
F
F
Y X && Y
T
T
F
F
T
F
F
F
X
T
T
F
F
Y__X | | Y
T
T
F
T
T
T
F
F
X
T
F
!X
F
T
Expresión Lógica
!p
NOT p
p && q
p || q
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplos:
  Expresión para saber si un número A es igual a un
número B
A==B
  Expresión para saber si un número A es par
(A % 2) = = 0
  Expresión para saber si 3 números son iguales
( A = = B) && ( B = = C)
(A == B == C)  No !
  ¿Cómo sería la expresión para saber si 2 números
tienen el mismo signo?
_______________________
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Significado
es false si p es true
! p es true si p es false
p AND q
p && q es true si
ambos p y q son true.
En caso contrario es false.
p OR q
p || q es true si cualquiera
p o q o ambos son true.
En caso contrario es false
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplos:
  Expresión para saber si un número “A” está en el rango
[0, 100] (incluyendo los valores 0 y 100)
(A >= 0) && (A <= 100)
  Expresión para saber si un número “A” está fuera del
rango (0, 100)
(A < 0) | | (A > 100)
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
¿Cuál es el valor de cada expresión?
100
califa
-13
numero
edad = 21;
puntos = 500.0;
esMayor = (edad >= 21);
// esMayor es ?
sabeIngles = (puntos > 550.0); // sabeIngles es ?
27
hora
(califa >= 60)
?
(numero > 0)
?
(hora >= 0 && hora < 24)
?
(hora == 12 || hora == 0)
?
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
int edad;
boolean esMayor, sabeIngles;
double puntos;
EXPRESION
esMayor && sabeIngles
esMayor || sabeIngles
!esMayor
!sabeIngles
esMayor && (puntos > 550)
VALOR
?
?
?
?
?
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
¿Cuál es el valor de la expresión?
Caso de programación
  A un vendedor se le da una comisión sobre su
int
edad, peso;
edad = 25;
peso = 70;
EXPRESION
VALOR
!(edad < 10)
?
!(peso > 60)
?
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
venta, pero además, se le otorga un bono de 200
pesos de recompensa si su venta fue mayor a 15
mil pesos.
  Para hacer esta aplicación desarrolla un método
de tipo double llamado CalculaComision, que
recibe como parámetros las ventas y el
porcentaje de comisión.
  Considera las ventas como double y el
porcentaje como entero.
Fundamentos de programación C#. Román Mtz.
¿Puedo hacer que mi programa tome
decisiones?
Evaluación de “Corto circuito”
  Evaluación de “Corto circuito”: significa que las expresiones
lógicas son evaluadas de izquierda a derecha, y la evaluación
se detiene tan pronto como se pueda determinar el valor final
de la expresión completa. Esto es:
  Cuando se evalúa el operador &&, si el primer operando es
falso, el segundo nunca se evalúa.
  Cuando se evalúa el operador ||, si el primer operando es
verdadero, el segundo nunca se evalúa.
  Se ahorra tiempo en la evaluación de expresiones complejas
usando los operadores || y &&
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de programación C#. Román Mtz.
Ejemplo de “Corto circuito”
Ejemplo de “Corto circuito”
int edad, altura;
int edad, altura;
edad = 25;
altura = 70;
edad = 25;
altura = 70;
EXPRESIÓN
(edad > 50) && (altura > 60)
false
La evaluación se puede detener en la primera condición porque
el resultado del && es verdadero solo si ambos lados son
verdaderos; con esto se puede determinar que toda la expresión
es falsa.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
EXPRESIÓN
(altura > 60) || (edad > 40)
true
La evaluación se puede detener en la primera condición porque
el resultado del || es verdadero si uno de los 2 lados es
verdadero; con esto se puede afirmar que toda la expresión es
verdadera.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Otro ejemplo:
Otro ejemplo:
int edad, peso;
int edad, altura;
edad = 25;
peso = 145;
edad = 25;
altura = 70;
EXPRESIÓN
(peso < 180) && (edad >= 20)
true
Debe ser evaluada toda la expresión ya que el valor final de esta
expresión no se conoce hasta evaluar la segunda parte. Por
qué? Porque el resultado de && es true si y solo si ambas
condiciones son true.
EXPRESIÓN
!(altura > 60)||(edad > 50)
true
false
¿Necesita ser evaluada esta parte?
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Escribe la expresión según corresponda:
  impuesto mayor a 25% e ingreso menor a $20000
  temperatura menor o igual que 75 o humedad
menor que 70%
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Solución
(impuesto > .25) && (ingreso < 20000)
(temperatura <= 75) || (humedad < .70)
(edad > 21) && (edad < 60)
  edad mayor de 21 y edad menor que 60
  edad es 21 o 22
(edad == 21) || (edad == 22)
(tipo ==
‘a’ || tipo == ‘b’ || tipo == ‘c’)
  tipo de cliente es a, b, c
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Jerarquía de operadores
1. paréntesis
2. !, ++, - -, + (positivo), - (negativo)
3. *, /, %
4. +, 5. < , < =, >, >=
6. ==, !=
7. &&
8. ||
9. =, +=, -=, *=, /=, %=
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Ejemplo que requiere reglas de precedencia
int num;
double x;
num != 0 && x < 1 / num
/
<
!=
&&
mayor prioridad
siguiente prioridad
después
finalmente
¿Qué pasa si num tiene valor 0?
Run Time Error (División entre cero) !!
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
El mismo ejemplo:
int num;
double x;
(num != 0) && (x < 1/ num)
Condiciones múltiples
se evalua primero y si num == 0, su valor es false
Ya que el operador es &&, la expresión completa será
false; debido al “corto circuito” la parte derecha de la
expresión no será evaluada.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Cuál es más eficiente ?
Discusión en el aula.
Tema: Decisiones
if (dia == 1)
if (dia == 1)
Console.WriteLine(“Lunes”);
Console.WriteLine(“Lunes”);
else if (dia == 2)
if (dia == 2)
Console.WriteLine(“Martes”);
Console.WriteLine(“Martes”);
else if (dia == 3)
if (dia== 3)
Console.WriteLine(“Miercoles”);
Console.WriteLine(“Miercoles”);
else if (dia == 4)
if (dia == 4)
Console.WriteLine(“Jueves”);
Console.WriteLine(“Jueves”);
else if (dia == 5)
if (dia == 5)
Console.WriteLine(“Viernes”);
Console.WriteLine(“Viernes”);
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Estatuto switch
Formato:
switch (expresión)
{
case const1:
estatuto1;
break;
...
case constN:
estatuto N;
break;
default:
estatuto M;
}
Estatuto switch
Cuando tenemos una condición que implicaría muchos if’s
anidados, es mejor utilizar una instrucción llamada switch.
Veamos un ejemplo:
  Si queremos preguntar si el número de día es 1, 2, 3, 4, 5, 6,
7, para desplegar el nombre del día según corresponda: lunes,
martes, miércoles... Utilzando if’s la solución sería:
if (dia = = 1)
Console.WriteLine(“lunes”);
else if (dia = = 2)
Console.WriteLine(“martes”);
else if (dia = = 3)
Console.WriteLine(“miercoles”);
else if (dia = = 4)
y así sucesivamente.....
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Estatuto switch:
La expresión debe ser
de tipo int, char o string
switch (dia) {
break;
break;
case 3: Console.WriteLine(“Miercoles”); break;
case 4: Console.WriteLine(“Jueves”); break;
case 5: Console.WriteLine(“Viernes”); break;
case 6: Console.WriteLine(“Sabado”); break;
case 7: Console.WriteLine(“Domingo”); break;
case 1: Console.WriteLine(“Lunes”);
case 2: Console.WriteLine(“Martes”);
El default es opcional
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
}
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Control de la ejecución al utilizar Switch:
  El control de la ejecución salta al estatuto que sigue
después del case, que coincide con el valor de la
Expresión entera.
  El control de la ejecución continúa hacia todos los
estatutos siguientes, incluyéndose el default, a
menos que se redireccione por medio de un break.
  Si ningún case coincide con el valor, el control de la
ejecución pasa al default, si es que lo hay; de lo
contrario el control pasa al siguiente estatuto
después del switch.
  Cuidado: Olvidar el break puede causar errores de
lógica !!
Estatuto Break
  El break puede ser utilizado dentro del switch o
cualquier estructura de control.
  El break ocasiona una salida inmediata del switch,
while, do, o for en el cual aparece.
  Si el break está dentro de estructuras anidadas, el
control de la ejecución sale solamente de la
estructura que se encuentra más adentro.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Operador Condicional (Ternario)
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
?
Sintaxis
Operador Condicional (Ternario)
?
// encontrar el menor de 2 números:
Expresion1 ? Expresion2 : Expresion3
Cómo funciona:
Si Expresion1 es true, entonces el valor de la expresión es
Expression2. De lo contrario, el valor de la expresión será
Expresion3.
double min;
double x;
double y;
.
.
.
min = (x < y) ? x : y;
Ejemplo . . .
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Resumen de Sintaxis:
  El primer tipo de if es el siguiente:
if (condition)
statement;
o bien
if (condition) {
statement1;
statement2;
}
Resumen de Sintaxis: if
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Resumen de Sintaxis:
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Resumen de Sintaxis:
  Debes ser cuidadoso al usar el if:
  El segundo tipo de if es el siguiente:
if (condition)
statementA;
else
statementB;
o bien
if (condition) {
statement1;
statement2:
}
else {
statement3;
statement4;
}
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
  La
condición debe estar dentro de paréntesis.
del if, si se tienen varios estatutos, estos
deben estar entre { }
  Todos los enunciados dentro del if deben ser
seguidos por un punto y coma.
  El switch tiene una gramática complicada y debe
ser usado cuidadosamente.
  Dentro
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Tips de programación:
  Para checar la condición no olvides ponerla entre paréntesis
como ésta:
if (a > b)...
  No olvides que la manera de checar la igualdad no es = sino = =
if (a = b)... no compila correctamente,
mientras que
if (a = = b)... si está correcto.
  Ahora bien, si lo que quieres es preguntar si una variable está
dentro de un rango [18,25]:
if (a >= 18 && <= 25)... es incorrecto.
if ((a >=18) && (a <= 25))... esto sí es
correcto.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Caso para programar
  Realizar una aplicación en Windows que
sirva para capturar 3 valores, y que
verifique si corresponden a los lados de
un triángulo. En caso de que si, el
programa indicará qué tipo de triángulo
es: EQUILATERO, ISOCELES o
ESCALENO.
  Condición para que 3 valores
correpondan a los lados de un triángulo:
la suma de las longitudes de 2 lados
cualesquiera debe ser mayor a la longitud del
tercer lado. Las longitudes deben de ser
mayores a cero.
Fundamentos de Programación. TC1014.
Ing. Jakeline Marcos Abed
Descargar