Que son los operadores logicos?

Los operadores logicos te simplificarán considerablemente el proceso de creación de ciertos programas. Estos operadores actúan sobre expresiones lógicas generalmente. Por ahora aprenderemos los 3 principales. OR,  AND, NOT. Para entender este concepto, pondremos un ejemplo.

Todos sabemos que los triángulos, según sus lados, se pueden clasificar en Equiláteros, Isósceles y Escalenos. Los equiláteros tienen sus 3 lados iguales, los isósceles, al menos dos lados iguales, y los escalenos ningún lado igual a otro. Para clasificar un triangulo según sus lados, podemos utilizar las estructuras condicionales. Supongamos que ya tenemos en memoria las variables a, b, c, como los respectivos valores de los lados de nuestro triángulo. Con lo que sabemos hasta ahora, para saber si es Equilátero, programaríamos esto:

Ejemplo 1

Si (a == b) entonces {
    Si ( b == c) entonces { 
       Imprimir (“Triangulo Equilátero”);
    }
}

Con este bloque de codigo garantizamos que el triangulo sea Equilátero utilizando operadores logicos. Si “a” es igual a “b”, y “b” es igual a “c”, lógicamente “a”  es igual a “c”. Siendo así, tenemos los 3 lados iguales y estamos seguros que el triángulo es Equilátero.

Usando el operador logico AND, podemos simplificar el bloque de código, y sería así:

Ejemplo 2

Si ( (a == b) AND ( b == c)  ) entonces { 
   Imprimir (“Triangulo Equilátero”);
}

Este problema consta de 2 condiciones “a == b” y “b == c”, y estas dos forman una condición mas general, ( (a = = b) AND ( b =  = c)  ).

Estamos en presencia de una expresión lógica compuesta, que como su nombre lo dice, se compone de 2 expresiones lógicas simples. Podemos crear expresiones lógicas compuestas de 2 o mas expresiones lógicas simples. Leyéndolo en lenguaje común, sería:

 Si “a” es igual a “b”, y además “b” es igual a “c”, entonces Imprimir “Triangulo Equilátero”.

 Para el triangulo isósceles solo necesitamos dos lados iguales, cualesquiera que sean. O sea:

Si “a” es igual a “b”, o “b” es igual a “c”, o “a” es igual a “c”, estamos en presencia de un triangulo isósceles. Sería en pseudocódigo así:

Ejemplo 3

Si ( (a == b) OR ( b == c) OR ( a == c)   ) entonces { 
   Imprimir (“Triangulo Isósceles”);
}

Aquí tenemos 3 condiciones que forman una estructura condicional, la cual decide si el triángulo en cuestión, es isósceles. Para el triángulo escaleno usamos la misma retórica.

Si “a” es desigual de “b”, y además “b” es desigual de “c”, y además “a” es desigual de “c”, entonces nuestro triángulo es escaleno.

Ejemplo 4

Si ( (a ¡= b) AND ( b ¡= c) AND ( a ¡= c)   ) entonces { 
  Imprimir (“Triangulo Escaleno”);
}

Ahora, estas 3 estructuras condicionales, por separado, no resuelven el problema del todo. Si queremos un programa que dados 3 lados de un triangulo introducidos por teclado, nos imprima el tipo de triangulo que es, según sus lados, tendríamos que enlazarlas.

Ejemplo 5

Si ( (a == b) AND ( b == c)  ) entonces { 
  Imprimir (“Triangulo Equilátero”);
}

Si ( (a == b) OR ( b == c) OR ( a == c)   ) entonces { 
  Imprimir (“Triangulo Isósceles”);
}

Si ( (a ¡= b) AND ( b ¡= c) AND ( a ¡= c)   ) entonces { 
  Imprimir (“Triangulo Escaleno”);
}

En este ejemplo, supongamos que los valores de los lados serían a = 3, b = 3, c = 3. Los 3 lados son iguales, y nuestro programa debería imprimir el texto “Triangulo Equilátero”, pero si te fijas bien verás que además de eso imprimirá “Triangulo Isósceles”. Por que?

