Está en la página 1de 7

1 Uso de operadores lógicos

1.1. Uso de operadores lógicos

Ejemplo 1 - detectar números dentro de un rango dado

Se quieren validar números entre 1 y 10 inclusive, según el intervalo de la figura 1.1

1 ≤ X ≤ 10

... ...
0 [1 10] 11

Figura 1.1: Intervalo [1-10]

El ordenador no entiende las expresiones matemáticas tal cual las entendemos los humanos. Por ello,
se debe descomponer la condición 1 ≤ X ≤ 10, de una forma en que el compilador lo pueda interpretar.
Existen dos formas:
Utilizando lógica "positiva"
Utilizando lógica "negativa"

1.1.1. Utilizando lógica "positiva"

En esta forma la pregunta se escribe siguiendo la lógica tal cual como nos preguntaríamos nosotros:
"¿El número SE ENCUENTRA dentro del rango?"
"¿El número ES mayor a 1 Y también ES menor a 10?".
Se debe descomponer el rango 1 ≤ X ≤ 10 de una forma en que la computadora lo pueda procesar.
Eso se logra desarmando la desigualdad en dos términos:

X≥1 (1.1)

X ≤ 10 (1.2)
Ambas condiciones constituyen las condiciones parciales que deben se deben validar en simultáneo
para determinar la pertenencia de un número al rango establecido.

1
Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

en forma visual:

X <= 10

X >= 1

-1 0 [1 10] 11 12

Figura 1.2: Intervalo [1-10] desarmado

Analizando como se cumplen las condiciones parciales en cada segmento del rango:

X <= 10 V V F

X >= 1 F V V

-1 0 [1 10] 11 12

Figura 1.3: Intervalo [1-10] con premisas

Entonces, analizando la combinación de las condiciones parciales en forma de tabla, es posible relacio-
narlas con los operadores lógicos AND y OR:

X ≤ 10 X≥1 ¿en intervalo? AND OR


F F No se da F F
F V NO F V
V F NO F V
V V SI V V

Cuadro 1.1: Tabla que resume las condiciones

De la tabla se pueden obtener los siguientes razonamientos:


El caso en que AMBAS condiciones son FALSAS en simultáneo no se puede dar, a pesar de que es
una situación algebraicamente posible, pero imposible para el ejemplo propuesto; por ende es un
caso absurdo.
Si al menos UNA de las condiciones es FALSA, se da que el número NO SE ENCUENTRA dentro
del rango, esto sirve para descartar al operador lógico OR.
Comparando los operadores con el rango, se ve que el operador que coincide con la salida que se
busca, es el operador lógico AND.
Basándonos todo esto, para poder determinar si un número se encuentra dentro del rango propuesto, la
condición compuesta debe ser:

Cátedra de Informática - uso de operadores lógicos rev2 2 de 7


Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

(X >= 1) Y (X <= 10) (1.3)

La misma será evaluada VERDADERO para cualquier número dentro del rango especificado, y FALSO
para cualquier número fuera del mismo.

1.1.2. Utilizando lógica "negativa"

En esta forma la pregunta se escribe siguiendo la lógica inversa a como nos preguntaríamos normal-
mente:
"¿Es cierto que el número NO SE ENCUENTRA FUERA del rango?"
"¿Es cierto que el número NO ES menor a 1 y TAMPOCO ES mayor que 10?"
Visualmente se puede representar así:

X<1 X > 10

... ...
0 [1 10] 11

Figura 1.4: Intervalo complementario

En este caso se debe descomponer el rango 1 ≤ X ≤ 10 de una forma en que la computadora lo pueda
procesar. Eso se logra desarmando las desigualdades en dos términos:

X<1 (1.4)

X > 10 (1.5)

Estas condiciones parciales son los complementos de 1.1 y 1.2. Ambas condiciones constituyen las
condiciones parciales que deben se deben validar para determinar la pertenencia del número al rango
establecido.
en forma visual:

X > 10

