235
ESCUELA POLITÉCNICA NACIONAL ESCUELA DE INGENIERÍA MÉTODO DIDÁCTICO DE SIMPLIFICACIÓN DE FUNCIONES BOOLENAS PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y TELECOMUNICACIONES LUIS EDUARDO LÓPEZ MEDINA DIRECTOR: ING. CARLOS NOVILLO Quito, Noviembre del 2003

ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

ESCUELA POLITÉCNICA NACIONAL

ESCUELA DE INGENIERÍA

MÉTODO DIDÁCTICO DE SIMPLIFICACIÓN DE FUNCIONESBOOLENAS

PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO ENELECTRÓNICA Y TELECOMUNICACIONES

LUIS EDUARDO LÓPEZ MEDINA

DIRECTOR: ING. CARLOS NOVILLO

Quito, Noviembre del 2003

Page 2: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

DECLARACIÓN

Yo LUIS EDUARDO LÓPEZ MEDINA, declaro que el trabajo aquí descrito es de

mi autoría; que no ha sido previamente presentada para ningún grado o

calificación profesional; y, que he consultado las referencias bibliográficas que se

incluyen en este documento.

La Escuela Politécnica Nacional, puede hacer uso de los derechos

correspondientes a este trabajo, según lo establecido por la Ley, Reglamento de

Propiedad Intelectual y por la normatividad institucional vigente.

Luis Eduardo López Medina

Page 3: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

CERTIFICACIÓN

Certifico que el presente trabajo fue desarrollado por LUIS EDUARDO LÓPEZ,

bajo mi supervisión.

Ing. Carlos

DIREbrOR-BÉPROYECTO

Page 4: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

CONTENIDOR. RESUMEN iv

P. PRESENTACIÓN vi

1. INTRODUCCIÓN 1

1.1. Introducción 1

1.2. Algebra de Booie 3

1.2.1. Reseña Histórica 31.2.2. Ecuaciones Booleanasy Funciones Lógicas Básicas 71.2.3. Tabla de Verdad 12

2. SIMPLIFICACIÓN DE FUNCIONES BOOLEANAS 13

2.1. Funciones Booleanas 132.1.1. Deducción de Ecuaciones booleanasa partir de una tabla de

verdad 142.1.2. Tabla de verdad a partir de una ecuación booleana 19

2.2. Métodos de Simplificación 212.2.1. Método del Algebra de Boole 21

2.2.2. Método del Mapa de Karnaugh 24

2.2.3. Método Quine-McCIuskey 33

2.2.3.1. Representación cúbica de fas funciones de Boole 332.2.3.2. Obtención de los implicantes primos 362.2.3.3. Selección de un conjunto óptimo de implicantes primos. 40

2.2.4. Funciones Incompletamente especificadas 47

2.2.5. Comparación de los métodos de simplificación 49

2.3.lmplementación de las funciones booleanas simplificadas 51

3. DISEÑO DEL PROGRAMA COMPUTACIONAL PARASIMPLIFICAR FUNCIONES BOOLEANAS 53

3.1. Introducción 533.1.1. Breve descripción del uso de formularios de Visual Basic 54

3.1.2. Controles de Visual Basic 56

3.1.2.1. TextBox 573.1.2.2. Label 593.1.2.3. CommandBotton 60

Page 5: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

3.1.3. Breve descripción del uso de comandos y sentencias en Visual

Basic ,. 62

3.1.3.1. Fundamentos de la programación 623.1.3.2. Variables...... 63

3.1.3.2.1. Alcances de las variables 633.1.3.2.2. Establecimiento del alcance de las variables 643.1.3.2.3. Variables utilizadas en un procedimiento 643.1.3.2.4. Variables utilizadas en un módulo 653.1.3.2.5. Variables utilizadas por todos los módulos 653.1.3.2.6. Declaración de variables 663.1.3.2.7. Tipos de variables 663.1.3.2.8. Consideraciones 67

3.1.3.3. Procedimientos 683.1.3.3.1. Procedimientos generales.... 693.1.3.3.2. Procedimientos de evento 70

3.1.3.4. Funciones 723.1.3.4.1. Llamadas a funciones 733.1.3.4.2. Paso de argumentos a Procedimientos y

funciones 733.1.3.4.3. Tipos de datos de los argumentos 743.1.3.4.4. Paso de argumentos por valor 743.1.3.4.5. Paso de argumentos por referencia 74

3.1.3.5. Estructuras de Control (Repetición y decisión) 753.1.3.5.1. Do While-Loop / Do-Loop While 753.1.3.5.2. For-Next 763.1.3.5.3. Else-End If.... 773.1.3.5.4. If-Then-Else 783.1.3.5.5. Select-Case 78

3.2. Diagrama de Flujo del Programa 803.2.1. Teoría 81

3.2.2. Simplificación 82

3.2.3. Tutorial 84

3.3. Diagrama de flujo de la simplificación 853.3.1. Ingreso de los datos en la tabla de combinaciones 85

3.3.2. Formación de cubos 88

3.3.3. Tabla de implicantes primos 95

3.3.4. Tabla de simplificación de los implicantes primos 97

3.3.5. Simplificación de la tabla de implicantes primos 102

3.3.6. Ecuación booleana simplificada 108

3.4. Resultados Obtenidos 112

Page 6: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

IV

RESUMEN

Dada la importancia que tiene hoy en día el diseño de los circuitos

digitales para múltiples aplicaciones, es necesario aprender a interpretar las

funciones asociadas a cada una de las aplicaciones y traducirlas a tablas de

verdad y funciones booleanas.

Para tener un circuito adecuado es necesario simplificar la función

booleana hasta un mínimo posible, de tal forma que se utilicen la mínima

cantidad de compuertas, sin afectar el funcionamiento del circuito tanto en

entradas como en salidas.

Para poder simplificar una función booleana se pueden aplicar tanto

teoremas del álgebra booleana, como el mapa de Karnaugh (Veitch), como

métodos tabulares como el método de Quine-McCIuskey, que es el que se

implementa en este proyecto.

El método del álgebra de Boole utiliza la lógica matemática y sus

teoremas para poder simplificar la función; sin embargo, este método es

conveniente cuando se tienen pocas variables de entrada.

El método del mapa de Karnaugh es un método gráfico bastante bueno,

pero no es práctico cuando se tienen más de 5 variables de entrada.

El método de simplificación tabular de Quine-McCIuskey es un método

que compara todas las combinaciones con las siguientes dependiendo la

cantidad de unos que contenga cada combinación de las variables de entrada.

Este es un método recursivo y por esta razón es fácil de implementar en una

rutina de programación.

El proyecto de titulación consiste en implementar un programa tutorial

que simplifica funciones booleanas utilizando el método Quine-McCIuskey. El

Page 7: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

procedimiento de simplificación de las funciones booleanas puede realizarse

paso a paso o directamente.

El ingreso de datos se puede hacer de dos formas: mediante una tabla

de combinaciones o utilizando un editor de mintérminos.

En este trabajo se incluye un resumen de los comandos y sentencias

utilizadas en Visual Basic para la programación. Además, se explica todo el

proceso de diseño del programa de simplificación.

Page 8: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

VI

PRESENTACIÓN

Hoy en día el diseño electrónico no solo se limita a los elementos

analógicos, para poder obtener resultados confiables, rápidos y económicos, es

conveniente diseñar circuitos electrónicos utilizando chips de compuertas

lógicas; para esto es necesario transformar el problema a una función

booleana, y luego simplificarla, para que el número de compuertas utilizadas

sea lo mínimo posible.

La simplificación se la hace rápidamente utilizando el método de Quine-

McCIuskey ya que este proceso sirve para cualquier número de variables de

entrada.

En el Capitulo 1 se hace una introducción de los sistemas digitales y su

relación con los sistemas analógicos, una reseña histórica de la álgebra de

Boole, las ecuaciones booleanas, funciones lógicas básicas y las tablas de

verdad.

En el Capitulo 2 se explican los diferentes métodos que existen para

simplificar las funciones booleanas; tanto como álgebra de Boole, mapa de

Karnaugh y el método de Quine-McCIuskey, además se hace una comparación

de los mismos; también se explica la implementación de las funciones

booleanas.

En el Capitulo 3 se da una descripción rápida de los formularios,

comandos y sentencias utilizadas en Visual Basic; Además, se explica el

proceso de diseño del programa tutorial y de simplificación; además se

presentan los resultados de algunas pruebas realizadas.

Finalmente, en el Capitulo 4 se encuentran los comentarios, sugerencias

y conclusiones sobre este trabajo.

Page 9: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

CAPITULO 1

INTRODUCCIÓN

1.1.- INTRODUCCIÓN.

El avance de la Tecnología y la necesidad de realizar tareas de una forma

automática, han llevado a desarrollar circuitos integrados que se pueden usar con

facilidad, estos circuitos se denominan compuertas lógicas, que están disponibles

en cápsulas de circuitos integrados.

Un sistema de automatización o de comunicaciones está diseñado utilizando

muchas de estas compuertas, para lo cual se deben desarrollar "tablas de

verdad", en las que se indica el estado de la salida para cada combinación de las

entradas, la implementación de estos sistemas requiere que el circuito esté

simplificado para que el costo de elementos sea el menor posible y así construir

un sistema fácil de implementar.

La simplificación de la tabla de verdad asociada al sistema que está

diseñándose, se puede hacer mediante varios métodos cuya eficiencia depende

de la cantidad de entradas y la habilidad de la persona que está simplificando, el

proceso de simplificación manual es demasiado tedioso, poco confiable y lleva

mucho tiempo, lo cual impide que el diseñador se dedique a otras cosas más

importantes y productivas, por esta razón se ha pensado en el desarrollo de este

trabajo.

El resultado de la simplificación de la tabla se denomina función booleana la

cual es una relación lógica entre todas las entradas combinadas por medio de

operadores lógicos.

El presente trabajo consiste en desarrollar un programa que indique el

proceso detallado de simplificación de las tablas de verdad utilizando el método

tabular de Quine-McCIuskey de una manera didáctica, ordenada y comprensiva,

Page 10: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

hasta obtener la función booleana simplificada, este programa debe ser capaz de

indicar paso por paso todos los detalles de la simplificación, para lograr una

comprensión de este método.

Para obtener un programa con las características descritas en el párrafo

anterior, se utilizó el programa Visual Basic, que permite el fácil manejo de

formularios, comando y menús estandarizados de Windows.

En la Carrera de Ingeniería en Electrónica y Telecomunicaciones no existe

un programa de este tipo para ayudar a la enseñanza de la simplificación de

funciones booleanas utilizando este método, este proyecto servirá para que los

alumnos de Sistemas Digitales comprendan con mayor facilidad el método tabular

de Quine-McCIuskey, y para los diseñadores de sistemas digitales permitirá

simplificar las funciones booleanas asociadas a sus diseños de una manera

rápida y segura,

SISTEMAS ANALÓGICOS Y SISTEMAS DIGITALES.

Representación Analógica.- Es una cantidad que se representa por medio de

otra cantidad directamente proporcional, es decir es una variación totalmente

continua, ya que puede variar gradualmente sobre un intervalo continuo de

valores.

Sistema Analógico.- Es un dispositivo que trabaja con magnitudes netamente

analógicas o de variación continua.

Representación Digital.- Es una cantidad que se representa por medio de

dígitos los cuales son cantidades discretas de valores a pesar de que la magnitud

a la que representa sea continua u analógica.

Sistema Digital.- Es un sistema que trabaja con información discreta, estos

sistemas pueden ser electrónicos, mecánicos, o magnéticos.

Page 11: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Un sistema digital tiene muchas ventajas sobre un sistema analógico.

- Mayor facilidad de diseñar con Circuitos Integrados.

- Facilidad para almacenar la información.

- Más exactitud y precisión.

- Flexibilidad para implementar los diseños.

- Es un sistema casi inmune al ruido.

- Tiene un alto grado de integración.

- Facilidad de programación para la operación.

1.2. -ÁLGEBRA DE BOOLE.

1.2.1. -RESEÑA HISTÓRICA

"El concepto de variable lógica fue introducido en 1850 a través del uso

del álgebra booleana. El álgebra booleana es un método muy sencillo para

expresar situaciones, en forma de lenguaje matemático. La lógica digital adquiere

su dimensión práctica a través de las compuertas y se consolida como una

ciencia estructurada mediante el álgebra booleana. Sus principios teóricos fueron

desarrollados por el matemático ingles George Boole en su obra "Análisis

matemático de la lógica" publicada en 1847. Sin embargo, sólo hasta 1938 se

descubrió su real utilidad".

"En este año, Claude E. Shannon, estudiante de postgrado del MIT

(Instituto Tecnológico de Massachusetts, EE.UU) presentó un trabajo en el cual

describía como el álgebra booleana se adaptaba perfectamente a la

representación y al diseño de circuitos de conmutación, basados en relés e

interruptores".

"Con el advenimiento de los tubos de vacío, los transistores y los circuitos

integrados y la fabricación de compuertas, circuitos y sistemas digitales con estas

tecnologías, el álgebra booleana adquirió un papel determinante en el desarrollo

de la electrónica digital moderna y sus aplicaciones".

Page 12: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

"El álgebra booleana proporciona el método más compacto y conveniente de

representar, analizar y diseñar circuitos lógicos. La operación completa de un

circuito digital se puede describir mejor por el álgebra booleana que utilizando

complicados diagramas lógicos y extensas tablas de verdad".

"Cuando se diseña un circuito por métodos booleanos, el primer paso

consiste generalmente en obtener su tabla de verdad de acuerdo con las

condiciones de entrada y de salida. A partir de esta tabla se deriva entonces una

ecuación booleana que se simplifica y conduce al circuito lógico deseado. El

circuito obtenido por este método es el óptimo porque requiere de un número

mínimo de compuertas para su realización. Esto reduce el costo, el tamaño físico

y el consumo de potencia del mismo y mejora su confiabilidad y velocidad. Todas

estas consideraciones son importantes cuando se diseñan circuitos digitales".1

El álgebra de Boole es un conjunto de elementos y operadores que ayudan

en el diseño de circuitos combinacionales, los axiomas y teoremas que utiliza el

álgebra de Boole ayudan a la simplificación de las funciones booleanas. Todas las

operaciones del álgebra de Boole actúan sobre dos elementos básicos 1 y O que

representan verdad o falsedad, físicamente estos dos estados se pueden

representar como O lógico (un nivel entre Ov -- 0.8 v), y 1 lógico (un nivel de 2.5v -

5v). En la figura 1.1 se representan los niveles lógicos, en función del voltaje.

VOLTAJE

v

2.5

0.8Vxi

lógico 1 lógico NIVEL

Fig. 1.1: Niveles de voltaje para cada valor lógico

1 http://pehuen.chiUan.ubiobio.cl/-lgaiardo/odc/algebra/

Page 13: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Como se puede ver en la figura 1.1 Vx es el rango de voltaje analógico

prohibido, es decir que para representar un 1 lógico o un O lógico no debe existir

un voltaje en este rango.

La utilización de variables que trabajan con dos valores, la desarrolló

Shannon, usando algunas ideas que habían sido expresadas anteriormente por el

matemático inglés George Boole.

Las variables booleanas no toman valores cuantitativos, pero pueden

usarse para representar información cuantitativa.

Para trabajar con variables booleanas, se utilizan operadores similares a

los del álgebra común. A estos operadores booleanos comúnmente se los conoce

como conectivos lógicos.

El álgebra de Boole, como cualquier otro sistema matemático puede ser

definida por un conjunto de elementos, un conjunto de operadores, y un número

de axiomas o postulados.

En 1938 Shannon introdujo una álgebra de Boole de dos valores llamada

álgebra de conmutación en la cual él demostró que las propiedades de los

circuitos de conmutación eléctrica biestables pueden ser representadas por esta

álgebra.

El álgebra de Boole es una estructura algebraica definida para un conjunto

de elementos B juntamente con dos conectivos binarios +(or) y .(and) de tal forma

que cumplan con las siguientes propiedades.

1. (a) Conjunto cerrado con respecto al conectivo +

(b) Conjunto cerrado con respecto al conectivo.

Page 14: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

2. (a) Un elemento de identidad con respecto a + designado por el 0:

x+0=0+x=x.

(b) Un elemento de identidad con respecto a . designado por el 1:

x.1=1.x=x.

3 (a) Conmutativo con respecto a +: x + y = y + x

(b) Conmutativo con respecto a .: x. y = y. x

4 (a). Es distributivo sobre +: x.(y + z) = (x. y) + (x. z).

(b) + es distributivo sobre .: x + (y. z) = (x+ y). (x+ z).

5 Para cada elemento xeB, existe un elemento x'eB (llamado el

complemento de x) tal que: (a) x+ x' = 1 y (b) x. x' = 0.

6 Existen al menos dos elementos x, y e B tales que x *y.

Al comparar el álgebra de Boole con la aritmética y el álgebra ordinaria se notan

las siguientes diferencias:

1. Los postulados no incluyen la ley asociativa. Sin embargo esta ley es válida

para el álgebra de Boole y puede deducirse de otros postulados.

2. La ley distributiva de + sobre . , es decir, x+ (y. z) = (x+ y).(x+ z) es valida

para el álgebra de Boole pero no para e! álgebra ordinaria.

3. El álgebra de Boole no tiene inversos aditivos o multiplicativos y por tanto

no hay operaciones de sustracción o división.

4. La propiedad 5 define un operador llamado complemento el cual no está

disponible en el álgebra ordinaria.

Page 15: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

5. El álgebra ordinaria trata con los números reales, los cuales constituyen un

conjunto infinito de elementos. El álgebra de Boole trata con los elementos

del conjunto B, que es un conjunto de solamente dos elementos, O y 1.

El álgebra de Boole se asemeja al álgebra ordinaria en algunos aspectos;

escoger los símbolos + y . es intencional con el fin de facilitar las manipulaciones

con álgebra de Boole por parte de personas familiarizadas con el álgebra

ordinaria. Aunque no se puede usar algunos conocimientos debe ser muy

cuidadoso de no sustituir las reglas del álgebra ordinaria donde no sean

aplicables.

Es muy importante distinguir entre los elementos del conjunto de una

estructura algebraica y las variables de una sistema algebraico, por ejemplo, los

elementos del campo de los números reales son números, mientras que las

variables a, b, c, etc. usadas en el álgebra ordinaria son símbolos que se

establecen para los números reales. Similarmente en el álgebra de Boole se

definen los elementos de un conjunto B y las variables, tales que x, y, z sean

simplemente símbolos que representen los elementos. A estas alturas es

importante darse cuenta que para tener una álgebra de Boole se debe demostrar:

1. Los elementos del conjunto B.

2. Las reglas de operación de los dos operadores binarios, y

3. Que el conjunto de elementos B, juntamente con los dos conectivos,

satisfagan los seis postulados.

1.2.2. -ECUACIONES BOOLEANAS Y FUNCIONES LÓGICAS BÁSICAS.

Las funciones lógicas tienen analogía con los interruptores, debido a una

concepción histórica, ya que antes de la invención de los dispositivos de estado

sólido y de los circuitos integrados, las funciones lógicas se construyeron con

relés electromecánicos (relevadores), y las primeras computadoras tenían miles

de estos dispositivos interconectados mediante conjuntos de alambres.

Page 16: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

A continuación se definen algunos términos que servirán para estructurar

una función booleana.

Proposición.- Planteamiento de un teorema o de un problema que se debe

resolver.

Conectivo.- Son los operadores del álgebra de Boole, similares a los del

álgebra común, y representan a los circuitos digitales más fundamentales.

Variable booleana.- Las variables booleanas solo pueden tomar dos

valores lógicos "O" o "1". En un circuito lógico, una variable booleana puede

representar presencia o ausencia de voltaje.

Las ecuaciones booleanas tienen las siguientes características básicas:

1. Cada ecuación tiene la forma F = f (A, B, C) donde F, A, B, C, etc.

son variables booleanas.

2. Todas las variables son variables lógicas, caracterizadas por tener

sólo dos posibles valores: VERDADERO o FALSO, ALTO o BAJO, 1

o O, etc.

3. Las variables lógicas están relacionadas con las ecuaciones

mediante operadores lógicos o conectivos: EQUIVALENCIA

LÓGICA, AND, OR e INVERSIÓN LÓGICA.

Las operaciones básicas del álgebra de Boole son las siguientes.

1) Complementaron.- Cambia el valor de verdad de una proposición,

se representa con el símbolo"-" sobre la variable, o con un apostrofe

delante de la variable (A1); la compuerta asociada a esta operación

se denomina "NOT"; la tabla y su símbolo lógico son los siguientes.

Page 17: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

2) Conjunción. - Es una operación de producto lógico. Se lo representa

con el punto o con la ausencia de este. ("A.B"); esta operación se la

realiza con la compuerta "AND", su símbolo lógico y tabla son los

siguientes.

r=A.BA B0 00 11 01 1

A.B0001

3)

4)

Disyunción.- Es equivalente a la operación suma lógica y se

representa con "A+B"; la compuerta asociada a esta operación se

denomina "OR". A continuación se muestra su símbolo lógico y su

tabla de verdad.

1>A+B

Disyunción exclusiva.- Esta operación es una variante de la

operación disyunción y se lee "XOR"; se representa como "A®B".

Basándose en estas cuatro operaciones básicas se genera la función

booleana simplificada a partir de la tabla de verdad asociada a cada diseño

combinacional.

Page 18: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

10

Las compuertas AND, OR y XOR tienen otras variantes, que no son más

que, a las compuertas antes mencionadas, añadir a la salida la compuerta NOT,

obteniéndose como resultado las compuertas NAND, ÑOR y XNOR. Las salidas

de estas compuertas son por lo tanto de un valor de verdad contrario ai valor de

verdad origina! de las compuertas.

NAND

ÑOR

A

B

XNOR

. Y = ( A . B ) '

f = ( A + B ) '

XAÍ

A B0 00 11 01 1

A.B0001

(A.B)'1110

AB00011 01 1

A+B0111

(A+B)11000

AB00011 01 1

A®B0110

(A®B)'1001

Todas las compuertas antes mencionadas se las puede reemplazar

únicamente con compuertas NAND o únicamente con compuertas ÑOR, a esta

característica se denomina universalidad de las compuertas NAND, o

universalidad de las compuertas ÑOR respectivamente, así por ejemplo.

UNIVERSALIDAD DE LAS NAND.

a) NOT. A'=(A.A)'.

Page 19: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

11

