Fundamentos de la programación Fundamentos de la programación 2011 2012 2011‐2012 3A G d I i í I f ái Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Facultad de Informática Universidad Complutense Expresión condicional Condición ? Exp1 Exp2 : Dos alternativas Dos alternativas. — Condición: Expresión lógica Condición : Expresión lógica Operadores (prioridad) Asociatividad — Exp1 y y Exp2 Exp2: Expresiones : Expresiones ++ ‐‐ (postfijos) ++ ‐‐ Llamadas a funciones Llamadas a funciones Moldes Izda. a dcha. ++ ‐‐ (prefijos) ! ++ ‐‐ ‐ (cambio de signo) Dcha. a izda. * / % Izda. a dcha. + ‐ + ‐ Izda. a dcha. < <= > >= Izda. a dcha. == != Izda. a dcha. && Izda. a dcha. || Izda a dcha Izda. a dcha. ?: Dcha. a izda. = += ‐ = += ‐= *= /= %= Dcha. a izda. Si Condición se evalúa a Si Condición se evalúa a true true,, el resultado es Exp1 el resultado es Exp1;; si Condición se evalúa a si Condición si se evalúa a false, se evalúa a false false, el resultado es Exp2 el resultado es Exp2.. int a = 5 a = 5, b = 3 , b = 3, c; c = (a + b == c = (a + b == 10 10) ? ) ? 2 2 : 3 : 3; Luis Hernández Yáñezz c = ( 8 c = ( 8 == 10 == 10) ? ) ? 2 2 : 3 : 3; c = false c = false c = 3 c = 3; ? 2 ? 2 : 3 : 3; Fundamentos de la programación: Más sobre tipos e instrucciones Página 2 Equivalencia con un if if‐ ‐else c = (a + b == 10 c = (a + b == 10) ? ) ? 2 2 : 3 : 3; Es equivalente a: if (a + b == if (a + b == 10 10) c = ) c = 2 2; else c = 3 c = 3; Se pueden concatenar: Luis Hernández Yáñezz cout << (nota == cout cout << (nota == 10 << (nota == 10 ? ? "MH" MH : (nota >= : (nota >= 9 ? : (nota >= 9 ? "SB" SB : : (nota >= (nota >= 7 7 ? "NT" ? "NT" : (nota >= 5 : (nota >= 5 ? "AP" ? "AP" : "SS" : "SS")))) )))) Esto es equivalente a la escala Esto es equivalente a la escala if if‐ ‐else else‐ ‐if de la siguiente sección. q g Fundamentos de la programación: Más sobre tipos e instrucciones Página 3 Escala if Escala if ... ... else if else if ... equivalente cout << (nota == cout cout << (nota == 10 << (nota == 10 ? ? "MH" MH : (nota >= : (nota >= 9 ? : (nota >= 9 ? "SB" SB : : (nota >= (nota >= 7 7 ? "NT" ? "NT" : (nota >= 5 : (nota >= 5 ? "AP" ? "AP" : "SS" : "SS")))) )))) Luis Hernández Yáñezz Si nota == 10 entonces MH Si nota == 10 si no, si nota >= 9 si no, si nota >= 9 entonces SB si no, si nota >= 7 si no, si nota >= 7 entonces NT si no, si nota >= 5 , nota >= 5 entonces AP si no, si si no SS double nota; cin >> nota; if (nota == (nota == 10 10) cout << ) cout << "MH" "MH"; ; else if (nota >= 9 (nota >= 9) cout << "SB" ) cout << "SB"; ; else if (nota >= 7 (nota >= 7) cout << "NT" ) cout << "NT"; ; else if (nota >= 5 (nota >= 5) cout << "AP" ) cout << "AP"; ; else cout << cout << "SS" "SS"; ; true "MH" == 10 false true "SB" >= 9 false true "NT" >= 7 > 7 false true >= 5 "AP" false Fundamentos de la programación: Más sobre tipos e instrucciones "SS" Página 4