4 decision esc sharp

13
Fundamentos de Programación. TC1014. Ing. Jakeline Marcos Abed Estatutos de Control C# Estatutos de Decisión (Selecció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 SELECCIÓN IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Estatuto2 Condición . . . true false 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. Es posible declarar variables de tipo boleano de la siguiente forma: bool nombre_var; Fundamentos de Programación. TC1014. Ing. Jakeline Marcos Abed 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). Una expresión boleana se forma utilizando operadores relacionales o lógicos.

Upload: andreyfg

Post on 06-Nov-2015

215 views

Category:

Documents


0 download

DESCRIPTION

des

TRANSCRIPT

  • 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