b) AND. A.B=((A.B)')'

c) OR. A+B=(A')'+(B')' = (A'.B1)'

"-•

UNIVERSALIDAD DE LAS ÑOR.

a) NOT. A'=(A+A)'.

b)AND. A.B=(A'+B')'

A->:

B-S

={A' .B1

( B . B ¡

(=(A+A) '

(A+A) '

Y = { A ' + B I )

(B+B) f

c) OR. A+B=((A+B)')'

O Y = { ( ñ + B ) ' ) '

A continuación se definen algunos términos que se usan en álgebra

booleana:

Literal.- Es una variable o su complemento (A, A', B, B', etc.)

Término Producto.- Es una serie de literales relacionados con la compuerta

AND, ej. AB'D, ACD'E', etc.

Término Suma.- Es una serie de literales relacionados con la compuerta

OR, ej. A+C+D', A+B+D'+E, etc.

Page 20: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

12

Término normal.- Es un término producto o un termino suma en el cual

ninguna variable aparece más de una vez.

1.2.3. -TABLA DE VERDAD.

Una tabla de verdad sirve para representar simbólicamente una función

lógica. Todas las posibles combinaciones de los valores de la variable de entrada

se presentan en una tabla y, para cada combinación única de entradas, los

valores de la variable de salida se listan en una columna separada asignada a

cada una de las variables. De este modo, la tabla de verdad constituye una

especificación completa de la lógica combinacional que se va a diseñar. En

muchos casos, la construcción de una tabla de verdad a partir de la especificación

del problema puede ser muy difícil, por lo tanto, el proceso que se implante en

lógica debe ser estudiado en detalle, hasta que se comprendan sus

características.

FORMAS ESTÁNDAR DE LAS FUNCIONES BOOLEANAS.- Es posible

describir una función booleana mediante tablas de verdad en la que se indiquen

los valores de la salida para todas y cada una de las combinaciones de las

entradas, también es posible escribir una función booleana en forma de una

ecuación boofeana; esta ecuación booleana está compuesta por la suma de

productos; en este caso se denomina suma de mintérminos, también se puede

escribir por el producto de las sumas, en este caso se dice es un producto de

maxtérminos.

En el siguiente capitulo se hace una profundización de cómo obtener la

suma de productos (SOP) o producto de sumas (POS).

Page 21: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

13

CAPITULO 2.

SIMPLIFICACIÓN DE FUNCIONES BOOLEANAS.

2.1 FUNCIONES BOOLEANAS

Una variable binaria puede tomar el valor O o 1. Una función de Boole es

una expresión formada con variables binarias, los conectivos OR, AND y NOT y el

paréntesis. Para un valor dado de variables, la función puede ser O o 1.

Una función de Boole puede ser representada por medio de la tabla de

verdad, para hacerlo se necesitan 2n combinaciones de unos y ceros de las n

variables binarias, donde n es el número de variables de entrada de la función.

Por ejemplo, si la función tiene 3 variables de entrada, entonces se necesitan 23

= 8 combinaciones. En otra columna se ponen los valores de la función, es decir

el valor que tiene la salida de este sistema 1 o O para cada una de las

combinaciones en las entradas.

Las combinaciones de unos y ceros se pueden obtener fácilmente para

cada fifa de los números binarios contando desde O a 2n-1. Para cada fila de la

tabla, hay un valor para la función igual a 1 o 0.

Las funciones booleanas se pueden transformar de una expresión

algebraica en un diagrama lógico compuesto por compuertas AND, OR y NOT. Se

necesita una compuerta AND para combinar dos o más variables en un término y

una compuerta OR para combinar 2 o más términos.

Page 22: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

14

2.1.1 DEDUCCIÓN DE ECUACIONES BOOLEANAS A PARTIR DE UNA

TABLA DE VERDAD

Consideremos la siguiente tabla de verdad:

0123456789101112131415

A0000000011111111

B0000111100001111

c0011001100110011

D0101010101010101

Y0000000100010110

Mintérmino m?

Mintérminomn

Mintérmino mi3Mintérmino mu

A continuación se detalla la forma de obtener la ecuación lógica (función

lógica) que se representa o se sintetiza en forma de suma de mintérminos o

suma de términos mínimos.

El primer paso es identificar las filas o combinaciones de entrada que

producen como resultado un 1 a la salida. En nuestro caso, esto es aplicable a

las filas 7, 11, 13 y 14. A continuación, se observa en cada fila los valores que

toma cada variable de entrada. Si una variable determinada vale O, se

reemplaza mentalmente por su complemento (A't B1, C1, D1). Si la variable vale

1, se deja tal como estaba, es decir, sin complementar (A, B, C, D). En la

siguiente tabla se ilustra este paso:

Page 23: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

15

7111314

A0111

B1011

e1101

&1110

1 -v *

1111

7111314

AA1

AAA

£..„

BB'BB

CccC1

c

oDDDD1

% 11111

Seguidamente, se asigna a la salida de cada fila una expresión

booleana equivalente a la operación AND de las variables de entrada

representadas de esta forma. En la siguiente tabla se ilustra este paso:

7111314

*£•0111

¿PL1011

;"<**

1

1

01

^Bt.jf ^1110

y^J^tWff?' :flt$3 *'rt¿T5

A'BCDAB'CDABC'DABCD'

Mintérmino m7

Mintérmino muMintérmino m13

Mintérmino mu

Cada una de estas ecuaciones es un mintérmino. por ejemplo, el

mintérmino asociado a la fila 13 es:

ini3 = ABC'D

A partir de estos datos se puede escribir la ecuación booleana como

una suma de mintérminos. En nuestro caso:

Y ™ m? •+• rn-M+ mía + m-u

Reemplazando cada mintérmino por su expresión booleana

correspondiente, se obtiene la ecuación solicitada:

Y = A'BCD + AB'CD + ABC'D + ABCD1

Esta expresión se denomina SOP (Suma de productos).

Page 24: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

16

A este tipo de ecuación booleana, en la que en cada término están

presentes todas las variables de entrada, en su forma normal o en su forma

complementada, se la denomina forma estándar o forma canónica disyuntiva.

La misma tabla o función booleana se puede representar como un producto

de sumas o maxtérminps.

Consideremos la misma tabla de verdad de la sección anterior:

0123456789101112131415

-*V0000000011111111

fj0000111100001111

! #';.0011001100110011

;-sjjf£

0101010101010101

k-.y ,

0000000100010110

Maxtérmino MOMaxtérmino MiMaxtérmino M2Maxtérmino MaMaxtérmino M4

Maxtérmino MsMaxtérmino M6

Maxtérmino MaMaxtérmino MgMaxtérmino Mío

Maxtérmino Mi2

Maxtérmino Mi 5

A continuación se detalla la forma de obtener la ecuación lógica (función

lógica) que la describe o sintetiza en forma de producto de maxtérminos o

términos máximos.

El primer paso es identificar las filas o combinaciones de entrada que

producen como resultado un O a la salida. En nuestro caso, esto es aplicable a

las filas O, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 y 15. A continuación, se observa en cada

fila los valores que toma cada variable de entrada. Si una variable determinada

vale 1, se reemplaza mentalmente por su complemento (A1, Bf, C1, D'). Si la

Page 25: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

17

variable vale O, se deja tal como estaba, es decir, sin negar (A, B, C, D). En la

siguiente tabla se ilustra este paso:

012345689101215

A000000011111

B000011100011

c001100100101

o010101001001

Y000000000000

012345689101215

AAAAAAAAA'A'A'A1

A'

BBBBBB'B'B'BBBB'B'

CCcC'C'ccC'ccC'cC'

DDD'DD'DD'DDD'DDD'

Y000000000000

Seguidamente, se asigna a la salida de cada fila una expresión

booleana equivalente a la operación OR de las variables de entrada

representadas de esta forma. En la siguiente tabla se ilustra este paso:

Page 26: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

18

012345689101215

A

000000011111

-vp¿000011100011

c001100100101

D

010101001001

Y^Mo* jtf-m?itfM4* M5* M6* M8* M9*

Miü*Mi2*Mi5A+B+C+DA+B+C+D'A+B+C'+DA+B+C'+D'A+B'+C+DA+B'+C+D'A+B'+C'+DA'+B+C+DA'+B+C+D'A'+B+C'+DA'+B'+C+DA'+B'+C'+D'

Maxtérmíno M0

Maxtérmino MIMaxtérmino M2Maxtérmino M3

Maxtérmino M4

Maxtérmino M5

Maxtérmino MeMaxtérmino M8

Maxtérmino M9

Maxtérmino M-|0Maxtérmino Mi2Maxtérmino Mi5

Cada una de estas ecuaciones es un maxtérmino. por ejemplo, el

maxtérmino asociado a la fila 12 es:

Mi2 = A'+B'+C+D

A partir de estos datos se puede escribir la ecuación booleana como un

producto de Maxtérminos. En nuestro caso:

Y=M0* Mi* M2* M3* M4* M5* M6* M8* M9* M10* Mi2* Mi5

Reemplazando cada maxtérmino por su expresión booleana

correspondiente, se obtiene la ecuación solicitada:

Y = (A+B+C+D)(A+B+C+D')(A+B+C'+D') (A+B'+C+D) (A+B'+C+D1)

(A+B'+C'+D) (A'+B+C+D) (A'+B+C+D1) (A'+B+C'+D) (A'+B'+C+D)

(A'+B'+C'+D')

A esta expresión también se la conoce como una función POS (Producto

de sumas).

A esta forma de la ecuación booleana también se llama forma

estándar o forma canónica conjuntiva.

Page 27: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

19

Cualquiera de las dos formas canónicas obtenidas para las

ecuaciones booleanas resulta demasiado costosa y difícil de implantar, por esta

razón es necesario simplificar estas funciones. En la siguiente sección se

detallará cada uno de los pasos que se seguirán para simplificar una ecuación

booleana a una forma más sencilla para poder implementarla con mayor facilidad.

2.1.2 TABLA DE VERDAD A PARTIR DE UNA ECUACIÓN BOOLEANA

Una tabla de verdad sirve para visualizar de mejor manera las salidas

que tiene una función con todas y cada una de las entradas, la tabla se

construye con un número de filas igual a 2n; donde n es el número de variables

de entrada

Asi por ejemplo:

F<A,B,C>=A*B'*C+A'*OB*C

Esta función tiene 3 variables de entrada A, B y C por lo tanto la tabla

tendrá 8 filas = 23.

Las salidas dependen de cada uno de los términos de la función, es

decir:

Debido al término A*B'*C, cuando las entradas tienen la combinación

101 tendrán una salida 1, con el término A'C indica que cuando las entradas

tienen la combinación 0X1 tendrán una salida 1 y el término B*C indica que

cuando las entradas tienen la combinación X11 la salida es un 1. El resto de

combinaciones tendrán una salida igual a 0.

Estas combinaciones y la tabla resultante se puede observar en la

siguiente tabla:

Page 28: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

20

A B C0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1

A*B'*C00000100

A'*C01010000

B*C00010001

F<A, B, C,>01010101

Page 29: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

21

2.2. MÉTODOS DE SIMPLIFICACIÓN.

Para implementar una función booieana mediante un diagrama lógico se lo

puede hacer a partir de la función obtenida de la tabla de verdad, pero la forma

óptima de hacerlo es a partir de una función simplificada. El diagrama lógico de

una función sin simplificar tiene más elementos que el diagrama lógico de una

función simplificada. Provocando que sea más costoso, además de complejo.

Existen 3 métodos para simplificar una expresión algebraica:

• Simplificación algebraica a través de teoremas o método del Algebra de

Boole.

• Método gráfico de Mapas de Karnaugh

• Método tabular de Quine-McCIuskey

2.2.1 MÉTODO DEL ÁLGEBRA DE BOOLE.

Dentro del Álgebra de Boole se define algunos axiomas y teoremas que

pueden ser aplicados a las funciones booleanas para su simplificación. Los

teoremas son los siguientes.

1. - Una variable solo puede tomar 1 de 2 valores: [O, 1]

a) A = O cuando A * 1.

b) A= 1 cuando A *0.

2. - Si A es la entrada a un inversor su salida es A'.

a) Sí A = O luego A' = 1

b) Sí A = 1 luego A' = O

3. -La suma lógica representa una Unión mientras que un producto una

Intersección

a) A + B; A U B suma lógica.

0 + 0 = 0

Page 30: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

22

0 + 1 = 1

1 + 0 = 1

1 + 1 = 1

b) A. B; AnB producto lógico

0.0 = 0

0.1 =0

1.0 = 0

1.1 = 1

4. -Identidad.

A + 0 = A A.1=A

5. -Elementos Nulos.

A+1 = 1 A.0 = 0

6. -Idempotencia.

A + A = A A.A = A

7. -Involución.

(A')1 = A.

8. -Complementos.

A + A' = 1 A.AJ = O

9. -Ley Conmutativa

A+B = B+A A.B = B.A

10. -Ley Asociativa.

(A + B) + C = A + (B + C) (A.B). C = A. (B.C)

11.-Ley Distributiva.

A.B + A.C = A (B + C) A + B.C = (A + B)(A + C).

Page 31: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

23

12.-Cobertura

A + A.B = A A. (A+B) = A

13.-Combinación.

AB + AB1 = A (A + B)(A + B') = A.

14.-Consenso

AB + A'C + BC = AB + A'C (A + B)(A' + C)(B + C) = (A + B)(A' + C)

15. -TEOREMA DE DeMorgan

A + B = A B

ÁB = Á + B

A + B + C+ + N=A. B. C N

A. B. C N = A + B + C+.... + N

16. -TEOREMA DE SHANNON. (Expansión).

F(X,X2, ,Xn) = XiF(1,X2,X3, ,Xn)-0<iF(0,X2,X3, -Xn)

F(X1X2, ,Xn)= [Xi+F(0,X2,X3, ,Xn)].[Xi+F(1,X2,X3, Xn)]

La primera expresión sirve para la suma de productos, mientras que la

segunda expresión sirve para producto de sumas.

Así por ejemplo:

F = xy + x'z + yz.

F = xy + x'z +yz(x+x'). Teorema del complemento.

= xy + x'z + xyz + x'yz Distributiva.

= (xy+xyz) + (x'z + x'yz) Asociativa.

= xy(1+z) + x'z(1+y) Distributiva.

= xy + x'z Elementos nulos.

Page 32: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

24

Si comparamos la función original tiene 3 términos mientras que la función

simplificada tiene únicamente 2 términos, lo cual implica menos compuertas.

Cuando se utiliza este método no existe un solo camino sino que depende

de la habilidad de la persona que está simplificando para aplicar las propiedades.

2.2.2 MÉTODO DEL MAPA DE KARNAUGH.

El proceso del álgebra de Boole se relaciona directamente con la

complejidad de la función booleana, este método no tiene reglas específicas para

predecir cada paso a seguir. El mapa de Karnaugh es un método simple y directo

para simplificar la función booleana, y que puede ser tratado no solamente en

forma de una tabla de verdad, sino como una extensión del diagrama de Venn.

Este método fue propuesto por Veitch y modificado por Karnaugh, por esta razón

se lo conoce como el método de Karnaugh o de Veitch.

El mapa de Karnaugh es una tabla en la que cada cuadrado representa un

mintérmino. Como cualquier función de Boole puede ser expresada como una

suma de mintérminos, se puede concluir que dicha función se reconoce

gráficamente en un mapa a partir del área encerrada por aquellos cuadros en los

que están los "1" como parte de la función, de hecho, el mapa representa un

diagrama visual de todas fas formas posibles en que puede ser expresada una

función en la forma normalizada; al reconocer varios patrones, el usuario puede

derivar expresiones algebraicas alternas para la misma función de las cuales se

puede escoger la más simple. Se asume que la expresión algebraica más simple

es aquella en la que la suma de productos o producto de sumas que tiene el

mínimo número de literales.

Un mapa de Karnaugh o mapa K es una tabla de verdad modificada que

se utiliza para simplificar ecuaciones Booleanas y diseñar circuitos lógicos de

manera sistemática. Los mapas K aprovechan la capacidad del cerebro humano

Page 33: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

25

de trabajar mejor con patrones gráficos que con ecuaciones y otras formas de

expresión analítica.

Externamente un mapa de Karnaugh consiste de una serie de cuadrados,

cada uno de los cuales representa una línea de la tabla de verdad. Puesto que la

tabla de verdad de una función de N variables posee 2N filas, el mapa K

correspondiente debe poseer también 2N cuadrados. Cada cuadrado alberga un O

o un 1, dependiendo del valor que toma la función en cada fila.

Este método se basa en dos teoremas básicos del Algebra de Boole, estos

son los siguientes.

í) XY + X'Y = Y.

íi) X + X'Y = X + Y.

A este método también se denomina mapa K y se puede trabajar a partir de

mintérminos y o maxtérminos.

El mapa de Karnaugh es un método gráfico que se utiliza para simplificar

una ecuación lógica, para convertir una tabla de verdad a su circuito lógico

correspondiente en un proceso simple y ordenado.

Este método se puede aplicar para cualquier cantidad de entradas aunque

su utilidad práctica se limita a un máximo de seis variables de entrada.

Formato del mapa de Karnaugh.

Cada casilla del mapa K corresponde a una salida de cada combinación de

la tabla de verdad, es decir contiene la misma información que en la tabla de

verdad pero en diferente formato.

Por ejemplo:

Page 34: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Para 2 variable -> 22 = 4 filas

26

A0011

B0101

XX0

XiX2

X3

En el mapa existen 22 = 4 cuadrados.

B'

Para tres variables. 23 = 8 filas.

A00001111

B00110011

c01010101

XXoXiX2

X3

X4

X5

X6

X7

En el mapa 23 = 8 cuadrados.

C'

Page 35: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

27

Para cuatro variables. -> 24 = 16 filas.

A0000000011111111

B0000111100001111

c0011001100110011

D0101010101010101

XXoXTX2

X3

X4

X5

X6

X7

X8

X9

XioXnXi2

Xl3

Xu

Xis

En el mapa 24 = 16 cuadrados.

C'D' C'D CD CD'A'B'A'BABAB'

X0

X4

X-I2

X8

XiX5

Xl3

X9

X3

X7

Xis

Xn

X2

X6

Xl4

Xio

Los cuadrados del mapa K se marcan, de tal forma que los cuadrados

horizontalmente adyacentes solo difieran en una variable. Por ejemplo, el

cuadrado Xo del mapa de cuatro variables es A'B'C'D', mientras tanto que el

cuadrado Xi es A'B'C'D entre estos dos estados únicamente la variable D es

diferente. De la misma manera los cuadrados verticalmente adyacentes difieren

en una sola variable. Por ejemplo, el cuadrado Xo es A'B'C'D' mientras tanto que

el X4 es A'BC'D' en este caso solo la variable B es diferente.

Los cuadrados del renglón superior (X0, Xi, Xa, Xa) se consideran

adyacentes a los cuadrados del renglón inferior (Xg, X9, Xn, XIQ). Así mismo los

Page 36: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

28

cuadrados del extremo derecho (X0, X4, Xi2, Xa) se consideran adyacentes a los

cuadrados del extremo izquierdo (X2, Xe, X14,

Para que los cuadrados adyacentes difieran en una sola variable el

marcado de arriba hacia abajo debe estar en el orden A'B', A'B, AB y AB', de la

misma forma de izquierda a la derecha en la parte superior de la tabla. Por

ejemplo:

Para tres variables:

A00001111

B00110011

c01010101

X11100010

De acuerdo a la tabla de verdad la función será.

X = A'B'C1 + A'B'C + A'BC1 + ABC1.

La misma información en el mapa de Karnaugh es:

Page 37: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

29

Para cuatro variables:

A0000000011111111

B0000111100001111

c0011001100110011

D0101010101010101

X0011000010100000

La función correspondiente para esta tabla es:

X = A'B'CD' + A'B'CD + AB'C'D' + AB'CD'.

Representando en el mapa de Karnaugh.

C'D' C'D CD CD1

A'B'A'BABAB'

0001

0000

1000

1001

Agrupamiento.- La expresión de salida X se puede simplificar

adecuadamente combinando los cuadros en el mapa K que contengan 1. El

proceso para combinar estos unos se denomina agrupamiento.

Agrupamiento de grupos de dos.- Es el agrupamiento que se realiza

entre un par de cuadros adyacentes verticalmente u horizontalmente que

contengan 1 de tal manera que se logra eliminar la variable que está en forma

Page 38: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

30

normal en el un cuadrado, y complementada en el otro cuadrado. "El

agrupamiento de un par de unos adyacentes en un mapa K elimina la variable que

aparece en forma complementada y no complementada". A este grupo se

denomina pares.

Agrupamiento de grupos de cuatro.- A este grupo se denomina

cuádruples y se forma con cuatro unos que están en cuadrados adyacentes.

Cuando se forman grupos cuádruples se eliminan dos variables las cuales están

en forma normal y en forma complementada.

Agrupamiento de grupos de ocho.- Estos grupos están formados por

ocho unos que se encuentran en cuadrados adyacentes, a este grupo se

denomina octeto, cuando se forman grupos de 8 se logran eliminar las 3 variables

que se encuentran complementadas y no complementadas.

Proceso completo de simplificación.- Para simplificar una función

booleana se debe tomar en cuenta que mientras más grande es el agrupamiento

más cantidad de variables se eliminan así, si el grupo es de 2 unos entonces se

elimina una variable, si el grupo es de 4 unos se eliminan 2 variables, si es un

octeto se eliminan 3 variables, etc... El proceso es el siguiente.

1. Construcción del mapa K. Ubicando los unos en los cuadrados que indican la

tabla de verdad y ceros en los otros cuadrados.

2. Examinar el mapa y ver los cuadrados que tienen un "1" pero con cuadrados

adyacentes diferentes a "1" a estos se llaman unos aislados, ya que no se

agrupan con ningún otro cuadrado que tenga un "1".

3. Identificar los cuadrados que pueden combinarse con otro de una sola

manera. Se señala estos grupos de dos cuadrados. Los cuadrados que

pueden combinarse con grupos de dos más de una manera, se omiten de

momento.

Page 39: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

31

4. Identificar los cuadrados que puedan combinarse con otros tres de una sola

forma. Si todos los grupos de cuatro así obtenidos no están ya incluidos en

grupos de dos, señalarlos. De nuevo, se omiten los cuadrados que pueden

combinarse con grupos de cuatro, más de una manera.

5. Agrupar cualquier octeto aunque algunos de los cuadrados que tiene unos ya

estén agrupados.

6. Bajo el mismo criterio hacer grupos de 2' cuadrados, donde i = O, 1, 2, 3,...

7. Aplicando el procedimiento anterior, si aún quedan cuadrados sin agrupar,

pueden combinarse con otros, ya agrupados o no, arbitrariamente, tratando de

incluirlos en el menor número de grupos posibles.

8. Se escribe la suma OR de todos los términos generados por cada

agrupamiento.

A continuación un ejemplo para entender mejor estos pasos:

A0000000011111111

B0000111100001111

c0011001100110011

D0101010101010101

X0010010100010101

Page 40: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

32

Construimos el mapa K.

A'B'A'BABAB'

C'D' C'D CD CQ'0000

0

^_0

0

^JJ¿\y(U000

El cuadrado X2 es el único que contiene un 1 que no es adyacente a ningún

otro cuadrado que contiene 1. Está marcado con rojo. De este agrupamiento se

obtiene el término A'B'CD1, no se elimina ninguna variable ya que es un uno

aislado.

El cuadrado Xn es adyacente solo al cuadrado X15, entre estos dos se

forma un par, está marcado con color verde. De este agrupamiento se forma el

término ACD ya que se elimina B.

Los cuadrados X5, X7j Xi3 y Xis forman un cuádruple, están encerrados con

azul, de este agrupamiento se obtiene el término BD y se eliminan las variables A

yC.

Note que el cuadrado X15 se repite tanto en el par como en el cuádruple.

Todos los cuadrados que contienen unos ya han sido agrupados.

Se obtiene la función simplificada como suma lógica de los términos

obtenidos.

X=A'B'CD'+ACD

Page 41: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

33

2.2.3 MÉTODO QUINE-McCLÜSKEY.

2.2.3.1 Representación cúbica de las funciones de Boole.

Es conveniente introducir una nueva representación de las funciones

booleanas la cual proporcionará una terminología conveniente para el método de

Quine-McCIuskey.

Una variable de conmutación que puede asumir solo dos valores, se puede

representar mediante dos puntos en los extremos de un solo segmento.

0. A 1Fig 2.1: Representación de una variable de conmutación.

Los cuatro valores posibles de dos variables de conmutación se pueden

representar mediante los cuatro vértices de un cuadrado.

Con tres variables de conmutación existen 8 combinaciones y la

representación gráfica lo podemos hacer en los vértices de un cubo.

0 A 1 001 A 101

o ooox-" ¡ ior>^) 00 A 10

B B B

B

II

B ¡

_ **

• — — — 3-*

B

111

^1 oro A 110 ff c

1 01 A 11 o. A

Fig 2.2: Representación de 2 y 3 variables de conmutación

Page 42: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

34

La extensión a más de tres variables, se requieren figuras de más de tres

dimensiones, es geométricamente difícil, pero bastante sencilla desde el punto de

vista conceptual.

En general las diferentes combinaciones posibles de n variables se

representan como puntos en el espacio - n, y todos los 2n puntos posibles forman

los vértices de un cubo - n o un hipercubo de Boole.

Para representar una función determinada se dibuja el hipercubo, se

marcan con un punto los vértices que corresponden a una combinación que

produce un "1" en fa función.

La representación de funciones booleanas en el cubo - n se realiza

estableciendo una correspondencia uno a uno entre los mintérminos de n -

variables y los vértices del cubo n. de la siguiente manera. En un cubo - 3, el

vértice 000 corresponde a mo, el vértice 001 es mi, etc. La representación cúbica

de una función de n variables consta, entonces, del conjunto de vértices de un

cubo - n, correspondientes a los mintérminos de la función. Por ejemplo.

F(A,B,C) = Zm<0, 2, 3, 7).

Esta función se representa en el cubo - 3, como se indica en la siguiente

figura.

00m r

Im3 j0111 _1

00.m

oxo11m7

010m2

010m2

Im3011

01X

Cubos - O Cubos - 1

Fig. 2.3: Representación de un cubo-3

m7

Page 43: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

35

Los vértices correspondientes a mO, m2, m3, y m7 se indican por medio de

puntos negro. Estos vértices se denominan cubos - O de la función.

Dos cubos - O forman un cubo - 1, si difieren solo en una coordenada en el

ejemplo anterior se tiene tres cubos - 1, que están marcados en rojo, (01X, 0X0,

X11), los cubos - 1 se designan colocando una "X" en la coordenada que tienen

diferentes valores.

Un conjunto de cuatro cubos O, cuyos valores de coordenada son iguales

en todas las variables excepto en dos, forma un cubo - 2 que se representa

gráficamente como un plano sombreado.

Cubos - 2

Fig. 2.4: Representación de un cubo - 2

Cuando todos los vértices de un cubo - k está en el conjunto de

vértices que componen un cubo - k mayor, se dice que el cubo más pequeño está

contenido en/o cubierto por el cubo mayor.

Resumiendo, un cubo - O se representa con un punto, un cubo - 1 se

representa con un segmento, un cubo - 2 con un plano, un cubo 3 con un

volumen, para un cubo - k en espacios - n mayores que 4 no hay representación

geométrica, pero el principio de agrupación de productos fundamentales es el

mismo.

Page 44: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

36

Entre la representación cúbica y el mapa de Kamaugh existe una

correspondencia, Los cubos - O corresponden a los cuadrados del mapa K, los

cubos - 1 corresponden a los pares de cuadrados adyacentes, los cubos - 2

corresponden a los cuádruples de cuatro cuadrados adyacentes, etc.

2.2.3.2 Obtención de los implicantes primos.

Definición. - "Un implicante primo es cualquier cubo de una función que no

esté totalmente contenido en otro cubo mayor de dicha función".

El método de Quine-McCIuskey es un procedimiento organizado

ingeniosamente para efectuar una búsqueda exhaustiva de todas las

combinaciones posibles de cubos - O en cubos mayores y, luego, seleccionar la

combinación mínima de cubos requerida para realizar la función.

El punto de partida de este método es la lista de mintérminos de la función.

Ejemplo 1. f(A, B, C, D) = Im(0, 2, 3, 6, 7, 8, 9, 10, 13)

MINTÉRMINO

0123456789101112131415

COMBINACIONESA B C D0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1

NUMERO DE "UNOS"

0112122312232334

FUNCIÓN

1011001111100100

Page 45: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

37

En la tabla de productos fundamentales de la función, se dispone de la

representación binaria de las combinaciones de las variables de entrada, ya que

se ha definido que se consideran lógicamente adyacentes dos términos cuyas

combinaciones de variables son idénticas excepto en una sola de ellas, se halla

que una de las condiciones es que el número de "UNOS" en las representaciones

binarias difieran solo en una unidad.

Se separan únicamente los mintérminos que tienen un "UNO" asignado a la

función, y se los ordena de acuerdo al número de "UNOS" existentes en las

combinaciones de entrada, se separan los mintérminos en grupos con el mismo

número de unos por medio de las lineas horizontales. "Este agolpamiento de los

mintérminos se hace para reducir la cantidad de comparaciones que se deben

efectuar para determinar los cubos UNO".

VVVVVVVVV

monri2m8

1113m6

iTlg

mío

m7

mis

COMBINACIÓNA B C D0 0 0 00 0 1 01 0 0 00 0 1 10 1 1 01 0 0 11 0 1 0

0 1 1 11 1 0 1

#de"UNOS"

01

2

3

Se compara las combinaciones de cada grupo con las combinaciones del

grupo siguiente, si existe una variable diferente entre las dos combinaciones que

se están comparando entonces se reemplaza como una sola poniendo en el lugar

que está la variable diferente con una X anotando el mintérmino que se combina.

A los términos originales que se combinan se coloca una marca, por ejemplo "V".

También se debe anotar los números enteros correspondientes a los

mintérminos que se combinaron. En el caso de nuestro ejemplo mo se combina

con m2 para formar el cubo - 1 (XOOO) esta combinación es equivalente a la

operación algebraica A'B'C'D' + A'B'CD' = A'B'D'(C + CJ) = A'B'D'.

Page 46: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

38

El mintérmino m0 se combina también con ms para formar el cubo - 1

(XOOO). Esto completa la comparación entre los mintérminos de los dos primeros

grupos, de manera que se traza una línea por debajo de los cubos - 1 resultantes.

A continuación, se comparan en la misma forma los mintérminos del segundo y

tercer grupos. Esta comparación produce cinco cubos - 1 más, formados de rr}2 y

ms, ms y mg, etc. Se traza una recta debajo de estos cinco cubos 1 para indicar la

terminación de las comparaciones entre el segundo y tercer grupos. Cada

mintérmino de un grupo se debe comparar con cada mintérmino del otro grupo,

incluso si cualquiera o ambos ya han sido marcados, y han formado un cubo - 1 ,

se debe encontrar cada cubo - 1 .

Este proceso de comparación se repite entre los grupos sucesivos hasta

que se agote la lista de mintérminos.

Cubo 10,20,82,32,62, 108,98, 103,76,79, 13

00X0XOOO001 X0X10X010100X10X00X1101 1X1X01

VVVVV

VVV

Una vez obtenida esta tabla se debe seguir el mismo proceso para obtener

la tabla de cubos 2, pero aquí interviene un nuevo elemento como es la X.

Nuevamente, los cubos de cada grupo se deben comparar sólo con los cubos del

siguiente grupo hacia abajo. En el ejemplo nuestro el cubo - 1 (0,2) se combina

con el cubo -1 (8,10) y se obtienen el cubo 2 (O, 2, 8, 10) (XOXO), los dos cubos -

1 usados se marcan para indicar que se han usado para formar cubos - 2.

Una explicación algebraica de esta combinación es la siguiente.

Page 47: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

39

mO + m2 + m8 + m10 = A'B'C'D1 + A'B'CD' + AB'C'D' + AB'CD'

= A'B'D'(C + C') + AB'D'(C+ C1)

= A'B'D' + AB'D'

=B'D'(AÍ + A)

=B'D'.

Al comparar el cubo - 1 (0,8) con el cubo -1 (2,10) también se obtiene el

cubo - 2 (O, 2, 8, 10) (XOXO), el cual ya existe en la tabla de cubos 2.

Luego de comparar todos y cada uno de los cubos - 1 se obtiene la

siguiente tabla.

Cubo -20, 2, 8, 102, 3, 6, 7

XOXOOX1X

Este proceso se sigue hasta cuando ya no existan elementos que se

puedan combinar siendo esta tabla la de los cubos de mayor orden.

Existen combinaciones que no están marcadas razón por la cual no están

en cubos de mayor orden, a estas combinaciones se denominan implicantes

primos.

Un mintérmino que no se combina para formar cubos de mayor orden

también se debe considerar como parte de los implicantes primos.

Para el ejemplo anterior, la tabla de cubos - 2 tiene elementos que no se

pueden combinar entre sí para formar cubos - 3 es decir que todos estos son los

implicantes primos, también en la tabla de los cubos - 1 existe algunas

combinaciones que no se combinaron para formar cubos - 2, estos términos

también forman parte de los implicantes primos.

Page 48: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

40

IMPLICANTES PRIMOS

1 O O X1 X 0 1X O X OO X 1 X

2.2.3.3 Selección de un conjunto óptimo de implicantes primos.

No todos los términos de la tabla de implicantes primos forman parte de la

solución ya que pueden tener varias soluciones y se debe escoger la que

contenga menos mintérminos. Para lograr encontrar los términos adecuados se

hace una tabla en la que en la fila se encuentran los términos originales y en la

columna estarán los implicantes primos. En el cruce de una fila y una columna se

coloca una marca si ese termino está contenido en el implicante primo.

Para el ejemplo anterior la tabla será:

*

*

*

1 0 0 X1 X 0 1X 0 X 0-n y 1 y -

0

yv

2

•J•^'

1

V

3

Jy

V

6

JV

V

7

^V

8V

, /1

V

9yT í

V

10

V

V

13

•\

V

Basándose en esta tabla se encuentra los implicantes primos esenciales de

la siguiente manera.

Buscamos en cada una de las columnas dónde se encuentra una

sola marca.

Page 49: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

41

ii) El implicante primo que se encuentra en esta fila se considera como

un implicante primo esencial.

iii) Toda la fila se elimina para indicar que ya ha sido tomada en cuenta

iv) Las columnas en las que se encuentran las señales eliminadas

también se eliminan.

v) Se forma la tabla de implicantes primos esenciales.

IMPLICANTES PRIMOS ESENCIALES

X O X OO X 1 X1 X 0 1

vi) A continuación se escoge una de las señales en las columnas en las

que se encuentran 2 señales y se eliminan las columnas y filas con

el mismo criterio anterior. Pero en nuestro ejemplo no existen

columnas sobrantes con dos o más marcas, por esta razón la

solución es única.

La solución entonces es:

XOXO -> B'D'

OX1X -^ A'C

1X01 ->AC'D.

F(A, B, C, D) = A'C + AC'D + B'D'.

Ejemplo 2.

F(A, B, C, D, E) = Smíl, 2, 3, 5, 9, 10, 11, 18, 19, 20, 21, 23, 25, 26, 27).

Page 50: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

42

TABLA DE COMBINACIONES.

Mintér-minos

miTf\2

mamsm9

míomumismi9m2om2im23m25m2em27

Forma BinariaA B C D E0 0 0 0 10 0 0 1 00 0 0 1 10 0 1 0 10 1 0 0 10 1 0 1 00 1 0 1 11 0 0 1 01 0 0 1 11 0 1 0 01 0 1 0 11 0 1 1 11 1 0 0 11 1 0 1 01 1 0 1 1

No. del's

112222323234334

CUBOS - 0VVVVVVVVVVVVVVV

12359101820

1119212526

2327

0 0 0 0 10 0 0 1 00 0 0 1 10 0 1 0 10 1 0 0 10 1 0 1 01 0 0 1 01 0 1 0 0

0 1 0 1 11 0 0 1 11 0 1 0 11 1 0 0 11 1 0 1 0

1 0 1 1 11 1 0 1 1

No. 1 's1

2

3

4

Page 51: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

43

V

VVVVVV

VVVVv

vV

VV

CUBOS - 11,31,51,92,3

2, 102, 18

3,113, 195,219,119,2510, 1110,2618, 1918,2620,2111,2719,2319,2721,2325,2726,27

000X100X010X0010001 X0X010X0010

0X011X0011X0101010X1X10010101XX10101001X1X0101010XX101110X111X011101X1110X11101X

VVVV

VV

Cubos - 21,3,9,11

2,3, 10, 112,3, 18, 19

2, 10, 18,26

3, 11, 19,279, 11,25,2710, 11,26,2718, 19,26,27

0X0X1OX01XX001XXX010

XX011X10X1X101X1X01X

2, 3, 10, 11,Cubos18, 19,

-326, 27 XX01X

IMPLICANTES PRIMOS1,5

5,2120,2119,2321,23

1,3,9, 119, 11,25,27

2,3, 10, 11, 18. 19,26,27

00X01X01011010X10X11101X10X0X1X10X1XX01X

Page 52: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

44

TABLA DE REDUCCIÓN DE LOS IMPLICANTES PRIMOS.

*

*

*

00X01X0101- — J — ,»,

1010X"10X11101X10X0X1X10X1-vYrn Y/v/xU ly\

V

V

2

_ /V

V

3

|

^V

5VV

9

\lt l1

V

10

-/f

V

11

V^/fJV

-\l

18

