Upload
andreyfg
View
215
Download
0
Embed Size (px)
DESCRIPTION
des
Citation preview
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Estatutos de Control C# Estatutos de Decisin (Seleccin)
Antes de ver esta presentacin: Lee el Captulo correspondiente a Decisiones, en tu libro de texto.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
SELECCIN
IF Condicin THEN Estatuto1 ELSE Estatuto2
Estatuto1 Statement
Estatuto2
Condicin . . .
true
false
Fundamentos de Programacin. 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.
Es posible declarar variables de tipo boleano de la siguiente forma:
bool nombre_var;
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Expresiones Boleanas La combinacin de condiciones las llamamos
expresiones boleanas. Estas son expresiones que al evaluarse dan como resultado un valor de verdadero (true) o falso (false).
Una expresin boleana se forma utilizando operadores relacionales o lgicos.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Estatuto condicional if
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Representacin Grfica de las decisiones:
edad >= 21 ?
Eres mayor de edad en EUA
Eres menor de edad en EUA
true false
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
El estatuto if
if (condicin) estatuto; else estatuto;
* La parte del else es opcional
La condicin es una expresin booleana (true/false)
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
El estatuto if:
if (condicin) {
bloque de estatutos } else {
bloque de estatutos }
El else es opcional
Si se requiere poner ms de un estatuto, los estatutos se deben encerrar entre llaves
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplos: if (num < 0)
Console.WriteLine(El nmero es negativo);
num
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Operadores Relacionales
Operador Significado = = Igual != Diferente < Menor que > Mayor que = Mayor o igual que
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplos de expresiones que utilizan operadores relacionales:
ExpresinA Operador ExpresinB
temperatura > humedad B*B - 4.0*A*C >= 0.0 uno + dos < 0 dos * tres = y true y == x false y == x+2 true
Ejemplos de expresiones que utilizan operadores relacionales:
comparacin !! y = x+2
asignacin !! Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Operadores Lgicos
Operador Significado && And || Or ! Not
Sus operandos deben ser expresiones boleanas
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Operadores Lgicos AND OR NOT
X Y X && Y X Y__X | | Y X !X T T T T T T T F T F F T F T F T F T F F T T F F F F F F
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Operadores lgicos C# Expresin Lgica Significado
! p NOT p es false si p es true ! p es true si p es false
p && q p AND q p && q es true si ambos p y q son true. En caso contrario es false.
p || q p OR q p || q es true si cualquiera p o q o ambos son true.
En caso contrario es false
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplos:
Expresin para saber si un nmero A es igual a un nmero B A = = B
Expresin para saber si un nmero A es par (A % 2) = = 0
Expresin para saber si 3 nmeros son iguales ( A = = B) && ( B = = C) (A == B == C) No !
Cmo sera la expresin para saber si 2 nmeros tienen el mismo signo? _______________________
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplos:
Expresin para saber si un nmero A est en el rango [0, 100] (incluyendo los valores 0 y 100) (A >= 0) && (A 100)
100 -13 27 califa numero hora
(califa >= 60) ?
(numero > 0) ?
(hora >= 0 && hora < 24) ?
(hora == 12 || hora == 0) ?
Cul es el valor de cada expresin?
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
int edad; boolean esMayor, sabeIngles; double puntos;
edad = 21; puntos = 500.0; esMayor = (edad >= 21); // esMayor es ? sabeIngles = (puntos > 550.0); // sabeIngles es ?
EXPRESION VALOR esMayor && sabeIngles ? esMayor || sabeIngles ? !esMayor ? !sabeIngles ? esMayor && (puntos > 550) ?
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Cul es el valor de la expresin?
int edad, peso; edad = 25; peso = 70;
EXPRESION VALOR
!(edad < 10) ?
!(peso > 60) ?
Caso de programacin
A un vendedor se le da una comisin sobre su venta, pero adems, se le otorga un bono de 200 pesos de recompensa si su venta fue mayor a 15 mil pesos.
Para hacer esta aplicacin desarrolla un mtodo de tipo double llamado CalculaComision, que recibe como parmetros las ventas y el porcentaje de comisin.
Considera las ventas como double y el porcentaje como entero.
Fundamentos de programacin C#. Romn Mtz.
Puedo hacer que mi programa tome decisiones?
Fundamentos de programacin C#. Romn Mtz.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Evaluacin de Corto circuito Evaluacin de Corto circuito: significa que las expresiones
lgicas son evaluadas de izquierda a derecha, y la evaluacin se detiene tan pronto como se pueda determinar el valor final de la expresin completa. Esto es:
Cuando se evala el operador &&, si el primer operando es falso, el segundo nunca se evala.
Cuando se evala el operador ||, si el primer operando es verdadero, el segundo nunca se evala.
Se ahorra tiempo en la evaluacin de expresiones complejas usando los operadores || y &&
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplo de Corto circuito int edad, altura; edad = 25; altura = 70;
EXPRESIN
(edad > 50) && (altura > 60) false
La evaluacin se puede detener en la primera condicin porque el resultado del && es verdadero solo si ambos lados son verdaderos; con esto se puede determinar que toda la expresin es falsa.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
int edad, altura; edad = 25; altura = 70;
EXPRESIN (altura > 60) || (edad > 40) true
La evaluacin se puede detener en la primera condicin porque el resultado del || es verdadero si uno de los 2 lados es verdadero; con esto se puede afirmar que toda la expresin es verdadera.
Ejemplo de Corto circuito
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
int edad, peso; edad = 25; peso = 145;
EXPRESIN
(peso < 180) && (edad >= 20) true
Debe ser evaluada toda la expresin ya que el valor final de esta
expresin no se conoce hasta evaluar la segunda parte. Por qu? Porque el resultado de && es true si y solo si ambas condiciones son true.
Otro ejemplo:
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
int edad, altura; edad = 25; altura = 70;
EXPRESIN !(altura > 60)||(edad > 50) true
false Necesita ser evaluada esta parte?
Otro ejemplo:
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Escribe la expresin segn corresponda:
impuesto mayor a 25% e ingreso menor a $20000
temperatura menor o igual que 75 o humedad menor que 70%
edad mayor de 21 y edad menor que 60
edad es 21 o 22
tipo de cliente es a, b, c
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Solucin (impuesto > .25) && (ingreso < 20000)
(temperatura 21) && (edad < 60)
(edad == 21) || (edad == 22)
(tipo == a || tipo == b || tipo == c)
Jerarqua de operadores
1. parntesis 2. !, ++, - -, + (positivo), - (negativo) 3. *, /, % 4. +, - 5. < , < =, >, >= 6. ==, != 7. && 8. || 9. =, +=, -=, *=, /=, %=
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Ejemplo que requiere reglas de precedencia
int num; double x;
num != 0 && x < 1 / num
/ mayor prioridad < siguiente prioridad != despus && finalmente
Qu pasa si num tiene valor 0? Run Time Error (Divisin entre cero) !!
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
El mismo ejemplo: int num; double x;
(num != 0) && (x < 1/ num)
se evalua primero y si num == 0, su valor es false
Ya que el operador es &&, la expresin completa ser false; debido al corto circuito la parte derecha de la expresin no ser evaluada.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Condiciones mltiples
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
if (dia == 1)
Console.WriteLine(Lunes);
if (dia == 2)
Console.WriteLine(Martes);
if (dia== 3)
Console.WriteLine(Miercoles);
if (dia == 4)
Console.WriteLine(Jueves);
if (dia == 5)
Console.WriteLine(Viernes);
if (dia == 1)
Console.WriteLine(Lunes);
else if (dia == 2)
Console.WriteLine(Martes);
else if (dia == 3)
Console.WriteLine(Miercoles);
else if (dia == 4)
Console.WriteLine(Jueves);
else if (dia == 5)
Console.WriteLine(Viernes);
Cul es ms eficiente ?
Discusin en el aula. Tema: Decisiones
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Estatuto switch Cuando tenemos una condicin que implicara muchos ifs
anidados, es mejor utilizar una instruccin llamada switch. Veamos un ejemplo: Si queremos preguntar si el nmero de da es 1, 2, 3, 4, 5, 6,
7, para desplegar el nombre del da segn corresponda: lunes, martes, mircoles... Utilzando ifs la solucin sera: 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 Programacin. TC1014. Ing. Jakeline Marcos Abed
Estatuto switch
Formato: switch (expresin) { case const1: estatuto1;
break; ...
case constN: estatuto N;
break; default:
estatuto M; }
El default es opcional
La expresin debe ser de tipo int, char o string
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Estatuto switch: switch (dia) {
case 1: Console.WriteLine(Lunes); break; case 2: Console.WriteLine(Martes); 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;
}
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Control de la ejecucin al utilizar Switch: El control de la ejecucin salta al estatuto que sigue
despus del case, que coincide con el valor de la Expresin entera.
El control de la ejecucin contina hacia todos los estatutos siguientes, incluyndose el default, a menos que se redireccione por medio de un break.
Si ningn case coincide con el valor, el control de la ejecucin pasa al default, si es que lo hay; de lo contrario el control pasa al siguiente estatuto despus del switch.
Cuidado: Olvidar el break puede causar errores de lgica !!
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
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 ejecucin sale solamente de la estructura que se encuentra ms adentro.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Sintaxis
Expresion1 ? Expresion2 : Expresion3
Cmo funciona: Si Expresion1 es true, entonces el valor de la expresin es Expression2. De lo contrario, el valor de la expresin ser Expresion3.
Ejemplo . . .
Operador Condicional (Ternario) ?
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Operador Condicional (Ternario) ?
// encontrar el menor de 2 nmeros:
double min; double x; double y; . . . min = (x < y) ? x : y;
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Resumen de Sintaxis: if
Fundamentos de Programacin. 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;
}
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Resumen de Sintaxis:
El segundo tipo de if es el siguiente: if (condition)
statementA; else
statementB; o bien
if (condition) { statement1; statement2:
} else {
statement3; statement4;
} Fundamentos de Programacin. TC1014.
Ing. Jakeline Marcos Abed
Resumen de Sintaxis: Debes ser cuidadoso al usar el if:
La condicin debe estar dentro de parntesis. Dentro 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 gramtica complicada y debe
ser usado cuidadosamente.
Fundamentos de Programacin. TC1014. Ing. Jakeline Marcos Abed
Tips de programacin: Para checar la condicin no olvides ponerla entre parntesis
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 && =18) && (a