Errores comunes al escribir expresiones condicionales.
Siempre sucede. Aunque sea una vez por curso, pero va a suceder. Lo peor es que suceda cuando piensas que todo va viento en popa. Pero pasa y hay que saber lidiar con esto.
¿?
Como maestr@ puedes llegar a cometer el error de creer que todo le ha quedado claro a tus estudiantes. Sus prácticas, los exámenes, la retroalimentación diaria parecen comprobarlo. Pero la catástrofe llega sin avisar. Puede haber sucedido en una tarea, una práctica o peor, en un examen. Así es, de repente, todos fallan. Todos reprueban. Todos contestan como si los meses pasados y la información que se les ha dado hasta el momento no les haya servido de nada. Y cuando hasta el mejor de tus alumnos también falla, es inevitable entrar en pánico.
O quizá yo esté exagerando, y a l@s maestr@s perfectos esto no les sucede.
…
Como alumna recuerdo que sí había ocasiones en donde no tenías ni idea de cómo empezar la asignación que te habían dejado. Simplemente no podías ver que la información que ya sabías y dominabas estaba relacionada con la nueva asignación que te habían pedido. Y en esos casos, necesitas orientación para siquiera entender por dónde empezar.
…
Entonces, por más que quieras tirar la toalla, recuerda que esa no es una buena opción, porque a menos que ya haya terminado el curso y que jamás vayas a ser su maestr@, ¿qué crees? Exacto, tienes que trabajar con ellos. Así que puedes proceder de las siguientes formas:
- Tú estás bien, ellos están mal. Son flojos, no estudiaron y ni modo, pues a reprobar masivamente.
- Ellos están bien, tú mal. Elimina la actividad y todos contentos. Aquí no pasó nada.
Pero ¿y si mejor los orientas? No puedes negar el hecho de que una actividad que pensaste que iba a contribuir con su proceso de aprendizaje no haya sido realizada correctamente por tus estudiantes. Algo falló en el proceso, y negarlo no es lo adecuado.
Así qué, ¿qué hace una maestra que tiene un blog? ¡Así es!, escribe una entrada al respecto, para que los estudiantes lean, vuelvan a procesar los problemas y a tratar de hacer mejor la actividad. Y es así como surgió este post.
Importancia de las expresiones condicionales
Considero que saber escribir expresiones condicionales adecuadamente es parte fundamental del proceso de abstracción que nos llevará a la creación de programas eficientes. Cuando un estudiante sabe escribir expresiones condicionales:
- Sabe representar un problema en notación matemática, o mejor aún en notación de programación
- Sabe para qué se usa cada operador y cómo utilizarlos
- Sabe las tablas de verdad de los operadores lógicos
- Tiene un nivel de abstracción adecuado que le permite representar un problema en un algoritmo/programa
- Sabrá reconocer errores de lógica
Por ello es fundamental aprender a escribirlas, y sobre todo, entender y reconocer los errores.
Los errores más comunes al escribir expresiones condicionales.
Así que, de todos los horrores, perdón, errores que pude ver generé la siguiente lista que resume los errores más comunes en los que incurren los aprendices de programación al momento de crear expresiones condicionales:
Usar el operador de asignación.
En una expresión condicional no se debe utilizar el operador de asignación (en Java el operador = ). Recuerda que estamos comparando dos o más variables, no cambiando el valor de una variable. Entonces una expresión escrita de la siguiente forma:
numero1 = numero2
No es una expresión condicional, sino una expresión de asignación, en donde el valor de numero2 se almacena en la variable numero1. La expresión condicional correcta es:
numero1 == numero2
Ahora sí estamos comparando el contenido de la variable numero1 con el contenido de la variable numero2. Concretamente se está preguntando si ambos contenidos son iguales.
La excepción a la regla es cuando sea necesario almacenar el resultado de la expresión condicional. Por ejemplo:
resultado = numero1 == numero2.
En esta expresión sucede que el resultado de comparar si la variable numero1 es igual a la variable numero2 se almacenará en la variable resultado. Para que esto funcione, resultado debe ser una variable tipo boolean. Pero entonces este tipo de expresiones no se considera una expresión condicional, sino una expresión de asignación, y por lo tanto, no se puede utilizar como parte de una estructura if o dentro de un símbolo de rombo en el caso de los diagramas de flujo.
Olvidar que los operadores son binarios.
Un error común que he visto en mis estudiantes a lo largo del tiempo es algo como lo siguiente:
x > y < z
Para expresar que “x es mayor que y, y y es menor que z”.
Sólo porque en matemáticas funcione, no quiere decir que en programación también. Casi todos los operadores de casi todos los lenguajes de programación son binarios, eso quiere decir que requieren de dos operandos para que funcionen, como se muestra en la figura 1.