X<1

-1 0 [1 10] 11 12

Figura 1.5: Intervalo [1-10] desarmado

Cátedra de Informática - uso de operadores lógicos rev2 3 de 7


Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Analizando como se cumplen las condiciones parciales en cada segmento del rango:

X > 10 F F V

X<1 V F F

-1 0 [1 10] 11 12

Figura 1.6: Intervalo [1-10] con condiciones parciales

Entonces, analizando la combinación de las condiciones parciales en forma de tabla, es posible relacio-
narlas con los operadores lógicos AND y OR:

X > 10 X<1 ¿en intervalo? AND OR NOR


F F SI F F V
F V NO F V F
V F NO F V F
V V No se da V V F

Cuadro 1.2: Tabla que resume las condiciones

De la tabla se pueden obtener los siguientes razonamientos:


Comparando los operadores con el rango, se ve que el operador que concuerda con la salida que
se busca, es la salida del operador lógico NOR (OR negado).
Si al menos UNA de las condiciones parciales es FALSA, se da que el número NO SE ENCUENTRA
dentro del rango, esto sirve para descartar al operador lógico AND.
El caso en que AMBAS condiciones parciales son VERDADERAS en simultáneo no se puede dar, a
pesar de que es una situación algebraicamente posible, pero imposible para el ejemplo propuesto;
por ende es un caso absurdo.
Basándonos todo esto, para poder determinar si un número se encuentra dentro del rango propuesto, la
condición compuesta se puede componer como:

NO ((X < 1) O (X > 10)) (1.6)

La misma sera evaluada VERDADERO para cualquier número dentro del rango especificado, y FALSO
para cualquier número fuera del mismo.

Cátedra de Informática - uso de operadores lógicos rev2 4 de 7


Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

1.2. Como aplicar el uso de los operadores lógicos

Ejemplo

Hacer un programa que permita cargar notas pero las valide al ingresar. Al finalizar se debe mostrar la
nota (válida) ingresada.

Pseudocódigo en PseInt - usando lógica positiva

1 Proceso carga_notas
2 Definir X Como Entero;
3 Escribir "Ingrese nota: ";
4 Leer X;
5 Mientras NO (X>=1 Y X<=10) Hacer
6 Si NO (X>=1 Y X<=10) Entonces
7 Escribir "nota no valida, ingrese nuevamente";
8 FinSi
9 Leer X;
10 FinMientras
11 Escribir "Nota ingresada: ",X;
12 FinProceso

Diagrama

Figura 1.7: Diagrama de Flujo del ejercicio propuesto

Cátedra de Informática - uso de operadores lógicos rev2 5 de 7


Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

Pseudocódigo en PseInt - usando lógica negativa

1 Proceso carga_notas
2 Definir X Como Entero;
3 Escribir "Ingrese nota: ";
4 Leer X;
5 Mientras (X<1 O X>10) Hacer
6 Si (X<1 O X>10) Entonces
7 Escribir "nota no valida, ingrese nuevamente";
8 FinSi
9 Leer X;
10 FinMientras
11 Escribir "Nota ingresada: ",X;
12 FinProceso

Diagrama

Figura 1.8: Diagrama de Flujo del ejercicio propuesto

Cátedra de Informática - uso de operadores lógicos rev2 6 de 7


Universidad Nacional de Misiones

Cátedra de Informática Departamento de Electrónica


Guía Teórica de Informática Palabras claves: Lenguaje, Pseudocódigo , PSeInt, C++

1.3. Conclusión

La salida de 1.3 y 1.6 son equivalentes y ambas evalúan verdadero cuando el número efectivamente se
encuentra dentro del intervalo.
Entonces surge la pregunta: ¿Cual hay que usar?.
Cualquiera de ellas sirve, depende el contexto del programa el uso de una forma u otra.
Se sugiere manejar ambos tipos de razonamiento.

Cátedra de Informática - uso de operadores lógicos rev2 7 de 7

También podría gustarte