„ /**V

19

"

_

f

/

V

20

"N

V

21

V

V

V

23

VV

25

•Jí

V

26

_ /1

V

27

VjV

V

IMPLICANTES PRIMOS ESCENCIALES

X10X1 -» BC'E

XX01X C'D.

Una vez que tenemos los implicantes primos esenciales, ya tenemos una

parte de fa función simplificada ahora tendremos que ver los implicantes primos

secundarios que tienen menor costo, es decir, que tienen menos variables en el

término.

Teorema: 'Sean a y b dos términos implicantes primos de una tabla

reducida de tal manera que el costo de a sea menor o igual al costo de b.

Entonces, si a domina a b o si a y b son intercambiables existe una suma mínima

de productos que no incluye a b.

Utilizamos los implicantes que no se han tomado en cuenta como

implicantes primos esenciales, con las columnas que no han sido eliminadas de la

tabla de simplificación de los implicantes primos para buscar los implicantes

primos secundarios.

Page 53: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

45

00X01X010110X11101X10X0X1

1V

V

5VV

23

VV

El implicante primo 00X01 cubre el mintérmino mi y el mintérmino m5

mientras que el implicante primo X0101 cubre únicamente al mintérmino m5 entre

estos dos el que tiene menos costo es el 00X01, luego el implicante 10X11 y

101X1 ambos cubren únicamente al mintérmino m2s tomamos cualquiera de los

dos

*

*

00X01 J

10X110X0X1

1/

-

i

VV

5i

V

V

23

/V

V

IMPLICANTES PRIMOS SECUNDARIOS

00X01 -> A'B'D'E

10X11 -* AB'DE.

Como se puede observar existen implicantes primos esenciales y

secundarios, la función resultante simplificada es la operación OR de todos estos

implicantes.

F(A, B, C, D, E) = AB'CD' + BC'E + C'D + A'B'D'E + AB'DE.

Page 54: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

46

Ejemplo 3.

F(A, B,C) = Sm(1,4(6,7).

MINTÉRMINO

01234567

COMBINACIONESA B C0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1

NUMERO DE "1S"

01121223

FUNCIÓN

01001011

Tabla de cubos O

mirrum6

m7

COMBINACIÓNA B C0 0 11 0 01 1 01 1 1

número de"UNOS"

1

23

M

VVV

Tabla de cubos -1

Combinaciones

4, 6

6, 7

Cubos 1

1 X 0

1 1 X

M

IMPLICANTES PRIMOS

011

0X1

10X

Page 55: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

47

TABLA DE IMPLICANTES

IMPLICANTES PRIMOS ESENCIALES

0 O 11 X O1 1 X

FUNCIÓN RESULTANTE

En el ejemplo anterior solamente existen implicantes primos esenciales y

no existen implicantes primos secundarios por esta razón existe una única

solución.

2.2.4 FUNCIONES INCOMPLETAMENTE ESPECIFICADAS.

Recordemos que una función de conmutación es especificada en la tabla

de verdad en la que se indica una lista de valores para las 2n combinaciones

posibles para una función de n variables. Los diseños consisten en resolver un

problema o una descripción que por lo general es verbal de un trabajo lógico

traduciendo en una tabla de verdad, para luego buscar una función específica que

satisfaga esta tabla de verdad y un costo mínimo.

En algunas ocasiones el circuito que se diseña es un sistema en el que

ciertas combinaciones no influyen en el funcionamiento del sistema, es decir que

no importa para la salida de este sistema cuando estas combinaciones de

Page 56: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

48

entradas sea "O" o "1". Otra posibilidad es que algunas combinaciones de las

entradas nunca suceden debido a restricciones externas del sistema que se va a

diseñar.

Cuando sucede cualquiera de las situaciones antes descritas se dice que la

función es no especificada. Este tipo de salidas se indica en la función como una

salida "X" en lugar de poner un "O" o un "1". Estas condiciones se las conoce

como opcionales y se dice que las funciones están incompletamente

especificadas. La realización de una función incompletamente especificada es

cualquier circuito que produce las mismas salidas para todas las combinaciones

de entrada para las cuales se especifica la salida

Es conveniente tener una forma algebraica compacta para indicar una

función incompletamente especificada. Para lo cual se usa la suma de los

mintérminos mas una suma de términos no especificados. Ejemplo una función no

especificada es:

F(A, B, C) = Im<4, 5) + d(0, 6, 7).

Esta función indica que los mintérminos m4 y m5 tienen como salida "1"

mientras que los mintérminos mo, me y m7 tienen como salida no especificada.

Representando esto en la tabla de verdad queda.

A00001111

B00110011

C01010101

F(A, B, C)X00011XX

Para simplificar las funciones incompletamente especificadas es más

practico usar el método del mapa de Karnaugh ya que en este mapa se toma a

Page 57: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

49

las salidas no especificadas como "1" o "O" de acuerdo como produzca un grupo

de mayor cantidad de cuadros, con el objeto de tener una función más

simplificada posible.

1

En este caso los mintérmino me y m? se tomaron como "1" mientras que el

mintérmino m0 se le tomo como riO" ya que con estas consideraciones se obtienen

un grupo de más cuadros es decir la mínima simplificación.

F(A,B)=A

2.2.5 COMPARACIÓN DE LOS MÉTODOS DE SIMPLIFICACIÓN.

- El método del álgebra de Boole es complicado cuando se tienen funciones con

muchas variables de entrada mientras que el método de mapa de Karnaugh

es un método directo y simple sin importar la cantidad de mintérminos.

- En el método del álgebra de Boole se necesita que la persona que está

simplificando la función tenga habilidad para aplicar los axiomas apropiados ya

que no existe una regla que especifique cual axioma se debe aplicar con

certeza; mientras que los métodos tanto del mapa de Karnaugh como el

método de Quine-McCIuskey son métodos mecánicos y con proceso fijo lo

cual se puede decir con precisión cual método seguir en el siguiente paso.

- El método del mapa Karnaugh es un método muy rápido, mientras el método

de Quine-McCIuskey es más elaborado por lo tanto más largo.

Page 58: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

50

Cuando existen más de cuatro variables el método del mapa de Karnaugh es

dudoso su seguridad mientras que el método de Quine-McCIuskey es seguro y

confiable.

Cuando son cuatro variables o menos el método del mapa de Karnaugh es

mucho más confiable ya que el método de Quine-McCIuskey es más largo.

El método del mapa de Karnaugh no es un iterativo lo cual dificulta la

posibilidad de implementar un programa computacional, mientras que el

método de Quine-McCIuskey utiliza una técnica iterativa lo cual facilita la

Implementación de un programa computacional para su uso y así lograr

simplificar funciones de muchas variables de entrada.

Page 59: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

51

23 IMPLEMENTACION DE LAS FUNCIONES BOOLEANAS

SIMPLIFICADAS.

Una vez simplificada la ecuación correspondiente a la función obtenida

para resolver el problema planteado, se debe implementarlo para su

funcionamiento, es decir construir el hardware necesario para que cumpla el

objetivo y realice el trabajo planteado en el problema.

Para construir este hardware se utilizan las compuertas lógicas relacionas

con cada una de las operaciones existentes en la función simplificada.

En el primer ejemplo se tiene.

Y = A'C + AC'D + B'D'.

En esta expresión observamos que tanto las entradas A, B, C, y D están

complementadas es decir que se necesitan pasar por compuertas NOT para

obtener A', B1, C1 y D'.

Para obtener el primer término A'C es necesario las salidas de A' y C

ingresarlas por una compuerta AND de dos entradas, entonces a la salida de la

compuerta AND se obtendrá el valor correspondiente a la expresión A'C.

De la misma manera obtendremos el valor correspondiente al término AC'D

para lo cual la variable A, la salida de C' y la variable D en forma directa se

ingresan a una compuerta AND de tres entradas, o a dos compuertas AND de 2

entradas, y a la salida de cualquiera de estas compuertas se obtendrá AC'D.

Para obtener B'D' igualmente en una compuerta AND se ingresa la salida

de B1 y la salida de D' en forma directa y se obtiene el valor correspondiente de

B'D'.

Page 60: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

52

Las tres salidas de las tres compuertas AND antes descritas se deben

ingresar a una compuerta OR de tres entradas para obtener la respuesta final.

Todo esto se resume en el siguiente gráfico del esquemático

correspondiente al circuito de la función dada.

ni 'C

Y=A1C+AC'D+B'D'

£>«BU-IJo.B'D'

Fig. 2.5: Circuito Esquemático de la función Simplificada

Para implementar este esquemático se necesita los siguientes chips:

- Un chip 7404 el cual contiene 6 compuertas NOT.

- Un chip 7408 el cual contiene 4 compuertas AND.

- Un chip 7432 el cual contiene 4 compuertas OR.

Como se puede observar únicamente con tres circuitos integrados se

puede construir el sistema planteado con la función booleana del ejemplo.

Page 61: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

53

CAPITULO 3

DISEÑO DEL PROGRAMA COMPUTACIONAL PARA

SIMPLIFICAR FUNCIONES BOOLEANAS.

3.1. INTRODUCCIÓN.

Para simplificar las funciones booleanas utilizando un computador, es

necesario programar el proceso de simplificación paso a paso, en un lenguaje que

permita presentar una interfaz gráfica, amigable, llamativa y fácil de usar, esto

permitirá entender el proceso de Simplificación de Quine-McKIusky.

El programa que se diseñará tendrá una sección teórica en la que se

explica todo el proceso de simplificación de funciones booleanas utilizando ei

método de Quine-McKIusky paso a paso.

Existe otra sección en la que se presenta un tutorial de cómo utilizar el

programa de simplificación explicando cada una de las partes y objetos

existentes en este programa diseñado.

La tercera sección de este software, es un programa que sirve para

simplificar funciones booleanas de hasta 10 entradas, el programa realiza el

proceso de simplificación utilizando el método de Quine-McKIusky paso a paso

presentando cada uno de los cubos hasta obtener los implicantes primos, luego

indica la tabla de simplificación o de selección de los implicantes primos

esenciales, a continuación realiza una optimización de los implicantes primos

secundarios de menor costo, y por ultimo presenta la función totalmente

simplificada.

Este programa también permite guardar la tabla de combinaciones para

que sea utilizada en otro momento.

Page 62: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

54

El ingreso de los datos se los puede hacer directamente en la tabla de

combinaciones o por medio de un editor de mintérminos.

El software diseñado funciona en cualquier computador que tenga el

sistema operativo Windows 95 o superior.

El desarrollo de este software se lo hace utilizando el lenguaje de

programación Visual Basic 6.0 ya que este lenguaje permite programar cualquier

aplicación bajo Windows.

A continuación se hace una descripción de los más importantes objetos de

Visual Basic usados para realizar la aplicación descrita anteriormente.

3.1.1. BREVE DESCRIPCIÓN DEL USO DE FORMULARIOS DE VISUAL

BASIC.

Un formulario en Visual Basic es un objeto en el que se presenta toda la

información, en este objeto se pone los controles los cuadros de texto para el

ingreso de datos, gráficos, listas de datos, comandos, tablas etc.

Fig. 3.1: Formulario usado en VisualBasic.

Page 63: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

55

Cuando se ejecuta el programa muestra únicamente el formulario que está

definido como formulario inicial, para mostrar los demás formularios hay que

escribir el código respectivo.

Un formulario al igual que todos los objetos de Visual Basic responden a

eventos que se generan durante la ejecución del programa. Hay cuatro métodos

para trabajar con los formularios.

Show.- Como su nombre indica, el método Show muestra el formulario en

la pantalla, y lo pasa al primer plano del escritorio si está cubierto por otro

formulario. Para ello, cuando use el método Show, Visual Basic comprueba

primero que el formulario está cargado en la memoria, si no lo está, lo carga. La

sintaxis básica de método Show es

/VombreFomru/arío.Show

Load.- La palabra Load carga el formulario en la memoria pero no lo

presenta. Visual Basic carga también el formulario en la memoria siempre que se

haga referencia a sus propiedades o controles en el código. Por esto, la razón

principal para cargar un formulario antes de mostrarlo es disminuir el tiempo de

respuesta, a cambio se emplea más memoria, ya que Visual Basic tiene que

reservar memoria suficiente para el formulario. La sintaxis es

Load NombreFormularío.

Cuando Visual Basic carga un formulario, restaura en todas las

propiedades del mismo los valores definidos inicialmente al diseñarlo, y luego

llama al procedimiento de evento Form_Load.

Hide.- La palabra Hide retira el formulario de la pantalla, pero no lo

descarga de la memoria, los controles no están af alcance del usuario, pero puede

seguir haciendo referencia a ellos en el código. Los valores de fas variables al

nivel de formulario no desaparecen, igual que al cargar el formulario, la ocultación

Page 64: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

56

del formulario aumenta la velocidad si va a necesitarlo de nuevo, pero a cambio

de seguir usando la memoria para guardarlo. La sintaxis es

NombreFormulario. Hide

Unload.- Esta palabra borra el formulario de la memoria es decir tiene el

mismo efecto que pulsar el botón de salida o pulsar dos veces en el cuadro de

control en la parte izquierda de la barra de titulo, se pierde toda la información

contenida en sus variables al nivel de formulario. La sintaxis es

Unload NombreFormulario

Cuando se carga, descarga y vuelve a cargar un formulario, siempre

activará el evento Form_Load, pero la única llamada al método Load que activa el

evento Initialize es la primera.

3.1.2. CONTROLES DE VISUAL BASIC

Antes de empezar a conocer los controles básicos veamos cuales son sus

características generales:

Propiedades.- Todos los controles disponen de una serie de propiedades

las cuales se puede cambiar al incluirlos en nuestras aplicaciones; ejemplos de

propiedades son el color, el tipo de letra, el nombre, el texto, etc...

Métodos.- Son procedimientos asociados a los controles, es decir, rutinas

ya establecidas que podemos invocar desde nuestras aplicaciones para que se

realice alguna operación sobre el control.

Eventos.- Son acciones que pueden ser motivadas por el propio usuario o

por mismo sistema operativo. Ejemplos pueden ser el movimiento del ratón o

hacer click sobre su botón. En Visual Basic se puede decir que se utiliza la

programación orientada a eventos, lo cual es una de las diferencias más

importantes respecto a la programación lineal de MS DOS. No necesitamos

Page 65: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

57

detectar cuando se ha producido un evento determinado, Windows lo detecta

automáticamente. Los eventos ya están definidos, son bastantes y cada control

cuenta con los suyos propios, aunque son muy parecidos, lo único que se tiene

que hacer es asociar el código necesario al evento que necesitemos tratar.

3.1.2.1 TextBox

Fig. 3.2: Objeto TextBox

Mediante este control se puede realizar tanto la entrada como la salida de

datos en nuestras aplicaciones.

No hace falta indicar las coordenadas de la situación del formulario en

pantalla, simplemente se tiene que marcar sobre el control de la caja de

herramientas y dibujarlo con el tamaño deseado en el formulario.

Propiedades:

Las propiedades de las que dispone el control son las siguientes

Text: Aquí se indica el texto que aparecerá en el control. Podemos

asignarle cualquier texto en tiempo de diseño o ejecución. También podemos

tomar el texto que haya introducido el usuario para tratarlo durante la ejecución.

Ñame: Esta propiedad tiene todos los controles, el nombre que viene por

defecto en este caso Textl y es el nombre con el que se conocerá el control

cuando lo utilicemos en el código. En un mismo formulario no puede haber 2

controles con el mismo nombre. Conviene poner un nombre que represente la

función que tiene el control en la aplicación para que el código quede más claro.

MultiLine: Permite introducir varias líneas de texto en el control en lugar de

sólo una.

Page 66: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Alignment: Es la alineación que tendrá el texto dentro del control: izquierda,

centro o derecha. Para que funcione la propiedad MultiLine debe estar con el

valor true.

Locked: Si está con valor true bloquea el control, es decir, el usuario no

puede introducir ni modificar el texto que contenga. Nos puede servir para utilizar

el control como salida de datos sin que el usuario pueda modificarlos por error.

Otras propiedades que son comunes a la mayoría de los controles:

Backcolor: color de fondo.

Forecolor: color de letra.

Font: tipo y tamaño de letra.

Métodos

Recordemos que por métodos se entienden los procedimientos o funciones

asociados a un control, los cuales nos permiten realizar ciertas operaciones útiles

sobre dicho control: Ej. Ordenar sus elementos, buscar un dato, etc...

Eventos:

Los eventos son acciones que se pueden realizar en cualquier control:

click, doble click, movimiento del ratón. A estos eventos se les puede asociar

código para que se ejecute al producir el evento.

MouseMove: Al mover el ratón por encima del control.

MouseDown: Al pulsar cualquier botón del ratón.

Page 67: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

59

Change: Al cambiar el contenido del control.

Click: Al hacer click con el botón izquierdo del ratón sobre el control.

DoubleClick: Al hacer doble click con el botón izquierdo del ratón sobre el

control.

GetFocus: Este evento se activa cuando el control recibe el enfoque, es

decir, cuando se activa el control en tiempo de ejecución para introducir datos en

él o realizar alguna operación.

LostFocus: Es el contrario del anterior evento, se activa cuando el control

pierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.

3.1.2.2 Labe!.

Fig. 3.3: Objeto Label

Este control es también uno de los más utilizados, aunque su utilidad

queda restringida a la visualización de datos en el mismo, no permitiendo la

introducción de datos por parte del usuario.

La forma de utilizarlo es similar a la del control anterior, dibujar el control en

el formulario con el tamaño que queramos y asignarle un texto en tiempo de

diseño o de ejecución esta vez sin utilizar la propiedad text puesto que no la

incorpora, sino utilizando la propiedad Caption.

Este control sirve para mostrar mensajes en nuestro formulario que

orienten al usuario sobre la utilidad de los demás controles que tengamos en la

aplicación o para indicarnos acciones que podemos realizar.

Page 68: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

60

Propiedades

Caption: Es el texto que contendrá el control.

Alignment: Alineación del texto contenido en el control, no necesita que

esté activada ninguna otra propiedad.

BorderStyle: Si queremos que aparezca un borde alrededor del control

activaremos esta propiedad.

Para este control no se suelen utilizar los eventos ya que su contenido

suele cambiar poco a lo largo de la ejecución de la aplicación. De todas formas

los eventos son casi los mismos del control textbox excepto que no dispone de los

eventos GetFocus y LostFocus ya que a este control no se le puede dar el

enfoque.

3.1.2.3. CommandButton

Fig. 3.4: Objeto CommandButton.

Este control es el típico botón que aparece en todas las aplicaciones y que

al hacer click sobre él nos permite realizar alguna operación concreta,

normalmente Aceptar o Cancelar. Aunque según el código que le asociemos

podremos realizar las operaciones que queramos.

Pero sólo con introducir un control de este tipo con el texto salir que se

introduce a través de la propiedad Caption no basta. Habrá que asociarle un

código que nos permita salir de la aplicación en el evento adecuado. Y el evento

por excelencia de este control es click. Así pues accederemos al código del

control y la sentencia que nos permitirá salir de la aplicación es End, simplemente

Page 69: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

61

tecleamos esa palabra en el evento click y comprobar que realmente

finalizaremos nuestra aplicación al pulsar sobre dicho botón.

Propiedades

Gaption: Aquí se pone el letrero que queremos que aparezca en el botón:

aceptar, cancelar, salir, etc...

Enabled: Esta es una nueva propiedad, cuando su valor es true el botón

funciona normalmente, cuando su valor es false el botón se encuentra

desactivado, no responde a los eventos producidos sobre él y el texto aparece en

un gris claro advirtiéndonos de su estado. Podemos utilizar esta propiedad para

activar o desactivar un botón dependiendo del estado de otros controles.

Eventos

Click: Es el evento típico de este control y el que más se utiliza.

MouseMove: Como sabemos detecta el movimiento del ratón sobre el

control. Puede servir para que aparezca un mensaje en un control Label que nos

aporte información sobre la utilidad del control ampliando el texto que hayamos

colocado como Caption del CommandButton.

3.1.3. BREVE DESCRIPCIÓN DEL USO DE COMANDOS Y SENTENCIAS EN

VISUAL BASIC.

3.1.3.1. Fundamentos de la Programación

Cada módulo de formulario contiene procedimientos de evento (secciones

de código donde se colocan las instrucciones que se ejecutarán como respuesta a

Page 70: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

62

eventos específicos). Los formularios contienen controles, por cada control de un

formulario, existe el correspondiente conjunto de procedimientos de evento en el

módulo de formulario; además de procedimientos de evento, los módulos de

formulario pueden contener procedimientos generales que se ejecutan como

respuesta a una llamada desde cualquier procedimiento de evento.

El código que no esté relacionado con un control o un formulario específico

se puede colocar en un tipo diferente de módulo, un módulo estándar (. bas). Se

deben colocar en un módulo estándar los procedimientos que se puedan utilizar

como respuesta a eventos de diversos objetos, en lugar de duplicar el código en

los procedimientos de evento de cada objeto.

¿Cómo Funciona una Aplicación controlada por Eventos?

Un evento es una acción reconocida por un formulario o un control. Las

aplicaciones controladas por eventos ejecutan código Basic como respuesta a un

evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos

predefinido. Si se produce uno de dichos eventos y el procedimiento de evento

asociado tiene código, Visual Basic llama a ese código.

Aunque los objetos de Visual Basic reconocen automáticamente un

conjunto predefinido de eventos, se decide cuándo y cómo se responderá a un

evento determinado. A cada evento le corresponde una sección de código que se

denomina procedimiento de evento, cuando se desea que un control responda a

un evento, se escribe el código en el procedimiento de ese evento.

Los tipos de eventos reconocidos por un objeto varían, pero muchos tipos

son comunes a la mayoría de los controles, por ejemplo, la mayoría de los objetos

reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el

código del procedimiento de evento Click del formulario; si un usuario hace clic en

un botón de comando, se ejecuta el código del procedimiento de evento Click del

botón, el código en cada caso será diferente.

Page 71: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

63

Aquí una secuencia típica de eventos en una aplicación controlada por

eventos:

• Se inicia la aplicación y se carga(LOAD) y muestra(SHOW) el formulario

inicial.

• El formulario (o un control del formulario) recibe un evento. El evento puede

estar causado por el usuario (por ejemplo, por la pulsación de una tecla) o

por el sistema (por ejemplo, un evento de cronómetro) o, de forma indirecta

por el código (por ejemplo un evento Load cuando el código carga un

formulario).

• Si hay código en el procedimiento de evento correspondiente, se ejecuta.

La aplicación espera al evento siguiente.

3.1.3.2. Variables.

3.1.3.2.1. Alcances de las Variables

El alcance de una variable define qué partes del código conocen de su

existencia; cuando se declara una variable en un procedimiento, sólo el código de

dicho procedimiento puede tener acceso o modificar el valor de la variable, tiene

un alcance que es local al procedimiento.

A veces, sin embargo se necesita utilizar una variable con un alcance más

general, como aquella cuyo valor está disponible para todos los procedimientos

del mismo módulo o incluso para todos los procedimientos de toda la aplicación;

Visual Basic fe permite especificar el alcance de una variable cuando la declara.

3.1.3.2.2. Establecimiento del Alcance de las Variables

Page 72: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

64

Dependiendo de cómo se declara, una variable tiene como alcance un

procedimiento (local) o un módulo.

Alcance

Nivel deprocedimiento

Nivel de módulo

Privado

Las variables son privadasdel procedimiento en el queaparecen.Las variables son privadasdel módulo en el queaparecen.

Público

No es aplicable. No puededeclarar variables públicasdentro de un procedimiento.

Las variables están disponiblespara todos los módulos.

3.1.3.2.3. Variables Utilizadas en un Procedimiento

Las variables al nivel de procedimiento sólo se reconocen en el

procedimiento en el que se han declarado. Se las conoce también como variables

locales. Se declaran mediante las palabras clave Dim o Static. Por ejemplo:

Dim col As Integer

- o bien -

Static col As Integer

Los valores de variables locales declaradas con Static existen mientras se

ejecuta la aplicación, mientras que las variables declaradas con Dim sólo existen

mientras se ejecuta el procedimiento.

Las variables locales resultan una elección apropiada para cálculos

temporales. Por ejemplo, puede crear una docena de procedimientos distintos que

contengan una variable llamada col, como cada col se ha declarado como una

variable local, cada procedimiento sólo reconoce su propia versión de col.

Cualquier procedimiento puede alterar el valor de su col local sin que ello

afecte a las variables col de los demás procedimientos.

3.1.3.2.4. Variables Utilizadas en un Módulo

Page 73: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

65

De forma predeterminada, una variable al nivel de módulo está disponible

para todos los procedimientos del módulo, pero no para el código de otros

módulos. Se crea variables al nivel de módulo declarándolas con la palabra clave

Prívate en la sección Declaraciones al principio del módulo. Por ejemplo:

Prívate col As Integer

Al nivel de módulo, no hay diferencia entre Prívate y Dim, pero es preferible

Prívate porque contrasta con Public y hace que el código sea más fácil de

comprender.

3.1.3.2.5. Variables utilizadas por todos los Módulos

Para hacer que una variable al nivel de módulo esté disponible para otros

módulos, se utiliza la palabra clave Public para declarar la variable. Los valores de

las variables públicas están disponibles para todos los procedimientos de la

aplicación.

Al igual que todas las variables al nivel de módulo, las variables públicas se

declaran en la sección Declaraciones al principio del módulo. Por ejemplo:

Public col As Integer

A/o se puede declarar variables públicas en un procedimiento, sólo en la

sección Declaraciones de un módulo.

3.1.3.2.6. Declaración de Variables

La forma de declarar las variables es la siguiente:

Dim \ | Static nombre_varíable As tipo

Dim: Al declarar una variable con esta palabra estamos diciendo que la

variable sea local al ámbito en que se declara; puede ser dentro de un

Page 74: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

66

procedimiento o dentro de un formulario, de esta forma no sería accesible desde

los demás procedimientos o formularios.

Public: Las variables declaradas serán publicas y podrán estar accesibles

desde todos los formularios de la aplicación. Para conseguirlo tendremos que

declararlas en un módulo de código, no en la sección declarations de cualquier

formulario de los que conste la aplicación. Para crear un módulo de código en el

menú principal de Visual Basic marcamos en PROYECTO/INSETAR MÓDULO y

aparecerá junto a los demás formularios de la ventana de proyecto aunque con un

icono distinto indicando que se trata de un módulo de código

3.1.3.2.7. Tipos de Variables

Tipo

BOOLEAN

BYTE

INTEGER

LONG

SINGLE

DOUBLE

CURRENCY

STRING

DATE

Comentario

Sólo admite 2 valores TRUE o FALSE

Admite valores entre 0 y 255

Admite valores entre -32768 y 32767

Admite valores entre -2.147.483.648 y 2.147.483.647

Admite valores decimales con precisión simple

Admite valores decimales de doble precisión

Válido para valores de tipo moneda

Cadenas de caracteres (Texto)

Fechas, permite operar con ellas

Matrices

Para declarar matrices debemos colocar entre paréntesis el número de

elementos de los que constará a continuación del nombre de la variable:

Dim fíl(16) as Integer

Page 75: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

67

De esta forma tenemos una matriz de 16 elementos identificados del O al

15

También se puede indicar los límites inferior y superior de la matriz:

Dim filaanulada(5 To 14) as Integer

Lo que seria una matriz de 10 elementos cuyos índices van del 5 al 14

Las matrices multidimensionales se declaran de la siguiente forma:

Dim Tabla(1 To 1023, 1 To 1023) as Integer

3.1.3.2.8. Consideraciones

Al trabajar con Visual Basic es preferible que se active la opción que nos

obligue a declarar todas las variables que se utilizan, de esta forma nos

ahorraremos errores inesperados como el de trabajar con una variable ya utilizada

anteriormente produciéndose un conflicto difícil de resolver.

En cambio si se intenta declarar 2 variables con el mismo nombre, en el

mismo formulario o procedimiento se produce un error en tiempo de edición

avisándonos de la situación.

Otra opción que es interesante activar, es la de Guardar los cambios en la

ficha entorno, la cual guarda una copia del código antes de ejecutarlo por si acaso

luego no podemos, se bloquea la aplicación etc... de esta forma se asegura que lo

último que se haya ejecutado se tiene guardado en el disco.

3.1.3.3. Procedimientos

Se puede simplificar las tareas de programación si se divide los programas

en componentes lógicos más pequeños. Estos componentes, llamados

Page 76: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

68

procedimientos, pueden convertirse en bloques básicos que le permiten mejorar y

ampliar Visual Basic.

Los procedimientos resultan muy útiles para condensar las tareas

repetitivas o compartidas, como cálculos utilizados frecuentemente, manipulación

de texto y controles.

Hay dos ventajas principales cuando se programa con procedimientos:

• Los procedimientos permiten dividir los programas en unidades lógicas

discretas, cada una de las cuales se puede depurar más fácilmente que un

programa entero sin procedimientos.

• Los procedimientos que se utilizan en un programa pueden actuar como

bloques de construcción de otros programas, normalmente con poca o

ninguna modificación.

En Visual Basic se utilizan varios tipos de procedimientos:

• Procedimientos Sub que no devuelven un valor.

• Procedimientos Function que devuelven un valor (normalmente conocidos

como funciones).

Un procedimiento Sub es un bloque de código que se ejecuta como respuesta a

un evento. Al dividir el código de un módulo en procedimientos Sub, es más

sencillo encontrar o modificar el código de la aplicación.

La sintaxis de un procedimiento Sub es la siguiente:

[Prívate | Public][Static]Sub nombre_procedimiento (argumentos)

instrucciones

End Sub

Page 77: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

69

Cada vez que se llama af procedimiento se ejecutan las instrucciones que hay

entre Sub y End Sub. Se pueden colocar los procedimientos Sub en módulos

estándar, módulos de clase y módulos de formulario.

De forma predeterminada, los procedimientos Sub son Public en todos los

módulos, lo que significa que se les puede llamar desde cualquier parte de la

aplicación.

Los argumentos de un procedimiento son como las declaraciones de variables;

se declaran valores que se pasan desde el procedimiento que hace la llamada.

Resulta muy útil en Visual Basic distinguir entre dos tipos de procedimientos Sub,

procedimientos generales y procedimientos de evento.

3.1.3.3.1 Procedimientos generales

Un procedimiento general indica a la aplicación cómo realizar una tarea

específica. Una vez que se define un procedimiento general, se le debe llamar

específicamente desde la aplicación. Por el contrario, un procedimiento de evento

permanece inactivo hasta que se le llama para responder a eventos provocados

por el usuario o desencadenados por el sistema.

¿Por qué se crean procedimientos generales? Una razón es que muchos

procedimientos de evento distintos pueden necesitar que se lleven a cabo las

mismas acciones. Es una buena estrategia de programación colocar las

instrucciones comunes en un procedimiento distinto (un procedimiento general) y

hacer que los procedimientos de evento lo llamen. Esto elimina la necesidad de

duplicar código y también hace que la aplicación sea más fácil de mantener.

3.1.3.3.2. Procedimientos de evento

Cuando un objeto en Visual Basic reconoce que se ha producido un evento,

llama automáticamente al procedimiento de evento utilizando el nombre

Page 78: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

70

correspondiente al evento. Como el nombre establece una asociación entre el

objeto y el código, se dice que los procedimientos de evento están adjuntos a

formularios y controles.

• Un procedimiento de evento de un control combina el nombre real del

control (especificado en la propiedad Ñame), un carácter de subrayado (_)

y el nombre del evento. Por ejemplo, si desea que un botón de comando

llamado siguiente llame a un procedimiento de evento cuando se haga clic

en él, Se utiliza el procedimiento siguiente_Click.

• Un procedimiento de evento de un formulario combina la palabra "Form",

un carácter de subrayado y el nombre del evento. Si desea que un

formulario llame a un procedimiento de evento cuando se hace clic en él,

se utiliza el procedimiento Form_Click, (Como los controles, los formularios

tienen nombres únicos, pero no se utilizan en los nombres de los

procedimientos de evento.)

Todos los procedimientos de evento utilizan la misma sintaxis general.

Sintaxis de un evento de control Sintaxis de un evento de formulario.

Prívate Sub nombrecontrol_nombreevento (argumentos)

instrucciones

End Sub

Prívate Sub Fotrn_nombreevento (argumentos)

instrucciones

End Sub

Aunque se puede escribir procedimientos de evento nuevos, es más sencillo

utilizar los procedimientos de código que facilita Visual Basic, que incluyen

automáticamente los nombres correctos de procedimiento.

Page 79: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

71

Se puede seleccionar una plantilla en la ventana Editor de código si selecciona

un objeto en el cuadro Objeto y selecciona un procedimiento en el cuadro

Procedimiento.

También es conveniente establecer la propiedad Ñame de los controles antes

de empezar a escribir los procedimientos de evento para los mismos. Si se

cambia el nombre de un control tras vincularte un procedimiento, se deberá

cambiar también el nombre del procedimiento para que coincida con el nuevo

nombre del control. De lo contrario, Visual Basic no será capaz de hacer coincidir

el control con el procedimiento.

Cuando el nombre de un procedimiento no coincide con el nombre de un

control, se convierte en un procedimiento general.

Llamadas a Procedimientos.

Un procedimiento Sub difiere de un procedimiento Function en que, al

procedimiento Sub no se le puede llamar mediante su nombre en una expresión.

La llamada a un procedimiento Sub es una instrucción única.

Además, un procedimiento Sub no devuelve un valor en su nombre como

hace una función. Sin embargo, al igual que Function, un procedimiento Sub

puede modificar los valores de las variables que se le pasan.

Hay dos formas de llamar a un procedimiento Sub:

Ambas instrucciones llaman a un Sub denominado MostrarTabla.

Cali MostrarTabla (PrímerArgumento, SegundoArgumento)

MostrarTabla PrímerArgumento, SegundoArgumento

Page 80: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

72

Cuando se utiliza la sintaxis Cali, se debe poner los argumentos entre

paréntesis. Si omite la palabra clave Cali, se debe también omitir los paréntesis

alrededor de los argumentos.

3.1.3.4. Funciones

La sintaxis de un procedimiento Function es la siguiente:

[ Prívate \ nombre_j>rocedimiento(argumentos) [As

tipo]

instrucciones

End Function

Al igual que un procedimiento Sub, un procedimiento Function es un

procedimiento diferente que puede tomar argumentos, realizar una serie de

instrucciones y cambiar el valor de los argumentos. A diferencia de los

procedimientos Sub, los procedimientos Function pueden devolver un valor al

procedimiento que realiza la llamada. Hay tres diferencias entre los

procedimientos Sub y Function:

• Generalmente, se llama a una función incluyendo el nombre y los

argumentos del procedimiento en la parte derecha de una instrucción o

expresión mayor (Vaior_Retorno = funciónQ).

• Los procedimientos Function tienen tipos de datos, al igual que las

variables. Esto determina el tipo del valor de retorno. (En ausencia de la

cláusula As, el tipo es el tipo predeterminado Variant.)

• Se devuelve un valor asignándole al propio Nombre_Procedimiento.

Cuando el procedimiento Function devuelve un valor, se puede convertir en

parte de una expresión mayor.

3.1.3.4.1. Llamadas a Funciones.

Page 81: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

73

Normalmente se llama a un procedimiento de función que se ha escrito de la

misma forma en que se llama a una función intrínseca de Visual Basic como Abs;

es decir, utilizando su nombre en una expresión:

También es posible llamar a una función igual que se llama a un procedimiento

Sub. Las instrucciones siguientes llaman a la misma función:

Cali Year(Now)

YearNow

Cuando llama a una función de esta manera, Visual Basic desecha el valor de

retorno.

3.1.3.4.2 Paso de Argumentos a Procedimientos y Funciones

Normalmente el código de un procedimiento necesita cierta información

sobre el estado del programa para realizar su trabajo. Esta información consiste

en variables que se pasan al procedimiento cuando se le llama. Cuando se pasa

una variable a un procedimiento, se llama argumento.

3.1.3.4.3 Tipos de datos de los argumentos

Los argumentos de los procedimientos que escriba tienen el tipo de dato Variant

de forma predeterminada. Sin embargo, puede declarar otros tipos de datos para

los argumentos.

3.1.3.4.4 Paso de argumentos por valor

Page 82: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

74

Sólo se pasa una copia de la variable cuando se pasa un argumento por

valor. Si el procedimiento cambia el valor, el cambio afecta sólo a la copia y no a

la variable propiamente dicha.

3.1.3.4.5 Paso de argumentos por referencia

El Paso de argumentos por referencia le da al procedimiento acceso al

contenido real de la variable en su ubicación de dirección de memoria. Como

resultado, el procedimiento al que se pasa el valor de la variable se puede

modificar de forma permanente. La forma predeterminada de pasar valores en

Visual Basic es por referencia.

Si especifica el tipo de dato de un argumento que se pasa por referencia,

debe pasar un valor de ese tipo para el argumento. Se puede eludirlo si pasa una

expresión en vez de un tipo de dato como argumento. Visual Basic evalúa la

expresión y la pasa como el tipo requerido si puede.

La forma más sencilla de convertir una variable en una expresión es

ponerla entre paréntesis.

3.1.3.5 Estructuras de Control (Repetición y Decisión)

3.1.3.5.1 Do While - Loop / Do - Loop While.

El bucle Do se utiliza para ejecutar un bloque de instrucciones un número

indefinido de veces. Hay algunas variantes en la instrucción Do...Loop, pero cada

una evalúa una condición numérica para determinar si continúa la ejecución.

Page 83: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

75

Como ocurre con If.Then, la condición debe ser un valor o una expresión

que dé como resultado False (cero) o True (distinto de cero).

En el ejemplo de Do...Loop siguiente, las instrucciones se ejecutan siempre y

cuando condición sea True:

Do While condición

instrucciones

Loop

Cuando Visual Basic ejecuta este bucle Do, primero evalúa condición. Si

condición es False (cero), se salta todas las instrucciones. Si es True (distinto de

cero), Visual Basic ejecuta las instrucciones, vuelve a la instrucción Do While y

prueba la condición de nuevo.

Por tanto, el bucle se puede ejecutar cualquier número de veces, siempre y

cuando condición sea distinta de cero o True. Nunca se ejecutan las instrucciones

si condición es False inicialmente. Por ejemplo, este procedimiento cuenta las

veces que se repite una cadena de destino dentro de otra cadena repitiendo el

bucle tantas veces como se encuentre la cadena de destino.

Otra variante de la instrucción Do...Loop ejecuta las instrucciones primero y

prueba condición después de cada ejecución. Esta variación garantiza al menos

una ejecución de instrucciones:

Do

instrucciones

Loop While condición

Hace el bucle al menos una vez

Do Until condición

instrucciones

Loop Do

Page 84: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

76

instrucciones

Loop Until condición

3.1.3.5.2 For-Next.

Los bucles Do funcionan bien cuando no se sabe cuántas veces se

necesitará ejecutar las instrucciones del bucle. Sin embargo, cuando se sabe que

se va a ejecutar las instrucciones un número determinado de veces, es mejor

elegir el bucle For...Next. A diferencia del bucle Do, el bucle For utiliza una

variable llamada contador que incrementa o reduce su valor en cada repetición

del bucle. La sintaxis es la siguiente:

For contador = iniciar To finalizar [Step incremento]

instrucciones

Next [contador]

Los argumentos contador, iniciar, finalizar e incremento son todos

numéricos.

El argumento incremento puede ser positivo o negativo. Si incremento es

positivo, iniciar debe ser menor o igual que finalizar o no se ejecutarán las

instrucciones del bucle. Si incremento es negativo, iniciar debe ser mayor o igual

que finalizar para que se ejecute el cuerpo del bucle. Si no se establece Step, el

valor predeterminado de incremento es 1.

Al ejecutar el bucle For, Visual Basic:

• Establece contador al mismo valor que iniciar.

• Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale

del bucle. (Si incremento es negativo, Visual Basic comprueba si contador

es menor que finalizar.)

Page 85: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

77

• Ejecuta instrucciones.

• Incrementa contador en 1 o en instrucciones, si se especificó.

• Repite los pasos 2 a 4.

3.1.3.5.3 Else-Endlf.

Se usa la estructura If.Then para ejecutar una o más instrucciones basadas

en una condición. Se puede utilizar la sintaxis de una línea o un bloque de varias

líneas:

If condición Then instrucción Aquí no hace falta cerrar con End If

If condición Then

instrucciones

Endlf

Condición normalmente es una comparación, pero puede ser cualquier

expresión que dé como resultado un valor numérico. Visual Basic interpreta este

valor como True o False; un valor numérico cero es False y se considera True

cualquier valor numérico distinto de cero. Si condición es True, Visual Basic

ejecuta todas las instrucciones que siguen a la palabra clave Then. Puede utilizar

la sintaxis de una línea o de varias líneas para ejecutar una instrucción basada en

una condición.

3.1.3.5.4 If...Then...Else

Se utiliza un bloque lf...Then...Else para definir varios bloques de

instrucciones, uno de los cuales se ejecutará:

I f condición 1 Then

[bloque de instrucciones 1]

/E/se

ui i v GMWI ci i ui ia noua, oc acfJdi di i 1UO vclKJI C& UUII IAJI11 día. WdUd Uiuque U tí

Page 86: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

79

instrucciones contiene cero o más instrucciones. Si más de un Case coincide con

la expresión de prueba, sólo se ejecutará el bloque de instrucciones asociado con

la primera coincidencia. Visual Basic ejecuta las instrucciones de la cláusula

(opcional) Case Else si ningún valor de la lista de expresiones coincide con la

expresión de prueba.

Observe que la estructura Select Case evalúa una expresión cada vez al

principio de la estructura.

Page 87: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

80

3.2 DIAGRAMA DE FLUJO DEL PROGRAMA

Este programa presenta un formulario inicial desde el que se puede

acceder a las diferentes opciones que tiene el programa como son: Una parte

teórica, que explica el proceso de simplificación de Quine-McCIuskey, la segunda

sección en la que se da un tutorial de cómo utilizar el programa de simplificación,

y la tercera parte es para la simplificación de funciones de hasta diez variables de

entrada, en este programa el ingreso de los datos y el proceso de simplificación

se lo realiza paso a paso hasta obtener la respuesta de la función simplificada.

También hay la opción de correr el programa en un solo paso, y por último hay la

opción de salir. En la fig. 3.5 se indica el diagrama de flujo correspondiente al

primer interface del programa.

FundamentoTeórico

Presentación \e la Teoría J

MenúPrincipal

Presentacióndel tutorial

Iniciar /Simplificación /""

f Proceso de \ Simplificación J

Fig. 3.5: Diagrama de Flujo del inicio del programa

Page 88: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

81

3.2.1 TEORÍA

Regresaral Menú

Comandopresionado

Imprimir-

Flechas de NavegacióniNavegaren el

Texto

Imprimir el Textocompleto

Fig. 3.6: Diagrama de flujo de la presentación de la Teoría,

Es una explicación teórica, en la que se presenta todo lo referente a la

teoría, con respecto al método de simplificación de Quine-McCIuskey, para esto

lo que se hace es abrir un documento realizado en Word y guardado con una

extensión rtf.

La explicación se la hace siguiendo todo el proceso de simplificación para

un ejemplo en particular, el cual está compuesto de tres variables de entrada [A,

Page 89: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

82

B, C]. Esta sección es una parte de consulta en la que se explica paso a paso

todo el proceso de simplificación de las funciones booleanas utilizando el método

de Quine-McCIuskey. La presentación de la teoría se hace únicamente

presentando en un objeto RichTextBox el documento realizado en Word y

guardado con el nombre "Texto, rtf, la navegación y revisión del texto se lo hace

con la barra de navegación existente en el objeto RichTextBox..

En esta ventana también existe la opción de imprimir todo el contenido del

Texto; y se puede seleccionar y copiar una parte del texto y pegarlo en alguna

otra aplicación. La figura 3.6 muestra el diagrama de flujo de la rutina de

presentación de la teoría en la pantalla del monitor

3.2.2 SIMPLIFICACIÓN

En esta parte existe un programa que permite simplificar paso a paso una

función booleana de hasta diez variables o entradas utilizando el método de

Quine-McCIuskey, el ingreso de datos se puede hacer por medio de una tabla de

combinaciones, en la que el programa genera cada una de fas combinaciones de

las variables de entrada mientras que el usuario ingresará las salidas O o 1

correspondientes a cada combinación, el programa se encarga de poner los

mintérminos respectivos en el editor de mintérminos. También se puede ingresar

directamente todos y cada uno de los mintérminos en este caso el programa se

encarga de calcular el número de entradas y construir la tabla de combinaciones

correspondiente a la suma de los mintérminos asociados, este programa también

permite guardar la tabla de datos ingresada para recuperarla en otro momento, la

extensión de los archivos tipo texto con los que se guarda es *.boo, también se

puede abrir un archivo o una tabla ingresada anteriormente para simplificarla.

En el figura 3.7 se presenta el diagrama de flujo del programa para la

simplificación de funciones lógicas.

Page 90: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

83

^Simplificación

Presenta la pantalla deingreso de datos

-Abrir

Abrir el Archivo

Ingresar datospor mintérminos

iF

Ingresar datospor tabla

Presentar Tabla deCombinaciones y

mintérminos

ComandoIngresado

Tiene larespuesta

final?

Está la tabla decombinaciones

Simplifica elsiguiente paso

Simplifica elpaso anterior

Fig. 3.7: Diagrama de flujo para la simplificaóión de las funciones.

Page 91: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

84

3.2.3 TUTORIAL

El tutorial enseña paso a paso a utilizar el programa de simplificación para

lo cual se utiliza un ejemplo de 4 variables de entrada, la presentación es igual

que la presentación de la simplificación, también se explica paso a paso la forma

de utilizar este programa tanto en el ingreso de datos como en el proceso de

simplificación. En la figura 3.8 está el diagrama de flujo para el tutorial.

InicioTutorial

Presenta laTeoría

IngresarComando

ComandoIngresado

/Siguiente Anterior /

Ultimaxplicación?

Primeraxplicación?

Presentar lasiguiente

explicación

Presentar laanterior

explicación

Fig. 3.8: Diagrama de flujo del Tutorial.

Page 92: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

85

33. DIAGRAMA DE FLUJO DE LA SIMPLIFICACIÓN.

Para realizar la simplificación de una función se siguen los siguientes

pasos:

Ingreso de los datos en la tabla de verdad

Formación de los cubos n

Construcción de la tabla de implicantes primos

Construcción de la tabla de simplificación

Simplificación de la tabla de implicantes primos

Obtención de la ecuación booleana

3.3.1. INGRESO DE LOS DATOS EN LA TABLA DE COMBINACIONES.

El ingreso de los datos se puede hacer de dos formas: directamente en la

tabla, o ingresando los mintérminos. Si el ingreso se hace en la tabla los

mintérminos se actualizan automáticamente, para esto se debe saber cuantas

entradas o variables tiene la función. Si el ingreso de datos es por medio de los

mintérminos la tabla de combinaciones se actualiza automáticamente, también se

calcula inmediatamente el número de entradas de acuerdo a los mintérminos

ingresados.

Si el ingreso de datos se lo hace por medio de la tabla, la salida debe ser

un 1 o un O caso contrario aparece un mensaje que indica que se ha ingresado un

dato incorrecto, la combinación que tiene como salida un 1, da lugar a un

mintérmino, este mintérmíno se actualiza en un vector r(i), luego se actualiza en el

indicador de mintérminos, Cuando la salida de la función es O o 1, también se

actualiza el indicador de mintérminos, a continuación se revisa que se haya

ingresado todos los datos de la tabla, si es así se habilita el botón del comando

<siguiente> para estar preparado y empezar en cualquier momento el proceso

de simplificación.

Page 93: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

86

Mientras se ingresa las salidas de la función se puede regresar a cambiar

cualquier dato errado o fallante, el cambio o corrección también se puede hacer

en el indicador de mintérminos.

Las combinaciones se ponen automáticamente de acuerdo al número de

entradas de tal forma que una función de n entradas tendrá 2n combinaciones. En

la figura 3.9 se indica una función con 4 entradas que contiene 16 combinaciones.

Número de entradas A

Indicador\s

-x/Tabla deV Combinaciones^

Fig. 3.9: Tabla de una función con 4 entradas

Cuando se ingresa los datos por medio de la tabla se debe también

analizar si el dato ingresado es O o 1 caso contrario se debe volver a pedir el

ingreso del dato correspondiente, también estos datos ingresados en la salida de

la función se almacena en un vector r(i), que es el que tienen los datos de salida

de la función. Basándose en el valor del r(i) se actualiza el indicador de

mintérminos.

Page 94: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

87

(jngresoj

Nuevo ~z_

Ingresar Mintérminos

Ver indicador de Mintérminos

Calcular nActualizar r(i)

Actualizar Tabla

<Space>

<Otro>

<Enter>

Calcular nActualizar r(i)

Actualizar Tabla

Ingresar Tabla* ~

Ingresare!número deentradas

IndicarCombinación

/ Ingresar la // función /

No

r(i)=fActualizar mintérminos

Habilitar botón SiguienteHabiliotar Menú Guardar

C Fin )

Fig. 3.10: Diagrama de flujo para el ingreso de los datos.

Page 95: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

88

Cuando se ingresa los datos por medio de la ecuación o mintérminos en

cambio la posición r(i) se escribe un 1 basándose en el mintérmino ingresado y en

las posiciones r(i) que no tiene dato alguno se pone el 0. Inmediatamente y

basándose en el mintérmino más alto ingresado se calcula el valor de n, y

finalmente se actualiza la tabla de combinaciones.

Cuando se presiona la tecla <Enter> quiere decir que ya se han ingresado

todos los mintérminos correspondientes a esta función entonces habrá que

completar la tabla de combinaciones y dejar listo para empezar el primer paso de

la simplificación.

En la figura 3.10 se indica el diagrama de flujo para el ingreso de los datos

ya sea directamente en la tabla o como un mintérmino.

33.2. FORMACIÓN DE CUBOS.

La formación de los cubos O, cubos 1, cubos 2, etc... depende del número

de entradas. Para poder realizar la formación de cubos se utiliza una matriz de

cubos c(i, j) que está definida como una matriz de orden 2047 x 16 debido a que

el programa se hará de hasta 10 variables y para seguridad por el número de

combinaciones en cada uno de los cubos se define de 2047. la primera columna

de la matriz contiene los cubos O, la segunda columna tiene el cubo 1, la tercera

columna tiene los cubos 2, y así sucesivamente, los datos de cada una de los

cubos de simplificación se indican en dos objetos llamados ListBox. Para llevara

el control de que cubos han sido calculados se utiliza una variable llamada (coi),

para tener control de cuantos elementos existen en cada columna de la matriz se

utiliza un vector fil(¡) en el que se almacena el número de elementos en cada una

de las filas. También se debe almacenar los mintérminos, y combinaciones de

mintérminos utilizados para construir los respectivos cubos, este almacenamiento

se hace en otra matriz O(i, j).

Page 96: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Los cubos se forman únicamente con las combinaciones que tienen como

salida un 1, se ordena estas combinaciones de acuerdo al número de 1s que tiene

cada combinación.

Finalmente eí resultado se muestra en un ListBox. Si ya fueron calculados

fos cubos O únicamente se muestran sin necesidad de volver a calcularlos. En la

fig. 3.11 se muestra una tabla de cubos ceros para la función anterior.

rnrri[ilifu:.i<Mnn

Número de entradas 4

MINTERMINOS0001001 10 1 0 10 1 1 11 0011 0 1 11 1 0 11 1 1 1

CUBOS O0001

001 10 1 0 11 001

0 1 1 11 0 1 11 1 0 1

1 1 1 1

Fig. 3.11: Tabla de Cubos ceros para una función de 4 entradas

Los cubos O se almacenan en la primera columna de la matriz c(i, j) los

demás cubos se almacenaran en las demás columnas de la misma matriz. En las

figura 3.12 y 3.13 se indica el diagrama de flujo para la obtención de los cubos 0.

Una vez calculado los cubos ceros se debe calcular los cubos 1, cubos 2, hasta

cuando ya no haya mas combinaciones que se asocien las combinaciones que se

han asociado forman parte de los cubos n y las combinaciones que no se ha

combinado con otras para formar parte de los cubos de orden superior formaran

parte de los implicantes primos, para esto se señala la combinación asociada

ubicando unas marcas en la misma posición de la matriz c(i, j) en otra matriz

Page 97: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

90

llamada marca(í, j), basándose en esta matriz se encontraran los implicantes

primos. En las figuras 3.14, 3.15 y 3.16 se indica el diagrama de flujo para obtener

los cubos n de una función booleana. En la figura 3.17 se indica las tablas de

cubos 1 y cubos 2 para una función booleana de 5 entradas.

Ocultar la Tabla de combinacionescol=col"M

No fila=fila+1c(fila,0)=i

Fig. 3.12; Diagrama de Flujo para la obtención de los cubos 0.

Page 98: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

91

Mn

i—

3

u *

r

•* -"~*"'r7ÍV-T "1""fc- »^

Sit

cont=0 |

^pos=1

*

No

Bit=Val(Mid(

i i. - fíií-T

sJ

fíi\ 1\Hv» P05» ';/ •

1^>— -""""¡ pos=pos+1

> J L

I cont=cont+1 I

if

Si

J* No -r-*^*rnnf~iTi *^^-^ i:

1 iSi

raya = raya + 1fila * fila + 1

c(fila, col) = f(i)O(fila, col) = Str(i)

*--— -"""^T?* n^ i""?" — **-• Nn

+1t

j=j+1^

Si^- — — nrr" - M~

4)

i

SiY

fil(col)=fila

*Mostra cubos 0Habilitar Comandos

Actuiiza MaxCol y Max

*O7 F in_^>

Fig. 3.13: Continuación del diagrama de flujo para la obtención de los cubos 0.

Page 99: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

92

cont=cont+1spos=j

cpos = pos

Fig. 3.14: Diagrama de flujo de obtención de los cubos n

Page 100: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

93

fila = fila + 1c(fila, col + 1) = c(i, col)

Marca(i, col) = "*"Marcaü, col) = "*"

Mid(c(fila, col + 1), cpos) = "X"cont2 = O

k=1

c(fila, col + 1) = c(k, col+

O(fila,colO(i, col) & " " & Oíspos, col)

Fig. 3.15: Continuación del diagrama de flujo de obtención de los cubos n

Page 101: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

94

fil(col + 1) = fila

Actualizar MaxColCubos, MaxCol, Maxcol=col+1

ultima = Truefíl(col) = auxiliar

Mostrar los cubos no los implicantes primos

©

fila = O Or col = Aux

Fig. 3.16: Continuación del diagrama de flujo de obtención de los cubos n

Page 102: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

95

Simplificación

1(1235910111819202123252627)

CUBOS 1

Número de entradas 6

000X100X010X0010001X0X01 OX001O

0X01 1X001 1X01 0101 0X1XI 00101 01 XXI 01 O1 001 X1X010

CUBOS 20 X 0 X 1O X 0 1 XX 0 0 1 XX X 0 1 O

X X 0 1 1X1 0X1XI 0 1 X1 X01 X

Fig. 3.17: Tabla de cubos 1 y cubos 2 para una función de 5 entradas.

3.3.3. TABLA DE IMPLICANTES PRIMOS

Para hallar los implicantes primos se debe tomar todas las combinaciones

de cada uno de los cubos n que no se combinaron para formar cubos de orden

superior. Para lo cual leemos en la matriz marcafi, j) las posiciones en las que no

existe la marca "*" dentro de esta matriz corresponden a los implicantes primos.

Como se puede ver en el diagrama de flujo de la figura 3.18, únicamente si

los implicantes primos no han sido hallados antes aux1<>col se hace el cálculo de

los implicantes primos caso contrario se muestra directamente.

En ai figura 3.19 se indica una tabla de implicantes primos de una función

de 5 entradas.

Page 103: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

96

No No

fila = fila + 1O(fila, col) = O(i( j)c(fila, col) = c(i, j)

Marca(fila, col) =""

fil(col) = fila

i'Mostrar Implicantes Primos

Actualizar MaxCofActualizar Max

Implicantes =True

d-J rFin^>

Fig. 3.18: Diagrama de flujo para la obtención de los implicantes primos.

Page 104: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

funcionSb boo

(12359101118192021232526271:3 Número de entradas b

IMPLICANTES PRIMOS00X01X01 011 01 OX1 0X1 11 01X10X0X1XI 0X1XX01 X

Fig. 3.19. Tabla de implicantes primos para una función de 5 entradas.

3.3.4. TABLA DE SIMPLIFICACIÓN DE LOS IMPLICANTES PRIMOS.

La tabla de simplificación de implicantes primos es una tabla que se

construye en base de todos los implicantes primos y los mintérminos, poniendo

una marca en cada casillero que pertenece al mintérmino y al implicante primo en

el que está contenido; para construir esta tabla de simplificación se ubica en la

primera columna a todos los implicantes primos, y todos los mintérminos

ordenado en la primera fila y en cada celda que corresponde al implicante primo

con sus respectivos mintérminos se ubica una marca.

Los mintérminos se encuentran en forma desordenada dentro de la matriz

O(i, j) pero en la tabla se debe poner en forma ordenada ascendentemente para lo

cual la primera columna de la matriz O(i, j) la pasamos a un vector s(i) para poder

ordenarlo.

En la figura 3.20 se indica una tabla de simplificación para una función de 5

entradas.

Page 105: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

98

235310111819202123252627 Numero de entradas 5

TABLA DE SIMPLIFICACIÓN

0 o s o iX 0 1 0 11 O 1 O X

Para poder construir esta tabla de simplificación primero se debe construir

una matriz tabla(i, j) en la que se guardan las marcas en la misma posición que se

ubica dentro de la tabla.

La matriz tabla(i, j) tiene el mismo número de filas que el número de

implicantes primos, y el mismo número de columnas que el número de

mintérminos o del vector S(i, j).

Cada elemento de la última columna de la matriz O(i, j) se compara con

cada uno de los elementos del vector S(i) y en el caso de que coincidan quiere

decir que el mintérmíno correspondiente contiene al elemento S(i) entonces se

pondrá una marca en esa posición de ía tabla.

Luego comparamos cada elemento del vector s(i) con cada uno de los

elementos de la matriz Q(i, j) para ver cual mintérmino coincide con los elementos

del vector.

Como se puede observar en el diagrama de flujo si la tabla ya ha sido

calculada lo único que se hace es indicarla, sin necesidad de volver a calcularla.

En las figuras 3.21, 3.22 y 3.23 se indica el diagrama de flujo para construir la

tabla de simplificación.

Page 106: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

99

aux = s(i)

s(i) = aux

Fig. 3.21: Diagrama de flujo para la construcción de la tabla de simplificación.

Page 107: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

100

subíndice = Mid(O(i, col), p1,

1 f

P2-P1)

No

al(subindice) = Val(s(j))

O-

Fig. 3.22. Continuación del diagrama de flujo para la construcción de la tabla de

simplificación.

Page 108: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

101

3ps = Len(O(i, col)]

TSi

subíndice = Mid(O(i, col), p1, p2 - p1 + 1)

Dibujar TablaTablalmplicantes = True

marcas = True

al(subtndice) = Val(s

Fig. 3.23. Continuación del diagrama de flujo para la construcción de la tabla de

simplificación.

Page 109: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

102

33.5. SIMPLIFICACIÓN DE LA TABLA DE IMPLICANTES PRIMOS

La simplificación de la tabla de implicantes primos consta de dos partes la

primera parte corresponde a encontrar los implicantes primos esenciales.

xxoix1 0 1 0 XX1 0X1

Fig. 3.24: Tabla de los implicantes primos esenciales y la tabla de

implicantes primos secundarios.

La segunda parte corresponde a encontrar los implicantes primos

secundarios si existen ya que es posible que no estén cubiertas todas las

columnas.

En la figura 3.24 se indica una tabla de implicantes primos esenciales y

secundarios para una función de 5 entradas.

Para encontrar los implicantes primos esenciales seguimos el siguiente

criterio.

Buscamos la primera columna que tiene una sola marca y lo

marcamos como anulada, para esto se crea un vector

ColumnaAnulada(i) en el que se almacenará los valores True o

False según sea la columna anulada o no.

El implicante primo que está en la fila de la marca encontrada se

toma como implicante primo esencial y forma parte ya de la solución

y le ponemos una marca como fila anulada, esto se hace utilizando

un vector FHaAnulada(i) en el que se almacena un True o un False.

Page 110: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

103

iii) Todas las columnas que tienen marca en dicha fila se lo marca

como anulada usando el vector ColumnaAnulada(i).

«C^Esenciales__

contvmax = Oi=1

ablaíi, i) = T

contv(i)=contv

contvmax < contvTSi

contvmax = contv(i)

contv(i) = 1 andlumnaAnulada(i) = Fals

ColumnaAnuladfa(i)=True1=1

Fig. 3.25: Diagrama de flujo para hallar los implicantes primos esenciales.

Page 111: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

104

No

abiafj, i) = "*" And filaAnuladaíi) = False

filaAnulada(j) = TruenumeroFila(i) = j

fila = fila + 1c(fila, col + 1) = c(j, col)

¡2 = 1

Tabla(j, Í2) = "*"olumnaAnulada(¡2)

columnaAnulada(¡2)True numeroFiia(i2)

fs ocok

True

fe~*

Poner las marcasfil(col+1)=fila

Actualizar MaxCoíActualizar Max

MostrarEsencialesesenciales=True

Fig. 3.26: Continuación del diagrama de flujo para obtener los implicantes primos

esenciales.

Page 112: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

105

iv) Se repite este proceso en todas las columnas que tienen una sola

marca y no está anulada.

En las figuras 3.25 y 3.26 se indican el diagrama de flujo para encontrar los

implicantes primos esenciales.

Para calcular ios implicantes primos secundarios, se debe hallar los que

tengan el mayor costo con el objetivo de simplificar al máximo.

i) En cada fila se cuenta cuantas marcas tiene dentro de las columnas

no anuladas, para esto se crea un vector ContH(i) en el que se

almacena el número de marcas que tiene cada fita en tas columnas

no anuladas.

ii) Empezando por la fila que tiene el mayor número de marcas y se

toma ese implicante primo como secundario y formará parte de la

solución y se anula la fila para lo cual utilizamos el vector

FilaAnulada(i).

iii) Se eliminan todas las columnas que tienen marca en el implicante

primo tomado en el numeral anterior.

iv) Repetimos este proceso hasta que todas las columnas estén

anuladas.

Tanto los implicantes primos primarios y secundarios se almacenan en la

matriz c(i, j)f en las posiciones c(col+1, j) y c(col+2, j) respectivamente, para

tomarlas luego de esas columnas para hallar la solución.

En las figuras 3.27 y 3.28 se indica el diagrama de flujo para la

obtención de los implicantes primos secundarios.

Page 113: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

106

marcasmax=0

contH(i)=0

filaAnulada(i):

lumnaAnulada(j)

conth(i) = conth(i) + 1

marcasmax < conthfi

marcasmaxconth(i)

Si

Fig. 3.27: Diagrama de flujo par obtener los implicantes primos

secundarios.

Page 114: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

107

conthQ) = marcasmaxAnd filaAnulada(j) = False

nd marcasmax > O

sihay=False¡2 = 1

TablaG, ¡2) = "*"lumnaAnulada(¡2)

columnaAnulada(i2) = TruenumeroFíla(¡2) =j

sihay = True

filaAnulada(j) = Truefila = fila + 1

c(fila, col + 2) = c(j, col)

MostrarMarcasfil(col + 2) = fila

Actualizar MaxColActualizar Max

MostrarSecundarios

Fig. 3.28: Continuación del diagrama de flujo para obtener los

implicantes primos secundarios.

Page 115: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

108

33.6. ECUACIÓN BOOLEANA SIMPLIFICADA

La ecuación booleana simplificada se calcula basándose en los implicantes

primos esenciales y basándose en los implicantes primos secundarios, de la

siguiente manera.

La ecuación booleana simplificada es una suma de productos.

Cada uno de los productos se forman de los implicantes primos obtenidos

tomando en cuenta que las variables que están con un 1 se toman las variables

directamente; la variable que está con un O se toma la variable complementada;

mientras que las variables que están con una X no se les toma en cuenta.

El resultado lo ponemos en un TextBox.

Como se puede ver primero analiza los implicantes primos esenciales

luego los implicantes primos secundarios.

En las figuras 3.29 y 3.30 se indican los diagramas de flujo para obtener la

solución de la ecuación booleana.

Page 116: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

109

disolución1'

Text6="Y="i=1

'Text6=Text6+VariableComplementada

XxText6=Text6+Variable

Fig. 3.29: Diagrama de flujo para obtener la solución.

Page 117: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

LIO

Text6=Text6+VariableComplementada

Text6=Text6+variable

-^Mostrar Solución ^

Fig. 3.30: Continuación del diagrama de flujo para la obtención de la

solución

Page 118: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

111

3.4 RESULTADOS OBTENIDOS.

Para probar los resultados del programa diseñado se hizo con varias funciones

existentes en el libro de Hill and Peterson y se obtuvo los siguientes resultados.

La función de 4 entradas: f(A, B, C, D)=Zm(0, 2, 3, 6, 7, 8, 9, 10, 13).

'ínter minos 102367891013)

Fig. 3.31: Editor de mintérminos

Una vez ingresada la ecuación dentro del indicador de mintérminos

automáticamente se construye la tabla de combinaciones y se calcula el valor de

n correspondiente.

14

1000(1"

¡1001 [í"

Fig. 3.32: Tabla de combinaciones de la función ingresada como mintérminos.

Como se puede comprobar la tabla de combinaciones esta de acuerdo con

los mintérminos ingresados sin ningún error el tiempo de calculo fue de menos de

un segundo.

Page 119: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

112

A continuación presionamos el comando para calcular el cubo O y

obtuvimos el siguiente resultado.

02367891013

0000001 0001 10 1 1 00 1 1 11 0001 0011 0 1 01 1 0 1

0 0 0 0

0 0 1 O1 000

0 0 1 101 1 O1 0011 0 1 0

0 1 1 11 1 0 1

Fig. 3.33: Tabla de cubos 0.

El tiempo de demora fue mucho menos que un segundo, efectivamente los

mintérminos están ordenados de acuerdo al número de unos que tiene cada

combinación. Y únicamente coge como cubos O a las combinaciones que tienen

como salida un 1.

Todos los cálculos hechos en el programa concuerdan con los cálculos

realizados a mano.

A continuación calcularemos los cubos 1 obteniendo el resultado que se

indica en la figura 3.34.

Los cubos 1 son las combinaciones resultantes de combinar dos cubos O

como se puede ver en la parte inferior de la tabla de cubos 1, el cubo 1 10X0

viene de combinar el m8 y el m10.

El tiempo de cálculo de los cubos 1 fue de aproximadamente 1 seg., lo cual

hace que sea bastante rápido.

Page 120: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

113

* 0000

"0010* 1 000

" 0 0 1 1" 0 1 1 0* 1 001" 1 0 1 0

00X0xooo

001 X0X1 OX01 O1 OOX

* 01 1 1* 1 1 01

0X1 101 1 X1X01

Fig. 3.34: Cubos 1 de una función de 4 variables de entrada.

A continuación calculamos los cubos 2.

CUBOS 2* 00X0" XOOO

0X1 X1(0, 2. 8.

* 001 X* 0X1 O* X01 O

* 1 0X0

* 0X1 1* 01 1 X

1 X01

Fig. 3.35: Tabla de cubos 2 para la función de 4 variables de entrada.

Combinando los cubos 1 se calcula los cubos 2 por ejemplo el cubo 2

XOXO se formo combinando los cubos 1 (0,2) y (8, 10) mientras que los cubos 1

que no se combinaron para formar cubos 2 como es el caso de los cubos 1 (8, 9)

y los cubos 1 (9, 13), pasarán a formar parte de los implicantes primos.

Page 121: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

114

Las combinaciones del cubo 1 que se combinaron para formar cubos 2 se

marcan con una "*" como se puede ver en la tabla de la parte izquierda, mientras

que los cubos 1 que no se combinaron no se marcan.

En la figura 3.36 se indican, los cubos 3 si es que existiera pero en este

caso ya no existen cubos de mayor orden es decir el siguiente paso será calcular

los implicantes primos.

GMBOS2 IMPLICANTES PRÍMOSx o x o

0 X 1 X

1 0 0 X1 X 0 1x o x o

11,2,3.6,7)1

Fig. 3.36: Tabla de implicantes primos

Los implicantes primos son los cubos anteriores que no se combinaron

para formar cubos de orden superior como se puede ver en el gráfico el cubo 2

0X1X forma parte también de los implicantes primos.

Una vez calculado los implicantes primos se procede a optimizarlos

utilizando una tabla de simplificación de los implicantes primos.

1 0 0 X1 X 0 1x o x o0 X 1 X

o

*

2

*

*

3

*

6

*

7

*

6*

*

9*

*

10

*

13

*

Fig. 3.37:Tabla de Simplificación de los implicantes primos.

En la Figura 3.37 podemos ver que el implicante primo 100X contiene a los

mintérminos m8 y m9 mientras que el implicante primo 0X1X contiene a los

mintérminos m2, m3, m6, m7. Es decir esta tabla se forma con los implicantes

primos y los mintérminos involucrados en estos implicantes primos.

Page 122: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

115

El cálculo de los implicantes primos esenciales se los hace tomando los

implicantes primos que coinciden con las columnas que tienen una sola marca.

Todas las columnas que tienen marcas en la misma fila del implicante

primo encontrado se eliminan poniendo una marca en la parte inferior de las

columnas.

TABLA DE SIMPLIFICACIÓN

1 0 0 X

c

(•\s>

2

fk ¡i)

3

— j

3

É -

,

e

(•\»>

9i

jiitjT

!

i

/•\>i>

i3

xoxoox ix ;1X01 ;

Fig. 3.38: Tabla de los implicantes primos esenciales.

Como todas las columnas de la tabla están señaladas como anuladas no

existe implicantes primos secundarios y únicamente existen implicantes primos

esenciales.

El siguiente paso será entonces calcular la solución basándose en estos

implicantes.

Fig. 3.39: Solución simplificada de la función de 4 entradas

La solución obtenida es una solución de compuesta por una suma de tres

términos, es igual que la calculada manualmente.

A continuación se realiza una pruebe con una función de 5 entradas o

variables.

Page 123: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

116

La función a probarse es:

f(A, B, C, D, E) = Z(0, 6, 8, 10, 12, 14, 17, 19, 20, 22, 25, 27, 28, 30)

En este caso haremos el ingreso de los datos directamente en la tabla de

combinaciones de 5 entradas, para este caso utilizamos el menú, como se indica

en la figura 3.40.

• f Quine McCIuskey Simplificación

Fig. 3.40: Comando para una función de 5 entradas.

Una vez ejecutada este comando aparece la siguiente ventana en la que

ingresaremos las salidas para cada una de las combinaciones.

Mint éi minos |(Q6810121417 192022 25 27 28 30)31

| O Q Q Q Q [ Í | I O O O O [ O '00001 [0

0 0 0 1 0 J O00011 ¡0

¡001 00|0

10001 |11 0 G 1 Q J O1001 1 ¡11 0100J1

I O Q I O I [5*11 0101 [ÍT|ooi iofT| i 011 op"|001 11 [O |101 1 1 [Oj___^p__j_.

O I Q O I

oioi ijo"

11001 fT11 oí ofo"11011 pT

ioofT|n ioo fT

|om i fo Jn 111 |T

Fig. 3.41: Tabla de combinaciones.

Page 124: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

117

Cuando se ingresa la tabla automáticamente se actualizan los mintérminos

cuando se termina de ingresar todas las salidas se habilita el comando de

siguiente para proceder a la simplificación.

CUBOS O" 0 0 0 0 0

* 0 1 0 0 0

" 0 0 1 1 0" 0 1 0 1 0" 0 1 1 0 0* 1 0 0 0 1" 1 0 1 0 0

" 0 1 1 1 0" 1 0 0 1 1" 1 0 1 1 0" 1 1 0 0 1

0X000

01 0X001 XOO

0X1 1 OX01 1 O01X1001 1X0X1 1 001 00X11 X0011 01X01 X1 00

Fig. 3.42: Primera página de los Cubos O y cubos 1 de una función de 5 entradas.

En este caso como el número de cubos 1 es mayor que 16 mostramos por

paginas verticales de 16 en 16 para lo cual se muestra un comando para poder

ver las siguientes páginas con los otros cubos 1.

" 1 1 0 1 1" 1 1 1 1 0

1 X 0 1 11 X 1 1 01 1 0X11 1 1 XO

Fig. 3.43: Segunda página de los cubos O y de los cubos 1.

Cuando se indica la siguiente pagina aparece otro comando para mostrar la

pagina anterior.

Page 125: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

118

01 XXO

XX1 1 OX1 1 XO1 XOX11X1 XO

0X00001 XXOXX1 1 OX1 1X01 XOX11 XI XO

Fig. 3.44: Cubos 2 e Implicantes primos.

TABLA DE SIMPLIFICACIÓN

*

1

_ „ _ — __

X 1 1 X 0

1 X O X 1

1 X 1 X Q-

0f\

6

f{ -\

8c{

s>

10

,¿4 •'

12

-;

-. -4

l'l

/,\

17

19

* ,-

*

2O

íl !?

22

•<

^

>,J

25

>!

'

27

'

-

Fig. 3.45: Primera página horizontal de la tabla de simplificación

*

ÉSCE

A U U Lr

1 A A Lr

X 1 1 X 0A U A 1

A 1 A U^

ENCiALES

2

/•\l!>.'

3 0

>i>

0X000XX1 1 O01XXO1X0X11X1X0

Fig. 3.46: Segunda página horizontal de la tabla de simplificación e implicantes

primos esenciales.

Y^AWE'+CDE'+A'SE'+AC'E+ACE'

Fig. 3.47: Solución simplificada de la función de 5 entradas

Page 126: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

119

En esta función también únicamente existe implicantes primos esenciales y

la función obtenida es igual a la obtenida manualmente.

A continuación se prueba con otra función también de 5 entradas.

f(A, B, C, D, E) = Zm(1, 2, 3, 5, 9, 10, 11, 18, 19, 20, 21, 23, 25, 26, 27).

Esta función fue guardada anteriormente en el disco para lo cual tenemos

que abrirlo utilizando el menú como se indica a continuación el siguiente gráfico.

• Quine McCtuskey: Simplificación

Función TutoMi Teoría

Fig. 3.48: Ejecución del comando para abrir un archivo guardado en el disco

Ejecutando este comando aparece la siguiente ventana en la que se

selecciona el archivo deseado.

[MASTER

I ConsultasQj Piimef Texto presentadoC3 TEXTO

JfuncionSb boo

tunctónICb.boofunctón2.boofunción3.booIunctón3b.booIuncion4booIuncion4b.booluncionSboo

L ^J im \. 3.49: Ventana para seleccionar el archivo a abrir.

Page 127: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

120

Este comando abre la función, construye la tabla de combinaciones,

actualiza los mintérminos y actualiza el número de entradas quedando listo para

proceder a la simplificación.

En la figura 3.50 y figura 3.51 se indica el proceso de obtención de

implicantes primos.

|oooon|o|OOOQl[T'f Í '

|OOQ1o[l"p'

ioooiif i~p'ÓF"F

|ooi loprpfooTTTfoT"

001 00

00101

O O Q O [ 0

0001 [oo o i o p r0011 fTo i o o p r0101 |T011 o|ooTTTfT1000(0'1001 [T1010(1"1011 [T

|01QQO|o'p

|0100lfTp

|oioio[Tp[oToTTfrp101100(5" p|0110l(?p

|0111Q[cTp

lonnJíTp

Fig. 3.50: Función abierta

En la figura 3.51 se indica todo el procedimiento para obtener los

respectivos Cubos O, Cubos 1, Cubos 2, cubos 3 y los implicantes primos

correspondientes a esta función que estamos utilizando como ejemplo.

Page 128: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

121

CUBOS O

* 0 0 0 1 O

000110010101001010101001010100

0 1 0 1 11 0 0 1 11 0 1 0 11 1 0011 1 0 1 0

CUBQS10 0 0 X 10 0 X 0 10 X 0 0 10 0 0 1 X0X01 OX 0 0 1 O

CUBOS20 X 0 X 1O X O 1 XX O O 1 XX X 0 1 O

CUBOS 3| XX 01 X

X X 0 1 1XI 0X1X 1 O 1 X1 X O 1 X

IMPUONTES PRfWOS

1 0 1 1 11 1 0 1 1

0 0 X 0 1X01 011 01 OX1 0X1 11 0 1 X 10 X 0 X 1XI 0X1X X 0 1 X1 01 OX

XI 01 11 0X1 11 X01 11 0 1 X 11 1 0X11 1 01 X

Fig. 3.51: Proceso de obtención de los implicantes primos.

En las figuras 3.52 y 3.53 presentaremos la tabla de simplificación de los

implicantes primos, los implicantes primos esenciales, los implicantes primos

secundarios y la función simplificada.

*

X 0 1 0 1

1 0 1 X 10 X 0 X 1

X 1 0 X 1_ _ _ _ _ H __

]f\

:-•'-

*

T/s

.81Ae

1

DE

>1>

;S.M9

ir

=

Pi1

..-H

IFD

. ,1

G¿i

idi

F

0»113

-.>

19 2

f-\\

2

'f\\

2

/•\>,>

M|

Fig. 3.52: Primera página de la tabla de simplificación.

En el sentido horizontal no alcanzan todos mintérminos por esta razón hace

falta otra página horizontal para poder mostrar todos los mintérminos.

Page 129: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

122

*

*

U X U JT^

X 0 1 0 1U 1 U Jt~

U A 1 1~

1 0 1 X 1

0 X 0 X 1

X 1 0 X 1

X X 0 1 X-

25

:•

26

':yI

27

,;

'ESCENeíALESSeCUNDARiOSXX01X1 01ÜXXI 0X1

00X0110X1 1

Fig. 3.53: Segunda pagina de la tabla de simplificación e implicantes primos

En este gráfico se puede comprobar que fa función tiene 3 implicantes

primos esenciales y dos implicantes primos secundarios.

La primera fila de la tabla de simplificación contiene a todos los

mintérminos, mientras que la primera columna contiene a los implicantes primos.

También se observa que a la izquierda de los implicantes primos están las marcas

de los implicantes primos que son tomados en cuenta como esenciales o

secundarios.

Fig. 3.54: Solución simplificada de la función abierta

La solución contiene los tres primeros términos que provienen de los

implicantes primos esenciales y los dos últimos términos que salen de los

implicantes primos secundarios.

Función de 6 entradas:

f(A, B, C, D, E, F) =Zm(1, 2, 3, 4, 5, 8, 9, 10, 17, 20, 21, 24, 25, 27, 32, 33, 34, 36,

37, 40, 41, 42, 43, 44, 45, 46, 47, 48, 56, 59, 62)

Page 130: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

123

( oooooo (irI o 10000(0 | looooo fTjoooooT 010001|1 f l O O C i G I [T

11 0000(1

11 0001(0

( Q O Q Q 1 Q

I Q O O O I I [ i " lo iooi i (o( ioocni [o [110011 [o*000100

(000101 1 (010101

(0001 1Q,|ÍT|01 011 O

I O O Q I I I |cT|oioTiio ( ioono|o'|noiio0 (100111 lo"! 110111'

J001001 [v [oí 1001(1 (101 d o ií"l 101000 (fl 111_000|1

To.1 J11101 o|o

10011 oo|o j011100(011011 oo[i~|i 11100(0001101 foO 01110 Jo"

011101

011110 101110(1"1111 01 (O111110(1

001111 [Oj011 111JO J101 1 11 ff (1 11 11 1 (0

Fig. 3.55: Tabla de combinaciones de una función de 6 entradas.

CUBOS o CUBOS0* oooooi* 00001 O* 000100* 001000* 100000

* 00001 1* 000101* 001001* 00101 O* 010001"010100* 01 1000* 100001* 10001 O* 100100

* 101000* 1 10000

" 0 1 0 1 0 1" 0 1 1 0 0 1" 1 0 0 1 0 1" 101001" 1 0 1 0 1 0" 1 0 1 1 0 0* 1 1 1000

" 0 1 1 0 1 1" 1 0 1 0 1 1" 1 0 1 1 0 1" 1 0 1 1 1 0

" 1 0 1 1 1 1" 1 1 1 0 1 1" 1 1 1 1 1 0

Fig. 3.56: Tabla de cubos 0.

Page 131: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

124

CUBOS 10000X1000X0100X0010X0001X O O O O I00001X00X01 OX0001O0001OX0X0100X00100001OOX0010X00X1000X010001 O O O O X

CUBOS 11000X0100X0010X0001XOOOO

0X0101X001010X1001X01001X0101 O010X0101X0010101OX011OOXX11000100X01

CUBOS 11 0 X 0 0 11 0 X 0 1 O1 O O 1 O X1 O X 1 O O1 0 1 O O X1 0 1 0 X 01 0 1 X 0 01 X 1 0 0 01 • x o o o

01 1 0 X 11 0 X 1 0 11 0 1 0 X 1

0 1 X 0 11 0 1 0 1 X1 0 1 X 1 0

1 01 1 O X1 0 1 1 X 0

XI 101 11 0 1 X 1 11 X 1 0 1 11 0 1 1 X 11 0 1 1 1 X1 X 1 1 1 0

Fig. 3.57: Tabla de cubos 1,

CUBOS 2 CUBOS 30 X 0 X 0 1X O O X 0 1O X X 0 0 1X O X 0 0 1X O X 0 1 O0 X 0 1 O XX Q 0 1 O X0 X 1 O O XX 0 1 O O XX 0 1 0 X 0X X 1 0 0 0

* 1OOXOX* 1OXOOX10X0X0

* 1OXXOO1XXOOO

"1OXX01* 1 0X1 OX* 1 01OXX* 101XOX" 1 0 1 XXO

* 1 01XX1* 1 01XIX* 1 01 1 XX

1 O X X O X

1 01 XXX

Fig. 3.58: Tabla de cubos 2 y de cubos 3.

Page 132: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

125

IMPLICANTES PRIMOS IMPLICANTES PRIMOS0 0 0 0 X 10 0 0 0 1 X0 1 1 0 X 1X 1 1 0 1 11 X 1 0 1 11 X 1 1 1 00 X 0 X 0 1X O O X 0 1O X X 0 0 1X O X 0 0 1X O X 0 1 O0 X 0 1 O XX 0 0 1 O X0 X 1 O O XX 0 1 O O XX 0 1 0 X 0

Fig. 3.59: Tabla de implicantes primos.

X X 1 0 0 01 0 X 0 X 01 X X O O O1 O X X O X1 01 XXX

TABLA DE SIMPLIFICACIÓN

*

*

,.—.,,

0 0 0 0 1 X0 1 1 0 X 1

1 X 1 0 1 1

0 X 0 X O 1X 0 0 X O 1

X 0 X 0 0 1_ _ _ _ _ _ _ _

X 0 0 1 0 X_ -- - n 1-1 VU X 1 U O X

X 0 1 0 0 XX 0 1 0 X 0

]

(\f

2

;

'

3f\1)

4

f\

G

f\

e c

(• \

D 1

(1

7

1

2 D

1)

2

{•\

>,t

_JidFig. 3.60: Primera página Horizontal y Primera página Vertical de la tabla de

simplificación

Page 133: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

126

TABLA DE SIMPLIRCACION

-

X X 1 0 0 O

1 0 X 0 X 01 X X 0 0 0

1 2

t

i

3 4 5 8*

¡

1

9 10 17 20 21

^ •'1

Fig. 3.61: Primera Página Horizontal y Segunda Vertical de la tabla de

Simplificación.

TABLA DE SIMPLIFICACIÓN

»

*

0 O 0 0 1 X0 1 1 0 X 1

1 X 1 0 1 1

0 X 0 X 0 1X 0 0 X 0 1

X 0 X 0 0 1X 0 X 0 1 0-

X 0 0 1 0 X

X 0 1 0 O X

X 0 1 0 X 0

241

i

1

- -tí*..^

r~

25

(y. •>>

27

c-\¡ \

32 33 34

|(

36 37 40 41 42

.

pcsr^crur-iAi t=c QPi^iiunADiric

Fig. 3.62: Segunda Página Horizontal y primera página Vertical de la tabla de

simplificación.

TABLA DE SIMPLIFICACIÓN

X X 1 0 0 0

1 0 X 0 X 01 X X 0 0 0

24

f!

i

i

i:

1

25 27 32

--

ir

33

f^

34

if

36

{• \7 f \0

41

1

42

^^^^ j^^B^S

Fig. 3.63: Segunda página Horizontal y segunda página vertical de la tabla de

simplificación.

Page 134: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

127

*

*

**

U U U A 1

0 0 0 0 1 X0 1 1 0 X 1

1 1 U 1 1

1 X 1 0 1 1

A l l í Lr^

0 X 0 X 0 1

X 0 0 X 0 1

A X U U 1

X 0 X 0 0 1U A U i Lr^A U 1 U A

X 0 0 1 0 X0 X 1 0 0 X-X 0 1 0 0 XX 0 1 0 X 0

43 44 45 46 47 48 56 59

(\\

62

s\

A * -t-r*

Fig. 3.64: Tercera Horizontal y primera vertical de la tabla de simplificación.

TABLA DE SÍM PURGACIÓN1

*<•

X X 1 0 0 01 0 X 0 X 01 X X 0 0 0

U A A U A

U 1 A A A

43

¿\i}

44

1

ri^

y

45

(.\7

46

(•\V

47

(.\>

48

-

56

-

T;

59 62

ce

Fig. 3.65: Tercera página Horizontal y segunda página vertical de la tabla de

simplificación.

ESCENCIALES SECUNDARIOS0 X 0 1 O X1 0 1 X X X1 X X O O O1 X 1 1 1 0

O X X O Q 10 X 1 O O XX O X 0 1 01 O X X O XX 1 1 0 1 10 0 0 0 X 1

Fig. 3.66: Implicantes primos esenciales y secundarios.

Fig. 3.67: Solución simplificada de la función

Page 135: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

128

Función de 7 entradas.

F(A, B, C, D, E, F, G) =Sm (1, 2, 3, 5, 7, 9, 11, 15, 17, 19, 21, 22, 23, 25, 27, 29,

30, 31, 33, 37, 38, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 65, 66, 67, 69, 71,

73, 75, 77, 79, 81, 83, 85, 87, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111,

113, 115, 117, 119, 121, 123, 125, 127).

0000000J 0 0 0 0 0 0 10000010000001 10000100000010100001100000111000100000010D10001010D00101 1

0001 1 0000011010001 1 100001 1 1 1

0

11101010

10

1oo

0 0 1 0 Q O O J O00100010010010001001100101 00001010100101 1000101 11001 1000001 1001001 1010001101 10011100001 1101

0 J001 1110i joomi i

10

10

1110

[T0

o""F"

010000001000D1

0100010010001101 00100010010101001 1001001 11010100001010010101010010101 10101 1000101 1010101 1100101111

o•pPpFirirpir0

r01

0 1 1 0 0 0 0 |0110001 |011001 O J011001 1 |0 1 1 0 1 0 0 ]0110101 |011Ü11QJ01101 1 1 ¡01 1 1 0 0 0 ¡0 1 1 1 0 0 1 J01 1 1 0 1 0 J01110110111 100011 1 101

0 \ 1 1 1 1 1 01 ¡0111 111 j

Fig. 3,68: Tabla de combinaciones.

12357911151719212223252729

0000000000000000

0000000000000000

0000000011111111

0000011100000111

0001100100111001

0110101101011010

1011111111101111

MINTERMINOS MINTERMINOS30313337383941434547495153555759

0 0 1 1 1 1 10 0 1 1 1 101 000001001001 001 1 (0 1 0 0 1 10101000101010101 100 1 0 1 1 101 1 00001 1 0010 1 1 0 1 00 1 1 0 1 10 1 1 1 0 00 1 1 1 0 1

)

)

61656667697173757779818385879193

0111111111111111

1000000000000000

1000000000111111

1000001111000011

1000110011001101

0011010101010110

1101111111111111

Fig. 3.69: Mintérminos.

Page 136: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

129

MINTERMINOS959799101103105107109111113115117119121123125

1 0 1 1 1 1 1 Al1 1 0 0 0 0 1 H|1 1 0 0 0 1 11 1 0 0 1 0 11 1 0 0 1 1 11 1 01 0011 1 0 1 0 1 11 1 0 1 1 0 11 1 0 1 1 1 11 1 1 00011 1 1 0 0 1 11 1 1 0 1 0 11 1 1 0 1 1 11 1 1 1 0 0 11 1 1 1 0 1 1 *j .1 1 1 1 1 0 1 IB

127 1 1 1 1 1 1 1

Fig. 3.70: Míntérminos.

A continuación se indica los cubos ceros.

CUBOS O* O O O O O Q 1* 0 0 0 0 0 1 0

* 0 0 0 0 0 11" 0 0 0 0 1 0 1* 0 0 0 1 0 0 1 •* 001 0001 '•'•• - • ;* 0 1 0 0 0 0 1* 1 0 0 0 0 0 1* 1 0 0 0 0 1 0

* 0 0 0 0 1 1 1* 0 0 0 1 0 1 1" 001 0 0 1 1" 001 o í 01 [si* oo 1 o 1 1 o IB

* 001 1 0 0 1 Al* 01 001 01 jQ

0 1 0 0 1 10" 0 1 0 1 0 0 1* 01 1 0 0 0 1* 1 0 0 0 0 1 1* 1 0001 01* 1 o o 1 o n i" 1 01 0 0 0 1* 1 1 0 0 0 0 1

* 0 0 0 1 1 1 1" 0 0 1 0 1 1 1" 0 0 1 1 0 1 1* 0 0 1 1 1 01 m¿* n n 1 1 1 1 n wi

* 01 0 0 1 1 1 Al" 0 1 0 1 0 1 1 JH

0 1 U 1 1 0 1" 0 1 1 0 0 1 1* 01 1 01 01 . -í

" 0 1 1 1 0 0 1" 1 0 0 0 1 1 1" 1 0 0 1 0 1 1" 1 0 0 1 1 0 1" 1 0 1 0 0 1 1

i U 1 U 1 U 1" 1 1 0 0 0 1 1" 1 1 0 0 1 01* 1 1 01 0 0 1" 1 1 1 0 0 0 1 jAé

n-?M

" 0 0 1 1 1 1 1 A]" 0 1 0 1 1 1 1 JH

0 1 1 0 1 1 1" 0 1 1 1 0 1 1 J:* 01 1 1 1 01* 1 0 0 1 1 1 1" 1 0 1 0 1 1 1* 1 o 1 1 n 1 i" 1 0 1 1 1 0 1" 1 1 0 0 1 1 1

1 1 v I U I 1 „ - *

" 1 1 0 1 1 0 1 • •" 1 1 1 0 0 1 1 v -* 1 11 01 01 v.;;,,

" 1 1 1 1 0 0 1 má"3$

" 1 0 1 1 1 1 1" 1 1 0 1 1 1 1" 1 1 1 0 1 1 1" 1 1 1 1 0 1 1" 1 1 1 1 1 0 1

" 1 1 1 1 1 1 1

Fig. 3.71: Cubos O

Page 137: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

130

Desde la figura 3.72 hasta la figura 3.74 se indican los cubos unos.CUBOS1 CUBOS 1 CUBOS 1 CUBOS 1

00000X10000X01000X00100X00010X00001X000001000001XX00001 0

0000X1 1000X01 100X001 1X00001 100001X100X0101 *|0X00101 W\J

X000101 Al00010X1 TI00X1 0010X01 001X001 001001 00X1001 0X01001 X001f\v i f\ iUX 1 Ü U 0 1X01 000101 00X0101 0X00101 X0001XI 0000110000x1 jy1000X01 T|

100x001 Al10X0001 T|1X000011 00001 X

000X1 1 100X01 1 10X001 1 1V f\ 1 1A U U U 1 1 1

0001 XI 100X1 01 10X01 01 1X001 01 1001 0X1 1001x01 1 *|0X1 001 1 5]

X01 001 1 Al00101X1 3¡001X1010X1 0101X01 01 01001 01 IX001X110001 1 0X1001 1X010X1 1 00101001X101 0X1 0101 X01 01XI 001 010 1 0 0 1 1 X Jl0101 0X1 'W

0101X0101X1001XI 01 00101 1 00X101 1 0X0101 1 X001XI 1 00011 000X1 11 00X0 1 11 0X001 11 X0001 11 0001 XI1 00X1 011 0X01 011 X001 011 001 0X1

Fig. 3.72: Cubos 1

CUBOS 1 CUBOS 1 CUBOS 1 CUBOS 1 CUBOS 1i 001 xo i Al1 x 0 1 0 0 1 JQ1 01 0 0 X 11 01 0 X 0 11 XI 0 0 0 11 1 0 0 0 X 11 1 0 0 X 0 11 1 0 X 0 0 11 1 X 0 0 0 1

0 0 X 1 1 1 10 X 0 1 1 1 1X 0 0 1 1 1 10 0 1 X 1 1 10 X 1 0 1 1 1 f r )X01 01 1 1 ™

0 0 1 1 x 1 1 Alox i 1 0 1 1 ¥1X 0 1 1 01 10 0 1 1 1X10 X 1 1 1 01X 0 1 1 1 01001 11 1 X01 0 X 1 1 101 X 0 1 1 1XI 001 1 10 1 0 1 X 1 10 1 X 1 0 1 1XI 01 01 10 1 0 1 1 X 10 1 X 1 1 0 1 1 1X 1 0 1 1 0 1 ™

0 1 1 0 X 1 1 A l01 1 X 0 1 1 TjXI 1 0 0 1 10 1 1 0 1 X 10 1 1 X 1 0 1XI 1 01 010 1 1 1 0X101 1 1 X 0 1XI 11 0 0 11 0 0 X 1 1 11 0 X 0 1 1 11 X 0 0 1 1 11 0 0 1 X 1 11 0X1 01 11 X 0 1 01 1 jlj1 0 0 1 1 X 1 W\ ox i 1 0 1 Aj

1 X 0 1 1 01 Si1 01 0X1 11 0 1 X 0 1 11 X 1 0 0 1 11 0 1 0 1 X 11 0 1 X 1 0 11 X 1 0 1 0 11 1 00X1 11 1 0 X 0 1 11 1 X 0 0 1 11 1 0 0 1 X 11 1 0 X 1 011 1 X 0 1 011 1 0 1 ox i jrj1 1 0 1 x 0 1 W\1

1 1 1 0 0 X 11 1 1 0 X 0 11 1 1 X 0 0 1

X 0 1 1 1 1 1XI 01 1 1 1XI 1 01 1 1X1 1 1 01 1XI 1 1 1 011 0X1 1 1 11 X 0 1 1 1 11 0 1 X 1 1 11 X 1 0 1 1 11 0 1 1 X 1 11 X 1 1 0 1 1

Fig. 3.73: Cubos 1

Page 138: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

131

CUBOS 1 CUBOS 1l o n i x i Al1 X 1 1 1 0 1 j]1 1 0X1 1 11 1X01 1 11 1 0 1 X 1 11 1 X 1 0 1 11 1 0 1 1 X 11 1 X 1 1 0 11 1 1 0X1 11 1 1 X 0 1 11 1 1 0 1 X 11 1 1 X 1 0 11 1 1 1 0X11 1 1 1 X 0 1

• 1X1 x 1 1 1 1 1 VI

1 1 X 1 1 1 11 1 1 X 1 1 11 1 1 1 X 1 11 1 1 1 1 X 1

Fig. 3.74: Cubos 1

Desde la figura 3.75 hasta la figura 3.77 se indican los cubos 2.

CUBOS 2 CUBOS 2 CUBOS 2O O O O X X 10 0 0 X 0 X 10 0 X 0 0 X 1X O O O O X 10 0 X 0 X 0 10 X 0 0 X 0 1X O O O X 0 1O O X X 0 0 10 X 0 X 0 0 1X O O X 0 0 1O X X 0 0 0 1X O X 0 0 0 1X X 0 0 0 0 1X 0 0 0 0 1 X

O O O X X 1 1 f f l

0 0 X 0 X 1 1 AlX O O O X 1 1 10O O X X 0 1 1X O O X 0 1 1X O X 0 0 1 10 0 X 0 1 X10 X 0 0 1 XIX 0 0 0 1 XIO X X 0 1 01X O X 0 1 01X X 0 0 1 010 0 X 1 0 X 10 X 0 1 0 X 1X 0 0 1 0X1n y y 1 n n 1 • 1U /\S 1 v \J 1 ^H

X X 0 1 0 0 1 "

o o i o x x i Al0 0 1 X 0 X 1 T\1 0 0 X 1

X 0 1 0 0 X 10 0 1 X X 0 10X1 0 X 0 1X 0 1 0 X 0 10 X 1 X 0 0 1XX1 0 0 0 101 O X X 0 101 X O X 0 1XI 0 0 X 0 10 1 X X O Q 1XI 0 X 0 0 1y 1 yo n o i • 1/>. 1 /*^ v v U 1 tl

1 0 0 0 X X 1 Tj

1 0 0 X 0 X 1 Al1 0 X 0 0 X 1 T|1 X 0 0 0 X 11 O O X X 0 11 0 X 0 X 0 11 X 0 0 X 0 11 X 0 X 0 0 11 X X 0 0 0 1

O O X X 1 1 10 X 0 X 1 1 1X O O X 1 1 1O X X 0 1 1 1X O X 0 1 1 1y y n n 1 i i • )A. .A. U \J 1 1 1 . tl

0 0 x 1 xi i T]

0 X 0 1 X I 1X 0 0 1 X 1 1O X X 1 01 1X O X 1 01 1X X 0 1 01 10 0 1 X X 1 10X1 0X1 1X 0 1 0X1 10 X 1 X 0 1 1X 0 1 X 0 1 1X X I 00 1 10 0 1 X 1 X 10X1 01 XIX 0 1 01 XIn y i y i niU XV 1 .A. 1 \J 1

X 0 1 XI 01

Fig. 3.75: Cubos 2

Page 139: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

133

CU8OS8 CUBOS3O O X O X X 1X O O O X X 1O O X X O X 1X O O X O X 1X O X O O X 1O X X O X 0 1X O X O X 0 1X X O O X 0 1O X X X 0 0 1X X O X 0 0 1X X X 0 0 0 1 r

O O X X X 1 1X O O X X 1 1X O X O X 1 1 [jgxoxxo i 1 \m

o x x o i x i 'MX O X 0 1 X 1 H.X X 0 0 1 X 1X X X 0 1 0 1O X X 1 0 X 1X X 0 1 0 X 10 0 1 X X X 10X1 O X X 1X 0 1 O X X 10 X 1 X 0 X 1XXI 00X1 :

0X1 X X 0 1XX 1 0 X 0 101 X X X 0 1x i o x x o i a|X 1 X O X 0 1 1H<

x i x x o o i Mi ooxxx i ül1 0 X O X X 11 X O O X X 11 X 0 X 0 X 11 X X O O X 11 X O X X 0 11 X X O X 0 1

X O X X 1 1 1XXOX1 1 1X X X 0 1 1 1X O X 1 XI 1X X 0 1 XI 1xxx ion mtxoixxn m

XX1 0X1 1XX1 X 0 1 1X 0 1 X 1 X 1XX1 0 1 X 1XX1 XI 01XI 0 X 1 X 1X1 X 0 1 X1X 1 X X 1 01XI 01 XXIX 1 X 1 0X1X1 XI X01XI 1 O X X 1X1 1 X 0 X 1XI 1 X X 0 11 O X X X 1 11 X O X X 1 1

Fig. 3.78: Cubos 3

CUBOS31XXOX111XXX01 11 OXX1XI1XOX1X11XX01XI1XXX1011X01XX11X1OXX111OXXX111XOXX111XXOX111XXX01

1 X X X 1 1 11 X X 1 X I 11 X X 1 1 X 1

1 X 1 X X 1 11X1XIX11 1XXX1 11 1 X X I X I1 1X1XXI1 1 1XXXI

Fig. 3.79: Cubos 3

Page 140: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

134

CUBOS 4x o x o x x fX X X O X 0 1

X O X X X 1 1X X X 0 1 X 1X X I O X X 1X 1 X X X 0 11 X O X X X 11 X X O X X 1

1 X X X X 1 11 X X X 1 X 11 1 X X X X 1

Fig. 3.80: Cubos 4

En la figura 3.81 se indican los implicantes primos.

IMPLICANTES PRIMOS IMPLICANTES PRIMOS IMPLICANTES PRIMOS01001 1 XX00001X00 1 X I 1 XOOXXOX1XOOXOX1OXXX001XXOX001OXX10X1XX010X1001XXX10X1X0X10X1XX01X X O X 1 1 1XX01X11XXXI011XXIX011

X01X1X1XX1X101XI0X1X1X101XX1XIXI0X1X11X0X1XOXOXX1XXXOX01XOXXX11XXX01X1XX1OXX1X1XXX011XOXXX11XXOXX11XXXX111XXX1X1

1 1 X X X X 1

Fig. 3.81: Implicantes primos

Desde la figura 3.82 hasta la figura 3.96 se indican la tabla de simplificación

Page 141: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

135

TABLA DE SIMPLIFICACIÓN

»

-*

.

"

*

— _ -,X O U O O 1 JS~

0 0 X X 0 X 1

0 X X X 0 0 1X X 0 X 0 0 1

X X 0 1 0 X 1

0 X 1 X 0 X 10 X 1 X X 0 1

X X 0 1 X 1 1

X X X 1 0 1 1

X X 1 X 0 1 1

1

2

/4. s;

3

fL

1

\

5 7

1

9

••

•(•

\1

T_

•~

T

,

*

T

15

T

17 19

*

T

r

«wFig. 3.82: Tabla de Simplificación

TABLA DE SIMPLIFICACIÓN

*

*

»

0 0 X X 0 X 1

0 X X X 0 0 1

X X 0 X 0 0 1

X X 0 1 0 X 1

0 X 1 X 0 X 10 X 1 X X 0 1

X X 0 1 X 1 1

X X X 1 0 1 1

X X 1 X 0 1 1

21 22

f\

23

t\

25

i-sfl7

27

*

T

*

*

29

f\

30

¿^

•i)

31

f-\3

37

Fig. 3.83: Tabla de Simplificación

Page 142: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

136

"

*

0 0 X X 0 X 1

0 X X X 0 0 1

X X Q X 0 0 1

X X 0 1 0 X 1

0 X 1 X 0 X 10 X 1 X X 0 1

X O X 1 1 1

X X 0 1 X 1 1

X X X 1 0 1 1

X X 1 X 0 1 1

3(•\-,J

3c1.9\)

41

¡i

itt

1

1

- t

11i

4

(3

^

'

3

\5

,<!

jiii1

4

7 4

9 5

!

1 53 55

"V

Fig. 3.84: Tabla de Simplificación

TABLA DE SIMPLIFICACIÓN

iVm

*

*

*

*

0 0 X X 0 X 1

0 X X X 0 0 1X X 0 X 0 0 1

X X 1 O X 1

X X 0 1 0 X 1

0 X 1 X 0 X 10 X 1 X X 0 1

X U X 1 1 1

X X 0 1 X 1 1

X X X 1 0 1 1X X 1 X 0 1 1

5

1•

7

i

5

f.

9

)

6

1 65 6

/•\f

6

t\ht

6 9 71 1

(•\\

75

_

T

*

V

•4»

Fig. 3.85: Tabla de Simplificación

Page 143: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

137

TABLA DE SIMPLIFICACIÓN

-"

1mmm

*

a

*

0 0 X X 0 X 1

0 X X X 0 0 1X X 0 X 0 0 1

X X 0 1 0 X 1

0 X 1 X 0 X 1

o x i r x o i

X X 0 1 X 1 1

X X X 1 0 1 1

X X 1 X 0 1 1

77 7

1

9 81 83

'.

f

e 5 87 91

í

;

i

T

*

93 95 97

WÉf

Fig. 3.86: Tabla de Simplificación

Vr

.*

*

*

^

*

0 0 X X 0 X 1

0 X X X 0 0 1

X X 0 X 0 0 1

X X 0 1 0 X 1

0 X 1 X 0 X 10 X 1 X X 0 1

X X O 1 X 1 1

X X X 1 0 1 1X X 1 X 0 1 1

99 10 1 103 10

,

5

F

>

10

'

7 109 11

'•

1 113 115 117

• ' • -

fV*

Fig. 3.87: Tabla de Simplificación

Page 144: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

138

*

0 0 X X 0 X 1u u x u & i

0 X X X 0 0 1

X X 0 X 0 0 1

X X 0 1 0 X 1U 1 X A X 1

0 X 1 X 0 X 1

0 X 1 X X 0 1A U Ji. 1 1 1

X X 0 1 X 1 1

X X X 1 0 1 1

X X 1 X 0 1 1

11

_]

9 12

..1 ,

~1

1 123 12 5

h""

127

i

ij

i

1i

i\

;if

s

!

Fig. 3.88: Tabla de Simplificación

i1

*

.

X 0 1 X 1 X 1

X X 1 X 1 0 1

X 1 0 X 1 X 1

X 1 0 1 X X 1

X 1 X 1 0 X 1

X 1 1 X 0 X 1

X 0 X 0 X X 1

X 0 X X X 1 1

X X X 0 1 X 1

X X 1 O X X 1

X 1 X X X 0 1-

1 X 0 X X X 1

1 X X 0 X X 1

1 X X X X 1 1

1 X X X 1 X 1 -

3

f\„

L

\

2

-'

— —

I

f\ilf

7

*

.**

w

— («_

11

;*••-

, — „

15

'f -

„;_

. -™^ .

1

f\

7

^ - -

19

*

-. .4.

«

,_

.~

•fH

Fig. 3.89: Tabla de Simplificación

Page 145: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

139

TABLA DE SIMPLIFICACIÓN

»

«

X 0 1 X 1 X 1X X 1 X 1 0 1X 1 0 X 1 X 1X 1 0 1 X X 1X 1 X 1 0 X 1X 1 1 X 0 X 1X 0 X 0 X X 1

X 0 X X X 1 1X X X 0 1 X 1

1 X 0 X X X 11 X X 0 X X 11 X X X X 1 1

21

/k•l)

22 23

'

25 27

..*, .

29 30 31

•33

f.{\

37

/.\\

•P>

Fig. 3.90: Tabla de Simplificación

TABIA DE SIMPLIFICACIÓN

*

X 0 1 X 1 X 1

X X 1 X 1 0 1

X 1 0 X 1 X 1X 1 0 1 X X 1

X 1 X 1 0 X 1

X 1 1 X 0 X 1

X 0 X 0 X X 1

X 0 X X X 1 1

X X X 0 1 X 1

1 i X X U 1—

1 X 0 X X X 1

1 X X 0 X X 1

1 X X X X 1 1

39 39 4

J•

1

1

r

t

-

43 ! 4

-*¡

5

*~1

1

47 4

/1.

9

1>

S

i

\\

5

/¡v¡

3

•,>

5

i

^

5

-

•NP

Fig. 3.91: Tabla de Simplificación

Page 146: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

140

TABLA DE SIMPLIFICACIÓN1

*

1

X 0 1 X 1 X 1

X X 1 X 1 0 1

X 1 0 X 1 X 1

X 1 0 1 X X 1

X 1 X 1 0 X 1

X 1 1 X 0 X i

X 0 X 0 X X 1

X 0 X X X 1 1

X X X 0 1 X 1

1 A A A U 1 -

1 X 0 X X X 1

1 X X 0 X X 1

1 X X X X 1 1

1 X X X 1 X 1 -

5

1

'

7 5

9 6

1

1

'

\1 —

6

/1

5

•>)-

66 67 6

/<!

9

&„ . , ,

7

1

JJ

^

í

-

'

![

-—

73

75

•T-

T

*

.

•P»

Fig. 3.92: Tabla de Simplificación

TABLA DE SIMPLIFICACIÓN

*

_..

X 0 1 X í X 1

X X 1 X 1 0 1

X 1 0 X 1 X 1

X 1 0 1 X X 1

X 1 X 1 0 X 1

X 1 1 X 0 X 1

X 0 X 0 X X 1

X 0 X X X 1 1

X X X 0 1 X 1

V _ _ _ _ _ . _ .

X 1 A X A U 1

1 X 0 X X X 1

1 X X 0 X X 1

1 X X X X 1 1

1 X X X 1 X 1

7

. ¿

7

1" "

*-_-

7

9

1

!*— ~

a

f\

1

'it

83

T

T-

_

T

*, ,

8

fV.

5

!i7

81

1

— ,

7

k.

91

- '¿.

¥

9i

i

•*•—

3r

f —

r_.

9i

i

^

5

F

^h

9

<

^

7

s)

•v»

Fig. 3.93: Tabla de Simplificación

Page 147: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

141

TABLA DE SfM PI.1 FICACION

*

X 0 1 X 1 X 1

X X 1 X 1 0 1

X 1 0 X 1 X 1

X 1 0 1 X X 1

X 1 X 1 0 X 1X i 1 X 0 X 1X 0 X 0 X X 1

v r* *r ir *r 4i O A 2 X 1 1

X X X 0 1 X 1X 1 U A A 1—

1 X 0 X X X 11 X X 0 X X 1

1 X X X X 1 14 *T T» *» «• -á1 X X X 1 X 1

99 1C

f\>

10

1

-y

3 1C

1

••

5

')

10 7 10

;

9

1

11

1

1 11

f\s>

11

1

5 11

/\& ,

•V

Fig. 3.94: Tabla de Simplificación

DE SfMPUPCAGION

i•

'fl•£

*

X 0 1 X 1 X 1

X X 1 X 1 0 1X 1 0 X 1 X 1

X 1 0 1 X X 1X 1 X 1 0 X 1X 1 1 X 0 X 1

X 0 X 0 X X 1A A U A U 1

U A A A 1 1

X X X 0 1 X 1

A 1 U A A i

1 & A A U 1

1 X 0 X X X 11 X X 0 X X 1

1 X X X X 1 1

11

i

9

rhr

12

'

1

1

'

12

'

3 12

..

5

..

12 7

Fig. 3.95: Tabla de Simplificación

Page 148: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

142

TABLA DE SIMPLIFICACIÓN1 2

|11

3|t1

5|T1

7 9 11 15 17 19

^W

•21 22 23 25

1

1

27 29 30 31 33 37

TABLA DE SIMPLIFICACIÓN38 39

1

1

41

,!

43I11

45

1

471í

491

1

51 53|

1

55

•PA i iroTABLA DE SIMPLIFICACIÓN

•57

i

591

I

61 65i11

66 67|

I

69 71

•i

73J11

75

TABLA DE SIMPLIFICACIÓN

^E9r

77

1

79 81 83 85 87

!

91 93

1

95

97

TABLA DE SIMPLIFICACIÓN

• 1 1 X X X X 1-

99

TT

101 103A

105

i

107\í\

i

109

T

111 113 115lí.rí

117

TABLA DE SIMPLIFICACIÓN

jfSr

1 1 X X X X 1-

119 121

T

123(ti'T

125 127

,;

Fig. 3.96: Tabla de Simplificación

En la figura 3.97 se presenta los implicantes primos esenciales y

secundarios

SECUNDARIOSX 0 0 0 0 1 X XXXOX01.Í001X1IX X 1 X X X 0 10 1 0 0 1 I X 1 X X X 1 X 1

1 1 X X X X 1XOXXX11O X X 1 0 X 1X X 1 O X X 1X O O X O X 1001XXX1¿J

X X O X 1 1 -Fig. 3.97: Tabla de Simplificación

Page 149: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

144

CAPITULO IV

CONCLUSIONES.

4.1 COMENTARIOS.

- El método de simplificación Quine-McCIuskey es un método tabular que se

debe tener cuidado en el desarrollo del mismo para no cometer

equivocaciones, lo cual provocará que la simplificación no sea mejor.

- El programa de simplificación del presente proyecto de titulación es muy

simple de utilizar, ya que está hecho para correr bajo el sistema Windows y

prácticamente en cualquier Computador Personal, ya que fue desarrollado en

una máquina Pentium I, con 24 MB de memoria RAM.

- Para desarrollar el programa se usó el lenguaje de programación Visual Basic

6.0, ya que teñe las herramientas necesarias para diseñar este programa.

- Cada uno de los cubos n se almacena en una matriz que tiene el número de

filas de acuerdo al mayor número de cubos encontrados durante el desarrollo,

por ejemplo si se encontraron 80 cubos, entonces la matriz tendrá 80 filas;

mientras que el número de columnas que tiene esta matriz depende de los

cubos de mayor orden, por ejemplo, si se tiene hasta cubos 7 la matriz tendrá

7 columnas.

- La tabla de simplificación también se construye basándose en una matriz en la

que se ubican las marcas, dependiendo de los implicantes primos(filas), y los

mintérminos de la función original (columnas).

- Si se usa el programa hasta 5 variables de entrada se ha incluido un retardo

en cada uno de los pasos para visualizar de mejor manera, y entender el

proceso de simplificación, estos retardos se incluyen para facilitar el proceso

de aprendizaje, puesto que se trata de un proyecto de titulación didáctico.

Mientras que para un número mayor de variables no se introducen estos

Page 150: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

145

retardos de tiempo porque, en este caso se necesita simplificar lo más rápido

posible y obtener la función simplificada sin importar el proceso.

- El archivo que contiene la teoría del método de simplificación tabular Quine-

McCIuskey se encuentra en el CD con el nombre Texto.rtT.

4.2 CONCLUSIONES.

Luego de terminar este trabajo se pueden obtener las siguientes

conclusiones:

- Las ecuaciones con más de 6 variables de entrada no se pudieron comprobar

manualmente debido a que el método gráfico del mapa de Karnaugh ya no es

aplicable, y el tiempo que tomaría la simplificación manual de una función de

tantas variables de entrada, sería demasiado largo, y poco confiable.

- El programa puede ser usado como un tutorial de aprendizaje usando hasta 5

variables de entrada, mientras que se puede usar profesionalmente para un

número mayor de variables de entrada.

- Este programa encuentra la función simplificada verdadera debido a que

calcula los implicantes primos esenciales, y los implicantes primos secundarios

de menor costo.

- El tiempo de demora de simplificación del programa es casi imperceptible

hasta una función de 3 entradas; mientras que hasta 6 entradas, el tiempo que

emplea es de únicamente unos pocos segundos; para un número alto de

variables el tiempo empleado es un poco alto, pero adecuado y aceptable,

considerando la cantidad de operaciones que se deben realizar hasta obtener

la función totalmente simplificada.

- Debido a que todos los cubos n se almacenan en una matriz, facilita para

regresar o adelantar con facilidad, sin necesidad de volver a realizar los

Page 151: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

146

cálculos involucrados en el proceso. Esto ayuda a revisar el proceso de

simplificación y regresar a cualquier paso del mismo.

4.3 RECOMENDACIONES.

- Este programa se puede usar tanto como un tutorial de aprendizaje de

simplificación de funciones booleanas utilizando el método de Quine-McKIusky

como para simplificar funciones booleanas de hasta 10 variables de entrada

con propósitos profesionales.

- Este programa se puede cambiar, para utilizarlo en la simplificación de una

función de más de 10 variables de entrada, únicamente utilizando una

computadora más veloz y con una cantidad grande de memoria RAM para

almacenar las matrices de los cubos y la tabla de simplificación.

- Los cambios que se deben hacer son: Definir matrices de mayor orden en la

rutina de módulos, ya que este programa está desarrollado definiendo

matrices lo suficientemente grandes como para no tener problemas en la

simplificación de hasta 10 variables de entrada, además en la rutina de

escritura de la solución se debe incluir más líneas de programación que

permitan ingresar las variables adicionales.

- El programa permite realizar la simplificación de una función mientras se

revisa la teoría de simplificación o también se revisa el tutorial de uso del

programa, permitiendo de esta manera utilizar el programa como una guía de

aprendizaje y manejo.

Page 152: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

147

BIBLIOGRAFÍA.

- M. MORRIS MANO, Lógica Digital y Diseño de Computadoras, Prentice

hall, 1982. México.

- Cornell Gary, Visual Basic 6.0 Manual de Referencia, Me Graw Hill, 1999,

España.

- Ronald J. TOCCI, Sistemas Digitales. Principios y aplicaciones, Sexta

edición, 1996. México.

- Fredrick J. Hill/ Gerald R. Peterson, Switching Theory & Logical Design,

Tercera Edición, 1981, New York.

- John F. Weakerly, Diseño Digital, Principios y prácticas, 1992, México

- Maurice Bird & Roy Schmidt. Practica! Digital Electronics, Laboratory

Workbook, Hewlett- Packard, Santa Clara California, 1974.

- Manual de circuitos integrados TTL de la Texas Instruments, Second

Edition, 1981.

- Apuntes de Sistemas Digitales EPN.

- http://campus.murravstate.edu/academic/facultv/bob.pilqrim/405/quine.html

- http://logik.phl.univie.ac.at/-chris/qmo-uk.html

- http://www.algoritm.qm.home.ro/

- www.seattlerobotics.orq/encoder/200106/qmccmin.htm

- www.ihs.theoinf.tu-ilmenau.de/-sane/projekte/qmc/embed_qmc.html

- www.math.uni-muenster.de/informatik/Scripten/

Praktischelnformatiklll/html/node38.html

- www.rpi.edu/dept/ecse/coco/SOO/W03/Q-Mmethod.ppt

- www.ece.odu.eduMeathrum/ECE241_284/support/quine.html

- http://pehuen.chiilan.ubiobio.cl/-lqaiardo/odc/aigebra/

Page 153: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

148

ANEXO A.

LISTADO DEL CÓDIGO DEL PROGRAMA.

MODULO 1

Public ColorInicialBotones As ButtonConstantsPublic ColorEnfoque As ButtonConstantsPublic e As IntegerPublic f(0 To 1023) As StringPublic FigNum As IntegerPublic n As IntegerPublic num_tema As Integer 'indica el numero de frame que se va a mostrar esutilizada en la forma Indice_tutorialPublic m As IntegerPublic pagina As IntegerPublic paginal As IntegerPublic paginaO As IntegerPublic r(0 To 1023) As IntegerPublic Tutor 'contiene el valor que indica el tema del tutorialFunction valida_Numero(k)Select Case k

CaseS, 13, 32,46,48 To 57valida_Numero = k

Case Elsevalida_Numero = O

End SelectEnd Function

FORM1.

Prívate Type Registrocombinación As String * 20respuesta As Stríng * 1

End TypePrívate dato As RegistroPrívate Grupo(2047,16) As IntegerPrívate s(2047) As StringPrívate c(2047, 16) As String * 20Prívate O(2047,16) As StringPrívate contv(2047) As IntegerPrívate conth(2047) As IntegerPrívate fíl(16) As IntegerPrívate Marca(2047, 16) As StringPrívate Tabla(2047, 2047) As StringPrívate fílaAnulada(2047) As BooleanPrívate columnaAnulada(2047) As BooleanPrívate numeroFüa(2047) As IntegerPrívate fila As IntegerPrívate col As Integer

Page 154: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

149

Prívate MaxColCubos As IntegerPrívate max As IntegerPrívate MaxCol As IntegerPrívate Auxl As IntegerPrívate Aux2 As IntegerPrívate ultima As BooleanPrívate Implicantes As BooleanPrívate Tablalmplicantes As BooleanPrívate marcas As BooleanPrívate lineas As BooleanPrívate Resultado As BooleanPrívate escenciales As BooleanPrívate anchoPrívate altoPrívate valizcomPrívate PaginaHorizontalPrívate PaginaVertícalPrívate NumeroGrupoPrívate espacioPrívate ColorLineaPrívate TiempoConst ColumnasDeTabla =17Sub simplifiqueQ 'Esta función simplifica la función directamente y da la respuesta

Commandl.Enabled = False 'Para desabilitar el comando de siguienteSimplificar.Enabled = False 'Para desabilitar el menú de simplificarCommandl4,Enabled = False 'Para desabilitar el comando de terminaraSimppaso.Enabled = False Tara desabilitar el menú de simplificar el siguiente pasoCommand2.Enabled - False 'Para desabilitar el botón de paso anteriorSimplificaranterior = False 'Para desabilitar el Menú de paso anteriorCommand3,Enabled = False 'Para desabilitar el botón de SalirMenu.Enabled = False Tara desabilitar el MenúText4,Locked = Truc 'Bloque el Editor de minterminosMousePointer = vbHourglass 'Cambia la forma del cursor del mouse a un relojTitulo(2).Visible = False 'Esconde el tituloMensaje.Top = Text4.Top + Text4.Height + 500 'Posición vartical del mensajeMensaje.Visible = True 'Hace visible el mensajeraya = " " 'borra la variable rayaFor i = 1 To n 'Ubica tantas lineas como se necesiten

raya = raya & "--"Next iDoEvents 'Actualiza los eventos ejecutadosIf lineas = True And Resultado = False Then 'Esta sección Genera la solución

Titulo(O). Visible = FalseTitulo(l). Visible = FalseMensaje.Caption = "¡Generando la solución!"Mensaje.Left = (Forml.Width - Mensaje.Width) / 2Command 10. Visible = FalseCommandl 1. Visible = FalseCommandl2.Visible = FalseCommandl3.Visible = False

Page 155: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

150

Picturel. Visible = FalseList2(0). Visible = FalseList2(l). Visible = FalseTexto = "Y = "For i= l Tofil(col+l)

Ifn<5ThenTimer 1 = TimerDo

DoEventsLoop While Timer - Timer 1 <= Tiempo

ElseDoEvents

EndlfFor j = 1 To Len(c(i, col + 1))

If Mid(c(i, col + 1), j, 1) = "O" ThenIf j = 2 Then Texto = Texto & "A1"If j = 4 Then Texto = Texto & "B'MIf j = 6 Then Texto = Texto & "C"If j = 8 Then Texto = Texto & "D"1

If j = 10 Then Texto = Texto & "E1"If j = 12 Then Texto = Texto & "F"If j = 14 Then Texto = Texto & "Gm

If j = 16 Then Texto = Texto & "H"'If j - 18 Then Texto = Texto & "I"'If j = 20 Then Texto = Texto & "J"'

EndlfIf Mid(c(i, col + 1), j, 1) = "1" Then

If j = 2 Then Texto = Texto & "A11

If j = 4 Then Texto = Texto & "B"If j = 6 Then Texto = Texto & "C"If j = 8 Then Texto = Texto & "D"If j = 10 Then Texto = Texto & "E"If j = 12 Then Texto = Texto & "F"If j = 14 Then Texto = Texto & "G"If j = 16 Then Texto - Text6 & "H"If j = 18 Then Texto = Texto & T'If j = 20 Then Text6 = Texto & "J"

EndlfNextjIf i o fil(col + 1) And Mid(c(i, col + 1), j, 1) o "X" Then Texto = Text6 + " +

If Len(Text6) < 50 ThenTexto,Width - 130 * Len(Text6.Caption) + 130 / Len(Textó.Caption) + 200Text6.Height *= 500

ElseText6.Height = 4*330Textó.Width = 130 * 50 + 130 / 50 + 200

EndlfTextó.Left = ((Forml .Width / 2) - (Textó.Width / 2)) + 200Textó.Top = (Forml.Height / 2) - Textó.Height

Page 156: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

151

Textó.Visible = TrueDoEvents

Next iIf fil(col + 2) > O Then Texto = Texto & " + "For i - 1 To fil(col + 2)

If n < 5 ThenTimerl = TimerDo

DoEventsLoop While Timer - Timerl <= Tiempo

ElseDoEvents

EndlfFor j = 1 To Len(c(i, col + 2))

If Mid(c(i, col + 2), j, 1) = "O" ThenIf j = 2 Then Texto = Texto & "A"'If j = 4 Then Texto = Texto & "B"1

If j = 6 Then Texto = Texto & "C1"If j = 8 Then Texto = Texto & "D"'If j - 10 Then Texto = Texto & "E"'If j = 12 Then Texto = Texto & "F"'If j = 14 Then Texto - Texto & "G"'If j = 16 Then Texto = Texto & "H"'If j - 18 Then Texto = Texto & "I"1

If j = 20 Then Texto = Texto & "J"1

EndlfIf Mid(c(i, col + 2), j, 1) - "1" Then

If j - 2 Then Texto = Texto & "A"If j - 4 Then Texto = Texto & "B"If j = 6 Then Texto = Texto & "C"If j = 8 Then Texto - Texto & "D"If j - 10 Then Texto = Texto & "E"If j = 12 Then Texto - Texto & "F"If j = 14 Then Texto = Texto & "G"If j = 16 Then Texto - Texto & "H"If j - 18 Then Texto = Texto & "I"If j = 20 Then Texto = Texto & "J"

EndlfNextjIf i o fil(col + 2) And Mid(c(i, col + 2), j, 1) o "X" Then Texto = Texto + " +

IfLen(Text6)<50ThenTexto.Width = 130 * Len(Textó.Caption) + 130 / Len(Textó.Caption) + 200Textó.Height = 500

ElseTextó.Height - 4 * 330Texto.Width = 130 * 50 + 130 / 50 + 200

EndlfTextó.Left = ((Forml .Width / 2) - (Textó.Width / 2)) + 200Textó.Top = (Forml .Height / 2) - Textó.Height

Page 157: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

170

Texto.Width = 130 * Len(Text6.Caption) + 130 / Len(Text6.Caption) + 200Textó.Height = 500

ElseTextó.Height = 4 * 330Texto.Width = 130 * 50 + 130 / 50 + 200

EndlfTextó.Left = ((Forml.Width / 2) - (Texto.Width / 2)) + 200Textó.Top = (Forml.Height / 2) - Textó.HeightTexto. Visible = TrucDoEvents

Next iIf fil(col + 2) > O Then Texto = Texto & " + "For i = 1 To fíl(col + 2)

If n < 5 ThenTimer 1 = TimerDo

DoEventsLoop While Timer - Timerl <= Tiempo

ElseDoEvents

EndlfFor j = 1 To Len(c(i, col + 2))

If Mid(c(i, col + 2), j, 1) = "O" ThenIf j = 2 Then Texto = Texto & "A"1

If j = 4 Then Texto = Texto & "B"'If j = 6 Then Texto = Texto & "C"If j = 8 Then Texto - Texto & "D1"If j = 10 Then Texto = Texto & "E"1

If j = 12 Then Texto = Texto & "F"If j = 14 Then Texto = Texto & "G"1

If j = 16 Then Texto = Texto & "H1"If j = 18 Then Texto = Texto & "I"'If j = 20 Then Texto = Texto & "J"1

EndlfIf Mid(c(i, col + 2), j, 1) = "1" Then

If j = 2 Then Texto = Texto & "A"If j = 4 Then Texto = Texto & "B"If j = 6 Then Texto = Texto & "C"If j = 8 Then Texto = Texto & "D"If j = 10 Then Texto = Texto & "E"If j = 12 Then Texto - Texto & "F"If j = 14 Then Texto = Texto & "G"If j - 16 Then Texto - Texto & "H"If j = 18 Then Texto = Texto & "I"If j = 20 Then Texto = Texto & "J"

EndlfNextjIf i o fil(col + 2) And Mid(c(i, col + 2), j, 1) o "X" Then Texto - Texto + " +

IfLen(Textó)<50Then

Page 158: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

171

Texto.Width = 130 * Len(Textó.Caption) + 130 / Len(Text6.Caption) + 200Textó.Height = 500

ElseText6.Height = 4 * 330Texto.Width = 130 * 50 + 130 / 50 + 200

EndlfTextó.Left = ((Forml.Width / 2) - (Texto.Width / 2)) + 200Textó.Top = (Forml.Height / 2) - Textó.HeightTextó.Visible = TrueDoEvents

Next iResultado = True

Endlf

If escenciales = True And lineas = False ThenMensaje.Caption = "¡BUSCANDO IMPLICANTES PRIMOS SECUNDARIOS!"Mensaje.Left = (Forml.Width - Mensaje.Width) / 2fila-ODo

marcasmax = OFor i = 1 To fil(col)

conth(i) = OForj = lTofil(0)

If Tabla(i, j) = "*" And fíIaAnulada(i) = False And columnaAnulada(j) =False Then

conth(i) = conth(i) + 1If marcasmax < conth(i) Then marcasmax = conth(i)

EndlfNextj

Next iFor j = 1 To fil(col)

If conth(j) = marcasmax And filaAnulada(j) = False And marcasmax > O Thensihay = FalseFor i2 = 1 To fil(O)

If Tabla(j, i2) = "*" And columnaAnulada(i2) = False Thenco1umnaAnulada(i2) = TruenumeroFila(i2) = jmostrarmarcasIfn<5Then

Timerl = TímerDo

DoEventsLoop Whíle Timer - Timerl <= Tiempo

ElseDoEvents

Endlfsihay = True

EndlfNext ¡2If sihay = True Then

Page 159: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

172

fílaAnulada(j) - Trucfila = fila + 1c(fila, col + 2) = cG, col)mostrarmarcasfd(col + 2) = filamostrarsecundariosIf n < 5 Then

Timerl = TimerDo

DoEventsLoop While Timer - Timerl <= Tiempo

ElseDoEvents

EndlfEndlf

EndlfNext j

Loop Until marcasmax = Ofíl(col + 2) = filaIf MaxCol < col + 2 Then MaxCol = coi + 2If max < fil(col + 2) Then max = fil(col + 2)lineas = TrucIf fila = O Then Commandl_CIickfila = fil(col-l)Mensaje.Visible = FalseMensaje.Caption =""

Endlf

If marcas = Truc And escenciales = False ThenMensaje.Caption- "¡BUSCANDO IMPLICANTES PRIMOS ESENCIALES!"Mensaje.Left = (Forml.Width - Mensaje.Width) / 2Mensaje.Visible = TrueDoEventscontvmax = OFor i - 1 To fil(O)

contv(i) = OFor j = 1 To fil(col)

If TablaQ, i) = "*" Then contv(i) = contv(i) + 1NextjIf contvmax < contv(i) Then contvmax - contv(i)

Next ifila = OColorLinea = RGB(0, 255, 0)For i = 1 To fíl(O)

If contv(i) = 1 And columnaAnulada(i) = False ThencolumnaAnulada(i) = TruemostrarmarcasIfn<5Then

Timerl = TimerDo

Page 160: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

173

DoEventsLoop While Timer - Timerl <— Tiempo

ElseDoEvents

EndlfForj = lTofd(col)

If TablaG, i) = "*" And filaAnuladaO) = False ThenfílaAnulada(j) = TruenumeroFila(i) = jmostrarmarcasfila-fila+1c(fila, col + 1) = c(j, col)fil(col + l) = filamostraresencialesI fn<5Then

Timerl = TimerDo

DoEventsLoop While Timer - Timerl <= Tiempo

ElseDoEvents

EndlfFor i2 = 1 To fil(O)

If Tabla(j, i2) = "*" And columnaAnulada(i2) = False ThencolurnnaAnulada(i2) = TruenumeroFila(i2) = jmostrarmarcasIfn<5Then

Timerl = TimerDo

DoEventsLoop While Timer - Timerl <= Tiempo

ElseDoEvents

EndlfEndlf

Next i2EndTf

NextjEndlf

Next ifíl(col+l) = filafila = fil(col-l)If MaxCol < col + 1 Then MaxCol = col + 1If max < fil(col + 1) Then max = fíl(col +1)escenciales = True

Endlf

If Implicantes = True And Tablalmplicantes = False Then Tara construir la tabla desimplificación

Page 161: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

174

Mensaje.Caption = "¡Construyendo la tabla de simplificación!"Mensaje.Left = (Forml.Width - Mensaje.Width) / 2DoEventsIf Aux2 o col Then

For i = 1 To fil(O)s(i) = O(i, 0)

Next iFor i - 1 To fil(O) - 1

Forj = i+lTofi l (0)If Val(s(i)) > Val(sG)) Then

aux = s(i)

s(j) = auxEndlf

NextjNext iFor i = 1 To fíl(col)

pl =0For pos - 1 To Len(O(i, col))

If Mid(O(i, col), pos, 1) = " " Or Mid(O(i, col), pos, 1) = ",M Thenp l = p 2p2 = posI f p 2 - p l > l Then

subindice = Mid(O(i, col), pl, p2 - pl)For j = 1 To fil(O)

If Val(subindice) = Val(s(j)) Then Tabla(iJ) - "*"Nextj

EndlfEndlfIf pos = Len(O(i, col)) Then

pl=P2p2 = posI fp2-p l>OThen

subindice = Mid(O(i, col), pl, p2 - pl + 1)Forj = lTofil(0)

If Val(subindice) = Val(sQ)) Then Tabla(i, j) = "*"Nextj

EndlfEndlf

Next posDoEvents

Next iAux2 = col

EndlfTitulo(O). Visible = FalseListl(O).Visible-FalseTitulo(l).Visible = FalseListl(l). Visible = FalseCommandó.Enabled = FalseCommandó. Visible = False

Page 162: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

175

Command7.Enabled = FalseCommandT.Visible = FalseCommandS.Enabled = FalseCommandS. Visible = FalseCommand9.Enabled = FalseCommand9.Visible = FalseLabel3(0).Visible = FalseLabel3(l). Visible = FalseDoEventsPaginaHorizontal = OPaginaVertical = OmostrarTablaTablalmplicantes = Truemarcas = True

EndlfIf col >= 1 And ultima = False Then Tara construir la tabla de Cubos r

Mensaje.Caption = "¡Calculando los cubos " & Str(col) & "!"Mensaje.Left = (Forml.Width - Mensaje.Width) / 2DoEventsauxiliar = fil(col + 1)If MaxColCubos < col Then

fila-ONumeroGrupo = 1sihay = FalseFor i = 1 To fil(col) - 1

IfO(i,col)o"-"Thenray = OFor j - i+1 Tofil(col)

If Grupo(j, col) = Grupo(i, col) + 1 And O(j, col) o "-" Thencont = OFor pos = 1 To 2 * n 'busca en cuales bits esta diferente

If Mid(c(i, col), pos, 1) o Mid(c(j, col), pos, 1) Thencont = cont + 1 'cuenta el numero de cambiosspos = j 'rescata la combinación con la que hay el cambiocpos = pos 'rescata la posición del bit que cambia

EndlfDoEvents

Next posIf cont - 1 Then

fila = fila+1c(fíla, col + 1) = c(i, col) 'crea la nueva columna con los cubos cerosMarca(i, col) = "*"MarcaOí col) = "*"Mid(c(fila, col + 1), cpos) = "X" 'inserta una X en el bit que cambiacont2 = OF o r k = l T o f i l a - l

If c(fila, col + 1) = c(k, col + 1) Then cont2 - cont2 + 1NextkIf cont2 = O Then

Page 163: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

176

O(fíla, col + 1) = O(i, col) & "," & O(spos, col) 'Almacena lascombinaciones que cambiaron

Gmpo(fila, col + 1) = NumeroGruposihay = Truc

Elsefila = fila - 1

EndlfEndlf

EndlfIfO(j, col) = "-" Then

ray = ray + 1EndlfIf ray = 2 Then

Exit ForEnd If

NextjElse

If sihay = Truc Thenfila = fila +1c(fila, col + 1) = rayaO(fila, col+ !) = "-"Marca(i, col) ="-"Marca(fila, col + 1) = "-"Grupo(fila, col + 1) = NumeroGrupoNumeroGrupo = NumeroGrupo + 1

EndlfEndlf

Next iIf fila > O Then fila = fila - 1fil(col + 1) = fila

EndlfIf MaxColCubos < col Then MaxColCubos = colIf MaxCol < col + 1 Then MaxCol = col + 1If max < fil(col + 1) Then max = fil(col + 1)col = col + 1If (fila = 0) Or (col = Auxl) Then

ultima = Truefíl(col) = auxiliar

ElseCommandó.Enabled = FalseCommandó.Visible = FalseCommand7.Enabled - FalseCommand7.Visible - FalseCommandS.Enabled = FalseCommandS.Visible = FalseCommand9.Enabled = FalseCommand9.Visible = FalseLabel3(0). Visible = FalseLabel3(l).Visible - False

Page 164: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

177

Titulo(0).Caption = "CUBOS " & col - 2Listl(0).ToolTipText = "Tabla de cubos " & Str(col - 2)mostrarlistlO

Listl(l).ToolTipText = "Tabla de cubos " & Str(col - 1)Titulo(l).Caption = "CUBOS " & col -1mostrarlistl 1

DoEventsEndlf

Endlf

If ultima = True And Implicantes = False Then Tara hallar los implicantes primosMensaje.Caption = "¡Calculando los implicantes primos!"Mensaje.Leñ - (Forml .Width - Mensaje.Width) / 2DoEventsIf Auxl o col Then

Auxl =colfila = OForj = 1 To col -1

For i=lTof í l ( j )If Marca(i, j) o "*" And O(is j) o "-" Then

fila = fila +10(fila,col) = 0(i,j)c(fila,col) = c(i,j)Marca(fila, col) - ""

EndlfDoEvents

Next iNextjfil(col) = fila

EndlfCommandó.Enabled = FalseCommandó.Visible = FalseCommandT.Enabled = FalseCommand7.Visible = FalseCommandS.Enabled = FalseCommandS. Visible = FalseCommand9.Enabled = FalseComrnand9.Visible = FalseLabel3(0). Visible = FalseLabel3(l). Visible = FalseTitulo(0).Caption = Titulo(l).CaptionTitulo(0).ToolTipText = "Tabla de cubos " & Str(col - 2)mostrarlistlOTitulo(l).Captíon= "IMPLICANTES PRIMOS"Listl(l).ToolTipText = "Tabla de Implicantes primos "mostrarlistllIf MaxCol < col + 1 Then MaxCol = col + 1If max < fíl(col) Then max = fil(col)

Page 165: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

178

Implicantes = TrueEndlf

If col = O Then 'Para Construir la tabla de los cubos OCommand4.Enabled = FalseCommand4. Visible = FalseCommandS.Enabled = FalseCommand5. Visible = FalseCommandS.Enabled = FalseMensaje.Caption = "¡Calculando los cubos O!"Mensaje.Leñ = (Forml.Width - Mensaje.Width) / 2DoEventsFor i = O To Text2.UBound

Text3(i).Visible = FalseText2(i).Visible = False

Next íDoEventscol = col + 1IfMaxCol = OThen

fila = OFor i = O To 2 A n - 1

Ifr(i)=lThenfila = fila+1c(fila, 0) = f(i)O(fila, 0) - i

EndlfNext ifil(O) = filafila = OForj = OTon

sihay = FalseFor i = O To 2 A n - 1

Ifr(i)=lThencont = OFor pos = 1 To 2 * n

Bit = Val(Mid(f(i), pos, 1))If Bit = 1 Then cont = cont + 1

Next posIf cont = j Then

fila = fila +1c(fila, col) = f(i)O(fíla, col) = Str(i)Grupo(fila, col) = jsihay = True

EndlfEndlf

Next iIf sihay = True Then

fila = fila +1c(fila, col) = raya

Page 166: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

179

O(fíla, col) ="-"Grupo(fíla, col) = j

EndlfNextjfíl(col) = fila

EndlfLabel3(0). Visible - FalseLabel3(l). Visible = FalseTitulo(0).Caption = "MTNTERMINOS"Titulo(0).ToolTipText = "Tabla de MINTERMINOS"mostrarlistlOTitulo(l).Captíon = "CUBOS O"TituLo(l).ToolTipText = "Tabla de cubos O"mostrarlistllIf MaxCol < col Then MaxCol = colIf max < fíl(col) Then max = fíl(col)

EndlfIf Resultado = False Then

Commandl .Enabled = TrueSimplificar.Enabled = True

CommandH.Enabled = True

Simppaso.Enabled = TrueEndlfCommand2.Enabled = TrueSimplificaranterior = TrueCommand3.Enabled = TrueMenu.Enabled = TrueText4.Locked = FalseMensaje.Caption = ""Mensaje. Visible = FalseMousePointer = vbDefault

End Sub

Prívate Sub Commandl_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Commandl.BackColor = ColorEnfoqueCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommandl 4.BackColor = ColorlnicialBotones

End Sub

Prívate Sub Commandl0_Click()PaginaVertical = Pagina Vertical + 1mostrarTablamostrarmarcasIf fil(col + 1) > O Then mostraresencialesIf fil(col + 2) > O Then mostrarsecundarios

End Sub

Page 167: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

180

Prívate Sub Commandl l_Click()PaginaVertical = PaginaVertical - 1mostrarTablamostrarmarcasIf fil(col + 1) > O Then mostraresencialesIf fil(col + 2) > O Then mostrarsecundarios

End SubPrívate Sub Commandl2_Click()

PaginaHorizontal = PaginaHorízontal + 1mostrarTablamostrarmarcasIf fíl(col + 1) > O Then mostraresencialesIf fíl(col + 2) > O Then mostrarsecundarios

End SubPrívate Sub Commandl3_Click()

PaginaHorizontal = PaginaHorizontal - 1mostrarTablamostrarmarcasIf fíl(col + 1) > O Then mostraresencialesIf fil(col + 2) > O Then mostrarsecundarios

End Sub

Prívate Sub Commandl4_Click()Tiempo = ODo

Cali simplifiqueLoop Until Resultado = TrueTiempo = 1End Sub

Prívate Sub Commandl4_MouseMove(Button As Integer, Shiñ As Integer, X AsSingle, Y As Single)

Commandl 4.BackColor = ColorEnfoqueCommandl.BackColor = ColorInicialBotonesCommand2.BackColor = ColorInicialBotonesCommandS.BackColor = ColorInicialBotones

End Sub

Prívate Sub Command2_Click()If col > O Then

Commandl.Enabled = FalseSimplificar.Enabled = FalseCommandl 4.Enabled = FalseSimppaso.Enabled = FalseCommand2. Enabled = FalseSimplificaranterior = FalseCommand3. Enabled = FiaseMenu.Enabled = FalseText4.Locked = True

Page 168: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

181

Commandó.Enabled = FalseCommandó, Visible = FalseCommandT.Enabled = FalseCommand? .Visible = FalseCommandS.Enabled = FalseCommandS. Visible == FalseCommand9.Enabled = FalseCommand9.Visible = FalseLabel3(0).Visible = FalseLabel3(l).Visible - FalseIf Resultado = True Then

Texto = ""Textó.Visible = FalseTitulo(0).Visible = TruemostrarTablamostrarmarcasmostraresencialesIf fil(col + 2) > O Then mostrarsecundariosSimppaso.Enabled = TrueSimplifícar.Enabled = TrueCommandl4.Enabled = TrueResultado = False

El seIf lineas = True Or escenciales = True Then

Picturel. Visible = TrueTitulo(2). Visible = FalseList2(l). Visible = FalseTitulo(l).Visible = FalseList2(0).Visible = FalseTextó.Visible = FalseFor i = 1 To UBound(numeroFila)

numeroFila(i) = ONextiFor i = 1 To UBound(fllaAnulada)

filaAnulada(i) = FalseNextiFor i = 1 To UBound(columnaAnulada)

columnaAnulada(i) = FalseNextimostrarTablafil(col + 2) = Oescenciales = Falsefil(col + l) = 0lineas = False

ElseIf marcas = True Then

marcas = FalseCommand2_Click

ElseIf Tablalmplicantes = True Then

Page 169: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

182

Picturel. Visible = FalseCommandlO. Visible = FalseCommandl 1.Visible = FalseCommandl2.Visible = FalseCommandl 3. Visible = FalseTitulo(0).Visible = FalseTitulo(l).Caption= "IMPLICANTES PRIMOS"DoEventsListl(l).ToolTipText = "Tabla de implicantes primos"Listl(0).ToolTipText = "Tabla de cubos " & Str(col - 2)Listl(0).Left = 3000mostrarlistl 1

Titulo(0).Caption - "CUBOS " & col - 2mostrarlistl OTablalmplicantes = False

ElseIf ultima = True Then

col = col -1Titulo(l).Caption = Titulo(0).CaptionListl(l).ToolTipText = Listl(0).ToolTipTextListl(0).ToolTipText - Listl(0).ToolTipTextmostrarlistl 1Titulo(0).Caption = "CUBOS " & col - 2mostrarlistl OImplicantes = Falseultima = False

Elsecol = col - 1Ifcol> 1 Then

Titulo(l).Caption = Titulo(0).CaptionListl(l).ToolTipText = Listl(0).ToolTipTextListl(0).ToolTipText = "Tabla de cubos " & Str(col - 2)mostrarlistllTitulo(0).Caption = "CUBOS " & col - 2mostrarlistl O

ElseIf col= 1 Then

Listl(l).Visible = FalseCommandS.Visible = FalseCommand9.Visible = FalseTitulo(l).Caption = "CUBOS O"Listl(l).ToolTipText = "Tabla de CUBOS O"mostrarlistl 1Titulo(0).Caption = "MINTERMINOS"Listl(0).ToolTipText = "Tabla de MINTERMINOS"mostrarlistl O

ElseTitulo(0).Visible = FalseList 1(0). Visible = False

Page 170: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

183

Titulo(l),Visible = FalseListl(l).Visible = FalseCommandó.Visible = FalseCommand7.Visible = FalseDoEventsIf2An<=64Then

For i = O To 2 A n -1Text3 (i). Visible = TrueText2(i).Visible = TrueDoEvents

Next iElse

For i - O To Text3.UBoundText3 (i). Visible = TrueText2(i).Visible = TrueDoEvents

Next iIf pagina > O Then

Command4.Enabled = TrueCommand4.Visible - True

EndlfIf pagina < (2 A n) / 64 - 1 Then

CommandS.Enabled = TrueCommandS.Visible = True

EndlfEndlf

EndlfEndlfultima = False

EndlfEndlf

EndlfEndlf

EndlfCommandl.Enabled = TrueSimplificar.Enabled = TrueCommandH.Enabled = TrueSimppaso.Enabled = TrueIf col >0 Then

Command2.Enabled = TrueSimplificaranterior = True

EndlfCommandS.Enabled = TrueMenu.Enabled - TrueText4.Locked = False

EndlfEnd Sub

Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Page 171: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

184

Commandl .BackColor = ColorlnicialBotonesCommand2.BackColor = ColorEnfoqueCommand3.BackColor = ColorlnicialBotonesCommandl 4.BackColor = ColorlnicialBotones

End Sub

Prívate Sub Command3_Click()Unload Me

End Sub

Prívate Sub Command3_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Commandl.BackColor = ColorlnicialBotonesCommand2. BackColor = ColorlnicialBotonesCommand3.BackColor = ColorEnfoqueCommandl 4.BackColor = ColorlnicialBotones

End Sub

Prívate Sub Command4_Click()Command5.Left = Text2(63).Left + Text2(63).Width - CommandS.WidthCommand5.Top — Command4.TopCommandS.Enabled = TrueCommandS. Visible = Truepagina = pagina - 1For i = O To 63

Text3(i).Text = f(i + pagina * 64)Text2(i).ToolTipText - "f(" & i + pagina * 64 & ")"If r(i + pagina * 64) = O Or r(i + pagina * 64) = 1 Then

Text2(i).Text = r(i + pagina * 64)Else

Text2(i).Text=""Endlf

NextiIf pagina = O Then

Command4.Enabled = FalseCommand4. Visible = False

EndlfEnd Sub

Prívate Sub Conunand5_Click()Command4.Left = Text3(15).LeftCommand4.Top = CommandS.TopCommand4.Enabled = TrueCommand4. Visible = Truepagina = pagina + 1For i = O To 63

Text3(i).Text = f(i + pagina * 64)Text2(i).ToolTipText = nf(" & i + pagina * 64 & ")"If r(i + pagina * 64) = O Or r(i + pagina * 64) = 1 Then

Text2(i).Text = r(i + pagina * 64)

Page 172: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

185

ElseText2(i).Text=n"

EndlfNextiText2(0).SetFocusIf 2 A n - 1 = 63 + pagina * 64 Then

CommandS.Enabled = FalseCommandS. Visible = False

EndlfEnd Sub

Prívate Sub Command6_Click()paginaO = paginaO -1Commandó.Left = CommandT.LeftCommandó.Top = Listl(0).TopCommand6.Enabled = FalseCommand6.Visible = FalseCommand7.Enabled = TrueCommandT.Visible = TrueListl(0).ClearIf col = 1 Then

For i = paginaO * 16 + 1 To fil(O)If i <= paginaO * 16 + 16 Then

IfVal(O(i,0))<=9ThenListl(0).AddItem (" " & O(i, 0) + " " & c(i, 0))

ElseIfVal(O(i,0))<=99ThenListl(0).AddItem (" " & O(i, 0) + " " & c(i, 0))Else

Listl(0).AddItem (IIM & O(i, 0) + " " & c(i, 0))Endlf

EndlfEndlfIf paginaO > O Then

Commandó.Left = Commandó.LeftCommandó.Top = Listl(0),TopCommandó.Enabled = TrueCommandó. Visible = True

EndlfDoEvents

NextiElse

For i = paginaO * 16 + 1 To paginaO * 16+16If i <= paginaO * 16 + 16 Then

If Marca(i, col - 1) = "*" ThenListl(0).AddItem (Marca(i, col - 1) & " " & c(i, col - 1))

ElseListl(0).AddItem (" " & c(i, col - 1))

EndlfEndlf

Page 173: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

186

If paginaO > O ThenCommandó.Left = Commandó.LeftCommandó.Top = Listl(0).TopCommandó.Enabled = TrucCommandó.Visible = True

EndlfDoEvents

NextiEndlfEnd SubPrívate Sub Command7_Click()

paginaO = paginaO + 1Commandó.Left = Command7.LeftCommandó.Top = Listl(0).TopCommandó.Enabled = TrueCommandó.Visible = TrueCommand7.Enabled = FalseCommand7.Visibie = FalseListl(0).ClearIf col = 1 Then

For i = paginaO * 16 + 1 To fil(O)If i <= paginaO * 16 + 16 Then

IfVal(O(i,0))<=9ThenListl(0).AddItem (" " & O(i, 0) +" (t & c(i, 0))

ElseIfVal(O(i,0))<=99Then

Listl(0).AddItem (" n & O(i, 0) +" " & c(i, 0))Else

Listl(0).AddItem ("" & O(i, 0) + " " & c(i, 0))Endlf

EndlfElse

Command7.Left = Listl(0).Left + Listl(0).WidthCommand7.Top = Listl(0).Top + Listl(0).Height - Command7.HeightCommand7.Enabled = TrueCommand7.Visible = True

EndlfDoEvents

NextiElse

For i = paginaO * 16 + 1 To fil(col - 1)If i <= paginaO * 16 + 16 Then

If Marca(i, col - 1) = "*" ThenListl(0).AddItem (Marca(i, col - ! ) & " " & c(i, col - 1))

ElseListl(0).AddItem (" " & c(i, col - 1))

EndlfElse

Command7.Left = Listl(0).Left + Listl(0).WidthCommand7.Top = Listl(0).Top + Listl(0).Height - Command7.Height

Page 174: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

187

CommandT.Enabled = TrueCommandT.Visible = True

EndlfDoEvents

Next iEndlf

End SubPrívate Sub Cornmand8_Click()

pagina 1 = pagina 1 - 1CommandS.Left = CommandS.LeftCommandS.Top = Listl(l).TopCommandS.Enabled = FalseCommandS.Visible = FalseCommand9.Enabled - TrueCommand9.Visible = TrueListl(l).ClearFor i = paginal * 16 + 1 To fil(col)

If i <= paginal * 16 + 16 ThenListl(l).AddItem (c(i, col))

EndlfIf paginal > O Then

CommandS.Left = CommandS.LeftCommandS.Top = Listl(l).TopCommandS.Enabled = TrueCommandS.Visible = True

EndlfDoEvents

Next iEnd SubPrívate Sub Command9_Click()

paginal = paginal + 1CommandS.Left = Command9.LeftCommandS.Top = Listl(l).TopCommandS.Enabled = TrueCommandS.Visible = TrueCommand9.Enabled = FalseCommand9.Visible = FalseListl(l).ClearFor i = paginal * 16 + 1 To fil(col)

If i <= paginal * 16 + 16 ThenListl(l).AddItem (c(i, col))

ElseCommand9.Left - Listl(l).Left + Listl(l).WidthCommand9.Top = Listl(l).Top + Listl(l).Height - Command9.HeightCommand9.Enabled = TrueCommand9. Visible - True

EndlfDoEvents

Next iEnd Sub

Page 175: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

188

Prívate Sub CuatroEntradas_Click()n = 4Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub DiezEntradas_Click()n=10Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub DosEntradas_Click()n = 2Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub FormJLoad()Tiempo = 1Commandl.BackColor = ColorInicialBotonesCommandH.BackColor = ColorInicialBotonesCommand2.BackColor = ColorInicialBotonesCommand3.BackColor = ColorInicialBotones

End Sub

Prívate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y AsSingle)

Commandl.BackColor - ColorlmcialBotonesCommand2.BackCoior = ColorInicialBotonesCommandH.BackColor = ColorInicialBotonesCommand3.BackColor = ColorInicialBotones

End Sub

Prívate Sub Guardar_Click()FormS.Drível.Dríve = Mid(App.Path, 1, 3)Form2.Dirl .Path = App.PathForm2.Textl.Text=""Form2.Show

End Sub

Prívate Sub IngresarMinterminos_Click()LimpiarForml.Caption = "Simplificación"Label2.Visible = TrucText4. Visible = TrueLabell. Visible = TrueTextl.Text=Ilfl

Textl.Visible = TrueText4.Text = "("

Page 176: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

189

Text4.SetFocusText4.SelStart = Len(Text4.Text)m = 0

End SubPrívate Sub Listl_CIick(Index As Integer)

If Index = O And col > 1 Then Listl(Index).ToolTipText = "(" & O(paginaO * 16 +Listl(0).ListIndex + 1, col - 1) & ")"

If Index = O And col = 1 Then Listl(Index).ToolTipText = "(" & O(paginaO * 16 +Listl(0).ListIndex + 1, 0) & ")"

If índex = 1 Then Listl(Index).ToolTipText = "(" & O(paginal * 16 +Listl(l).ListIndex + 1, col) & ")"

DoEventsEnd SubPrívate Sub List2_Click(Index As Integer)

Label3(Index).Left = List2(Index).LeftLabel3(Index).Top = List2(Index).Top + List2(Index).HeightLabel3(Index).Caption = O(List2(Index).ListIndex + 1, col + índex + 1)Label3(Index).Visible = True

End Sub

Prívate Sub Menu_Click()Command3_Click

End Sub

Prívate Sub NueveEntradas_ClickQn = 9Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub OchoEntradas_Click()n = 8Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub SeisEntradas_Click()n = 6Forml.Caption= "Simplificación"Cali Empezar

End SubPrívate Sub SieteEntradas_Click()

n = 7Forml.Caption = "Simplificación"Cali Empezar

End Sub

Prívate Sub Simplificar_Click()Do

Commandl Click

Page 177: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

190

Loop Until Resultado = TrueEnd Sub

Prívate Sub Simplificaranterior_Click()Cali Command2_ClickEnd SubPrívate Sub Simppaso_Click()

Cali Commandl_ClickEnd Sub

Prívate Sub Teoria_Click()Texto. Show

End Sub

Prívate Sub Textl_Change()DosEntradas.Checked = FalseTresEntradas.Checked = FalseCuatroEntradas.checked = FalseCincoEntradas.Checked = FalseSeisEntradas.Checked = FalseSieteEntradas.Checked = FalseOchoEntradas.Checked = FalseNueveEntradas.Checked = FalseDiezEntradas.Checked = FalseIf n = 2 Then DosEntradas.Checked = TrueIf n = 3 Then TresEntradas.Checked = TrueIf n = 4 Then CuatroEntradas.checked = TrueIf n = 5 Then CincoEntradas.Checked = TrueIf n = 6 Then SeisEntradas.Checked = TrueIf n = 7 Then SieteEntradas.Checked = TrueIf n = 8 Then OchoEntradas.Checked = TrueIf n = 9 Then NueveEntradas.Checked = TrueIf n = 10 Then DiezEntradas.Checked = True

End Sub

Prívate Sub Text2_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)DoEventsIf Text2(Index).Text= "1" Then

r(Index + pagina * 64) = 1Else

If Text2(Index).Text = "O" Thenr(Index + pagina * 64) = O

Elser(Index + pagina * 64) = 2

EndlfEndlfa = Text2(Index).TextIf a o "O" And a o "1" And a o "" Then

mensage = MsgBox("Ingrese solamente O o 1", vbOKOnly, "Peligro")Text2(Index).Text=""

Page 178: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

191

r(Index + pagina * 64) = 2EndlfCali LimpiarCali ContarCali ActualizarT4

End SubPrívate Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer)

If KeyAscü = vbKeyRetnrn ThenKeyAscii = O

EndlfDoEventsIf Text2(lndex).Text = "1" Then

r(Index + pagina * 64) = 1Else

If Text2(Index).Text= "O" Thenr(Index + pagina * 64) = O

Elser(Index + pagina * 64) = 2

EndlfEndlfa = Text2(Index).TextIf a o "O" And a o " 1" And a o "" Then

mensage = MsgBox("Ingrese solamente O o 1", vbOKOnly, "Peligro")Text2(Index).Text =""r(Index + pagina * 64) = 2

EndlfCali LimpiarCali ContarCali ActualizarT4

End SubPublic Sub Text2_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)

If KeyCode = 38 And Index > O Then Text2(Index - l).SetFocusIf (KeyCode = 40 Or KeyCode = 13) And índex < (2 A n - 1) - pagina * 64 Then

If Index < 63 ThenText3(Index + l).Height = 150Text2(Index + l).Height = 150Text3(Index + l).Width = Text3(Index).WidthText2(Index + l).Width = Text2(Index).WidthText3(Index + l).Left - Text3(Index).LeftText2(Index + l).Left = Text2(Index).LeftText3(Index + l).Top = Text3(Index).Top + Text3(Index).HeightText2(Index + l),Top = Text3(Index + l).TopText3(Index + l).Text = f(Index + 1 + pagina * 64)Text2(Index + 1 ).ToolTipText = nf(M & Index + 1 + pagina * 64 & ")"

EndlfIf Index = 15 Or Index = 31 Or Index = 47 Then

If Text3(Index + 1).Visible = False ThenFor il = O To índex

Text3(il).Left = Text3(il).Left - (Text3(il).Width + Text2(il).Width) / 2Text2(il).Left = Text3(il).Left + Text3(il).Width

Page 179: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

192

NextilEndlfText3(Index + l).Top = 2880Text3(Index + l).Left = Text2(Index).Left + Text2(Index).Width + 40Text2(Index + l).Top = 2880Text2(Index + l).Left = Text3(Index + l).Left + Text3(Index + l).Width

EndlfIf Index < 63 Then

Text3(Index + 1). Visible = TrueText2(Index + 1). Visible = TrueText2(Index + l).SetFocus

EndlfIf Index - 63 And (2 A n) - 1 > 63 + pagina * 64 Then

If CommandS.Visible = False Thenpagina = pagina + 1For i2 = O To Text2.UBound

Text2(i2).Text=""Text3(i2).Text =""

Next i2Text3(0).Text = f(pagina * 64)Text3(0).Visible = TrueText2(0). Visible = TrueText2(0).SetFocusText2(0).ToolTipText = "f(" & pagina * 64 & ")"Command4.Leñ = Text3(15).LeftCommand4.Top = Text3(15).Top + Text3(15).Height + 20Command4.Enabled = TrueCommand4.Visible = True

ElseCali Command5_Click

EndlfEndlf

EndlfEnd Sub

Prívate Sub Text4_KeyPress(KeyAscii As Integer)KeyAscii = valida_Numero(KeyAscii)

End Sub

Prívate Sub Text4_KeyUp(KeyCode As Integer, Shiñ As Integer)If KeyCode = 32 Or KeyCode = 13 Then

Text4.Enabled = False

'Esta sección ubica la posición donde inicia y donde termina el numero dentr'dentro del Text4

p2 = 2For i = 3 To Len(Text4.Text)

Page 180: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

193

If Mid(Text4.Text, i, 1) = " " Or Asc(Mid(Text4.Text, i, 1)) = 10 OrAsc(Mid(Text4.Text, i, 1)) = 13 Or Mid(Text4.Text, i, 1) = ")" Then

I f p 2 - p l > l T h e nsubíndice = Mid(Text4.Text, pl, p2 - pl)

EndlfEndlf

Next iIf Val(subindice) < 1024 And Val(subindice) >= O Then

LimpiarDesactivarFor i = O To UBound(r)

f(i) = ""r(i) = 2

Next ip2 = 2For i = 3 To Len(Text4.Text)

If Mid(Text4.Text, i, 1) = "" Or Asc(Mid(Text4.Text, i, 1)) = 10 OrAsc(Mid(Text4.Text, i, 1)) = 13 Or Mid(Text4.Text, i, 1) = ")" Then

p l=p2p2 = iI fp2-p1 >1 Then

subindice = Mid(Text4.Text, pl, p2 - pl)r(Val(subindice)) = 1pagina = Int(Val(subindice) / 64)

EndlfEndlf

Next iIf n o Val(Int(Abs(Log(Val(subindice) + 0.6) / Log(2)) + 1)) Then

n = Val(Int(Abs(Log(Val(subindice) + 0.6) / Log(2)) + 1))EndlfIf n o m Then

For i - O To Text2.UBoundText3 (i). Visible = FalseText3(i).FontSize - 8Text3(i),Locked = FalseText2(i).Visible = FalseText2(i).FontSize - 8

Next iText3(0).Height=150Text2(0).Height=150Text3(0).Width - n * 150 + 150 / nText2(0).Width = 200Text3(0).Top = 2880Text2(0).Top = 2880Text3(0).Left = Forml.Width /2 - (Forml.Text3(0).Width +

Forml .Text2(0).Width) - 400Text2(0).Leñ = Forml .Text3(0).Left + Forml .Text3(0).WidthText3(0).Visible = Truc

Page 181: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

194

Text2(0). Visible = TrueCommandS.Enabled = FalseCommand5. Visible = FalseCommand4.Enabled = FalseCommand4.Visible = Falsem = n

EndlfIfKeyCode = 32Then

For i = O To Val(subindice)Ifr(i) = 2Thenr(i) = 0

NextiEndlfIfKeyCode=13Then

For i = O To (2 A n) - 1Ifr(i) = 2Thenr(i) = 0

NextiEndlfTextl.Text = nActualizarfActualizarT4DoEventsIf(2An)<=64Then

For i = O To (2 A n) -1Text3(i).Text=f(i)Ifr(i)-OOrr(i)-lThen

Text2(i).Text = r(i)Else

Text2(i).Text=""EndlfCali Text2_KeyUp((i), (40), (0))DoEvents

NextiElse

For i - O To 63Text3(i).Text - f(i + pagina * 64)If r(i + pagina * 64) = O Or r(i + pagina * 64) = 1 Then

Text2(i).Text = r(i + pagina * 64)Else

Text2(i).Text=""EndlfCali Text2_KeyUp((i), (40), (0))DoEvents

Next iCommand4.Leñ = Text3(15).LeftCommand4.Top = Text3(15).Top + Text3(15).Height + 20Command4,Enabled = TrueCommand4.Visible = True

EndlfText4.Width - Text4.Width + 200Contar

Page 182: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

195

ElseActualizarT4

EndTfText4.Enabled = TrueGuardar. Enabled = TrueText4.SelStart = Len(Text4.Text) -Text4.SetFocus

EndlfEnd SubSub LimpiarQ

Fori = OToListl.UBoundListl(i).ClearList 1 (i). Visible = False

Next iCommandó.Enabled = FalseCommand7.Enabled = FalseCommandó.Visible = FalseCommand7.Visible = FalseCommandS.Enabled = FalseCommand9.Enabled = FalseCommandS.Visible = FalseCommand9.Visible = FalseCommandlO. Visible — FalseCommandl 1 .Visible = FalseCommandl 2.Visible = FalseCommandl 3. Visible = FalseFor i = O To max

For j = O To MaxColMarca(i,j)=""Grupo(i,j) = 0

NextjNext iFor i = O To max

Forj-OTofíl(O)Tabla(iJ)=""

NextjNext iFor i = O To max

filaAnulada(i) = FalseNext iFor i - O To fíl(O)

numeroFila(Í) = OcolumnaAnulada(i) = False

Next iFor i = O To Titulo.UBound

Titulo(i). Visible = FalseTitulo(i).Caption - ""

Next iFor i = O To MaxCol

fíl(i) - O

Page 183: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

196

NextiTextó.Visible = FalseList2(0).Visible = FaiseList2(l).Visible = FalsePicturel. Visible = FalsePicturel.Clsvalizcom = Forml .Width - Commandl .Width - 360m = 0col = 0Resultado = Falselineas = Falseescenciales = Falseultima = Falsemarcas = FalseTablalmplicantes = FalseImplicantes = Falsemax = OMaxCol = OMaxColCubos = OAuxl = OAux2 = 0

End Sub

Prívate Sub TresEntradas_Click()n = 3Forml.Caption^ "Simplificación"Cali Empezar

End SubPrívate Sub Tutoria_Click()

Tutorial.ShowEnd Sub

FORM2.

Prívate Type Registrocombinación As String * 20respuesta As String * 1

End TypePrívate dato As RegistroPrívate Sub Cancelar_Click()

Unload MeForml.Enabled = TrueForml. Show

End Sub

Prívate Sub Commandl_Click()nombrecarpeta = InputBox("Nombre de la Carpeta")MkDir (Dirl.Path & "\ & nombrecarpeta)Dirl.Path = Dirl.Path & "\ & nombrecarpeta

Page 184: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

197

End Sub

Prívate Sub Dirl_Change()Filel.Path = Dirl.Path

End Sub

Prívate Sub Drivel_Change()Dirl .Path = Drivel .Orive

End Sub

Prívate Sub Filel_Click()lonar = Len(Filel.FileName)extensión = Mid(Filel.FileName, lonar - 3, 4)If extensión = ".boo" Then

Textl.Text = Mid(Filel.FileName, 1, lonar - 4)Else

Textl.Text = Filel.FileNameEndlfTextl.SetFocus

End SubPrívate Sub Form_Unload(Cancel As Integer)

Cancelar_ClickEnd SubPrívate Sub Guardar_Click()If Textl.Text o ""Then

encuentra = vbNoFor i = O To Filel .ListCount - 1

If Textl.Text & ".boo" = Filel.List(i) Thenresp = MsgBox("El archivo ya existe desea sobreescribir", vbYesNo)encuentra = vbYesExit For

EndlfNextiIf resp = vbYes Or encuentra = vbNo Then

archivo = Dirl.Path + "\ + Textl.Text + ".boo"Forml.Caption = Textl.Text & ".boo"Forml.Enabled = TrueOpen archivo For Random As 1 Len = Len(dato)

For i = 1 To 2 A ndato.combinacion - f(i - 1)dato.respuesta = r(i - 1)Put 1, i, dato

NextiCióse 1Cancelar_Click

EndlfElse

resp = MsgBox("Ingrese un nombre", vblnformation, "Información")EndlfEnd Sub

Page 185: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

198

Prívate Sub Textl_KeyPress(KeyAscii As Integer)If KeyAscii =13 Then

Cali Guardar_ClickEndlf

End Sub

FORM3

Prívate Type Registrocombinación As String * 20respuesta As String * 1

End TypePrívate dato As RegistroPrívate Sub Commandl_Click()IfTextl.Texto ""Then

Forml.Textl.Enabled = FalseForml.Text4.Enabled = FalseForml.Mensaje.Caption = "Abriendo el archivo"Forml.Mensaje. Visible = TrueDoEventsCali Forml.LimpiarCali Forml.DesactivarForml.Enabled = Truearchivo - Dirl.Path + "\ + Textl.TextForml.Caption = Textl.TextOpen archivo For Random As 1 Len = Len(dato)nreg = LOF(l) / Len(dato)n = (Log(nreg))/(Log(2))For i = O To UBound(r)

f(i) = ""r(i) = 2

Next iCali Forml.ActualizarT4For i = 1 To nreg

Get 1, i, datof(i - 1) = dato.combinacionr(i - 1) = Val(dato.respuesta)

Next iForm3. Visible = FalseForml .Visible = TrueDoEventsFor i = O To Forml .Text2.UBound

Forml. Text3 (i). Visible = FalseForml.Text3(i).FontSize = 8Forml.Text3(i).Locked = FalseForml .Text2(i).Visible = FalseForml.Text2(i).FontSize = 8

Next iForml. Text3(0).Height = 150Forml.Text2(0).Height = 150

Page 186: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

199

FormLText3(0).Width - n * 150 + 150 / nForml.Text2(0).Width = 200Forml.Text3(0).Top = 2880Forml.Text2(0).Top = 2880Forml .Text3(0).Left = Forml .Width / 2 - (Forml .Text3(0).Width +

Forml.Text2(0).Width) - 400Forml .Text2(0).Left = Forml.Text3(0).Left + Forml.Text3(0). WidthFormLText3(0).Visible = TrueForml.Text2(0). Visible = TrueForml.Command5.Enabled = FalseForml. Command5. Visible = FalseForml.Command4.Enabled = FalseForml .Command4.Visible - Falsepagina = Int(((2An)-l)/64)Forml.Text2(0).ToolTipText = "f(" & pagina * 84 & ")"If2An<-64Then

For i - O To (2 A n) - 1Forml.Text3(i).Text = f(i)Ifr(i) = OOrr( i )=lThen

Forml.Text2(i).Text = r(i)Else

Forml .Text2(i).Text=""EndlfCali Forml.Text2_KeyUp((i), (40), (0))DoEvents

Next iElse

For i = O To 63Forml.Text3(i).Text = f(i + pagina * 64)If r(i + pagina * 64) = O Or r(i + pagina * 64) = 1 Then

Forml.Text2(i).Text - r(i + pagina * 64)Else

Forml. Text2(i).Text=""EndlfCali Forml.Text2_KeyUp((i), (40), (0))DoEvents

Next iForml. Command4.Left = Forml. Text3(15).LeftForml.Command4.Top = Forml.Text3(15).Top + Forml.Text3(15).Height + 20Forml.Command4.Enabled = TrueForml.Command4.Visible = True

EndlfGlose 1Forml.Guardar.Enabled — Truecol = 0m = nForml .ClsForml.Labell. Visible = TrueForml.Textl.Visible = TrueForml .Textl .Text = n

Page 187: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

200

Forml.Mensaje.Caption = "Actualizando los registros"DoEventsCali Forml.ActualizarT4Cali Forml.ContarCommand2_ClickForml.Mensaje.Visible = FalseForml.Text4.Enabled = True

ElseMsgBox ("Ingrese un nombre de archivo")

EndlfEnd Sub

Prívate Sub Command2_ClickQUnload MeForml .Enabled = TrueForml. Show

End SubPrívate Sub Dirl_Change()

Filel.Path = Dirl.PathEnd SubPrívate Sub Drivel_Change()

Dir 1 .Path = Drive 1 .DriveEnd Sub

Prívate Sub Filel_Click()Textl .Text = Filel .FileNameTextl .SetFocus

End Sub

Prívate Sub Filel_DblClick()Textl .Text = Filel .FileNameCali Commandl_Click

End SubPrívate Sub Form_Unload(Cancel As Integer)

Command2_ClickEnd Sub

Prívate Sub Textl_KeyPress(KeyAscü As Integer)If KeyAscii = 13 Then

Commandl_ClickEndlf

End Sub

FORMULARIO INICIAL

Prívate Sub Commandl_Click()Texto.Show 'Abre el formulario del Texto

End Sub

Page 188: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

201

Prívate Sub Commandl_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)'Actualiza los colores de los comandos.

Commandl .BackColor = ColorEnfoqueConunand2.BackColor = ColorlnicialBotonesCommand3.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End SubPrívate Sub Command2_Click()

Forml.Show 'Abre el formulario de la simplificaciónEnd SubPrívate Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)'Actualiza los colores de los comandos.

Commandl .BackColor = ColorlnicialBotonesCommand2.BackColor = ColorEnfoqueCommandS. BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End SubPrívate Sub Command3_Click()

End Termina la ejecución del programna.End SubPrívate Sub Command3_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)'Actualiza los colores de los comandos.

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorEnfoqueCommand4.BackColor - ColorlnicialBotones

End SubPrívate Sub Command4_Click()

Tutorial.Show 'Indica el formualario del tutorial de uso del programa.End Sub

Prívate Sub Command4_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)'Actualiza los colores de los comandos.

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorEnfoque

End SubPrívate Sub Forrn_Load()'Actualiza los colores de los comandos.

ColorlnicialBotones = &HFF8080ColorEnfoque = &HCOFFFFCommandl .BackColor = ColorlnicialBotonesCommandl.BackColor = ColorlnicialBotonesCommand3.BackColor = ColorlnicialBotones

Page 189: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

202

Command4.BackColor = ColorlnicialBotonesEnd Sub

Prívate Sub Form_MouseMove(Button As Integer, Shiñ As Integer, X As Single, Y AsSingle)'Actualiza los colores de los comandos,

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End SubPrívate Sub Framel_MouseMove(Button As Integer, Shift As Integer, X As Single, YAs Single)'Actualiza los colores de los comandos.

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor - ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End Sub

Prívate Sub Labell_MouseMove(Button As Integer, Shift As Integer, X As Single, YAs Single)'Actualiza los colores de los comandos.

Commandl .BackColor = ColorlnicialBotonesCommandl.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End SubPrívate Sub Picturel_MouseMove(Button As Integer, Shift As Integer, X As Single, YAs Single)'Actualiza los colores de los comandos.

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommand3.BackColor = ColorlnicialBotonesCommand4.BackColor = ColorlnicialBotones

End Sub

FORMULARIO SPLASH

Option ExplicitPrívate Sub Form_KeyPress(KeyAscii As Integer)

Unload MeFormulariolnicial. Show

End SubPrívate Sub Form_Load()

IblVersion.Caption = "Electrónica y Telecomunicaciones"IblProductName.Caption = "Simplificación de Funciones Booleanas"

End SubPrívate Sub Timerl_Timer()

Unload Me

Page 190: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

203

Formulariolnicial. ShowEnd Sub

FORMULARIO TEXTO

Prívate Sub Commandl ClickQUnload MeFormularioInicial.Show

End SubPrívate Sub Commandl JVÍouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Commandl .BackColor = ColorEnfoqueCommand2.BackColor = ColorlnicialBotones

End SubPrívate Sub Conimand2_Click()

n = Printers.Count - 1Combo l.ClearFor i = O To n

Combo 1 .Addltem (Prínters(i).DeviceName)Next iCombo 1 .Text = Printer.DeviceNameFrame2.Visible = Truc

End SubPrívate Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Command2.BackColor = ColorEnfoqueCommandl.BackColor = ColorlnicialBotones

End SubPrívate Sub Command3_Click()

Dim X As PrinterFor Each X In Printers

If X.DeviceName = Combo 1.Text Then' La define como predeterminada del sistema.Set Printer = X' Sale del bucle.Exit For

EndlfNextPrinter. DrawMode = 1RichTextBoxl.SelPrint (Printer.hDC)Printer.EndDocFrame2.Visible = False

End Sub

Prívate Sub Command4_Click()Frame2.Visible = False

End Sub

Prívate Sub Forrn_Load()RichTextBoxl.LoadFile (App.Path & "\Texto.rtf')

Page 191: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

204

End SubPrívate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y AsSingle)

Commandl .BackColor — ColorlnicialBotonesCommand2.BackCoIor = ColorlnicialBotones

End Sub

Prívate Sub Programa_Click()Me.HideForml .Show

End SubPrívate Sub Tutoria_Click()

Me.HideTutorial.Show

End Sub

FORMULARIO TUTORIAL

Dim re(16) As StringDim ce(12, 6) As StringDim mo(12, 6) As StringDim TablaT(4, 9) As StringDim so(9) As IntegerDim Ultimo As BooleanConst Tiempo = 0.5Prívate Sub MostrarTutorialQ 'esta sección consta todo el código para mostrar el tutorialUltimo = False 'Sirve para controlar y saber si ya se ha llegado a la ultima pantalla de lasimplificaciónMe.Cls 'Borra todo el formularioIf Tutor <= 22 And Commandl4.Enabled = True Then

Comrnandl4.Enabled = FalseEndlfIf Tutor <= 18 Then

Labell. Visible = FalseTextl. Visible = False

ElseLabell. Visible = TrueTextl .Visible = True

Endlf

Select Case TutorCase O

Función. Visible — TruePrograma. Visible = TrueTeoria. Visible = TrueTutorial.Picture = LoadPicture(App.Path & "\fondoTutorial.bmp")LabeB.Caption = "Para iniciar el Tutorial presione SIGUIENTE"' & vbCrLf & "Para

ir a la simplificación Presione el menú Simplificar" & vbCrLf & "Para ver la teoríapresionar el menú Teoria"Case 1

Page 192: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

205

Tutorial.Picture = LoadPicture(App.Path & "\Tutorl.bmp")LabeO.Caption = "El programa de Simplificación esta compuesto por: MENÚ,

EDITOR DE MINTERMINOS, INDICADOR DE VARIABLES, TABLA DECOMBINACIONES, Y COMANDOS"Case 2

Tutorial.Picture = LoadPicture(App.Path & "\Tutor2.bmp")LabeO.Caption = "El Menú tiene 3 opciones principales:" & vbCrLf & " FUNCIÓN,

TUTORIAL y TEORÍA"Case 3

Tutorial.Picture = LoadPicture(App.Path & "\Tutor3.bmp")LabeO.Caption = "El menú FUNCIÓN contiene: Nuevo, Abrir, Guardar, Simplificar,

Simplificar Siguiente Paso, Simplificar Paso Anterior y Pantalla Inicial"Case 4

Tutorial.Picture = LoadPicture(App.Path & "\Tutor4.bmp")LabeO.Caption = "El menú TUTORIAL le permite pasar de la simplificación a este

tutorial"Case 5

Tutorial.Picture = LoadPicture(App.Path & "\Tutor5.bmp")LabeO.Caption = "El menú Teoría sirve para pasar del proceso de simplificación a la

teoría sobre el método Quine McCluskey"Case 6

Tutorial.Picture = LoadPicture(App.Path & "\Tutor6.bmp")LabeO.Caption = "La opción FUNCIÓN / NUEVO permite ingresar una función

nueva ya sea como ECUACIÓN DE MINTERMINOS, o como TABLA DECOMBINACIONES"Case 7

Tutorial.Picture = LoadPicrure(App.Path & "\Tutor7.bmp")LabeO.Caption = "La Opción ABRIR permite leer una tabla grabada previamente en

disco con extensión .boo por ejemplo: 'funcionSb.boo'"Case 8

Tutorial.Picture = LoadPicture(App.Path & "\Tutor8.bmp")LabeO.Caption - "La opción GUARDAR graba en disco una tabla de combinaciones

o función con extensión .boo (el programa la pone automáticamente)"Case 9

Tutorial.Picture = LoadPicture(App.Path & "\Tutor9.bmp")LabeO.Caption = "La opción SIMPLIFICAR Simplifica completamente la función

booleana hasta el final en forma automática"Case 10

Tutorial.Picture = LoadPicture(App.Path & "\Tutorl0.bmp")LabeO.Caption = "Simplifica paso por paso la función y es equivalente a presionar el

comando SIGUIENTE"Case 11

Tutorial.Picture = LoadPicture(App.Path & "\Tutorl l.bmp")LabeO.Caption = "Regresa al paso anterior del proceso de simplificación de la

función"Case 12

Tutorial.Picture = LoadPicture(App.Path & "\Tutorl2.bmp")LabeO .Caption = "Regresa al menú principal"

Case 13TutoriaLPicture = LoadPicture(App.Path & "\Tutorl3.bmp")

Page 193: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

206

Label3.Caption = "Esta opción permite INGRESAR LOS MTNTERMINOS de unanueva función booleana"Case 14

Label2.Visible = FalseText4.Visible = FalseFori = OTo l5

Text3(i).Visible = FalseText2(i).Visible = False

Next iFuncion.Enabled = FalseFunción. Visible = FalsePrograma. Visible = FalseTeoria.Visible = FalseTutorial.Picture = LoadPicture(App.Path & "\Tutorl4.bmp")LabeO.Caption = "Esta opción sirve para ingresar la TABLA DE

COMBINACIONES de una función nueva (Máximo 10 variables de entrada)"Case 15

Tutorial.Picture = LoadPicture(App.Path & "\fondoTutorial.bmp")Label2.Visible = FalseText4.Visible = FalseFori = OTo 15

TextS (i). Visible - FalseText2(i). Visible = False

Next iFuncion.Enabled = TrueFuncion.Visible = TruePrograma. Enabled = FalsePrograma. Visible = TrueTeoria.Enabled = FalseTeoría. Visible = TrueAbrir.Enabled = FalseIngresarTabla.Enabled — FalseLabel3.Caption = "A continuación se hará un ejemplo de simplificación con 4

variables de entradas Para eso haga clic en:" & vbCrLf & " FUNCIÓN / NUEVO /INGRESARMINTÉRMINOS "

IngresarMinterminos. Enabled = TrueUltimo = True

Case 16Tutoría!. Cls

Text3 (i). Visible = FalseText2(i).Visible = False

Next iIngresarMmterminos_ClickMe.ClsCommandl .Enabled = FalseLabeB.Top = Text4.Top + Text4.HeightLabel3.Caption - "Mientras escribe los mintérminos, en la tabla de combinaciones

aparecerá el valor ingresado"Label3.Left = Tutorial.Width / 2 - Label3.Width / 4

Page 194: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

207

For i = 1 To 16

cont = OText3(i-l) = n"Do

cont = cont + 1res = Q Mod 2Q = Q\Text3(i - 1) = Str(res) + Text3(i - 1)

Loop Until (cont = 4)Next iText4.Text="("DoEventsFor i = O To Text3.UBound

Text3(i).Height=150Text2(i).Height=150Text3(i).Width = 4 * 150 + 150 / 4Text2(i).Width = 200Text3(i).Left - Tutorial.Width / 2 - (Text3(i).Width + Text2(i).Width) - 400Text2(i).Leñ = Text3(i).Left + Text3(i).WidthText3(i).Top = 2880 + (i) * Text3(i).HeightText2(i).Top = Text3(i).TopIf re(i) = "1" And ¡ o 9 Then

Text4.Text = Text4.Text & Str(i) & 1( "BeepMe.ClsMe.DrawWidth = 2Me.Line (Label3.Left + 0.75 * Label3.Width, Label3.Top + Label3.Height)-

(Text2(i).Left + Text2(i).Width> Text2(i).Top)DoEventsIf Len(Text4.Text) < 50 Then

Text4.Width = 75 * Len(Text4.Text) + 75 / Len(Text4.Text) + 200Text4.Height =

ElseText4.Height =Text4.Width = 75 * 50 + 75 / 50 + 200

EndlfText4.SelStart = Len(Text4.Text)Text4.SetFocus

EndlfIfi<=13Then

Text3(i).Visible = TrueText2(i).Visible - TrueIfio9Then

Text2(i).Text - re(i)Else

Text2(i).Text - "O"Endlf

ElseText2(i).Text - re(i)

Page 195: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

208

EndlfTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo

Next iText4.Text = Text4.Text & ")"Label3.Caption = "Cuando se termina de ingresar todos los mintérminos, se presiona

<ENTER> para completar la tabla"Label3.Left = Tutorial.Width / 2 - LabeB.Width / 4DoEvents

Case 17Text4.Visible = TrueFuncion.Enabled = FalsePrograma.Enabled = TrueTeoría. Enabled = TrueMe.Line (LabelS.Left + LabeB.Width / 2, LabelS.Top + Label3.Height>

(Text2(0).Leñ + Text2(0).Width / 2, Text2(0).Top)Fori = OTol3

Text3 (i). Visible = TrueText2(i). Visible = True

Next iTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoText3(14).Visible = TrueText2(14).Visible = TrueTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoText3(15).Visible = TrueText2(15).Visible = TrueIf Len(Text4.Text) < 50 Then

Text4.Width = 75 * Len(Text4.Text) + 75 / Len(Text4.Text) + 200Text4.Height = 215

ElseText4.Height - 2 * 237Text4.Width = 75 * 50 + 75 / 50 + 200

EndlfLabel3.Caption = "Otra forma de ingresar la función es ingresando en la TABLA DE

COMBINACIONES"CaselS

Fori = OTo 15Text3(i).Visible = FalseText2(i).Visible = False

Next iLabel2.Visible = FalseText4.Visible = False

Page 196: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

209

LabeO.Caption = "Para ingresar los valores en la tabla de combinaciones se "LabeO.Caption = LabeB.Caption & "presiona: FUNCIÓN / NUEVO / INGRESAR

TABLA / n ENTRADAS (en este ejemplo n=4)"Funcion.Enabled = TrucPrograma.Enabled = FalseTeoria.Enabled = FalseIngresarTabla.Enabled = TrueIngresarMinterminos.Enabled = FalseUltimo = True

Case 19Titulo(0).Visible = FalseList 1(0). Visible = FalseFori = OTol5

Text3(i).Visible = FalseText2(i). Visible = False

Next iText4.Text=""CuatroEntradas_ClickCommandl .Enabled = FalseFori-OTo 15

Text3(i).Visible = TrueText2(i).Text = ""Text2(i).Visible = TrueLabeO.Caption = "Mientras se van poniendo las salidas, automáticamente se irán

ecribiendo los mintérminos en el editor de mintérminos"Text2(i).SetFocusMe.Line (Text4.Left + 200, Text4.Top + Text4.Height)-(Label3.Lefís LabeB.Top

+ Label3.Height/2)Timerl = TimerDo

DoEventsLoop Until Timer - Timerl > TiempoIfio9Then

Text2(i).Text = re(i)Else

Text2(i).Text = "O"EndlfIf re(i) = " 1" And i o 9 Then

Text4.Text = Text4.Text & " " & Str(i)Beep

EndlfText2(i).SeIStart = Len(Text2(i).Text)Text2(i).SetFocusTimerl = TimerDo

DoEventsLoop Until Timer - Timerl > TiempoIf Len(Text4.Text) < 50 Then

Text4.Width = 75 * Len(Text4.Text) + 200Text4.Height =

Page 197: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

210

ElseText4.Height - 2 * 237Text4.Width = 75 * 50 + 75 / 50 + 200

EndlfTimerl = TimerDo

DoEventsLoop Until Timer - Timerl > Tiempo / 2

Next iText4.Text = Text4.Text & " )"Me.ClsLabelS.Caption = "Una vez que se ha ingresado toda la función sea con los

mintérminos o en la tabla de combinaciones, se debe revisar que no tenga errores, encuyo caso se debe corregirlo "Case 20

Text4.Text =" ("Fori = OTol5

If re(i) = "1" And i o 9 Then Text4.Text = Text4.Text & ?1 " & Str(i)Next iText4.Text = Text4.Text & ")"Text2(9).Text = "O"Label3.Caption = "La corrección se puede hacer ya sea en la tabla de combinaciones,

como en el editor de mintérminos, como se indica a continuación. Haga clic en el botónSiguiente"

Me.Line (Text4.Left + 400, Text4.Top + Text4.Height)-(Label3.Left, Label3.Top +Label3.Height/2)

Me.Line (Text2(0).Leñ + Text2(0).Width, Text2(0).Top)-(Label3.Left +LabeB.Width / 2, LabelS.Top + Label3.Height)Case 21

Text4.Text="("Fori = OTo 15

If re(i) = "1" And i o 9 Then Text4.Text = Text4.Text & " n & Str(i)Next iText4.Text = Text4.Text & ")"Text2(9).Text=H0H

LabeD.Caption = "Si se corrige en el editor de mintérminos la tabla decombinaciones se actualizará automáticamente como vemos en este ejemplo"

For i = 1 To 22Text4.SelStart = iText4.SetFocusTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo / 2

Next icadena = Text4.Text &" "Mid(cadena,23)="910 13)"Text4.Text = cadenaText4.SelStart - 23Text4.SetFocus

Page 198: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

211

Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo / 2cadena = Text4.TextMid(cadena, 23) = "9 10 13)"Text4.Text = cadenaText4.SelStart = 24Text4.SetFocusTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo / 2cadena = Text4.TextMid(cadena, 23) = "9 10 13)"Text4.Text = cadenaText4.SelStart - 25Text4.SetFocusTimerl = TimerDo

DoEventsLoop Until Tirner - Timerl >= Tiempo / 2Text2(9).Text = ""BeepMe.Line (LabeB.Left + LabeD.Width / 2, LabeO.Top + Label3.Height)-

(Text2(9).Left + Text2(9).Width, Text2(9).Top)Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoText2(9).Text = "l"Label3.Caption = "La corrección también se lo puede hacer en la tabla de

combinaciones como se muestra a continuación."Case 22

Text4.Text ="("Fori = OTo l5

If re(i) = n 1" And i o 9 Then Text4.Text - Text4,Text & "" & Str(i)Next iText4.Text = Text4.Text & ")"Text2(9).Text = "O"DoEventsLabeB.Caption = "Si la corrección se hace en la tabla de combinaciones entonces el

editor de mintérminos se actualizará automáticamente"For i^OTo 12

Text2(i).SelStart=lText2(i).SetFocusTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo

Page 199: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

212

Next iFori=12To9Step-l

Text2(i).SelStart = 1Text2(i).SetFocusTimerl = TimerDo

DoEventsLoop Untíl Timer - Timerl >= Tiempo

Next iText2(9).Text=""Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoText2(9).Text=fT'DoEventsBeepMe.Lme (Text4.Left + 1000, Text4.Top + Text4.Height)-(Label3.Left, LabeB.Top +

Label3.Height/2)Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempocadena = Text4.Text & " "Mid(cadena, 23) = "9 10 13)"Text4.Text = cadena

Case 23Titulo(0).Visible = FalseListl(0).Visible = FalseTitulo(l). Visible = FalseListl(l).Visible = FalseFori = OTo 15

Text3(i).Visible = TrueText2(i).Visible = True

Next iLabel3.Caption = "Una vez que se ha ingresado y corregido los datos, se procede a

simplificar. La simplificación se puede realizar paso a paso presionando el botónSiguiente, ó, puede ir directamente a la solución haciendo clic en el botón Terminar "

Me.Line (Label3.Left + Label3.Width / 2, Label3.Top + LabeB.Height)-(Framel.Leñ, Framel.Top + Commandl.Top + Commandl.Height/2)

Me.Line (LabeB.Left + Label3.Width / 2, LabeB.Top + LabeB.Height)-(Framel.Left, Framel.Top + CommandH.Top + CommandH.Height/ 2)

Commandl4.Enabled = TrueCase 24

For i = O To Text3.UBoundText3(i). Visible = FalseText2(i). Visible = False

Next iTitulo(0).Top = LabeB.Top + LabeB.HeightTitulo(0).Caption = "MINTERMINOS"

Page 200: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

213

Listl(0).Top = Titulo(0).Top + Titulo(0).HeightListl(0).Left = 3000Listl(0).Width = 2.75 * TextWidth("0 0000")Titulo(0).Left = 3000Listl(0).Height = 21 * TextHeight("0")Listl(0).ClearTitulo(0).Visible = TrueListl(O). Visible = TrueFor i = 1 To 9

IfVal(mo(i,0))<10ThenListl(0).AddItem (mo(i, 0) & " " & ce(i, 0))

ElseListl(0).AddItem (mo(i, 0) & " " & ce(i, 0))

EndlfDoEvents

Next iLabeB.Caption = "Esta es la tabla de MINTERMINOS y de CUBOS 0. Como se

ve, esta tabla está ordenada de acuerdo al número de UNOS en cada combinación quetiene salida 1"

Titulo(l).Top = LabeO.Top + LabelS.HeightTitulo(l).Captíon= "CUBOS O"Listl(l).Top = Titulo(l).Top + Titulo(l).HeightListl(l).Left = Listl(0).Left + Listl(0).Width + 1000Listl(l).Width = 3 * TextWidth("0000")Titulo(l).Left = Listl(0).Left + Listl(0).Width + 1000Listl(l).Height = 28 * TextHeight("0")Listl(l).ClearTitulo(l). Visible = TrueList 1(1). Visible = TrueF o r i = l T o l 2

Listl(l).AddItem(ce(i9l))DoEvents

Next iCase 25

Titulo(0).Top = LabeB.Top + Label3.HeightTitulo(0).Caption = "CUBOS O"Listl(0).Top = Titulo(0).Top + Titulo(0).HeightList l(0).Left = 3000Listl (O).Width = 2.75 * TextWidth("0 0000")Titulo(0).Left = Listl(0).Left + Listl(O).Width / 2 - Titulo(0).Width / 2Listl(0).Height = 28 * TextHeight("0")Listl(0).ClearTitulo(0).Visible = TrueListl(0).Visible = TrueF o r i = l Tol2

If i o 2 And i o 5 And i o 10 ThenListl(0).AddItem ("* " & ce(i, 1))

ElseListl(0).AddItem (" " & ce(i, 1))

Endlf

Page 201: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

214

DoEventsNextiTitulo(l).Top = LabeB.Top + LabeB.HeightTitulo(l).Caption= "CUBOS 1"Listl(l).Top = Listl(0).TopListl(l).Left = Listl(0).Left + Listl(0).Width + 300Listl(l).Width = 2.75 * TextWidth("0000")Titulo(l).Left = Listl(l).Left + Listl(l).Width / 2 - Titulo(l).Width / 2Listl(l).Height = 28 * TextHeight("0")Listl(l).ClearTitulo(l). Visible = TrucListl(l).Visible = TrueFor i = 1 To 12

Listl(l).AddItem (ce(i, 2))DoEvents

NextiLabeB.Caption - "Aquí están las tablas de los CUBOS O y CUBOS 1." & vbCrLf

& "En los CUBOS O se pone una marca (*) para indicar las combinaciones que hansido usadas para formar los CUBOS 1"Case 26

Titulo(0).Top - LabeB.Top + LabeB.HeightTitulo(0).Caption = "CUBOS 1"Listl(0).Top = Titulo(0).Top + Titulo(0).HeightListl(0).Left = 3000Listl(0).Width = 2.75 * TextWidthf 0000")Titulo(0).Left = Listl(0).Left + Listl(0).Width / 2 - Titulo(0).Width / 2Listl(0).Height = 28 * TextHeight("0")Listl(0).ClearTitulo(0).Visible = TrueListl(0).Visible = TrueF o r i = l T o l 2

If i o 3 And i o 7 And i o 9 And i o 12 ThenListl(0).AddItem("* " & ce(i, 2))

ElseListl(0).AddItem (" " & ce(i, 2))

EndlfDoEvents

NextiTituio(l).Top - LabeB.Top + Label3.HeightTitulo(l).Caption = "CUBOS 2"Listl(l).Top = Listl(0).TopListl(l).Left = Listl(0).Left + Listl(0).Width + 300Listl(l).Width = 2.75 * TextWidth("0000")Titulo(l).Left - Listl(l).Left + Listl(l).Width / 2 - Titulo(l).Width / 2Listl(l).Height = 8 * TextHeight(M0")Listl(l).ClearTitulo(l).Visible = TrueListl(l).Visible = TrueFor i = Í To 3

Listl(l).AddItem (ce(i, 3))

Page 202: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

215

DoEventsNext iLabelS.Caption = "Aquí se presentan las tablas de los CUBOS 1 y CUBOS 2." &

vbCrLf & "En los CUBOS 1 existen 2 combinaciones que no se han agrupado, estasforman parte de los implicantes primos"Case 27

Picturel. Visible = FalseTitulo(0).Top = LabeB.Top + Label3.HeightTitulo(0).Caption = "CUBOS 2"Listl(0).Top = Titulo(0).Top + Titulo(0).HeightListl(0).Left = 3000Listl(0).WÍdth = 2.75 * TextWidth(" 0000")Titulo(0).Left = Listl(0).Left + Listl(0).Width / 2 - Titulo(0).Width / 2Listl(0).Height = 8 * TextHeightfO")Listl(0).ClearTitulo(0).Visible = TrueList 1(0). Visible = TrueFor i = 1 To 3

List 1 (0).Addltem (" " & ce(i, 3))DoEvents

Next iTitulo(l).Top = Label3.Top + LabeB.HeightTitulo(l).Captíon= "IMPLICANTES PRIMOS"Listl(l).Top = Listl(0).TopListl(l).Left = Listl(0).Left + 2 * Listl(0).Width + 300Listl(l).Width = 2.75 * TextWidthfOOOO")Titulo(l).Left = Listl(l).Left + Listl(l).Width/ 2 - Titulo(l).Width / 2Listl(l).Height = 10 * TextHeightfO")Listl(l).ClearTitulo(l). Visible = TrueListl(l).Visible = TrueFor i = 1 To 4

Listl(l).AddItem(ce(i,4))DoEvents

Next iLabeB.Caption = "Aqui están las tablas de CUBOS 2 y los IMPLICANTES

PRIMOS. En los CUBOS 2 todas las combinaciones forman parte de los implicantesprimos, ya que no se pueden hacer combinaciones para formar CUBOS 3"Case 28 'Construcción de la tabla de simplificación

so(l) = 0so(2) = 2so(3) = 3so(4) = 6so(5) = 7so(6) = 8so(7) = 9so(8)=10so(9)=13For i = 1 To 4

Forj = l To9

Page 203: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

216

TablaT(í,j) =Nextj

Next iTablaT(l,6) = "*"TablaT(l, ?) = "*"TablaT(2,7)-"*"TablaT(2>9) = 11*11

TablaT(3, 1) = "*"TablaT(3, 2) = "*"TablaT(3, 6) = "*"TablaT(3, 8) = "*"TablaT(4, 2) = "*"TablaT(4, 3) = "*"TablaT(4,4) = "*"TablaT(4, 5) = "*"Label3.Caption = "La tabla de simplificación se forma con los implicantes primos y

con los mintérminos; la marca se pone en todas las celdas que coinciden con losimplicantes y los mintérminos utilizados"

Titulo(l). Visible = FalseTitulo(0).Visible = FalseListl(0).Visible = FalseListl(l). Visible = FalseList2(0). Visible = FaiseTitulo(0).Top - LabeB.Height + LabeO.Height + 100Titulo(0).Caption = "TABLA DE SIMPLIFICACIÓN"Titulo(0).Left = Forml.Width / 2 - TituIo(O).Width / 2Picturel.Top = Titulo(0).Top + Titulo(0).HeightTitulo(0).Visible = TrueDoEventsespacio = TextWidth("00000000")ancho = TextWidth("OOOOOOn)alto = 1.25 * TextHeight("0")Picturel.Width = ancho + espacio + 9 * anchoPicturel.Left = Forml.Width / 2 - Picturel.Width / 2Picturel.Height = 6 * altoPicturel.ClsPicturel. Visible = TruePicturel.CurrentX = anchoPicturel.Line (Picturel.CurrentX - ancho / 50, 0)-(Picturel.CurrentX,

Picturel.Height), ,BFDoEventsFor i = 1 To 9

Picturel .CurrentX = ancho + espacio + ancho * (i - 1)Picturel.Line (Picturel.CurrentX - ancho / 50, 0)-(Picturel.CurrentX,

Picture 1.Height), ,BFPicturel.CurrentX = ancho + espacio + ancho * (i - 1) + ancho 12-

TextWidth(Str(so(i)))Picture l.Current Y = OPicturel.Print so(i)DoEvents

Page 204: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

217

NextiFor i = 1 To 4

Picturel.CurrentY = i * altoPicturel.Line (O, Picturel.CurrentY - alto / 20)-(Picturel.Width,

Picturel.CurrentY),, BFPicturel.CurrentX = 1.25 * anchoPicturel.CurrentY = i * altoPicturel.Print ce(i, 4);DoEventsForj = l To9

IfTablaT(iJ) = "*"ThenPicturel.CurrentX = ancho + espacio + ancho * (j - 1) + ancho /2 -

TextWidth("*")Picturel .CurrentY = i * alto + TextHeight(M*") / 8Picturel .Print TablaT(i, j);Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo / 4

EndlfNextjPicturel.Print

DoEventsNextiPicturel.CurrentY = 5 * altoPicturel.Line (O, Picturel.CurrentY - alto / 20)-(Picturel.Width, Picturel.CurrentY),

>BFCase 29 'Cálculo de los implicantes primos esenciales

espacio = TextWidthfOOOOOOOO")ancho - TextWidth("000000")alto = 1.25 * TextHeight("0")Picturel.ClsPicturel. Visible = TruePicturel .CurrentX = anchoPicturel.Line (Picturel.CurrentX - ancho / 50, 0)-(Picturel.CurrentXí

Picturel.Height),, BFDoEventsFor i = 1 To 9

Picturel.CurrentX = ancho + espacio + ancho * (i - 1)Picturel.Line (Picturel.CurrentX - ancho / 50, 0)-(Picturel.CurrentX,

Picturel.Height),, BFPicturel.CurrentX = ancho + espacio + ancho * (i - 1) + ancho 12-

TextWidth(Str(so(i)))Picturel.CurrentY = OPicturel,Print so(i)DoEvents

NextiFor i = 1 To 4

Picturel.CurrentY = i * alto

Page 205: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

218

Picturel.Line (O, Picturel.CurrentY - alto / 20)-(Picturel.Width,Picturel.CurrentY),, BF

Picturel.CurrentX = 1.25 * anchoPicturel.CurrentY = i * altoPicturel .Print ce(i, 4);DoEventsForj = l T o 9

IfTablaT(iJ)="*"ThenPicturel.CurrentX = ancho + espacio + ancho * (j - 1) + ancho /2 -

TextWidth("*")Picturel.CurrentY = i * alto + TextHeight("*") / 8Picturel .Print TablaT(i, j);DoEvents

EndlfNextjPicturel.Print

DoEventsNext iPicturel.CurrentY = 5 * altoPicturel.Line (O, Picturel.CurrentY - alto / 20)-(Picturel.Width, Picturel.CurrentY),

,BFLabel3.Caption = "Los implicantes primos esenciales formarán parte de la solución"Titulo(l).Left = Picturel.LeñTitulo(l).Top = Picturel.Top + Picturel. HeightTitulo(l).Captíon= "ESENCIALES"Titulo(l). Visible = TrueList2(0).Left = Titulo(l).LeftList2(0).Top = Titulo(l).Top + Titulo(l).HeightList2(0).ClearList2(0).Visible = TrueColorLinea = RGB(255, O, 0)Picturel.CurrentX = ancho + espacio + ancho * (1 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel.CurrentX = ancho + espacio + ancho *(!-!) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX5 alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel .CurrentX = ancho / 2Picturel.CurrentY = 3.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel.CurrentX = ancho + 0.85 * espacioPicturel.CurrentY = 3.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.Width,

Picturel.CurrentY), ColorLineaPicturel.CurrentX = ancho + espacio + ancho *(!-!) + ancho / 2

Page 206: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

219

Picturel.CurrentY = 3.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 1.5 * TextWidth("*"),

ColorLineaList2(0).AddItem ("XOXO")Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel.CurrentX = ancho + espacio + ancho * (2 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (2 - 1) + ancho / 2Picturel .CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Pictiirel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel .CurrentX = ancho + espacio + ancho * (6 -1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (6 - 1) + ancho / 2Picturel .CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel.CurrentX = ancho + espacio + ancho * (8 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (8 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.Curren:Y)-(Picturel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoColorLinea = RGB(0, 255, 0)Picturel.CurrentX = ancho + espacio + ancho * (3 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (3 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLinea

Page 207: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

220

Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel.CurrentX = ancho / 2Picturel .CurrentY = 4.5 * altoPicturel.Gírele (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel.CurrentX = ancho + 0.85 * espacioPicturel.CurrentY = 4.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.Width,

Picturel.CurrentY), ColorLineaPicturel.CurrentX = ancho + espacio + ancho * (3 - 1) + ancho /2Picturel.CurrentY = 4.5 * altoPicturel.Circle(PictureLCurrentX,Picturel.CurrentY), 1.5 * TextWidth("*"),

ColorLineaList2(0).AddItem ("OX1X")Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel .CurrentX = ancho + espacio + ancho * (4 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, PictureLCurrentY), 25, ColorLineaPicturel.CurrentX = ancho + espacio + ancho * (4 - 1) + ancho / 2PictureLCurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel .CurrentX = ancho + espacio + ancho * (5 - 1) + ancho / 2PictureLCurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, PictureLCurrentY), 25, ColorLineaPicturel.CurrentX = ancho + espacio + ancho * (5 - 1) + ancho / 2Picturel .CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoColorLinea = RGB(0, O, 255)Picturel .CurrentX = ancho + espacio + ancho * (9 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Circle (Picturel.CurrentX, PictureLCurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (9 - 1) + ancho / 2PictureLCurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLinea

Page 208: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

221

Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel.CurrentX = 0.5 * anchoPicturel.CurrentY = 2.5 * altoPicturel.Gírele (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel.CurrentX = ancho -f- 0.85 * espacioPicturel.CurrentY = 2.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.Width,

Picturel.CurrentY), ColorLineaPicturel.CurrentX = ancho + espacio + ancho * (9 - 1) + ancho / 2Picturel.CurrentY = 2.5 * altoPicturel.Circie (Picturel.CurrentX, Picturel.CurrentY), 1.5 * TextWidth("*fl),

ColorLineaList2(0).AddItem ("1X01")Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoPicturel.CurrentX = ancho + espacio + ancho * (7 - 1) + ancho / 2Picturel.CurrentY = 5.5 * altoPictureLCircle (Picturel.CurrentX, Picturel.CurrentY), 25, ColorLineaPicturel .CurrentX = ancho + espacio + ancho * (7 - 1)+ ancho / 2Picturel.CurrentY = 5.5 * altoPicturel.Line (Picturel.CurrentX, Picturel.CurrentY)-(Picturel.CurrentX, alto / 2),

ColorLineaTimerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo

Case 30Labeló.Visible = FalseTituio(0).Visible = TrueTitulo(l). Visible = TruePicturel.Visible = TrueList2(0).Visible = TrueLabeB.Caption = "Puesto que se han cubierto todas las columnas, no se forman

implicantes secundarios, entonces de cada implicante escencial saldrá un término de lasolución y de cada implicante primo esencial sale un término de la solución final"

DoEventsCurrentX = List2(0).Left + List2(0).WidthCurrentY = List2(0).Top + 0.75 * TextHeight("X")Me.Line (CurrentX, CurrentY)-(CurrentX + 1000, CurrentY), RGB(255, O, 0)CurrentY = CurrentY - TextHeight("X") / 2Print "B'D"'Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= Tiempo

Page 209: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

222

CurrentX = List2(0).Left + List2(0).WidthCurrentY = List2(0).Top + 2 * TextHeight("X")Me.Line (CurrentX, CurrentY)-(CurrentX + 1000, CurrentY), RGB(0, 255, 0)CurrentY = CurrentY - TextHeight("X") / 2Print "A'C"Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoCurrentX = List2(0).Left + List2(0).WidthCurrentY = List2(0).Top + 3.25 * TextHeightfX")Me.Line (CurrentX, CurrentY)-(CurrentX + 1000, CurrentY), RGB(0, O, 255)CurrentY = CurrentY - TextHeight(nX") / 2Print "AC'D"

Case 31 'Construcción de la función ResultanteTitulo(O). Visible = FalseTitulo(l). Visible = FalsePicturel. Visible = FalseList2(0).Visible = FalseLabel3.Caption = "La solución tiene tres términos"Labeló.Visible = TrueDoEventsLabeló.Caption = "Y = B'D'"Labeló.Left = Tutorial.Width / 2 - Labelo,Width / 2Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoLabeló.Caption = "Y = B'D' + A'C"Labeló.Left = Tutorial.Width / 2 - Labelo.Width / 2Timerl = TimerDo

DoEventsLoop Until Timer - Timerl >= TiempoLabeló.Caption = "Y = B'D' + A'C + AC'D"Labeló.Left = Tutorial.Width / 2 - Labelo.Width / 2Ultimo = True

Case El seEnd SelectEnd Sub

Prívate Sub CincoEntradas_Click()Beep

End Sub

Prívate Sub Commandl_Click()Commandl.Enabled = FalseCommandH.Enabled = FalseCommand2.Enabled = FalseCommand3.Enabled = False

Page 210: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

223

Tutor = Tutor + 1t

MostrarTutorial

Command2.Enabled - TrucCommand3.Enabled = TrucIf Tutor o 21 Then Command2.SetFocusIf Ultimo = False Then

Commandl. Enabled = TrueIf Tutor >= 23 Then Commandl4.Enabled = TrueIf Tutor o 21 Then Commandl.SetFocus

EndlfEnd Sub

Prívate Sub Commandl _MouseMove(Button As Integer, Shiñ As Integer, X As Single,Y As Single)

Commandl .BackColor = ColorEnfoqueCommand2.BackColor = ColorlnicialBotonesCommand3.BackColor = ColorlnicialBotones

End Sub

Private Sub Commandl4_Click()CommandH.Enabled = FalseDo

Command 1 _C1 ickLoop Until Ultimo = True

End Sub

Private Sub Command2_Click()Commandl .Enabled = FalseCommand 14.Enabíed = FalseCommand2.Enabled = FalseCommandB. Enabled = FalseTutor = Tutor - 1MostrarTutorialIf Tutor o 21 Then CommandS.Enabled = TrueIf Ultimo - False Then

Commandl .Enabled = TrueCommandl .SetFocus

EndlfIf Tutor > O Then

Command2.Enabled = TrueIf Tutor o 21 Then Command2. SetFocus

EndlfEnd Sub

Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single)

Commandl.BackColor = ColorlnicialBotones

Page 211: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

224

Command2.BackColor = ColorEnfoqueCommandS.BackColor = ColorlnicialBotonesCommandl4.BackColor = ColorTnicialBotones

End Sub

Prívate Sub Command3_Click()Unload Me

End Sub

Prívate Sub Command3_MouseMove(Button As Tnteger, Shift As Integer, X As Single,Y As Single)

Commandl.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandl4.BackColor = ColorlnicialBotonesCommand3.BackColor = ColorEnfoque

End Sub

Prívate Sub CuatroEntradas_Click()Label2.Visible = TrueText4.Text="("If Len(Text4.Text) < 50 Then

Text4.Width = 75 * Len(Text4.Text) + 200Text4.Height = 215

ElseText4.Height = 2*237Text4.Width - 75 * 50 + 75 / 50 + 200

EndlfText4.Visible = TrueText3(0).Visible = TrueText2(0).Text = ""Text2(0).Visible = TrueLabelS.Caption = "Para cada combinación de las variables de entrada se ingresa el

valor correspondiente a la función de salida como se ve a continuación. Haga clic enSiguiente."

Text2(0).SetFocusFuncion.Enabled = FalsePrograma.Enabled = TrueTeoria.Enabled = TrueCommandl.Enabled = True

End Sub

Prívate Sub DiezEntradas_Click()BeepEnd Sub

Prívate Sub DosEntradas_Click()Beep

End SubPrívate Sub Form_Load()

Page 212: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

225

Commandl.BackColor = ColorlnicialBotonesCornmandl4.BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesre(0) = "l"re(l) = "0"re(2) = "l"re(3) = 'T're(4) = "O"re(5) = "O"re(6) = "l"re(7) = "l"re(8) = "l"re(9) = "l"re(10) = 'T'

re(12) = "0"re(13) = "l"re(14) = "0"

ce( 1,0) -"0000"ce(2,0) = lt0010"

ce(4íO)-M0110"ce(5, 0) = I10111"ce(6,0) = fl1000"ce(7,0) = "1001"ce(8,0) = lf1010n

ce(9,0) = "1101"ce(l, 1) = "0000H

06(2,1) = " --------

ce(3, l) = "0010n

ce(4, 1) = "1000"ce(5, 1) = " --------

ce(7s l) = M0110n

ce(8, 1) = "1001H

ce(9, l) = "1010n

06(10,1) = " --------

ce(ll, l) = lf01H11

ce(12, 1)-"1101M

ce( 1,2) = "00X0"ce(2, 2) - "XOOO"ce(3, 2) - " -------- "

ce(5,2) = MOX10M

ce(6,2)-"X010"ce(7s2) = M100X"ce(8,2) = n10XO"ce(9, 2) = " --------

Page 213: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

'9 *£ tu = (17

'9 *£ t« = (£..-u - (e

«•i, = (ZOT í 8 , , = (ü«6 S8,, = feorr., = (r,,9 ti, - te,,e6ü., = fe

U - H ^ í ü

,,8 40,, = (2

.,£l,. = (066)oui

no,, = (O 4

,,8,i = (O 4

i,¿,. = (O £

,.9,, = (O«£,. = (O c£)oinUS,, = (O *

uOXOX» -

„ = (£ '

Page 214: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

227

Tutor = OMostrarTutorialCommandl.Enabled - True

End SubPrívate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y AsSingle)

Commandl .BackColor = ColorlnicialBotonesCommand2.BackColor = ColorlnicialBotonesCommandS.BackColor = ColorlnicialBotonesCommandl4.BackColor = ColorlnicialBotones

End SubPrívate Sub Framel_MouseMove(Button As Integer., Shift As Integer, X As Single, YAs Single)

Commandl. BackColor = ColorlnicialBotonesCommand2.BackCoÍor = ColorlnicialBotonesCommand3. BackColor = ColorlnicialBotonesComrnandl4.BackColor = ColorlnicialBotones

End SubPrívate Sub lngresarMinterminos_Click()

Label2.Visible = TrueText4.Visible = TrueText4.Text = "( "LabelS.Top = Text4,Top + Text4.HeightLabel3.Caption = "En la parte superior de la pantalla de simplificación se encuentra

el Editor de Mintérminos; aquí se pueden ingresar los mintérminos separados por unespacio. Haga clic en Siguiente"

LabeO.Left = Tutorial.Width / 2 - LabeO.Width / 2DoEventsMe.DrawWidth = 3Tutorial.Line (Text4.Left + 100, Text4.Top + Text4.Height)-(Label3.Left,

LabelS.Top + Label3.Height / 2), LabeD.ForeColorFuncion.Enabled = FalsePrograma. Enabled = TrueTeoria.Enabled - TrueCommandl.Enabled = True

End SubPrívate Sub NueveEntradas_Click()BeepEnd SubPrívate Sub OchoEntradas_Click()BeepEnd SubPrívate Sub Programa_Click()

Forml.ShowEnd SubPrívate Sub SeisEntradas_Click()BeepEnd Sub

Prívate Sub SieteEntradas_Click()

Page 215: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

229

ANEXO B

MÉTODO DE SIMPLIFICACIÓN QUINE-MCCLUSKEY

Una función BOOLEANA se expresa en forma de tabla de combinaciones, como suma

de mintérminos y como producto de maxtérminos.

A B C

O O OO O 1O 1 O

1 1 O

lyiintértnirio Ma/t armiño

A+B+C = MoA+B+C1 -M1A+B'+C =M2A+B'+C =M3A+B+C =M4A'+B+C1 =M5A'+B'+C=M6A'+B'+C'=M7

F<AJB,C>=2m(0,2,3,5,6)

MINTÉRMINOS.- Son los productos de las variables que se forma de la siguiente

manera:

Si la combinación tiene un cero se pone la variable complementada, si la combinación

tiene un uno se pone la variable directamente.

Por ejemplo.

La combinación Olí tiene como mintérmino al producto A'BC ya que A=O, B=l y

Oí.

La función booleana expresada como suma de mintérminos^ se expresa como una suma

Page 216: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

230

de todos los mintérminos que tiene una salida igual a I. así en el caso de la tabla será.

F<A, B, 0=2X0,2, 3,5,6)

MAXTERMINOS.- Son las sumas las variables que se forman de la siguiente manera:

Si la combinación tiene un cero se pone la variable directamente mientras que si la

combinación tiene un 1, se pone la variable complementada.

Por ejemplo.

La combinación 011 tiene como maxtérmino a la suma de A+B*+C' ya que A=O, B=l

y 01.

La función booleana expresada como producto de maxtérminos, se expresa como un

producto de todos los maxtérminos que tiene una salida igual a 0. Así en el caso de la tabla

será.

F<AfB,0-IlM(U4,7)

Page 217: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

231

LISTA DE MINTERMINOS

El punto de partida del método Quine-McCluskey es la lista de Mintérminos de una

función. Si la función no está en esta fonna se debe convertirla. Para explicar se toma la

función siguiente:

A B C D0 0 0 00 0 0 10 0 i nU 1, U

0 0 1 10 1 0 00 1 0 10 1111 0 1 0I O D O

I 0 0 1í 0 1 11 0 1 1í 1 0 0í 1 A i

Jl 1 1 0* • * * • *1 I A 1

F1 __

0

ó0

l-.-j

¡..-i• 1 '

1: , — .

o0

i'l'i —00

^ m u

-frf> I T 'TF III U;

w' m »:

' m í o !

•W"W»««»«"f~i««»»ni»««ífflp- ?B'Í ^ " " 4 1

F < A,B*C,D > = Z m(0,2,3,6J,8,9JO,13)

La lista de mintérminos consiste en una tabla de combinaciones cuya salida tiene 1, en

el ejemplo los mintérminos que formarán parte de la tabla son /wft m2, m& m^ m7, /w& m^ mío,

m¡3.

Page 218: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

232

minlirrtninu

m Om2m3m6m7m Bm 9míom!3

A B i. n

0 0 0 00 0 1 00 0 1 10 1 1 001111 0 0 01 0 0 11 0 1 01101

F

111111111

CUBOS O

En una tabla se agrupa todos los mintcrminos de acuerdo a la cantidad de unos que

contienen.

Por ejemplo.

Los mintérminos que tienen O unos es mintérmino mO.

Los que tienen / uno son los mintérminos m2 y tn8.

Los que tienen 2 unos son los mintérminos mB, m6t m9 y m/0.

Los que tienen 3 unos son los mintérminos m? y mi3.

No existen mintérminos con 4 unos.

Esta tabla se denomina tabla de CUBOS O

Page 219: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

233

N" unos

0

1

2

3

minlrrmino

m O

ni 2m8

m3m6m9mlOm7m!3

A B <: D

0 0 0 0

0 0 1 01 0 0 00 0 1 10 1 1 01 0 0 11 0 1 00 1 1 11101

¥

111111111

CUBOS 1

Los CUBOS I se forman de la siguiente manera:

• Se agrupa CUBOS O del primer grupo con CUBOS O del segundo grupo.

• Se agrupa CUBOS O del segundo grupo con CUBOS O del tercer grupo.

• Se agrupa CUBOS O del tercer grupo con CUBOS O del cuarto grupo.

• Así sucesivamente hasta terminar de agrupar todos los CUBOS 0.

Se compara si ios dos CUBOS O que están siendo agrupados difieren en tina sola

posición, en cuyo caso el CUBO I será similar a los CUBOS O agrupados, pero en la posición

que cambia se pone una X.

A los CUBOS O que han sido agrupados y formaron un CUBO 1 se pone una señal

para especificar que si ha sido tomado en cuenta.

Por ejemplo.

Page 220: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

234

Al comparar los cubos O m0 con m¡ forman el CUBO 1 00X0, ya que difieren

únicamente en la tercera posición, este nuevo CUBO 1 se denomina CUBO 1 (O, 2).

En los CUBOS O m0 y m2 se ponen las marcas para indicar que si han sido tomados en

cuenta.

Al comparar los CUBOS Om^y m¡3, forman el CUBO 1 (9,13) = 1X01 ya que difieren

únicamente en la segunda posición.

La siguiente tabla indica todo el proceso para el cálculo de los CUBOS /.

mintérmino

mO

m2m8

m 3m6m9rn 10

m7m 13

A B C D

0000

0 0 1 01 000

001 101101 00 110100 1 1 11 1 0 1

Min término

mO, m2

mO, m8

m2, m3m2, m6m2, m10m8, m9m8, m10

m3, m7m6, m7m9, m13

Resultante00X0

xoooooox0X1 OX01 O1 OOX1 0X0

0X1 101 1 X1 X01

CUBOS 2

Los CUBOS 2 se forman de la siguiente manera:

Page 221: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

235

- Agrupando dos CUBOS 1 de un grupo con los CUBOS I del siguiente grupo. En esta

caso el CUBO 1 (O, 2) se agrupa con el CUBO 1 (8, 10) para formar el CUBO 2 (O, 2, 8, 10) =

XOXO ya que cambia únicamente en la primera posición. En el siguiente gráfico se indica todo

el proceso para encontrar los CUBOS 2.

Mintérmino

mO, m2

mO, m8

m2, m3m2, m6m2, m10m8, m9m8, m10

m3, m7m6, m7m9, m13

CUBOS 1

0 0 X 0

000

o o o x0 X 1 0X01 01 OOX1 0X0

0X1 101 1 X1 X01

• CUBOS 2^^^^"5(0,2,8,10) X O X O

~^^ ( 2, 3, 6, 7 ) 0 X 1 X

t."í//í í'

w//^

Como se puede ver existen dos CUBOS 1 100X y 1X01 que no se combinaron para

formar CUBOS 2 por esta razón estas combinaciones formarán parte de los implicantes

primos.

Page 222: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

236

IMPLICANTES PRIMOS

Los implicantes primos se forman con todos los cubos que no se agruparon con ningún

otro cubo para formar un cubo de mayor grado.

Por ejemplo:

Los implicantes primos son los ClIBOS 1 100X y 1X01, mientras que, como no se han

agrupado los CUBOS 2 para formar CUBOS 3 también todos los CUBOS 2 formarán parte de

los implicantes primos.

En el gráfico se indican todos los implicantes primos.

IMPLICANTES PRIMOS

(8,9) 100X

(9,13) 1 X 0 1

(0,2,810) X O X O(2,3,6,7) O X 1 X

TABLA DE SIMPLIFICACIÓN

La tabla de simplificación sirve para simplificar mas los implicantes primos, ya que

algunos implicantes primos están contenidos en otros, para eso se construye una tabla, en la

que se pone una marca en cada celda que coincide con el implicante primo y el minténnino

que contiene. Por ejemplo el implicante primo OX1X contiene a los mintérminos m2, m3, mó,

m?. La tabla se indica en el siguiente gráfico.

Page 223: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

237

TABLA DE SIMPLIFICACIÓN

1 OOX1 XO 1x o x o0X1 X

0

*

2

*

*

3

*

6

*

7

*

8

*

*

9

*

*

1O

*

13

*

Basándose en esta tabla se calcula los implicantes primos esenciales de la siguiente

manera:

• Buscamos la columna que tenga una sola marca.

• El implicante primo que contiene esta marca es ya un implicante primo

esencial.

• Se anulan todas las columnas que contienen marca en la fila correspondiente

de la marca encontrada en el primer paso.

• Se repite este proceso hasta que ya no existan columnas con una sola marca

es decir hasta que ya no existan mas implicantes primos esenciales.

Page 224: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

238

o 8 1O 13

1 OOX1 XO 1x o x o0X1 X

E S C E N C I A L E S

Como ya fueron tomados en cuenta todos los mintérminos, ya no existen implicantes

primos secundarios y la solución simplificada se formaran únicamente con los implicantes

primos esenciales.

XOXO ^B'D5

OX1X -> A'C

1X01 -> BC'D

Entonces la solución será:

Y-B'D' + A'C + BC'D

Una vez encontrados todos los implicantes primos esenciales y si sobran columnas que no

han sido tomadas en cuenta se procede a calcular los implicantes primos secundarios de menor

Page 225: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

239

costo para esto se sigue el siguiente procedimiento:

• De los implicantes primos que no se han tomado como esenciales se cuenta

cual de estos tiene mayor cantidad de marcas que están en columnas no eliminadas.

• Este implicante primo es un implicante primo secundario.

• Se anulan todas las columnas que tienen una marca en la fila del implicante

primo tomado.

• Se vuelve a repetir el proceso hasta que ya estén eliminadas todas las

columnas.

Esta es la tabla de simplificación para una función de 5 entradas que tiene implicantes

primos secundarios ya que el ejemplo anterior no tiene implicantes primos secundarios

TABLA DE SIMPLIFICACIÓN

•>,'

V^J

%•

ES

00X0 t-X01011010X-10X11-101X10X0X1X10X1XX01X-

3

^

nr

•u

2j

1|

f ""

"-j —

!

— ?>~i ,

3|

í

|

|

|

¡jf

~<5^~i,/

5

r)

•v/

9

- — -

r

*•

10Iii!líj

e J

"V

11

í|

— f— •

íi

j

íiT

~^—L\

18

j"~H~f —

jjj

-4-~f '

19í

— ± —-f-j)

__ái

í '"'f

20íe

^ j^ fV

~t"í

%

21i

tí>

1iif "iV

?3

-<r•

/

25

*

26

iit

iIt$• —

l<

27!¡ií

1

!

i~41:

ENCIALES SECUNDARIOSXX0 1 X.¿ /-í 4 ."v, •• y* i í i | í Af 'O1 S WV\1 10X11

Los implicantes primos esenciales y secundarios formaran la ecuación simplificada.

De los esenciales:

Page 226: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Quine HcCIuskeyMANUAL DE USUARIO.

Luis Eduardo López.

ESCUELA POLITÉCNICA NACIONAL.

CARRERA DE INGENIERÍA ELECTRÓNICA Y

TELECOMUNICACIONES.

2003

Page 227: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

CONTENIDO.

Instalación del programa 3

Requerimientos Mínimos 3

Método de Instalación 3

Menú Principal 4

Fundamento Teórico 4

Tutorial 5

Iniciar Simplificación 5

Menú 5

Nuevo 6

Abrir 6

Guardar Como 7

Simplificar 7

Simplificación paso a paso 8

Simplificación paso anterior 8

Ingreso de datos en la tabla 8

Ingreso de mintérminos 9

Tabla de Mintérminos 9

Cubos O 9

Cubos n 10

Implicantes Primos 10

Tabla de Simplificación 10

Implicantes Primarios 10

Page 228: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Instalación del programa.

Requerimientos Mínimos.

Para instalar este programa se necesita los siguientes requerimientos mínimos:

- Procesador PI.

- 24 MB de memoria RAM.

15MB de espacio disponible en el disco Duro.

- Unidad de CD-Rom.

Método de Instalación.

Una vez comprobado que cumple con los requerimientos mínimos siga los

siguientes pasos:

1. Inserte el CD en la unidad de CD-ROM.

2. Ejecutar Setup.

3. Siga las instrucciones.

Page 229: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Menú Principal.

Cuando se ingresa al programa aparece el menú principal en el cual se puede

escoger entre FUNDAMENTO TEÓRICO, TUTORIAL, INICIAR SIMPLIFICACIÓN, Y

SALIR como se indica en la figura MI.

Fig. MI: Menú principal

Fundamento Teórico.

Explica el proceso de simplificación de una función booleana utilizando el método

de Quine-McCluskey como se indica en la figura M2.

Fig. M2: Comando para iniciar el fundamento Teórico.

Page 230: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Tutorial.

Hace una breve explicación de cómo utilizar el programa de simplificación de

funciones como se indica en la figura M3.

Fig. M3: Comando para ingresar al Tutorial

Iniciar simplificación.

Simplifica una función ingresando los datos ya sea en forma de tabla o en forma de

mintérminos, para luego simplificarla paso a paso o en forma directa.

Fig. M3: Comando para ingresar a la simplificación

Menú.

Permite Ingresar una función nueva, Abrir una función guardada, Guardar una

función, Simplificar, y salir como se indica en la figura M6.

Page 231: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

M«.;Clusk(;y. Simplificación

Fig. M6: Menú de simplificación.

Nuevo.

Sirve para ingresar una función nueva ya sea como mintérminos o como una tabla

de salida.

Abrir.Abre una función almacenada en disco esta función tiene extensión *.boo, esta

función contiene las salidas de todas las combinaciones como se indica en la figura M7.

unctón2.boounctón3,boounctón3b.boouncion4.boouncton4b.boouncjon5,boouncionSb.boo

Fig. M7: Ventana para escoger un archivo.

Page 232: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Guardar Como.

Guarda los datos de las salidas de cada combinación de una función en un archivo

con extensión *.boo como se Índica en la figura M8.

funcjon1Qb.booÍunción2boofuncjon3.boQfunción3b.boofunc»n4.boofuncion4b.boofuncion5.boofuncion5fa.boo

Fig. M8: Ventana para ingresar el nombre del archivo a ser guardado

Simplificar.

Esta opción sirve para obtener directamente la respuesta simplificada de la función

sin necesidad de hacer pausa en cada paso.

Esta opción es equivalente al comando finalizar de la pantalla de simplificación

como se indica en la figura M9.

Fig. M9: Comando para finalizar la simplificación.

Page 233: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Simplificación paso a paso.

Esta opción avanza al siguiente paso de la simplificación.

Esta opción es similar al comando siguiente en la ventana de la simplificación

como se indica en la figura MÍO.

Fig. MÍO: Comando para simplificar el siguiente paso.

Simplificar paso anterior.

Esta opción avanza al paso anterior de la simplificación.

Esta opción es similar al comando anterior en la ventana de la simplificación como

se indica en la figura Mil.

Anterior

Fig. Mil: Comando para simplificar el paso anterior.

Ingreso de datos en la tabla.

Despliega un submenu con el número de entradas que puede aceptar la

simplificación y luego despliega una tabla con todas las combinaciones permitiendo

ingresar las salidas que corresponde a cada combinación.

Page 234: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

Cuando se ha terminado de ingresar todas las salidas existentes presionamos enter

para que la tabla se complete automáticamente con ceros.

Mientras se ingresa cada salida de la función el editor de los mintérminos se

actualiza automáticamente.

Ingreso de mintérminos.

Aquí nos permite ingresar directamente los mintérminos en el editor de

mintérminos.

Los mintérminos se ingresan separados por espacios y cuando ya se han ingresado

todos los mintérminos de la función se presiona enter para que se termine de actualizar

toda la tabla de salidas de la función.

Mientras se va escribiendo los mintérminos actualiza automáticamente la tabla de

salidas de la función y calcula automáticamente el número de variables de entrada según

los mintérminos ingresados.

Tabla de mintérminos.

Es la tabla de todas las combinaciones cuya salida son unos.

Cubos 0.

Es la tabla de cubos ceros es decir son todas las combinaciones que tienen coma

salida igual a 1 y además están ordenadas de acuerdo al numero de unos que tienen cada

una de las combinaciones.

Page 235: ESCUELA POLITÉCNICA NACIONAL · 2019-04-08 · escuela politÉcnica nacional escuela de ingenierÍa mÉtodo didÁctic doe simplificaciÓn de funciones boolenas proyecto previo a

10

Cubos n,

Son las tablas de combinaciones que se van formando en el proceso de

simplificación estas combinaciones tienen ceros unos y condiciones no importa que

corresponden a las variaciones entre una combinación y otra.

Implicantes Primos.

Es la tabla que contiene todos y cada uno de los cubos n que no se utilizaron para

formar cubos de mayor orden.

Tabla de Simplificación.

Es la tabla conformada por los mintérminos y los implicantes primos para poder

simplificar.

Implicantes Primarios.

Los implicantes primarios son los términos que necesariamente deben estar dentro

de la solución.

Implicantes Secundarios.

Los implicantes secundarios son términos adicionales con menor costo, que

también deben estar dentro de la solución.

Solución.

Es la expresión mas simplificada posible de la función booleana.