5.23 (Leyes de De Morgan) En este capítulo, hemos hablado sobre los operadores lógicos && , &, ||, |, ^ y !. Algunas veces, las leyes de De Morgan pueden hacer que sea más conveniente para nosotros expresar una expresión lógica. Estas leyes establecen que la expresión !(condición1 && condición2) es lógicamente equivalente a la expresión (!condición1 || !condición2). También establecen que la expresión !(condición1 || condición2) es lógicamente equivalente a la expresión (!condición1 && !condición2). Use las leyes de De Morgan para escribir expresiones equivalentes para cada una de las expresiones siguientes, luego escriba una aplicación que demuestre que, tanto la expresión original como la nueva expresión, producen en cada caso el mismo valor:
a) !(x < 5) && !(y >= 7)
b) !(a == b) || !(g != 5)
c) !( (x <= 8) && (y > 4))
d) !( (i > 4) || ( j <= 6 ) )
El siguiente código debe guardarse como UsaDeitel_5_23.java
public class UsaDeitel_5_23 { // Abre UsaDeitel_5_23 public static void main(String args[]) { // Abre main //Se define el metodo Deitel_5_23 Deitel_5_23 miObjeto = new Deitel_5_23(); /* // Se llama al metodo caso a miObjeto.Casoa(); */ // Se llama al metodo caso b miObjeto.Casob(); /* // Se llama al metodo caso c miObjeto.Casoc(); // Se llama al metodo caso d miObjeto.Casod(); */ } // Cierra main } // Cierra UsaDeitel_5_23
El siguiente código debe guardarse como Deitel_5_23.java
import java.util.Scanner; public class Deitel_5_23 { // Abre clase Deitel_5_23 Scanner entrada = new Scanner(System.in); private int incognita; // Abre metodo caso a public void Casoa() { // Abre metodo caso a int x = 0; int y = 0; System.out.print("\nEste programa corrobora con un ejemplo "); System.out.print("las leyes de De Morgan.\n"); System.out.println("\nSegun las leyes de De Morgan, "); System.out.print("\n!(x < 5) && !(y >= 7) es equivalente a "); System.out.print("!((x < 5) || !(y >= 7)) "); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = ( !(x < 5) && !(y >= 7 ))? 1: 0; "); System.out.println("\nPor favor introduzca un valor de x: "); x = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de y: "); y = entrada.nextInt(); incognita = ( !(x < 5) && !(y >= 7 ))? 1: 0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = !( (x < 5) || (y >= 7 ))? 1: 0; "); System.out.println("\nPor favor introduzca un valor de x: "); x = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de y: "); y = entrada.nextInt(); incognita = !( (x < 5) || (y >= 7 ))? 1: 0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); } // Cierra metodo caso a // Abre metodo caso b public void Casob() { // Abre metodo caso b int a; int b; int g; System.out.println("\nSegun las leyes de De Morgan, "); System.out.println("\n!(a == b) || !(g != 5) es equivalente a "); System.out.println("\n!((a == b) && (g != 5)) "); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = (!(a == b) || !(g != 5))? 1:0; "); System.out.println("\nPor favor introduzca un valor de a: "); a = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de b: "); b = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de g: "); g = entrada.nextInt(); incognita = (!(a == b) || !(g != 5))? 1:0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = !((a == b) && (g != 5))? 1: 0;"); System.out.println("\nPor favor introduzca un valor de a: "); a = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de b: "); b = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de g: "); g = entrada.nextInt(); incognita = !((a == b) && (g != 5))?1:0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); } // Cierra metodo caso b // Abre metodo caso c public void Casoc() { // Abre metodo caso c int x = 0; int y = 0; System.out.println("\nSegun las leyes de De Morgan, "); System.out.println("\n!((x <= 8) && (y > 4)) es equivalente a "); System.out.println("\n(!(x <= 8) || !(y > 4)) "); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = !((x <= 8) && (y > 4))? 1: 0; "); System.out.println("\nPor favor introduzca un valor de x: "); x = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de y: "); y = entrada.nextInt(); incognita = !((x <= 8) && (y > 4))? 1: 0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = (!(x < 5) || !(y >= 7))? 1: 0;"); System.out.println("\nPor favor introduzca un valor de x: "); x = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de y: "); y = entrada.nextInt(); incognita = (!(x < 5) || !(y >= 7))? 1: 0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); } // Cierra metodo caso c // Abre metodo caso d public void Casod() { // Abre metodo caso d int i; int j; System.out.println("\nSegun las leyes de De Morgan, "); System.out.println("\n!((i > 4) || (j <= 6)) es equivalente a "); System.out.println("\n(!(i > 4) && !(j <= 6)) "); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = !((i > 4) || (j <= 6))? 1:0;"); System.out.println("\nPor favor introduzca un valor de i: "); i = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de j: "); j = entrada.nextInt(); incognita = !((i > 4) || (j <= 6))? 1:0; System.out.printf("\nEl valor de incongnita es: %d\n", incognita); System.out.print("\n La variable incognita toma los valores 0 o 1 "); System.out.print("de la siguiente manera: \n"); System.out.println("\n incognita = !(i > 4) && !( j <= 6 )"); System.out.println("\nPor favor introduzca un valor de i: "); i = entrada.nextInt(); System.out.println("\nPor favor introduzca un valor de j: "); j = entrada.nextInt(); incognita = !(i > 4) && !( j <= 6 )? 1:0; System.out.printf("\nEl valor de incognita es: %d\n", incognita); } // Cierra metodo caso d } // Cierra clase Deitel_5_23
La ley de morgan tiene amplio uso en la logica de circuitos. No solo en la demostración y parte teorica sino en el comportamiento aplicado de componentes programados.
ResponderEliminarComparto un link con el programa desarrollado en Java:
https://tutorias.co/arrays-javademostrar-la-ley-de-morgan/