Si analizamos la segunda estructura condicional, y la traducimos a nuestro lenguaje común, ya conociendo los valores de los lados, tendremos Si 3 = 3, o 3 = 3, o 3 = 3, entonces Imprimir “Triangulo Isósceles”. La solución a este problema sería, permitir que el flujo del programa llegara a la segunda estructura condicional, si y solo si, el triangulo no  es Equilátero. Para eso, usamos la cláusula sino, que ya vimos con anterioridad. Y quedaría así:

Ejemplo 6

Si ( (a == b) AND ( b == c)  ) entonces { 
  Imprimir (“Triangulo Equilátero”);
} sino {
  Si ( (a == b) OR ( b == c) OR ( a == c)   ) entonces { 
     Imprimir (“Triangulo Isósceles”);
  }
}

Si ( (a ¡= b) AND ( b ¡= c) AND ( a ¡= c)   ) entonces { 
  Imprimir (“Triangulo Escaleno”);
}

Poniendo la segunda estructura condicional dentro del bloque de código al que saltará el programa si no se cumple la condición de equilátero, aseguraremos que la posibilidad de que sea nuestro triángulo, un triángulo isósceles, se compruebe si y solo si, el triangulo en cuestión no es equilátero.

Creando una calculadora usando operadores logicos

Con este último problema, terminaremos de comprender todo en cuanto a estructuras condicionales se trata. Es un programa un poco más complicado donde usaremos todo lo que hemos aprendido hasta ahora. Construiremos una calculadora básica, que será capaz de sumar, restar, multiplicar y dividir 2 números que entraremos por teclado. La operación a realizar la decidirá el usuario, mediante un menú de texto, que estará disponible en pantalla. Para calcular, solo necesitaremos 3 variables float, una para el numero 1, otra para el numero 2 y otra para el resultado. Pero para que el usuario escoja la operación a realizar necesitaremos una variable char.  

Las variables del tipo ‘char’

Las variables char, o variables de un caracter, son variables que solo almacenan en ellas un byte ASCII, que sería uno de los caracteres que tenemos disponibles en el teclado, o sea, son strings que solo guardan un caracter. Se usan para ahorrar memoria. Cuando solo necesitamos un espacio pequeñ, no es necesario reservar todo un bloque en la memoria operativa para una cadena de texto. En la variable char guardaremos la operación que el usuario desee realizar.

Descripcion del problema calculadora

Desde ahora, podemos definir cuales serán esta opciones, “+” será suma, “-” será resta, “*” será multiplicación, y “/” será división. No es necesario declarar una variable char para cada una de las operaciones, solo con una que sea capaz de guardar estos valores, podremos resolver el problema. Lo primero será declarar las variables, lo segundo pedirle al usuario que entre los números; Lo tercero, mostrarle el menú de opciones y lo cuarto según la opción que el haya escogido, calcular el resultado e imprimirlo en pantalla.

Ejemplo 7 (Calculadora)

Float n1, n2, R;
Char opcion;

Imprimir (“Entre el numero 1”);
Leer n1;

Imprimir ( “Entre el numero 2” );
Leer n2;

Imprimir ( “Teclee una de las siguientes opciones (+,- ,*, /)”);
Imprimir ( “(+) Sumar” );
Imprimir ( “(-) Restar” );
Imprimir ( “(*) Multiplicar” );
Imprimir ( “(/) Dividir” );

Leer opcion;
Si (opcion = = “+”) entonces {  
   R = n1 + n2; 
}

Si (opcion = = “-”) entonces {  
   R = n1 - n2;  
}

Si (opcion = = “*”) entonces {  
  R = n1 * n2;  
}

Si (opcion = = “/”)  entonces {  
  Si (n2 == 0) entonces {
     Imprimir "Division por cero no permitida";
     Salir;
  } sino {
    R = n1 / n2;
  }
}

Imprimir (n1 . opcion . n2 . “ = ” . R);

Si entráramos por teclado como “n1” un 3, y como “n2” un 5, y seleccionáramos la opcion “+”, el programa imprimiría esta cadena como resultado.

3+5 = 8;

Impresionante verdad?

operadores logicos

Sigueme!
error