Figura 2. Estructura general de las expresiones condicionales simples
En la primera parte de la figura 2, te muestro los componentes de la expresión x>=y, la cual cubre el orden: operando1 operador operando2. Incluso con expresiones compuestas, como en la segunda parte de esta figura, el resultado de las expresiones x+2 y y-3*4 son los operandos para el operador !=.
- Para que puedan apreciar el error, observa la figura 3, en la que te muestro los componentes de la expresión x>y<z, y donde claramente puedes apreciar que no se cumple el orden operando operador operando, pues la expresión se debe dividir para poder cumplir esta “plantilla”.

Figura 3. Expresión de comparación incorrecta
Expresiones compuestas.
En el caso de problemas que requieran más de una comparación, como en este ejercicio, se debe conservar la forma general, pero ahora añadiendo alguno de los operadores de unión de comparaciones, ya sea el && (AND) o el || (OR), por lo que la forma general queda ahora como se muestra en la figura 4.

Figura 4. Estructura general de las expresiones condicionales con operadores booleanos
Por lo tanto, la expresión condicional correspondiente al problema “x es mayor que y, pero y es menor que z” es:
x > y && y < z
Escribir dos operadores juntos.
Muy semejante a lo que expliqué en el inciso anterior, sólo que en este caso me refiero específicamente al uso de los operadores booleanos. Por ejemplo, considera el siguiente problema: “Una persona obtiene un empleo si obtiene al menos 85 en el examen teórico, al menos 70 en el examen físico y no tiene antecedentes penales”. La respuesta incorrecta fue:
teorico85>=&&fisico70>=&&antecedentes==0
Claramente hay muchos errores en la respuesta proporcionada por mis estudiantes, pero en este caso en particular quiero resaltar la forma en la que escribieron los operadores: >=&&.
Para empezar, se trata de dos operadores de tipos diferentes: >= es un operador relacional y && es un operador booleano. Pero lo que tienen en común es que SON OPERADORES BINARIOS. El operador >= requiere ser comparado con otro valor y eso no pasa en la respuesta propuesta.
Por otro lado, el operador && une dos comparaciones, pero para que esto pase, las expresiones de comparación deben estar bien formadas. Esto quiere decir que nuevamente se tiene que respetar la forma general de la figura 1, es decir:
operando1 operador operando2
En pocas palabras, una vez que haz escrito la expresión condicional, revísala, y si tienes dos operadores juntos, algo estás haciendo mal.
No escribir adecuadamente la expresión de comparación.
Básicamente las expresiones condicionales son comparaciones, es decir, evaluamos si un operando es igual, mayor, mayor o igual, menor, menor o igual, o diferente que otro. El operando puede ser un número, una variable o incluso una operación aritmética. Pero, aun así, debemos respetar la forma general ya presentada en la figura 1. Y esto me regresa a la respuesta que mostré en el inciso anterior, en donde varios estudiantes escribieron:
teorico85>=
Claramente la comparación no está bien formada. Y esto es más fácil de lo que parece, pues para comparar un dato con otro se escribe el primer dato a la izquierda, después el operador y por último el otro dato a comparar. Por lo tanto, la comparación debe quedar:
teorico>=85
Lo cual también cumple con la forma general de la figura 1.
No cubrir todo el espectro.
Este error es más un error de lógica que un simple error de sintaxis o de mal uso de los operadores. Para este caso, considera el siguiente problema:
“expresar que dos números no sean negativos ni iguales entre sí”
Y la respuesta fue:
numero1!=-1 && numero2!=-1 && numero1!=numero2
La expresión resultante no está mal escrita, pero no representa el problema. El hecho de escribir:
numero1!=-1
no garantiza que numero1 no sea negativo, sino sólo que no sea igual a -1. Pero entonces puede ser igual a -2, -3, -100, los cuáles como sabemos son números negativos. Para este tipo de problemas basta recordar la recta numérica: todos los números mayores a cero son positivos, justo lo que el problema quiere expresar. Esto quiere decir que el operador correcto es >, y por lo tanto la expresión correcta es:
numero1>0 && numero2 > 0 && numero1 != numero2
Algo semejante sucede con los operadores >= y <=, los cuales debemos recordar son inclusivos. Esto quiere decir que:
x >= 10
será verdadero para cualquier valor mayor a 10, pero también si x vale 10, pues el símbolo = indica que también se debe incluir el 10.
Escribir incorrectamente los operadores.
Este error no se debe a otra cosa más que no se aprenden los operadores. Al enseñar programación casi siempre esperamos que los alumnos apliquen su lógica, desarrollen su proceso de abstracción, y su creatividad, por lo que realmente se exige memorizar poco. Pero lo poco que se requiere memorizar son detalles como estos: aprende como se deben escribir los operadores, como se llaman, de qué tipo son, que operandos requieren y que resultados generan. No hay vuelta de hoja. El hecho de que se tengan respuestas con operadores como =!, que se confunda el ! con !=, que se escriban => o incluso se use el operador <>, el cual no existe en Java, todos estos errores son simplemente porque el estudiante no se ha aprendido los operadores.
No aplicar las matemáticas.
Este es un error de lógica, que en muchas ocasiones he observado como los estudiantes lo van aminorando conforme van adquiriendo experiencia. Y como estudiante tuve el mismo proceso.
Por ejemplo, problemas como: “expresar si un número es múltiplo de 4”, generalmente van a confundir a los aprendices porque en general nunca te has preguntado cuál es la característica que hace que un número sea múltiplo de otro. Fíjense que no estoy diciendo que el estudiante no sabe cuándo un número es múltiplo de otro, sino más bien, que nunca se ha detenido a pensar cuáles son las reglas matemáticas que definen a un múltiplo.
Una vez que les hago la pregunta a los estudiantes: ¿Cómo sabes que 12, 16 y 24 son múltiplos de 4? Es cuando todos comienzan a contestar: “Es que son divisibles entre 4”. Entonces ya tienen la característica que tenemos que expresar, ahora sólo queda la pregunta: ¿cómo?
El operador % (residuo o módulo de la división) no es un operador “tradicional” de las matemáticas. Entonces claramente va a ser difícil que un estudiante le encuentre uso hasta que lo orientamos. Pero una vez que pasa eso, los estudiantes encuentran el caminito y pueden aplicarlo en la construcción de expresiones condicionales.
Concretamente con el problema expresado, la solución es:
numero % 4 == 0
Lo que podríamos traducir como “si el residuo de dividir numero entre 4 es cero, entonces numero es divisible entre 4 y por lo tanto es un múltiplo de 4″. (Aquí puedes profundizar sobre el operador %)
Estos son algunos de los errores que encontré en una práctica reciente que asigné a mis estudiantes, pero creo que son tan comunes que cualquier aprendiz los cometería también, por lo cual comparto la siguiente guía con las características más importantes de esta expresión.

Figura 5. Reglas para la creación de la expresión condicional
¡Hasta la próxima entrada!
Dania Garcia Montiel 1° A TIDSM
Diego Lopez Nava
Alejandro Avendaño Luna
Matthew Márquez. 1A. TIADSM.