Algoritmos y Programación 1 Universidad Nacional de Tres de Febrero Guía de Ejercicios 2 – Lógica 1. Declare una variable llamada “esMenor” que pueda contener valores de verdad. ¿Cuáles son los literales para esos valores? 2. ¿Cuáles de los siguientes operadores no se aplican a las variables de tipo boolean? • && • ! • - • == • = 3. Indique el valor de verdad de las siguientes expresiones lógicas considerando las declaraciones dadas a continuación: int puntos = 10; int intentos = 5; boolean esValido = (puntos > 0) && (puntos < 15); boolean terminoPartido = (intentos >= 5) || (puntos > 9); • esValido && (intentos < 10) && ! terminoPartido • !( (intentos < puntos) || (intentos == 4) || (! terminoPartido) ) • ( (! terminoPartido) || ((puntos < 3) && (intentos > 5) && esValido)) • (! esValido) || (esValido && !terminoPartido) || (esValido && terminoPartido && (puntos < intentos)) 4. Indique el valor de verdad de las siguientes expresiones lógicas considerando las declaraciones dadas a continuación: int vueltas = 5; int ataques = 1; boolean encontrado = true; • encontrado || (vueltas > ataques) || (vueltas == 1) • !((ataques >= 1) && (1 < vueltas) && encontrado) • (!(vueltas >= 1)) || ((ataques != 5) && encontrado) 5. Considerando las siguientes declaraciones e inicializaciones: boolean encontrado = false; boolean esPrimero = true; boolean esUltimo = false; int cantidad = 7; Algoritmos y Programación 1 Universidad Nacional de Tres de Febrero double promedio = 6.0; int longitud = 12; indicar el valor de verdad de las variables: expresion1, expresion2, expresion3, expresion4, expresion5 y expresionFinal boolean expresion1; expresion1 = encontrado || (promedio > 5.8) || (longitud < 3); boolean expresion2; expresion2 = ((longitud > 0) && (longitud < 20)) || esUltimo; boolean expresion3; expresion3 = ((!encontrado && esPrimero) || (encontrado && !esUltimo)) && (cantidad != 0); boolean expresion4; expresion4 = (!(promedio < 0.0) || (promedio > 10.0) && !esPrimero); boolean expresion5; expresion5 = ! ( !( !encontrado || (esUltimo) ) && (longitud >= cantidad) ); boolean expresionFinal = (!((expresion1 || expresion2) && !expresion3)) && (!expresion4 && expresion1); 6. Considerando las siguientes declaraciones e inicializaciones: int posicion = 12; int maximo = 50; int minimo = 1; boolean fueEncontrado = false; boolean enRango = (posicion <= maximo) && (posicion >= minimo); boolean esRegular = (posicion >= 23); indicar el valor de verdad de las variables: expresion1, expresion2, expresion3, expresion4, expresion5 y expresionFinal boolean expresion1; expresion1 = !enRango || esRegular || (posicion == 12); boolean expresion2; expresion2 = (posicion > 0) && (maximo < 20) && esRegular; Algoritmos y Programación 1 Universidad Nacional de Tres de Febrero boolean expresion3; expresion3 = ((enRango && esRegular) || (! esRegular && !enRango)) && (posicion > 12); boolean expresion4; expresion4 = ! ((maximo > minimo) && (enRango || !esRegular)) && (fueEncontrado || enRango); boolean expresion5; expresion5 = !( !( !(fueEncontrador && enRango) || (esRegular && enRango)) && (posicion > minimo)); boolean expresionFinal = (((expresion5 && expresion2) || !expresion3)) && (expresion4 || !expresion1); 7. Señalar en los ejercicios anteriores qué partes de las expresiones booleanas no son ejecutadas debido a la evaluación en cortocircuito (es decir, que la evaluación se detiene tan pronto como el resultado de la expresión completa es evidente) 8. A partir de las siguientes variables: boolean aproboPrimerParcial boolean aproboSegundoParcial boolean aproboRecuperatorio boolean aproboTrabajosPracticos boolean aproboFinal construir una expresión booleana que indique si un alumno aprobó o no la materia. 9. A partir de las siguientes variables: int notaPrimerParcial int notaSegundoParcial boolean aproboRecuperatorio boolean aproboTrabajosPracticos boolean aproboFinal construir una expresión booleana que indique si un alumno aprobó o no la materia, considerando la posibilidad de promocionarla. 10. Indique el valor de verdad de las siguientes expresiones lógicas considerando las declaraciones dadas a continuación. Señalar además qué partes de las expresiones no son ejecutadas debido a la evaluación por cortocircuito. int ganados = 50; int perdidos = 26; int empatados = 12; Algoritmos y Programación 1 Universidad Nacional de Tres de Febrero boolean esGanador = (ganados > (perdidos + empatados)); boolean esRevelacion = (empatados > perdidos); • !((esGanador && (perdidos != ganados)) || (esRevelacion && ! esGanador)); • !((ganados > empatados) || !((ganados > 25) && esRevelacion)); • esRevelacion || (( perdidos <= 20) && (ganados > 45)); • (perdidos > empatados) && (empatados > 10) && (perdidos <= 30); • !(esRevelacion || (perdidos > 40) || (ganados < 20)); 11. Indique el valor de verdad de las siguientes expresiones lógicas considerando las declaraciones dadas a continuación. Señalar además qué partes de las expresiones no son ejecutadas debido a la evaluación por cortocircuito. int recibidos = 80; int contestados = 40; int rechazados = 10; int pendientes = recibidos - (contestados + rechazados); boolean tieneErrores = ( (recibidos - pendientes) != contestados ); boolean enFuncionamiento = (contestados > (recibidos / 2)); • (! tieneErrores) || ((pendientes >= 50) && (contestados < 10)) • (contestados > rechazados) && (pendientes < contestados) && (rechazados < 20) • ((pendientes > 10) || tieneErrores) && !( (pendientes != rechazados) || enFuncionamiento ) • ((! tieneErrores) && (! enFuncionamiento)) || (tieneErrores && enFuncionamiento) || (recibidos == rechazados) • ! ( (contestados > (rechazados * 3)) && !((recibidos > pendientes) || (pendientes > contestados)) )