Quine mackulski
Enviado por senqui • 18 de Abril de 2016 • Documentos de Investigación • 30.492 Palabras (122 Páginas) • 355 Visitas
Quine – McCluskey
Desarrolladores:
Jorge Sánchez de la Garza
Rodrigo Alfredo Torres Lauría
Descripción del programa.
Este programa es capaz de resolver ecuaciones booleanas para circuitos combinacionales a partir de su tabla de verdad.
El programa utiliza el algoritmo desarrollado por Quine – McCluskey en el MIT.
El número de variables que soporta está dado por la cantidad de memoria del equipo donde se utilice el programa. En un equipo portátil con 512 MB de memoria en RAM se han podido resolver tablas de hasta 16 variables.
Funcionamiento:
[pic 1][pic 2]
[pic 3][pic 4][pic 5]
[pic 6][pic 7]
[pic 8]
[pic 9][pic 10][pic 11]
[pic 12]
[pic 13][pic 14]
[pic 15]
[pic 16]
[pic 17]
Pantalla principal al inicio del programa.
[pic 18]
Programa QMC en acción.
Código del programa:
import java.io.*;
import java.math.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.datatransfer.*;
public class QMC extends JFrame implements ActionListener, ClipboardOwner{ // Declaración de la clase que extiende a JFrame para que tenga interfaz gráfica e implementa ActionListener para que los objetos puedan responder a las acciones del usuario así como ClipBoardOwner para poder copiar objetos al porta-papeles.
/*Declaración de los objetos globales de la clase.*/
JFrame frame = new JFrame("QMC"); // Se crea el frame de la aplicación.
JPanel panel1; // Pánel que contiene alradio button de los minitérminos.
JPanel panel2; // Pánel que contiene alradio button de los maxitérminos.
JPanel panel3; // Pánel que contiene alradio button de término por término.
JPanel panel4; // Pánel que contiene alradio button cargar la tabla desde archivo.
JPanel panel5; // Pánel que contiene a los 4 páneles anteriores (a todos los radio buttons).
JPanel panel6; // Pánel que contiene al label de suma de minitérminos y su text field.
JPanel panel7; // Pánel que contiene al label de poducto de maxitérminos y su text field.
JPanel panel8; // Pánel que contiene al label de términi por término y su text field.
JPanel panel9; // Pánel que contiene al text field del archivo de entada.
JPanel panel10; // Pánel que contiene a los 4 páneles anteriores.
JPanel panel11; // Pánel que contiene a los 4 botones de los controles de inserción de datos.
JPanel panel12; // Pánel que contiene a los páneles 5, 10 y 11.
JPanel panel13; // Pánel que contiene al button de "Reset".
JPanel panel14; // Pánel que contiene a los dos páneles anteriores (controles de inserción de datos).
JPanel panel15; // Pánel que contiene al botón de minimizar, el text field de la ecuación reducida y el botón de copiar.
JPanel panel16; // Pánel que contiene el text field del archivo de los procedimientos de salida y el botón para guardar dichos procedimientos.
JPanel panel17; // Pánel que contiene a los dos páneles anteriores (controles de minimización).
JScrollPane panel18; // Pánel "scrollable" que contiene el text area donde se muestra la tabla de verdad.
JPanel panel19; // Pánel que contiene al pánel anterior.
JPanel panel20; // Pánel que contiene al text field del archivo de salida de la tabla de verdad y el botón para guardar la tabla.
JPanel panel21; // Pánel que contiene a los dos páneles anteriores (controles de la tabla de verdad).
JRadioButton invisible = new JRadioButton(); // Radio button invisible que sirve para poder "deseleccionar" los demás radio buttons que sí son visibles.
JRadioButton minisrb = new JRadioButton("Minitérminos"); // Radio button de la inserción por minitérminos.
JLabel suma = new JLabel("\u03a3m:");
JTextField ministx = new JTextField("4,0,2,3,7,12",9); // Text field donde se capturan los minitérminos.
JButton minisbt = new JButton("Llenar"); // Button de la inserción por minitérminos.
JRadioButton maxisrb = new JRadioButton("Maxitérminos"); // Radio button de la inserción por maxitérminos.
JLabel prod = new JLabel("\u03a0M:");
JTextField maxistx = new JTextField("4,1,4,6,9,15",9); // Text field donde se capturan los maxitérminos
JButton maxisbt = new JButton("Llenar"); // Button de la inserción por maxitérminos.
JRadioButton termrb = new JRadioButton("Término por término"); // Radio button de la inserción término por término.
JLabel term = new JLabel("# de variables:");
JTextField termtx = new JTextField("0",3); // Text field donde se capturan el número de variables de involucradas.
JButton termbt = new JButton("Introducir"); // Button de la inseción término por término.
JRadioButton filerb = new JRadioButton("Tabla desde archivo"); // Radio button de la inserción desde archivo.
JTextField filetx = new JTextField("Archivo a cargar",11); // Text field que muestra la ruta del archivo cargado.
...