Chapter 1. Speechreading in the Literature 1
1.8 Speechreading training 46
El cuadro 4-1 describe los seis operadores de comparación relacionales soportados por todos los lenguajes de programación modernos. Cada operador es binario; es decir, cada uno requiere dos operandos. Cuando se construye una expresión usando uno de los operadores que se han descrito en el cuadro 4-1, la expresión evalúa para verdadero o falso. (Note que algunos operadores se forman usando dos caracteres sin espacio entre ellos.) Por lo general, ambos operandos en una comparación deben ser del mismo tipo de datos; es decir, usted puede comparar valores numéricos con otros valores numéricos y cadenas de texto con otras cadenas. Algunos lenguajes de programación le permiten comparar un carácter con
un número. Si usted lo hace, entonces en la comparación se usa sólo un código numérico de carácter. El apéndice A contiene más información sobre los sistemas de codifi cación. En este libro sólo se compararán los operandos del mismo tipo.
Operador Nombre Discusión
= Operador de equivalencia Evalúa como verdadero cuando sus operandos son
equivalentes. Muchos lenguajes usan un signo de igual doble (==) para evitar la confusión con el operador de asignación.
> Operador mayor que Evalúa como verdadero cuando el operando izquierdo es
mayor que el operando derecho.
< Operador menor que Evalúa como verdadero cuando el operando izquierdo es
menor que el operando derecho.
>= Operador mayor o igual que Evalúa como verdadero cuando el operando izquierdo es
mayor que o equivalente al operando de la derecha.
<= Operador menor o igual que Evalúa como verdadero cuando el operando izquierdo es
menor que o equivalente al operando de la derecha.
<> Operador no igual a Evalúa como verdadero cuando sus operandos no
son equivalentes. Algunos lenguajes usan un signo de admiración seguido por un signo de igual para indicar no igual a (!=).
Cuadro 4-1 Operadores de comparación relacionales
En cualquier expresión booleana, los dos valores comparados pueden ser variables o constan- tes. Por ejemplo, la expresión ¿currentTotal = 100? compara una variable, currentTotal, con una constante numérica, 100. Dependiendo del valor currentTotal, la expresión es verda- dera o falsa. En la expresión ¿currentTotal = previousTotal?, ambos valores son variables, y el resultado también es verdadero o falso dependiendo de los valores almacenados en cada una de las dos variables. Aunque es legal, usted nunca usaría expresiones en las que compara dos constantes; por ejemplo, ¿20 = 20? o ¿30 = 40? Tales expresiones son expresiones tri- viales debido a que cada una siempre evalúa el mismo resultado: verdadero para ¿20 = 20? y falso para ¿30 = 40?
Algunos lenguajes requieren operaciones especiales para comparar cadenas, pero en este libro se supondrá que los operadores de comparación estándar funcionan en forma correcta con cadenas basadas en sus valores alfabéticos. Por ejemplo, la comparación ¿“azul” < “negro”? se evaluaría como verdadera porque “azul” precede a “negro” alfabéticamente. En general, las variables de cadena no se consideran iguales a menos que sean idénticas, incluyendo el espaciado y si aparecen en mayúsculas o minúsculas. Por ejemplo, “pluma negra” no es igual que “plumanegra”, “PLUMA NEGRA” o “Pluma Negra”.
Cualquier decisión puede hacerse usando combinaciones de sólo tres tipos de comparaciones: igual, mayor que y menor que. Usted nunca necesitará las tres comparaciones adicionales (mayor o igual que, menor o igual que o no igual), pero su uso frecuente hace que se tomen las decisiones más convenientes. Por ejemplo, suponga que necesita aplicar un descuento de 10% a cualquier cliente cuya edad sea de 65 años o mayor, y cobrar el precio completo a otros clien- tes. Puede usar el símbolo mayor o igual que para escribir la lógica como sigue:
if customerAge >= 65 then discount = 0.10
else
discount = 0 endif
Como alternativa, si no existe el operador >=, podría expresar la misma lógica escribiendo: if customerAge < 65 then
discount = 0 else
discount = 0.10 endif
En cualquier decisión para la que a >= b es verdadera, entonces a < b es falsa. A la inversa, si a >= b es falsa, entonces a < b es verdadera. Al reformular la pregunta e intercambiar las acciones emprendidas con base en el resultado, usted puede hacer la misma decisión en múl- tiples formas. La ruta más clara con frecuencia es hacer una pregunta de tal manera que el resultado positivo o verdadero produzca la acción que fue su motivación para hacer la prueba. Cuando la política de su compañía es “proporcionar un descuento para aquellos que tengan 65 años y más”, la frase mayor o igual que viene a la mente, de modo que es más natural usarla. Por el contrario, si su política es “no aplicar descuento para aquellos menores de 65 años”, entonces es más natural usar la sintaxis menor que. De cualquier forma, las mismas personas recibirán el descuento.
La comparación de dos cantidades para decidir si no son iguales entre sí es la más confusa. Usar no igual a en las decisiones implica pensar en dobles negativos, que pueden hacer a usted propenso a incluir errores lógicos en sus programas. Por ejemplo, considere el segmento de diagrama de fl ujo en la fi gura 4-5.
127 Uso de operadores de comparación relacionales
En la fi gura 4-5, si el valor de customerCode es igual a 1, el fl ujo lógico sigue la rama falsa de la selección. Si customerCode <> 1 es verdadero, discount es 0.25; si customerCode <> 1 no es verdadero, signifi ca que customerCode es 1 y discount es 0.50. Incluso la lectura del enun- ciado “si customerCode no es igual a 1 no es verdadero” es incómoda.
La fi gura 4-6 muestra la misma decisión, esta vez planteada con lógica positiva. Tomar la decisión con base en cuál es customerCode es más claro que tratar de determinar qué no es customerCode.
Figura 4-5 Uso de una comparación negativa
No ¿customerCode Sí < > 1? discount = 0.50 discount = 0.25 if customerCode < > 1 then discount = 0.25 else discount = 0.50 endif
Figura 4-6 Uso del equivalente positivo de la comparación negativa de la fi gura 4-5
No Sí ¿customerCode = 1? discount = 0.25 if customerCode = 1 then discount = 0.50 else discount = 0.25 endif discount = 0.50
Aunque usar comparaciones negativas puede ser incómodo, su signifi cado en ocasiones es más claro cuando se usan. Con frecuencia, esto ocurre cuando usa un if sin un else, emprendiendo la acción sólo cuando alguna comparación es falsa. Un ejemplo sería: if customerZipCode <> LOCAL_ZIP_CODE then total = total + deliveryCharge.