Está en la página 1de 360

SOFTWARE DIDÁCTICO APRENDA ÁLGEBRA BOOLEANA

SARA TERESA CARRASCAL ALMENTERO

DIANYS PATRICIA MORENO CASTAÑEZ

Trabajo de grado presentado


para optar el título de
Ingeniero de Sistemas

Director
MOISÉS QUINTANA ALVAREZ

CORPORAC I O N U N I V E R S I T A R I A T E C N O L O G I C A D E B O L I V A R

FACULTAD DE INGENIERIA DE SISTEMAS

CARTAGENA D.T Y C.

2001
2

SOFTWARE DIDÁCTICO APRENDA ÁLGEBRA BOOLEANA

SARA TERESA CARRASCAL ALMENTERO

DIANYS PATRICIA MORENO CASTAÑEZ

T r a b a j o d e G r a d o p r e s e n ta d o
para optar el título de
Ingeniero de Sistemas

Director

MOISÉS QUINTANA ALVAREZ

CORPORACION UNIVERSITARIA TECNOLÓGICA DE BOLIVAR

FACULTAD DE INGENIERÍA DE SISTEMAS

CARTAGENA D.T Y C.

2001
3

Cartagena de Indias, Enero 15 de 2000

Señores:
CORPORACION UNIVERSITARIA TECNOLOGICA DE BOLIVAR
Comité de Evaluación de Proyectos
Facultad de Ingeniería de Sistemas.
La Ciudad.

Respetados señores:

Por medio de la presente nos permitimos presentar para su estudio

y c a l i f i c a c i ó n e l p r o y e c t o d e grado “SOFTWARE DIDÁCTICO

APRENDA ÁLGEBRA BOOLEANA“, con el propósito de obtener el

título de Ingeniero de Sistemas.

Cordialmente,

SARA CARRASCAL DIANYS MORENO

C a r t a g e n a d e I n d i a s , E n e r o 1 5 d e 2 00 0
4

Señores:
CORPORACION UNIVERSITARIA TECNOLOGICA DE BOLIVAR
Comité de Evaluación de Proyectos
Facultad de Ingeniería de Sistemas.
La Ciudad.

Respetados señores:

Por medio de la presente nos permitimos presentar para su estudio

y calificación el proyecto de grado “SOFTWARE DIDÁCTICO

APRENDA ÁLGEBRA BOOLEANA“, con el propósito de obtener el

título de Ingeniero de Sistemas.

Cordialmente,

MOISÉS QUINTANA

Nota de aceptación
5

Presidente del Jurado

Jurado

Jurado

Cartagena de Indias D.T. Y C., Enero 15 de 2001

“La corporación se reserva el derecho de propiedad intelectual

d e t o d o s l o s t r a b a j o s d e g r a d o a p r o b a d o s , los cuales no

pueden ser explotados comercialmente sin su autorización.


6

Esta observación debe quedar impresa en parte visible del

proyecto”.
7

A Dios y a la Virgen. A mis

padres Antonio y Carmen. A

mis hermanos Yuri, Toño,

Ga b r i e l a , C a r m e n y M a y o . A

mis sobrinos Carlos David y

Antonio Juan.

Sara
8

A Jehová Dios. A mis

queridos padres Haroldo y

Abadys gestores de este

l o g r o . A m i s h e r m a n o s D airo

y Abadys. A mi sobrino

Steven David. A mis hijos

Lewis y Dylan. A mi amado

esposo Lewis.

Dianys

AGRADECIMIENTOS

Los autores expresan sus a gradecimientos a:

Dios por darnos la fuerza y la sabiduría para seguir adelante.


9

Nuestros hermanos y demás familiares por su estímulo para seguir

adelante y lograr nuestro objetivo.

Moisés Quintana y a su esposa Claudia Prieto por su asesoría y

apoyo incondicional.

Gonzalo Garzón y Juan Carlos Mantilla por su paciencia y

colaboración.

Nuestros compañeros Yasmina Gómez, Leandro Contreras, Maria

Cristina Mancuso, Olivia Narvaez, Clara Colón, quienes aportaron

un granito de arena en la elaboración de este proyecto.

Johan Maldonado, Hermelinda Hoyos, Julio Carrascal, Feligno

Mejia, Euclides Castilla, Ilsa de Castilla, Yaninis Fernández por su

apoyo incondicional.
10

CONTENIDO

Página

INTRODUCCIÓN

1. ANÁLISIS BIBLIOGRAFICO Y FUNDAMENTACION TEORICA 7

1.1. ÁLGEBRA BOOLEANA 7

1.1.1. Operaciones Básicas del Álgebra Booleana 7

1.1.2. Forma de Suma de Productos 12

1.1.3. Simplificación de Circuitos Lógicos 13

1.1.3.1. Simplificación Algebraica 13


11

1.1.3.2. Método del Mapa de Karnaugh 15

1.1.3.3. Método de Quine Mc Cluskey 23

1.2. INFORMATICA Y EDUCACIÓN 28

1.3. MODALIDADES DEL APRENDIZAJE ASISTIDO POR


COMPUTADOR 29

1.4. TEORIAS DE L APRENDIZAJE 32

1.4.1. El Condicionamiento Clásico de Paulou (1849 – 1933) 34

1.4.2. El Conexionismo de Thordike (1874 – 1949) 35

1.4.3. Condicionamiento Contiguo de Edwin guthrie (1886 – 1959) 38

1.4.4. Condicionamiento Operante de B. F. Skinner (1904 – 1974) 38

1.4.5. Asimilación de Piaget 42

1.4.6. Teoría de Vigosky. Aprendizaje Significativo 44

1.5. DIDÁCTICA 44

1.5.1. Concepto de Didáctica 44

1.5.2. Elementos Didácticos 45

1.6. MOTIVACIÓN DEL APRENDIZAJE 47

1.6.1. Tipos de Motivación 48

1.6.2. Motivación de Desenvolvimiento o Incentivacion 49

1.6.3. Fuentes y Técnicas de Motivación 50

1.7. PROGRAMACIÓN ORIENTADA A OBJETOS (POO) 55

1.8. LAS VARIABLES 58

1.8.1. Clase y Operación de las Variables 58

1.8.1.1. Variables Educativas 58

1.8.1.2. Variables de Computación 59


12

1.8.1.3. Variables de Comunicación 59

1.8.1.4. Variables de Entorno 59

2. DISEÑO DEL MEC (Material Educativo Computarizado) 61

2.1. ENTORNO PARA EL DISEÑO DEL MEC 61

2.1.1. Población Objetivo 61

2.2. DISEÑO EDUCATIVO 61

2.2.1. Porque el MEC es tipo Tutor – Entrenador 61

2.2.2. Presentación Mr. Boole 62

2.2.3. Diseño de las Lecciones 63

2.2.4. Evaluación y Reforzamiento 64

2.2.5. Ejercicios Resueltos 66

2.2.6. Método de enseñanza 66

2.2.6.1. Método Deductivo 67

2.2.6.2. Método de Sistematización Semirigida 67

2.2.6.3. Método activo 67

2.2.6.4. Método Sintético 67

2.2.7. Manejo del Color 67

2.3. DISEÑO EDUCATIVO DEL MODULO HISTORIA 69

2.3.1. Objetivo 69

2.3.2. Motivación 70

2.3.3. Escenario 70

2.4. DISEÑO EDUCATIVO DE LA LECCIÓN TEORIA BASICA 70

2.4.1. Objetivo 70
13

2.4.2. Motivación 71

2.4.3. Escenario 71

2.4.4. Evaluación 72

2.5. DISEÑO EDUCATIVO DEL MODULO LECCIÓN McCLUSKEY 73

2.5.1. Objetivo 73

2.5.2. Motivación 73

2.5.3. Escenario 74

2.5.4. Evaluación 74

2.6. DISEÑO EDUCATIVO DE LA LECCIÓN SIMPLIFICACIÓN


ALGEBRAICA 75

2.6.1. Objetivo 75

2.6.2. Escenario 75

2.6.3. Motivación 76

2.6.4. Evaluación 76

2.7. DISEÑO EDUCATIVO LECCIÓN APLICACIONES 77

2.7.1. Objetivos 77

2.7.2. Escenario 78

2.7.3. Motivación 78

2.7.4. Evaluación 78

3. DISEÑO COMPUTACIONAL 80

3.1. DISEÑO DE LA BASE DE DATOS 80

3.2. DICCIONARIO DE DATOS 83

3.3. DIAGRAMAS DE FLUJOS DE DATOS 84

4. IMPLEMENTACION DEL SOFTWARE 96


14

4.1. LENGUAJE UTILIZADO 96

4.2. JERAQUIA DE CLASES 97

4.3. CLASES 97

4.3.1. La Clase Tcustom Coastrol 97

4.3.2. La Clase Toperador And 98

4.3.2.1. Propiedades de la Clase 98

4.3.2.2. Métodos de la Clase 99

4.3.2.3. Eventos utilizados en la Clase 100

4.3.3. La Clase Toperador Nand 100

4.3.3.1. Propiedades de la Clase 100

4.3.3.2. Métodos de Clase 101

43.3.3. Eventos Utilizados en la Clase 102

4.3.4. La Clase Toperador Or 102

4.3.4.1. Propiedades de la Clase 103

4.3.4.2 Métodos de la Clase 104

4.3.5. La Clase Toperador Nor 105

4.3.5.1. Propiedades de la Clase 105

4.3.5.2. Métodos de la Clase 106

4.3.5.3. Eventos Utilizados en la Clase 107

4.3.6. La Clase Toperador Not 107

4.3.6.1. Propiedades de la Clase 107

4.3.6.2. Métodos de la Clase 108

4.3.6.3. Eventos Utilizados en la Clase 109

4.3.7. La Clase Tentrada A, Tentrada B, Tentrada C, Tentrada D, Tentrada E


15

Tentrada F 109

4.3.7.1. Propiedades de la Clase 109

4.3.7.2. Métodos de la Clase 109

4.3.7.3. Eventos Utilizados en la Clase 110

4.3.8. La Clase Tlinea 110

4.3.8.1. Métodos de la Clase 110

4.3.8.2. Eventos Utilizados en Clase 111

5. RECOMENDACIONES 112

6. CONCLUSIONES 113

BIBLIOGRAFÍA 115

ANEXOS 125
16

LISTA DE CUADROS

Pág.

Cuadro 1 T a b l a d e A g r u p a m i e nt o B a s e 24

Cuadro 2 Tabla de Agrupamiento de Primer Orden 25

Cuadro 3 Tabla Reductora Final 26

Cuadro 4 Sentido del Color 69

Cuadro 5 Tabla Estudiantes 83

Cuadro 6 Tabla Ejercicios Resueltos 84

Cuadro 7 Tabla Ejercicios Propuestos 84

Cuadro 8 Tabla Lección – Histórica 85

Cuadro 9 T a b l a L e c c i ó n – Teoría 3 86

Cuadro 10 Tabla Lección – McCluskey 87

Cuadro 11 Tabla Lección Aplicación 88

Cuadro 12 Tabla de la Lección Simplificación 89


17

LISTA DE TABLAS

Pág.

Tabla 1 Tabla de Verdad que Define la Operación OR 8

Tabla 2 Tabla de Verdad que Define la Operación AND 9

Tabla 3 Tabla de Verdad Para la Operación NOT 10

Tabla 4 Tabla de Verdad Que Define la Operación NOR 11

Tabla 5 T a b l a d e V e r d a d Q u e D e f i n e l a O p e r a c i ó n N A ND 12

Tabla 6 Tabla de Verdad Para Dos Variables 17

Tabla 7 Tabla de Verdad Para Tres variables 18

Tabla 8 Tabla de Verdad Para Cuatro Variables 20

Tabla 9 Puntuaciones por complejidad 65

Tabla 10 Complejidad Ejercicios teoría Básica 72

Tabla 11 C o m p l e j i d a d E j e r c i c i o s S i m p l i f i c a c i ó n Q u i n e
McCluskey 74

Tabla 12 Complejidad Ejercicios Simplificación algebraica 76

Tabla 13 Complejidad Ejercicios Simplificación Algebraica 79


18

LISTA FIGURAS

Pág.

Figura 1 Mapa de K arnaugh Para Dos Variables 18

Figura 2 Mapa de Karnaugh Para Tres Variables 19

Figura 3 Mapa de Karnaugh Para Cuatro Variables 21

Figura 4 Características del Condicionamiento Operante 40

F igura 5 Mr. Boole 62


19

RESUMEN

El trabajo de Grado Software Didáctico Aprenda Álgebra Boleana,

está diseñado para utilizarse como soporte educativo en el proceso

de enseñanza aprendizaje de un tema base de la ingeniería, el

Álgebra de Boole.

E n e s t e s o f t w a r e s e t o m a n e n c u e n t a l o s m odelos apropiados del

alumno y del conocimiento para presentar los conceptos

adecuadamente. El software le permite al usuario ir construyendo

los conceptos del Álgebra de Boole y sus conocimientos, a la vez

que los ejercita mediante las evaluaciones y de a cuerdo a los

resultados obtenidos en estas evaluaciones se le aplican

reforzamientos. Además es una herramienta que le puede ayudar a

solucionar problemas propuestos por el alumno.


20

INTRODUCCION

La experiencia indica que cuando los e s t u d i a n t es pasan del

bachillerato a primer semestre en la universidad, llegan con

deficiencias en los hábitos de estudio que no permiten la

adquisición adecuada del aprendizaje, se presentan problemas a la

h o r a d e r e s o l v e r l o s e j e r c i c i o s e n c a s a y d e d e f i n i r l o s conceptos

adquiridos. Surgiendo así la necesidad de contar con una

herramienta que apoye el auto estudio de temas básicos, uno de

éstos es el Álgebra Booleana, seleccionado para el desarrollo de

este proyecto, por sugerencia de profesores y alumnos

consultados.

Está herramienta es capaz de asistir al alumno, apoyando las

actividades de supervisión del profesor, tanto en la escuela como

en forma remota o en casa. Además cuando en el transcurso de la

c a r r e r a s e v u e l v a n a n e c e s i t a r l o s c o n o c i m i e n t o s d e l Á l g ebra

Booleana en asignaturas posteriores (como Técnicas Digitales,

Arquitectura del Computador y otras) no es necesario que el


21

profesor dedique mucho tiempo para recordarlo a sus alumnos,

pues se puede utilizar esta herramienta para el auto estudio.

Una de las actividades más comunes de un profesor consiste en la

asesoría y supervisión del profesor al alumno, directamente sobre

el tema que se está considerando. Esta actividad puede

considerarse como benéfica, pues permite que el instructor se

a d a p t e a l a s necesidades de cada alumno, detectando los puntos

que no se han entendido así como los problemas a los que el

alumno personalmente se enfrenta en el aprendizaje del Álgebra

Booleana. Además la experiencia y observación que el instructor

e n c u e n t r a e n e s t e proceso de asesoría, le permiten resaltar los

puntos importantes y le proporcionan una retroalimentación con la

que puede controlar mejor el desarrollo de su clase, adaptándola a

las circunstancias.

E s t a a c t i v i d a d p u e d e v e r s e l i m i t a d a p o r t i e m p o , e s p a c i o y recursos.

Entre los problemas y limitaciones que se observan al analizar la

actividad de asesoría descrita anteriormente, están las siguientes:

• La atención del profesor está dividida y no siempre basta el

t i e m p o q u e d e d i c a a u n a l u m n o e n p a r t i c u l a r a r e solver todas

sus dudas; si bien el alumno aprecia y se beneficia por la

asesoría, no a todos les basta la información recibida de ella


22

y quieren buscar otros medios que le ayuden a satisfacer

sus dudas en el momento que no tengan disponible a su

p r o f e s o r . Inclusive si un alumno resuelve todas sus dudas,

con más tiempo el profesor tendría la posibilidad de ampliar

el conocimiento que le transmite. Este problema se agudiza

cuando el grupo es grande.

• Cuando el alumno estudia por su cuenta, o no tiene al

p r o fe s o r d i s p o n i b l e p a r a d i c h a a s e s o r í a e n u n t e m a c o m o e l

Álgebra Booleana donde surgen muchas dudas a la hora de

resolver los ejercicios en casa.

• Cuando el alumno realiza sus tareas normalmente no es

durante la hora de clase. Por ello, no siempre puede

resolver sus dudas en el momento que surgen, sino que

suele existir un lapso de tiempo desperdiciado entre el

momento que surge la duda y cuando el profesor está

disponible para resolverla. Por otro lado, si el alumno no

registra la duda, puede más tarde olvidarla y dejarla

pendiente, con lo que no se consiguen completamente los

objetivos del proceso de enseñanza - aprendizaje.

Entre las consecuencias del problema que hemos planteado se

pueden presentar las siguientes:


23

• L a s f a l l a s e n e l a p r e n d i z a j e d e l Á l g e b ra Booleana, inciden en

el aprendizaje de temas posteriores ligados con el primero,

tema base en la ingeniería.

• El profesor emplea gran parte de su tiempo resolviendo

repetitivamente las mismas dudas a distintos alumnos,

d u r a n t e d i s t i n t o s t i e m p o s , a l g u n a s de ellas ya mencionadas

en clase; tiempo que podría ser aprovechado para ampliar los

conocimientos que se cubren, agregar mayor número de

ejemplos, y otras diversas actividades académicas.

El objeto del presente trabajo es: Im p l e m e n t a r un software

d i d á c ti c o que apoye la enseñanza de un tema base en la

ingeniería, como es el Álgebra de Boole. Brindándole al estudiante

una herramienta que le permita reforzar los conceptos adquiridos

en clase y además lo ayude a solucionar problemas de circuitos

lógicos que tienen como base este tema.

En esta investigación se organiza adecuadamente el proceso de

enseñanza aprendizaje y se hace uso de las vías y métodos de la

enseñanza asistida por computador para lograr cumplir con los

siguientes criterios:
24

• Exponer en el s oftware didáctico de una forma clara y amena

que el estudiante pueda asimilar los conceptos básicos del

Álgebra Booleana y su aplicación en circuitos lógicos como son:

variables booleanas, tablas de verdad, operaciones lógicas,

teoremas del Alebra de Boole , compuertas lógicas, métodos de

simplificación.

• Ayudar al usuario a diseñar un circuito lógico a partir de una

expresión booleana.

• Guiar al usuario a determinar la salida de un circuito lógico.

• A y u d a r l e a s i m p l i f i c a r o l l e v a r a u n a f o r m a m á s s i m p l e p e ro

equivalente una expresión booleana, utilizando métodos de

simplificación.

• Brindar una ayuda de ejercicios modelos resueltos.

• Evaluar el progreso del alumno al utilizar el software

proponiéndole ejercicios para que los resuelva

E s t e t r a b a j o d e g r a d o le f a c i l i t a a l u s u a r i o ( a l u m n o ) e l a p r e n d i z a j e

del Álgebra Booleana, contando con modelos apropiados del


25

alumno y del conocimiento, para lograr utilizarla como herramienta

para el análisis y diseño de sistemas digitales. Se enfoca al

p r o c e s o d e e n t r e n a d o r y tutor, que apoya al alumno después de

haber pasado la etapa de Receptor, le permite al usuario observar

su avance por medio de evaluaciones interactivas, además

asesorarlo en la solución de problemas del Álgebra Booleana. Este

software puede ser utilizado como apoyo a los docentes que dicten

este tema o en futuras asignaturas para recordar fundamentos del

tema.

A m e d i d a q u e e l u s u a r i o i n t e r a c t ú a c o n e l MEC(Material Educativo

Computarizado) en las diferentes lecciones que visite se va

almacena toda la información referente a él en la Base de Datos.

El tipo de estudio que se lleva a cabo en la realización del

proyecto es una investigación descriptiva aplicada, pues se dirige a

la aplicación inmediata.

L o s m é t o d o s d e i n v e s t i g a c i ó n e m p l e a d o s s o n : e n t r e v i s tas, análisis

bibliográfico y de otras fuentes, método inductivo -deductivo.


1. ANÁLISIS BIBLIOGRAFICO Y FUNDAMENTACION
TEORICA

1.1 ALGEBRA BOOLEANA.

El Álgebra Booleana es una herramienta para el análisis y diseño

d e s i s t e m a s d i g i t a l e s ( l ó g i c o s ) . L a s c ompuertas lógicas, son los

circuitos lógicos más fundamentales y su operación puede

describirse mediante el uso del Álgebra Booleana, estas

compuertas lógicas pueden combinarse para producir circuitos

l ó g i c o s y d e s c r i b i r s e , a n a l i z a r s e , m e d i a n t e e l Á l g e b r a B ooleana. En

el Álgebra Booleana no hay fracciones, decimales, números

negativos, raíces cuadradas, raíces cúbicas etc.

1 . 1 . 1 O p e r a c i o n e s B á s i c a s d e l Á l g e b r a B o o l e a n a . Solo existen

t r e s o p e r a c i o n e s b á s i c a s : O R , A N D Y N O T , llamadas operaciones

lógicas.

O P ERACIÓN OR: La operación OR se representa con el signo +,

cuyas reglas se dan en la tabla de verdad, Tabla 1.

De la Tabla 1 se concluye:
27

q La operación OR produce un resultado de uno, cuando

cualquiera de las variables de entrada es uno.

q La operación OR genera un resultado de cero, solo cuando

todas las variables de entrada son cero.

q Las dos conclusiones anteriores se cumplen también para

más de dos variables de entrada.

Tabla 1. Tabla de verdad que define la operación OR.

A B X=A+B

0 0 0

0 1 1

1 0 1

1 1 1

OPERACIÓN AND: La operación AND se representa por el

s í m b o l o ( l ) s e p u e d e o m i t i r e s d e c i r , X = A lB e s l o m i s m o q u e X = A B ,

las reglas de esta operación se encuentran en la Tabla 2.


28

Tabla 2. Tabla de verdad que define la operación AND.

A B X =AB

0 0 0

0 1 0

1 0 0

1 1 1

De la Tabla 2 se concluye:

q La operación AND se ejecuta igualmente que la multiplicación

ordinaria de 1 y 0.

q Una salida igual a 1 ocurre solo en el caso en que todas las

entradas sean 1.

q L a s a l i d a es c e r o e n c u a l q u i e r c a s o e n q u e u n a o m á s

entradas sean cero.

q Estas reglas se cumplen para dos o más entradas.

O P E R A C I Ó N N O T : Esta operación se efectúa con una sola variable

de entrada, es decir si la variable A se somete a esta operación


29

NOT, el resulta d o X p u e d e e x p r e s a r s e como: X =-A . S e u t i l i z ó e l

s í m b o l o (- ) d e l a n t e d e l a v a r i a b l e d e s e a d a p a r a r e p r e s e n t a r u n a

inversión. La tabla de verdad para la operación NOT sobre la

variable A se muestra en la Tabla 3.

T a b l a 3 . T a b l a d e V e r d a d p a ra la operación NOT.

A X =-A

0 1

1 0

OPERACIÓN NOR: La compuerta NOR de dos entradas se

representa de la siguiente forma: X =- (A+B), las reglas de esta

operación se encuentran en la Tabla 4.

De la Tabla 4 se concluye:

q L a o p e r a c i ó n N O R e s e l resultado de la operación OR seguida

de un INVERSOR.

q Una salida igual a 1 ocurre solo en el caso en que todas las

entradas sean 0.
30

q La salida es uno en cualquier caso en que una o más entradas

sean uno.

q Estas reglas se cumplen para dos o más entradas.

Ta b l a 4 . T a b l a d e v e r d a d q u e d e f i n e l a o p e r a c i ó n N O R .

A B X =- ( A + B )

0 0 1

0 1 0

1 0 0

1 1 0

OPERACIÓN NAND: La compuerta NAND de dos entradas se

representa de la siguiente forma: X =-(AB), las reglas de esta

o p e r a c i ó n s e e nc u e n t r a n e n l a t a b l a d e l a T a b l a 5 .

De la tabla 5 se concluye:

q La operación NAND es el resultado de la operación AND

seguida de un INVERSOR.
31

q Una salida igual a 0 ocurre solo en el caso en que todas las

entradas sean 1.

q La salida es uno en cualquier caso en que una o más entradas

sean cero.

q Estas reglas se cumplen para dos o más entradas.

Tabla 5. Tabla de verdad que define la operación NAND.

A B X =- ( A B )

0 0 1

0 1 1

1 0 1

1 1 0

1 . 1 . 2 F o r m a d e S u m a d e P r o d u c t o s . L o s m étodos de diseño y

simplificación de circuitos lógicos que utilizaremos necesitan que la

expresión lógica esté en forma de suma de productos.

Ejemplo: ABC + ABC


32

Cada una de estas expresiones de suma de productos consta de

d o s o m á s t é r m i n o s A ND ( p r o d u c t o s ) q u e s e o p e r a n c o n O R

(sumas).

1.1.3 Simplificación de Circuitos Lógicos. Después que se

obtiene la expresión del circuito lógico, este se puede reducir a

una forma más simple que contenga menos variables en uno o más

términos. La nueva e x p r esión puede utilizarse entonces para

implantar un circuito que sea equivalente al original pero que

contenga menos compuertas y conexiones.

Los métodos de simplificación de productos son los siguientes:

1.1.3.1 Simplificación Algebraica. Este método u t iliza los

teoremas del álgebra booleana, que son los siguientes:

1 X• 0 = 0 .

2 X• 1 = X .

3 X • X =X.

4 X - X = 0.
33

5 X + 0 = X.

6 X + 1 = 1.

7 X + X = X.

8 X + -X = 1

9 X + Y = Y + X.

10 X • Y = Y • X.

1 1 X + (Y + Z) = (X + Y) + Z = X + Y + Z.

1 2 X(YZ) = (XY)Z = X Y Z .

1 3.a X(Y+Z) = XY + XZ.

13. b (W + X)(Y + Z) = WY + XY + WZ + XZ.

1 4. X + X Y = X .

1 5. X + - XY = X + Y.
34

LEYES DE DEMORGAN:

1 6. - (X + Y) = - X • - Y.

1 7 . - (X • Y ) = - X + - Y.

El método se basa en:

q L a e x p r e s i ó n o r i g i n a l s e p o n e e n f o r m a d e s uma de productos

mediante la aplicación repetida de los teoremas de DeMorgan y

de la multiplicación de términos.

q Una vez se encuentra en esta forma, los términos del producto

se verifican para ver si hay factores comunes y se realiza la

factorización si e m p r e que sea posible. Con suerte, la

factorización da como resultado la eliminación de uno o más

términos.

1 . 1 . 3 . 2 M é t o d o d e l M a p a d e K a r n a u g h . El método de Karnaugh es

un método gráfico que se utiliza para simplificar una ecuación

l ó g i c a o p a r a c o n v e r tir la tabla de verdad de un circuito lógico

correspondiente en un proceso simple y ordenado. Aunque un mapa

de Karnaugh se puede utilizar para resolver problemas con

cualquier número de variables de entrada, su utilidad práctica se


35

limita a seis variables. Los problemas con cinco y seis entradas son

demasiado complicados.

FORMATO DEL MAPA DE KARNAUGH: El mapa de Karnaugh, al

igual que una tabla de verdad, es un medio para demostrar la

relación entre las entradas lógicas y la salida que se busca.

El map a d e K a r n a u g h s e f o r m a d e l a s i g u i e n t e m a n e r a :

1 . La tabla de verdad da el valor de la salida X para cada

combinación de valores de entrada. El mapa de Karnaugh

proporciona la misma información en un formato diferente.

2 . L o s c u a d r a d o s d e l m a p a d e K a r n a u g h se m a r c a n d e f o r m a q u e

los cuadrados horizontalmente adyacentes, solo difieran en una

variable. Por ejemplo, el cuadrado superior de la izquierda del

mapa de cuatro variables ABCD, en tanto que el cuadrado que se

encuentra a la derecha es ABCD (sólo la vari able D es diferente).

De la misma manera los cuadrados verticalmente adyacentes

difieren sólo en una variable. Por ejemplo, el cuadrado superior

izquierdo es ABCD, en tanto que el que se encuentra debajo de

é l e s A B C D ( s ó l o l a v a r i a b l e B e s d i f e r e n t e ) . C ada cuadrado del

renglón superior se considera adyacente al correspondiente

cuadrado del renglón inferior. Así mismo, los cuadrados del


36

extremo izquierdo son adyacentes a los del extremo derecho. A

f i n d e q u e l o s c u a d r a d o s q u e s o n a d y a c e n t e s t a n t o v e r t i c a l como

horizontalmente difieran en una sola variable, el marcador de

arriba hacia abajo deba hacerse en el orden indicado, AB, AB,

AB, AB. Esto también es válido para el marcado de izquierda a

derecha.

3 . U n a v e z q u e e l m a p a d e K a r n a u g h s e h a l l e n a d o c o n c e ros y

unos, la expresión de suma de productos para la salida X se

puede obtener operando con OR aquellos que contienen un 1.

Ej. : Los siguientes son los mapas de Karnaugh para dos, tres y

cuatro variables y su tabla de verdad correspondiente:

a. Mapa de Karnaugh y tabla de verdad para dos variables:

Tabla 6. Tabla de verdad para dos variables

A B X

0 0 1

0 1 0

1 0 0

1 1 1

La Tabla 6 corresponde a la tabla de verdad de la expresión:


37

X= -A -B + AB

EL mapa de Karnaugh se o bserva en la Figura 1.

-B B

-A 1 0

A 0 1

Figura 1. Mapa de Karnaugh para dos variables.

b. Mapa de Karnaugh y tabla de verdad para tres variables:

Tabla 7. Tabla de verdad para tres variables.

A B C X

0 0 0 1

0 0 1 1

0 1 0 1

0 1 1 0

1 0 0 0

1 0 1 0

1 1 0 1

1 1 1 0
38

La Tabla 7 representa la tabla de verdad de la expresión:

X = -A - B -C + -A -B C + - AB -C + A B -C

El mapa de Karnaugh se observa en la Figura 2.

-C C

- A -B 1 1

- AB 1 0

AB 1 0

A -B 0 0

Figura 2. Mapa de Karna ugh para tres variables.

c. Mapa de Karnaugh y tabla de verdad para cuatro variables. La

Tabla 7 corresponde a la tabla de verdad de la expresión:

X = -A - B -C D + -AB - C D + A B -CD+ ABCD


39

Tabla 8. Tabla de verdad para cuatro variables.

A B C D X

0 0 0 0 0

0 0 0 1 1

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 0 1 1

0 1 1 0 0

0 1 1 1 0

1 0 0 0 0

1 0 0 1 0

1 0 1 0 0

1 0 1 1 0

1 1 0 0 0

1 1 0 1 1

1 1 1 0 0

1 1 1 1 1

El mapa de Karnaugh para cuatro variables se observa en la

Figura 3.
40

- C -D - CD CD C -D

- A -B 0 1 0 0

- AB 0 1 0 0

AB 0 1 1 0

A -B 0 0 0 0

Figura 3. Mapa de Karnaugh para cuatro variables.

El método de Karnaugh requiere de un proceso de simplificación

después que se obtiene el mapa de Karnaugh. Este proceso

consiste en:

Existe una r e g l a d e a g r u p a m i e n t o d e c u a l q u i e r t a m a ñ o , l a c u a l d i c e :

cuando una variable aparece en forma complementada y no

complementada dentro de un agrupamiento esa variable es

eliminada de la expresión. Las variables que son iguales en todos

los cuadrados del agrupamiento deben aparecer en la expresión

final.

Un agrupamiento mayor de 1 elimina más variables. Es decir, un

agrupamiento de dos elimina una variable, uno de cuatro elimina

dos y uno de ocho elimina tres. Este principio se usa para obtener
41

una expresi ó n l ó g i c a s i m p l i f i c a d a a p a r t i r d e u n m a p a d e K a r n a u g h

que contenga cualquier combinación de 1 y 0.

Las etapas para simplificar una expresión booleana son las

siguientes:

1. Construir un mapa de Karnaugh y colocar unos en aquellos

cuadrados correspondientes a los unos de la tabla de verdad.

Colocar ceros en los otros cuadrados.

2 . Examinar el mapa para ver si hay unos adyacentes y repetir

aquellos unos que no sean adyacentes a cualesquiera otros unos.

A éstos se les llama unos aislados.

3 . A c o n t i n u a c i ó n , b us c a r a q u e l l o s u n o s q u e s e a n a d y a c e n t e s s ó l o

a otro uno. Repetir cualquier par que contenga a dicho 1.

4. Agrupar cualquier octeto aún si algunos de los unos ya se han

repetido.

5. Agrupar cualquier cuádruplo que contenga uno o más unos que

n o s e h a y a n r e p e ti d o .
42

6 . Agrupar los pares que sean necesarios para incluir los unos que

no se hayan repetido, asegurándose de utilizar el mínimo número

de agrupamientos.

7. Formar la suma OR de todos los términos generados por cada

agrupamiento.

1 . 1 . 3 . 3 M é t o d o D e Q u i n e M c C luskey: E l m é t o d o d e M c C l u s k e y e s

un método tabular que se utiliza para simplificar una ecuación

lógica o para convertir la tabla de verdad de un circuito lógico

correspondiente en un proceso simple y ordenado.

E l s i g u i e n t e E j e r c i c i o i n d i c a l o s p a s o s a s e guir para reducir una

expresión booleana utilizando este método.

F = - a -b - c -d + - a -b c -d + - a b c -d + - abcd + a -b - c -d + a -b - cd + ab - cd

+ abcd

Se creas una tabla de Agrupamiento Base en donde las columnas

son:

1 . C o l u m n a 1 . C a d a u n o d e l o s t é r m i n o s d e l a función.
43

2 . Columna 2. El número binario correspondiente al termino, si

es negada la variable se coloca 0 si no esta negada se pone

1.

3 . Columna 3. El número decimal correspondiente al binario

obtenido.

4 . C o l u m n a 4 . E l í n d i c e q u e c o r r e s p o n d e a l n ú m e r o d e u n o s que

tiene el número binario obtenido.

La tabla de Agrupamiento base para el ejercicio propuesto es la

siguiente (Cuadro 1).

Cuadro 1. Tabla de Agrupamiento Base.

- a - b -c - d 0000 0 Índice 0

- a - bc - d 0010 2 Índice 1

a - b -c - d 1000 8

- a b c- d 0110 6 Índice 2

a - b -c d 1001 9

- abcd 0111 7 Índice 3

a b - cd 1101 13

abcd 1111 15 Índice 4


44

Ahora se procede a comparar cada uno de los términos de la

columna uno de igual índice con los del siguiente índice, donde se

e n c u e n t r e u n a s o l a d i f e r e n c i a s e t o m a e s e t e r m i n o y s e forma la

Tabla de agrupamiento de Primer Orden( Cuadro 2), donde la

primera columna es el resultado de la comparación colocándose –

en el lugar donde estaba la diferencia, la segunda columna son los

n ú m e r o s d e c i m a l e s c o r r e s p o n d i e n t e s a l o s t é r m i n o s e n l o s que se

halló una diferencia en la tabla del paso anterior y la columna tres

al índice, números de unos que tiene el término de la columna 1. .

Cuadro 2. Tabla de Agrupamiento de Primer Orden.

0 0 -0 (0,2) Índice 0

- 000 (0,8)

0 - 10 (2,6) Índice 1

1 0 0- (8,9)

0 1 1- (6,7) Índice 2

1 - 01 (9,13)

- 111 (7,15) Índice 3

1 1 -1 (13,15)
45

Se analiza la tabla de Agrupamiento de primer orden de igual forma

que se hizo con la de Agrupamiento Base y se saca una Tabla de

A g r u p a m i e n t o d e S e g u n d o O r d e n a s í s u c e s i v a m e n t e h a s t a que no

se puedan hacer más agrupamientos en el ejercicio no es posible

realizar más agrupamientos se pasa entonces a obtener la tabla

reductora final(Cuadro 3).

Cuadro 3. Tabla Reductora Final.

a b c d 0 2 6 7 8 9 13 15

0 0 -0 X X

- 000 X X

0 - 10 X X

1 0 0- X X

0 1 1- X X

1 - 01 X X

- 111 X X

1 1 -1 X X

Se trata seguidamente de obtener una ecuación con los valores

literales equivalentes a las combinaciones binarias, de forma que

con el menor número posible de ellas se representen todos los


46

t é r m i n o s d e l a t a b l a d e a g r u p a m i e n t o b a s e . Existen dos soluciones

posibles.

F = - a -b - d + a - b -c + - a b c + a b d ó F = -b - c -d –a c -d + a -c d + b c d

En este Trabajo de Grado uno de los objetivos propuestos es

conseguir implementar un método de simplificación que permita

llevar una exp resión booleana a una forma equivalente sencilla.

Inicialmente se piensa en el método de simplificación con el mapa

de Karnaugh, un método bastante utilizado pero con ciertas

limitaciones, puesto que su manejo para ecuaciones con más de

c u a t r o v a r i a b l e s r e sulta muy complejo; sus pasos implican al

usuario en muchas decisiones que de no ser acertadas no le

permiten conseguir su objetivo: una ecuación simplificada

equivalente. Al ir avanzando en nuestra investigación encontramos

otros métodos de simplificación como el de Quine McCluskey, un

método de simplificación que le permite al usuario el manejo de

más variables sin demasiadas complicaciones, además el usuario

goza de menos probabilidades de equivocarse en uno de sus

p a s o s , q u e d e p e n d e n m e n o s d e l a s d e c i s i ones de éste y más del

método, permitiendo de igual forma obtener su objetivo: una

ecuación simplificada. Se realiza una consulta a profesores del

área y concuerdan en que es una mejor opción incluirlo en el


47

software didáctico y optamos por presentar esta alternativa a

nuestros usuarios.

1.2 INFORMÁTICA Y EDUCACIÓN .

En la época actual la informática puede jugar un papel muy

importante en la educación, puesto que se puede utilizar como

herramienta pedagógica. G r a c i a s a l a t e c n o l o g í a h a n aparecido

nuevas áreas del saber. Algunas como la informática educativa

(CBT o Computer Based Training), se vinculan directamente con la

educación. La informática educativa consiste en el uso de estas

tecnologías para educar a los alumnos de las i n s t i t u ciones

educativas, para los programas de educación a distancia y de

autoaprendizaje y por el entrenamiento del personal de las

empresas e instituciones que los requieran.

Otra posibilidad que brinda la informática educativa es el uso de

multimedia. El c o ncepto general de multimedia refiere a la

posibilidad de combinar en un texto audiovisual e interactivo,

conjunto de palabras escritas y habladas, gráficos, animaciones,

video digital y video analógico, de manera que las acciones del

u s u a r i o – lector influy a n e n e l d e s a r r o l l o d e l t e x t o m u l t i m e d i a .
48

Entre los distintos tipos de aplicaciones educativas se tienen, en

primer lugar, el software instruccional que consiste en la

automatización de ejercicios o exámenes de distintas materias o en

tutoriales que e n s eñ a n procesos o proporcionan datos

enciclopédicos. En segundo lugar, los simuladores o modeladores

de situaciones reales a las que el estudiante se debe enfrentar, por

ejemplo, simuladores del uso de maquinaria industrial, de las

variaciones de precios de acuerdo a las fluctuaciones de la oferta y

la demanda o de las diferentes velocidades de caída de un cuerpo

en distintas gravedades. Finalmente, los juegos en general,

pueden ser de dos tipos: los juegos educativos y los juegos para

pasar el rato. En el siguiente ítem se amplían más estos

conceptos.

1.3 MODALIDADES DEL APRENDIZAJE ASISTIDO POR

COMPUTADOR.

La modalidad Tutorial. Trata de presentar un material en la

pantalla de la computadora y eventualmente hace preguntas sobre

dicho material. En las versiones avanzadas de tutoriales, las

preguntas se convierten en evaluaciones más o menos complicadas

d e p e n d i e n d o d e l a s c u a l e s a p a r e c e u n a r e t r o a limentación diferente

y se toma un camino alterno para continuar con la presentación del

material.
49

La modalidad de ejercitación y práctica trata de que los usuarios

adquieran una habilidad sobre algo realizando ejercicios

únicamente, es decir no se propo ne una teoría o explicación sobre

el contenido de lo que se está haciendo, bajo él supuesto que esto

ya se conozca (o se dio en clase) y que con esta modalidad lo que

se hace es la labor de reforzamiento de lo aprendido y el adquirir o

mejorar una habilida d (por ejemplo en la resolución de ejercicios

aritméticos).

Las modalidades de juegos son aquellos programas en que

emplean algún recurso divertido y cuya finalidad escondida es que

el usuario o jugador aprenda algo, practique algo o desarrolle

alguna ha b i l i d a d . Para lograr jugar o participar en el mismo hay

que conocer, practicar, o desarrollar conocimientos, habilidades

etc.

Sin duda alguna ésta es la modalidad más difícil de describir y de

r e a l i z a r , p u e s t o q u e s e t r a b a j a e n d o s p l a n o s s i m u l t á n e a m e nte el

del entrenamiento y el del aprendizaje.

Los juegos pueden ser tan simples como uno de mesa, o de

adivinanza, hasta autenticas aventuras gráficas en las que el sujeto

es participante de un cuento fantástico. Sin embargo dada la

c o m p e t e n c i a c o n a u t é nticos juegos a través de los productos


50

empacados como Nintendo, Sega y otros juegos de vídeo, que

tienden a ser cada vez más sofisticados, los juegos educativos no

se pueden quedar atrás, s o -p e n a d e s e r e t i q u e t a d o s c o m o

“aburridos”. L a p a r t e d i d á c t i c a d e l juego, puede estar en el

contenido, en la habilidad para manejar el juego o en el

conocimiento asociado a las variantes del juego.

Frecuentemente se asocia también a una modalidad diferente al

d e s c u b r i m i e n t o , a u n q u e e n e l f o n d o n o e s d i f e r e n t e , y a q u e está

comprendido en las modalidades anteriores. Se entiende por

descubrimiento al conjunto de programas que permiten que el

usuario aprenda algo por inferencia, deducción, etc. descubriéndolo

por sí mismo y no presentado directamente. En la mayoría de las

simulaciones o juegos se aprende de esta manera. El objetivo de

esta manera es facilitar la creatividad del individuo, facilitar la

c a p a c i d a d d e g e n e r a c i ó n y d e e n t e n d e r - haciendo. Actualmente

t a m b i é n s e h a b l a c o m o o b j e t i v o d e l d e s c u b r i m i e n t o e l e s t i m u l ar el

“pensamiento crítico”. Así por ejemplo, si se dan los instrumentos

adecuados y un mínimo de técnica se podría en algunos casos, que

el usuario dedujera alguna de las leyes de un fenómeno (físico,

b i o l ó g i c o , s o c i a l e t c . ) , d o n d e s e p r e s e n t a l a p r o b l e m ática de

manera muy didáctica.

1.4 TEORÍAS DEL APRENDIZAJE.


51

Las teorías contemporáneas del aprendizaje o que se han

desarrollado en el siglo X X , las podemos dividir en dos grandes

familias:

* Las teorías cognoscitivas: De las que uno de los aportes

princip a l e s a s o f t w a r e e d u c a t i v o s , e s q u e o f r e c e p a u t a s e s p e c i f i c a s

y estrategias didácticas para su construcción los psicólogos

cognoscitivos al presentar la información insisten en que se

realicen asociaciones globales que les permita procesar la

información po r s u c u e n t a .

* L a s t e o r í a s d e l c o n d i c i o n a m i e n t o e s t í m u l o – respuesta: El

hombre desde sus comienzos buscó explicación a los fenómenos

que se sucedían a su alrededor y la primera respuesta que

encontró fue dándoles alma y espíritu a todos los objetos,

i nc l u y e n d o l a s p i e d r a s , l a s r o c a s , e t c . ; a e s t o s e l e l l a m o a n i m i s m o .

A medida que descubrían las causas de los fenómenos naturales,

el animismo perdía popularidad y se sustentaba cada vez más la

o p i n i ó n d e l a c a s u a l i d a d d e t o d o s l o s f e n ó m e n o s d e l a n a t u r aleza.

Poco a poco se comenzó a dar explicaciones mecánicas a todo lo

existente, incluyendo al hombre. De ahí los dichos populares: “sin

fuego no hay humo”, “no hay causa sin efecto”.


52

La psicología mecanicista realista reflejada en el conductismo,

t r a tó de seguir los anteriores lineamientos equiparando las causas

con los estímulos y el efecto con la respuesta, única manera para

que la psicología siguiera siendo científica.

En consecuencia, el hombre no es más que un mecanismo de

e s t í m u l o s y r e s p u e s t a s donde todo lo pueda saber acerca de su

conciencia y de sus sentimientos, se obtendrá de las secreciones

glandulares y de sus contracciones musculares. Como vemos los

realistas científicos, consideran al hombre como una máquina

i n t e l i g e n t e , b i e n d i s e ñ a d a q ue a p r e n d e m e d i a n t e u n p r o c e s o a d i t i v o

de estimulo – respuesta; sus deseos, metas e intenciones no

cuentan para nada.

Al abordar la educación, un conductista, considera inevitable

controlar la conducta, el aprendizaje, los planes, los objetivos y

metas de enseñanza.

Dentro de los modelos del aprendizaje del condicionamiento

estímulo – respuesta tiene las siguientes.

1 . 4 . 1 E l c o n d i c i o n a m i e n t o C l á s i c o d e P a v l o v ( 1 8 4 9 - 1 9 3 6 ) . En sus

experimentaciones iniciales Ivan Petrovich Pavlov, estuvo

i n t e r e s a d o e n e l p r oc e s o d i g e s t i v o d e l o s p e r r o s y n o e n e l

aprendizaje o cualquier forma de proceso mental. Sin embargo,

con el progreso de sus investigaciones surgió un modelo de


53

aprendizaje que ha sido llamado condicionamiento clásico. En el

experimento de éste; un perro podrá comenzar a salivar ante el

sonido de un tono o la presencia de una luz, si éste tono o luz ha

estado apareado previamente con la presentación del alimento al

perro.

Cuando se coloca carne en la boca de un perro se produce

salivación; el alimento e s el estímulo incondicionado y la salivación

el reflejo. Después de algún tiempo, se coloca un estímulo

arbitrario por ejemplo, una luz o un sonido que se le presenta en la

comida. Después de repetir esta experiencia varias veces, el

a n i m a l s e g r e g a r á s a li v a a l o í r e l s o n i d o o a l v e r l a l u z , s i n l a

presencia del alimento. En este segundo paso del experimento, la

saliva es el reflejo condicionado. Algunos psicólogos tienden a

utilizar la expresión respuesta condicionada en vez de reflejo

condicionado, por considerar que no todo lo condicionado es

reflejo.

Como podemos ver, la forma básica del condicionamiento clásico

consiste en aparear un estímulo, el cual es originalmente neutral

con un estímulo que provoca la respuesta. Después de uno o más

a p a r e a m i e ntos, el estímulo previamente neutral produce la

respuesta estudiada. Cuando esto sucede, decimos que se ha

llevado a cabo un condicionamiento clásico.


54

1 . 4 . 2 E l c o n e x i o n i s m o d e T h o r n d i k e ( 1 8 7 4 -1 9 4 9 ) . El fundamento

p r i n c i p a l d e l c o n e x i o n i s m o , l o c o n s t i t u y e la asociación entre las

impresiones sensoriales y los impulsos de la acción; a ésta

asociación le dio el nombre de “vehículo” o “conexión”, de ahí se

deriva el nombre de “conexionismo”.

Para Thorndike, la forma más característica de aprendizaje es por

ensayo y error; más tarde prefirió llamarlo por “selección y

conexión”. Para explicar el anterior enunciado, Thorndike supone

que el que este aprendiendo se enfrenta una situación problemática

e n l a q u e t i e n e q u e l o g r a r u n a m e t a , c o m o p o r e j e m p l o , s a l i r de una

jaula o alcanzar un alimento. Para solucionar esta situación,

selecciona la respuesta adecuada entre cierto número de

respuestas o soluciones posibles. Define el ensayo por el número

d e e r r o r e s q u e s e c o m e t e n o p o r e l t i e m p o q u e t r a n s c u r r e a n t e s de

elegir la respuesta correcta para alcanzar la meta o solucionar el

problema.

El experimento típico por ensayo y error, lo llevó a cabo con un

gato hambriento en una jaula que podía abrirse desde el interior al

l e v a n t a r u n a a l d a b a p a r a a l c a n z a r l a c o m i d a que se hallaba afuera;

los primeros ensayos estaban caracterizados por innumerables

errores: arañazos, mordidas y movimientos inútiles, hasta que


55

accidentalmente levantaba la aldaba y el animal se encontraba libre

para tomar el alimento. S e r e p e t í a e l experimento y el gato se

conducía de la misma forma, pero con la diferencia que disminuían

los errores en forma lenta e irregular, hasta que eventualmente el

gato aprendía a escapar de manera inmediata, sin actividades al

azar. D e l a n t e r i o r e x p e r i m e n t o , de d u j o q u e e l g a t o n o “ p e s c a ”

realmente la manera de escapar, sino que la aprende grabando

respuestas correctas y borrando las incorrectas.

De la conducta cronometrada de los gatos, llegó a concluir que el

aprendizaje es un proceso de “introducción” de conexiones por

ensayo y error, en el sistema nervioso y que no tiene nada que ver

con la comprensión

Los principios del conexionismo han sido expresados en forma de

leyes del aprendizaje.

- Ley de la disposición o preparación. Enuncia las circunstancias

en las que el sujeto que aprende tiende a sentirse satisfecho o

molesto, a aceptar o rechazar. Estas circunstancias pueden ser

tres:

Primera, cuando un sujeto está preparado para ejecutar

determinada acción, el llevarla a cabo le resulta satisfactorio.


56

S egunda, cuando un sujeto está preparado para ejecutar

determinada acción, el no ejecutarla, le resulta molesto.

Tercera, cuando un sujeto no está preparado para realizar una

acción, y es forzado a ejecutarla, le resulta molesto.

- Ley del ejercicio. Según esta ley cuanto más se repita una

respuesta inducida por un estímulo más largo será su período de

retención.

- L e y d e l e f e c t o . E s t á l i g a d a a l p r i n c i p i o d e p l a c e r – dolor. Por lo

cual, podemos decir que una respuesta se fortalece, cuando

produce placer, y se debilita cuando produce dolor. En

consecuencia, la ley del efecto hace relación al fortalecimiento o al

debilitamiento de una conexión de acuerdo con sus consecuencias.

Con esta ley, Thorndike afirmó que las recompensas o éxitos

fomentan el aprendizaje de la conducta recompensada; mientras

que los castigos a los fracasos, reducen la tendencia repetir la

conducta que condujo al castigo, al fracaso o a la molestia.

1 . 4 . 3 C o n d i c i o n a m i e n t o c o n t i g u o d e E d w i n G u t h r i e ( 1 8 8 6 -1 9 5 9 ) ..

Consiste en que si un estímulo se produce contiguamente a una

respuesta, la respuesta es este estímulo, seguirá produciéndose

hasta que se condicione a este estímulo otra respuesta. Dicho de


57

otra manera, los estímulos que se aplican en el momento de una

respuesta, al volverse a presentar, provocan la misma respuesta.

El condicionamiento contiguo tiene gran aplicabilidad en el

aprendizaje de hábitos. De ahí que su encanto radique en las

orientaciones prácticas para el entrenamiento de animales, la

crianza de los niños y la pedagogía.

1 . 4 . 4 C o n d i c i o n a m i e n t o o p e r a n t e d e B . F . S k i n n e r ( 1 9 0 4 -1 9 7 4 ).

B.F. Skinner, profesor de la universidad de Harvard, es considerado

como la figura más representativa del conductismo actual.

D e s c u b r i ó y d e s a r r o l l ó u n m o d e l o o p a r a d i g m a d e a p r e n d i zaje,

llamado condicionamiento operante. Este lo podemos definir como:

Un proceso de aprendizaje que consiste en aumentar o disminuir la

probabilidad de la conducta por medio de la aplicación del refuerzo.

R e f u e r z o e s c u a l q u i e r e v e n t o q u e i n c r e m e n t e l a fuerza de la

respuesta.

El condicionamiento operante se interesa en la relación existente

entre la conducta de un organismo y el medio en que habita.

A esta clase de condicionamiento se le llama operante, porque las

r e s p u e s t a s q u e e m i t e e l s u j e t o p u e d e n verse como operaciones

sobre el ambiente para alcanzar el refuerzo o la recompensa.


58

Ejemplo: todos los movimientos que hace una rata para alcanzar el

a l i m e n to , o to d o s l o s e sfu er zos que un alum no r ealiza por alcanz ar

u n a b u e n a c a l i f i c a c i ó n , o t o d a s l a s “p i l a t u n a s ” d e l b e b e p o r l o g r a r

la sonrisa de su madre.

El condicionamiento operante, tiene una condición única que:

El estímulo reforzante no se produce antes de la respuesta

deseada, sino después de ella.

• Skinner y sus seguidores, c o n s i d e r a n q u e c a s i toda la

conducta humana es producto del reforzamiento operante, ya

que mediante el refuerzo que reciben las personas aprenden

a caminar. A hablar, a comportarse de ésta manera no de

otra. De ahí que toda persona y organismo pueda ser

r e f o r z a d a a “ e l e g i r cualquier estado de cosas, mediante el

condicionamiento operante”.
59

P r o g r a mas y

registros
Interés en el

Estudio Intensivo

del sujeto
Control del

comportamiento del
Interés en el

control del

Figura 4. Características del Condicionamiento Operante

En el condicionamiento operante, el maestro es el arquitecto y

constructor de la conducta de los alumno s, sus valores, sus metas

y los objetivos del aprendizaje, ya que niega la intencionalidad de

la conducta inteligente de los sujetos.

La psicología de Skinner, implica un determinismo estricto, el cual

s i g n i f i c a q u e l a c o n d u c t a t i e n e u n a c a u s a y q u e s o l o puede producir

el comportamiento observado (efecto). El determinismo lleva

implícito que el ambiente determina a un individuo, donde su

conducta es un diseño de su propia cultura. Como partidario del


60

r e a l i s m o c i e n t í f i c o , c o n s i d e r a q u e l a s l e y e s d e l a p s i c ología son tan

definidas como las de cualquier otra ciencia.

Esta es la esencia del condicionamiento operante: Las respuestas

correctas se refuerzan; las incorrectas se ignoran o se castigan.

Este reforzamiento puede ser de diversos tipos como:

1 . Reforzami ento Positivo y Negativo. Un reforzador positivo

añade una recompensa a cierta situación, por ejemplo

comida. El reforzamiento negativo resulta eficaz porque

substrae algo desagradable de la situación; el reforzamiento

c o n s t i t u y e e n e l i m i n a r e l e s t í m u l o . Por ejemplo, a un perro se

le enseña a abrir las puertas no solo para obtener alimentos

(reforzamiento positivo) sino también para evitar descargas

eléctricas o ruidos molestos (reforzamiento negativo).

2 . R e f o r z a m i e n t o p r i m a r i o y s e c u n d a r i o . U n r e f o r z a d o r p r imario

es aquel que resulta grato por sí mismo, sin nexo alguno con

otro (el agua, el sexo, el alimento). Un reforzador secundario

es aquel cuyo valor ha de aprenderse mediante una

asociación con otros reforzadores. El dinero es un reforzador

s e c u n d a r i o , au n q u e n o p a s a d e s e r u n s i m p l e p a p e l o m e t a l ,

gracias a su vinculación con el alimento, la ropa y otros

reforzadores primarios, se convierte en un premio poderoso.


61

3 . Reforzamiento Demorado. Hay un intervalo de tiempo entre el

m o m e n t o e n q u e s e o b t i e n e e l c o mportamiento deseado y el

momento en que se aplica el reforzamiento. Cuanto mayor es

este intervalo menor eficacia tendrá el reforzamiento.

¿El castigo es un reforzamiento? El castigo es un proceso

d i f e r e n t e d e l r e f o r z a m i e n t o , y a q u e m i e n t r a s e l c a s t i g o consiste en

la presentación de un estímulo positivo, el reforzamiento incluye,

tanto la presentación de un reforzador positivo, como la eliminación

de uno negativo.

Un castigo puede consistir, por ejemplo, en privar a Juan Carlos de

ver televisión durante u n a s e m a n a p o r h a b e r p e r d i d o u n a m a t e r i a ;

este castigo no implica ningún reforzamiento.

Dicho de otra manera, cuando un estímulo participa en el

fortalecimiento de una respuesta, habrá reforzamiento; cuando se

presenta o se retira un estímulo tratando de debilitar una

respuesta, habrá castigo.

1 . 4 . 5 A s i m i l a c i ó n D e P i a g e t . Como se piensa que una de las

medidas más prometedoras para el mejoramiento del aprendizaje

consiste en el perfeccionamiento de los materiales didácticos,


62

d e b i d o a l a l t o g r a d o e n q u e e s tos materiales facilitan el aprendizaje

significativo se utiliza el método de EAC (Enseñanza Asistida por

C o m p u t a d o r ) e n f o c a d o h a c i a l o s e n t r e n a d o r e s - tutores, porque

este es de gran utilidad ya que el alumno desempeña una función

esencial en la determi nación de la tasa del nuevo aprendizaje.

Además se basa en el proceso de “Asimilación” de Piaget". Este

concibe la asimilación en función de progresiones del desarrollo y

su teoría trata básicamente de:

♦ El d e s a r r o l l o d e l p e n s a m i e n t o c o m o p r o c e s o o p u e s to a la

compresión.

♦ Tiende a identificar las operaciones del pensamiento con las

operaciones de la lógica.

♦ Atribuye al pensamiento la cualidad de acción implícita.

Además de esto, para Piaget existen dos tipos de aprendizaje:

• E l a p r e n d i z a j e q u e i n c luye la adquisición del organismo de

nuevas respuestas a situaciones específicas, pero sin que el

organismo tenga que entender necesariamente el razonamiento

que está detrás del aprendizaje, ni que generalice lo aprendido a

otras situaciones.
63

• E l o t r o c o ns i s t e e n a d q u i r i r u n a n u e v a e s t r u c t u r a d e o p e r a c i o n e s

mentales en virtud del proceso de equilibrio. Este aprendizaje es

estable y duradero comparado con el primer tipo que es

transitorio, y conduce a la generalización basado en la

c o m p r e n s i ó n . S u p o n e c i e r to nivel de estructura cognoscitiva que

depende a su vez del desarrollo del organismo.

1 . 4 . 6 T e o r í a d e V i g o s k y : A p r e n d i z a j e S i g n i f i c a t i v o . Trata sobre

la relación entre el medio ambiente y la influencia o importancia

que adquiere el conocimiento. En este se intenta relacionar la

información nueva con lo que ya se sabe y por consiguiente se le

da sentido. Se dice que en este se hace una construcción

coherente y comprensiva del contenido en lugar de sólo

m e m o r i z a r l o . E l a p r e n d i z a j e s i g n i f i c a t i v o e s r e t e n i do más tiempo

que el aprendizaje memorístico. También es mucho más eficiente

porque unos cuantos principios generales pueden acomodar una

gran cantidad de aplicaciones específicas.

1.5 DIDÁCTICA.

1 . 5 . 1 C o n c e p t o d e D i d á c t i c a . L a d i d á c t i c a e s c i e n c i a y a r te de

enseñar. Es ciencia en cuanto investiga y experimenta nuevas

técnicas de enseñanza, teniendo como base, principalmente, la


64

biología, la psicología, la sociología y la filosofía. Es arte, cuando

e s t a b l e c e n o r m a s d e a c c i ó n o s u g i e r e f o r m a s d e l c o m p o r t a miento

didáctico basándose en los datos científicos y empíricos de la

educación.

La didáctica está representada por el conjunto de técnicas a través

de las cuales se realiza la enseñanza. La didáctica es una

d i s c i p l i n a o r i e n t a d a e n m a y o r g r a d o h a c i a l a p ráctica, toda vez que

su objetivo primordial es o r i e n t a r l a e n s e ñ a n z a . A su vez la

enseñanza no es más que la dirección del aprendizaje. La didáctica

está constituida por un conjunto de procedimientos y normas

d e s t i n a d a s a d i r i g i r e l a p r e n d i z a j e d e l a m a n e ra más eficiente que

sea posible.

1.5.2 Elementos Didácticos . La didáctica tiene que considerar seis

elementos fundamentales que son, con referencia a su campo de

actividades: el alumno, los objetivos, el profesor, la materia, las

t é c n i c a s d e e n s e ñ a n z a y el medio geográfico, económico, cultural y

social.

El Alumno. Es quien aprende, aquel por quien y para quien existe

la escuela (entendiéndose por ésta como un ente donde se imparte

educación); debe haber una adaptación recíproca entre escuela y

alumno.
65

L o s O b j e t i v o s . Toda acción didáctica supone objetivos. La escuela

no tendría razón de ser si no tuviese en cuenta la conducción del

alumno hacia determinadas metas, tales como: modificación el

comportamiento, adquisición de conocimientos, desenvolvimiento

de la personalidad, orientación profesional, etc. En consecuencia la

escuela existe para llevar el alumno hacia el logro de determinados

objetivos.

El Profesor (es quien imparte la enseñanza). Es el orientador de la

enseñanza. Debe ser fuente de estímulo s que lleva el alumno a

reaccionar para que se cumpla el proceso de aprendizaje.

La Materia. Es el contenido de la enseñanza. A través de ella

serán alcanzados los objetivos de la escuela.

M é t o d o s y T é c n i c a s d e E n s e ñ a n z a . Tanto los métodos como las

t é c ni c a s s o n f u n d a m e n t a l e s e n l a e n s e ñ a n z a y d e b e n e s t a r , l o m á s

próximo que sea posible, a la manera de aprender los alumnos.

Medio Geográfico, Económico, Cultural y Social. Es

indispensable para que la acción didáctica se lleve a cabo en forma

ajustada y e f i c i e n t e , t o m a r e n c o n s i d e r a c i ó n e l m e d i o d o n d e s e e s t á

enseñando.
66

1.6 MOTIVACIÓN DEL APRENDIZAJE.

Es el proceso que provoca cierto comportamiento, mantiene la

actividad o la modifica. Motivar es predisponer al alumno hacia lo

q u e s e q u i e r e e n s e ñ a r ; e s l l e va r l o a p a r t i c i p a r a c t i v a m e n t e e n l o s

trabajos escolares. Así, motivar es conducir al alumno a que se

empeñe en aprender, sea por ensayo y error, por imitación o por

reflexión.

La motivación consiste en el intento de proporcionar a los alumnos

u n a s i t u a c i ó n que los induzca a un esfuerzo intencional, a una

actividad orientada hacia determinados resultados queridos y

comprendidos. Así, motivar es predisponer a los alumnos a que

aprendan y, consecuentemente, realicen un esfuerzo para alcanzar

los objetivos previamente establecidos.

Los propósitos de la motivación consisten en despertar el interés,

estimular el deseo de aprender y dirigir los esfuerzos para alcanzar

metas definidas.

La motivación, en el proceso de aprendizaje, puede provocar los

siguientes pa s o s :
67

1 . Se crea una situación de necesidad (motivación),

estableciéndose simultáneamente una tensión.

2 . Se vislumbra un objetivo capaz de satisfacer esa necesidad.

3 . Se inicia el esfuerzo o la acción para solucionar la dificultad,

de una manera desordenada u o rdenada.

4 . Dada la solución, o satisfecha la necesidad, disminuye la

tensión y el individuo retiene (aprehende) la dirección o la

forma de comportamiento, para actuar de una manera más o

menos similar en situaciones parecidas.

1 . 6 . 1 T i p o s d e M o t i v a c i ó n . Ha y d o s m o d a l i d a d e s d e l l e v a r a l

alumno a estudiar: induciéndose hacia la aceptación y

reconocimiento de la necesidad de estudiar, o bien obligándolo

mediante la coacción. Sobre esta base, la motivación puede ser

positiva o negativa.

Motivación Positiva. C uando procura llevar al alumno a estudiar,

teniendo en cuenta el significado que guarda la materia para la vida

del alumno, el aliento, el incentivo y el estímulo amigable. La

motivación positiva a su vez puede ser intrínseca o extrínseca.


68

a) Motivación Positiva Intrínseca. Cuando el alumno es llevado a

estudiar por el interés que le despierta la propia materia, es

decir, porque “gusta de la materia”.

b) Motivación Positiva Extrínseca. Cuando el estímulo no guarda

relación directa con l a signatura desarrollada o cuando el

motivo de aplicación al estudio, por parte del alumno, no es la

materia en sí.

Motivación Negativa. S la que consiste en llevar al alumno a

estudiar por medio de amenazas, reprensiones, y también castigos.

E l e s t u d i o s e l l e v a a c a b o b a j o e l i mperio de la coacción.

Desde el punto de vista didáctico la motivación puede ser

clasificada como inicial y de desenvolvimiento.

Motivación Inicial. Procura disponer a los alumnos para ejecutar

los trabajos que serán realizados.

1.6.2 Motivación de De senvolvimiento o Incentivación . Es la que

se emplea durante el desarrollo del tema; debe ser planeada de

modo que se renueve constantemente el interés de los alumnos y,

así mismo, aprovechar las situaciones de cada momento para


69

r e a v i v a r d i c h o i n t e r é s p o r lo q u e e s t á s i e n d o e s t u d i a d o . D e e s e

modo procura conservar el impulso y la disposición iniciales.

1 . 6 . 3 F u e n t e s y T é c n i c a s D e M o t i v a c i ó n . Constituyen elementos,

factores o circunstancias que despiertan en el alumno algún motivo

o actitudes favorables para ciertas actividades, porque aguzan sus

necesidades.

A l g u n a s f u e n t e s d e m o t i v a c i ó n p u e d e n , a s i m i s m o – y según la

manera de encararlas – funcionar como técnicas de motivación.

Las principales fuentes son:

1 . N e c e s i d a d e s d e l e d u c a n d o , q u e p u e d e n s e r d e n a t u r a leza

biológica, psicológica o social.

2 . Curiosidad natural del ser humano.

3 . Vida social: acontecimiento de la actualidad.

4 . Ambiente escolar adecuado.

5 . Actividad lúdicra.

6 . Personalidad del profesor.


70

7 . Aprobación social.

8 . Competición.

9 . Deseo de evitar fracasos y puniciones.

1 0 . Necesidades económicas.

1 1 . Necesidades de conocimiento,

12. Afán de distinguirse.

1 3 . Deseo de ser eficiente.

14. Tendencia a la experimentación.

15. Aspiraciones.

Son innumerables las técnicas de motivación existentes. Estas

t é c n i c a s p r o c u r a n s u s c i t a r mo t i v o s y a c t i v a r p o s i b i l i d a d e s i n t e r n a s .

Algunas de estas técnicas son:


71

1 . Correlación con lo real. Con ella el profesor procura

establecer relación entre lo que está enseñando y la realidad

circundante, con las experiencias de vida del alumno o con

hechos de la actualidad.

2 . Victoria Inicial. El Alumno es llevado a responder preguntas

relativamente fáciles pero “pomposas”, presentadas con

aspectos de difíciles. Naturalmente el alumno responderá con

exactitud y, entusiasmado con su éxito, prosigue con

atenci ó n l o s t r a b a j o s d e l a c l a s e .

3 . Participación del alumno. Mediante interrogatorios y de

situaciones problemáticas interesantes, hace que los alumnos

tomen parte en el trabajo escolar. Su preocupación debe ser

d e s u s t r a e r a l a l u m n o d e l a s i t u a c i ó n d e s i m p l e espectador,

para transformarlo en participante.

4 . Auto superación. El profesor incentiva al alumno para que

mejore su actuación. El alumno se le indica la marcha de su

aprendizaje en diversos momentos, inducido a superarse,

5 . Experimentación. Una tendencia común a todos es la de hacer

algo. Esta tendencia puede ser explorada en la enseñanza de

todas las disciplinas. Deben planearse actividades de


72

realización por parte del alumno, llevándolo a actuar física e

intelectualmente.

6 . Conocimiento preciso de los ob jetivos a alcanzar. Una

excelente técnica de motivación es la que da a conocer, con

toda claridad, los objetivos de la unidad y de la lección. Se

trabaja con más ánimo y conciencia de responsabilidad

cuando se sabe a qué están destinados los esfuerzos y se

conoce el punto de llegada.

7 . Reducción de los factores negativos y aumento de los

positivos. Esta debe se la norma general de la motivación del

aprendizaje. Es preciso reducir al mínimo las condiciones

d e s f a v o r a b l e s p a r a e l t r a b a j o e s c o l a r c o m o : r e p r i m e ndas,

críticas exageradas, etc. Corresponde por el contrario,

aumentar las condiciones favorables, de manea que el alumno

se sienta a gusto acentuando los elogios.

8 . Espíritu Lúbrico. Es propio de la naturaleza humana el interés

por el juego, por la diversió n, por la recreación. Siempre que

fuese posible sería interesante desarrollar las clases a través

de actividades lúdricas o en un clima de recreación.


73

9 . Aplicar las técnicas o conocimientos adquiridos. La disciplina

q u e t r a n s c u r r e s o l a m e n t e e n e l c a p o t e ó ri c o t i e n e p o c a s

probabilidades de motivar a los alumnos. Es recomendable

que la teoría sea seguida de aplicaciones prácticas o, aún

mejor, que la teoría sea extraída de la práctica.

1 0 . Trabajos Graduados. Otra forma de incentivar consiste en

presentar tareas adecuadas y graduadas según las

dificultades, partiendo de su nivel de preparación y de

capacidad. Mediante esta técnica se logrará,

indefectiblemente, buen éxito, y este éxito será un excelente

motivador. No obstante, estos loros exitosos no deben ser

fá c i l e s , ni facilitados, sino que deben ser alcanzados

mediante el empeño del estudiante por cumplir eficientemente

su tarea.

Motivos Estimulantes. Motivo no aprendido, como la curiosidad o

l a a c t i v i d a d , l a e x p l o r a c i ó n , m a n i p u l a c i ó n y c o n t a c t o , l o s c u a l e s nos

impulsan a investigar; estos dependen más de los estímulos

externos que de los estados fisiológicos internos.

La exploración y curiosidad parecen ser motivos activados por lo

nuevo y lo desconocido, sin que tengan otra meta específica de la

de “descub rir algo”. La curiosidad es un motivo que nos impulsa a


74

investigar estímulos desconocidos, y conforme aprendemos a

explorar nuestro ambiente, nuestra curiosidad se vuelve más

ambiciosa. ¿Cómo funciona el televisor? ¿Para qué sirve aquella

h e r r a m i e n t a ? C u a ndo hacemos la primera pregunta no se pretende

en absoluto abrir un taller de reparación de televisores, y la

herramienta cuya finalidad nos interesa, quizá nunca la usemos. En

estos casos sólo queremos simplemente conocer las cosas.

A d i f e r e n c i a d e l a c ur i o s i d a d y e x p l o r a c i ó n , e s t á l a m a n i p u l a c i ó n

que se dirige a un objeto concreto que hemos de tocar, manejar,

sentir y jugar para sentirnos satisfechos. La manipulación es un

motivo que parecer ser exclusivo de los primates provistos de

d e d o s á g i l e s e n l a s manos y en los pies. La manipulación se

relaciona más que todo con la necesidad de tener conocimiento de

las cosas.

1.7 PROGRAMACIÓN ORIENTADA A OBJETOS (POO).

Es el método más reciente y actual de desarrollo de software que

existe. Este consiste en que los datos y procedimientos se

combinan en objetos.

OBJETO: Es un elemento que contiene las características de una

entidad (sus datos) y su comportamiento (sus procedimientos).


75

Combinando estas características y comportamientos, un objeto

conoce cualq uier cosa que necesite para hacer su trabajo. El

objeto dado contiene las declaraciones tanto de los datos como de

los procedimientos. También, se puede decir que un objeto es una

variable de un tipo definido por el usuario.

MÉTODOS: Son los procedimi e n t o s y l a s f u n c i o n e s d e c l a r a d o s e n

el objeto.

HERENCIA: Propiedad que tienen los objetos de heredar los datos

y procedimientos de otros objetos. Un objeto puede heredar un

conjunto general de propiedades a las que pueden añadir

c a r a c t e r í s t i c a s q u e s o n específicamente suyas. La herencia es

importante porque permite que un objeto soporte el concepto de

clasificación jerárquica. Además, hace posible describir un objeto

estableciendo la clase general (o clases) a las que pertenecer,

junto con aquellas cara c t e r í s t i c a s q u e l e h a c e n ú n i c o .

ENCAPSULACIÓN: Consiste en la creación de objetos que

funcionan como entidades completas. Una de las reglas de la

encapsulación es que el programador nunca necesita acceder

directamente a los campos de datos de un objeto . Su principal

ventaja es que al limitar el acceso sólo a los métodos, se pueden

cambiar libremente los campos sin que se produzcan efectos


76

laterales. Una de sus desventajas es que es código completamente

concentrado y parece ser mucho más engorroso que el simple

acceso a un campo. Además, se puede decir que la encapsulación

es el mecanismo que agrupa el código y los datos que maneja y

los mantiene protegidos frente a cualquier interferencia y mal uso.

POLIMORFISMO: E s l a c u a l i d a d q u e p e r m i t e que un nombre se

utilice para dos o más propósitos relacionados, pero técnicamente

diferentes. El propósito del polimorfismo aplicado a la POO es

permitir poder usar un nombre para especificar una clase general

d e a c c i o n e s . D e n t r o d e u n a c l a s e g e n e r a l d e ac c i o n e s , l a a c c i ó n

específica a aplicar está determinada por el tipo de dato.

De forma general, el concepto de polimorfismo es la idea de “ una

interfaz, múltiples métodos ". Esto quiere decir que es posible

diseñar una interfaz genérica para un grupo de actividades

relacionadas. Sin embargo, la acción específica ejecutada depende

de los datos. La ventaja del polimorfismo es que ayuda a reducir la

complejidad permitiendo que la misma interfaz se utilice para

especificar una clase general de acción.


77

1.8 LAS VARIABLES.

En el ambiente educativo informático se deben definir variables

desde diferentes puntos de vista, que nos permitan comparar el

álgebra Booleana con los componentes de un MEC(MATERIAL

EDUCATIVO COMPUTARIZADO).

1.8.1 Clase y Operaciona lización de las Variables.

1.8.1.1 Variables Educativas .

Unidad Temática. Una guía que procure establecer el objetivo

terminal según los conceptos, habilidades que se desean fortalecer

en el usuario.

S i s t e m a d e M o t i v a c i ó n . M o t i v a c i ó n q u e i n c e n t i v e e l a prendizaje del

tema en mención.

Sistema de Refuerzo. Indicadores de recompensa y castigo de

acuerdo a los logros obtenidos.

Sistema Evaluativo. Forma de medir los logros obtenidos en el

proceso de enseñanza aprendizaje con el uso del MEC.


78

1.8.1.2 Variables De Computación.

Funciones de apoyo al usuario. Que alternativas se ofrecen al

proceso de enseñanza aprendizaje: secuencias, reinicios,

abandonos.

E s t r u c t u r a L ó g i c a y d e D a t o s . Que almacenamientos ejecuta el

MEC, según los movimientos del usuario.

1 .8 . 1 . 3 V a r i a b l e s d e C o m u n i c a c i ó n .

Dispositivos de entrada y Salida. Qué periféricos se utilizarán para

la toma de decisiones: mouse, teclado, pantalla sensible; y cuales

para comunicar al usuario mensajes, resultados.

Interfaz de Entrada y Salida. Formas de Intercambiar mensajes el

usuario con el MEC, de acuerdo a las interacciones que se estén

realizando.

1.8.1.4 Variables de Entorno .

Area de contenido. Tratar los conceptos del Álgebra Booleana y

a p l i c a c i o n e s d e é s t a , c o m o p o r e j e m p l o a l a L ó g i c a D i g i ta l .
79

Limitaciones y recursos para los usuarios. Restricciones del

software a sus usuarios.

Infraestructura. Establecer el equipo requerido, sistema operativo,

y otros, para lograr un óptimo desempeño del MEC.


2. DISEÑO DEL MEC (Material Educativo
Computarizado)

2.1 ENTORNO PARA EL DISEÑO DEL MEC

2.1.1 Población Objetivo. Este Modelo Educativo

Computarizado va dirigido a estudiantes de Ingeniería que cursan

asignaturas donde toman el tema de Álgebra de Boole como son:

L ó g i c a , A r q u i t e c t u r a d e l C o mp u t a d o r , T é c n i c a s D i g i t a l e s , C i r c u i t o s

Digitales, o que ya han visto pero que necesitan refrescar los

conocimientos adquiridos para aplicaciones de este tema.

2.2 DISEÑO EDUCATIVO

2 . 2 . 1 ¿ P o r q u é e l M E C e s t i p o t u t o r – E n t r e n a d o r ? Se presenta la

información sobre el Álgebra de Boole en la pantalla del

computador de una forma dinámica, agradable y a la vez se va

evaluando el aprendizaje del usuario por medio de preguntas o

ejercicios sobre dicho material. La evaluación tiene un grado de

complejidad que va aumentando de acuerdo a los resultados que se

obtiene de esta.
81

2.2.2 Presentación Mr. Boole. Para hacer el software lo más

amigable posible, lo cual es uno de los objetivos de un software

didáctico, que mejor opción que encontrar en el un amigo, ese es

Mr. Boole, quien aparece a continuación.

Figura 5. Mr. Boole

Buscando que Mr. Boole se identifique con la mayoría de los

usuarios no se le da forma de animal definido, tal vez se parezca a

u n a a r d i l l a , u n r a t ó n u o t r o . D e s e a n d o i n s p i r a r a l u s u a r i o : a nimo,

seguridad, capacidad de realizar lo que se propone; se le da un

aspecto que lo hace lucir estudioso, a la vez descomplicado pero

con su propio estilo como el de los jóvenes universitarios a los que

va dirigido especialmente este software.


82

¿Por qué se le da el nombre de Mr Boole? El Nombre de Boole se

le otorga en honor al creador del Álgebra Booleana, y el Mister por

la nacionalidad inglesa de éste.

2 . 2 . 3 D i s e ñ o d e l a s L e c c i o n e s . Nuestro material didáctico está

dividido en lecciones y esta a su vez en módulos. El módulo es la

unidad básica de enseñanza o aprendizaje, que tiene sentido para

la lección, generalmente alrededor de un sólo concepto. La lección

articula un concepto con otros conceptos relacionados alrededor

de una temática y puede contene r a varios módulos. Finalmente el

material, es una organización de enseñanza basada en el tiempo

sobre conocimientos que cubren o pretenden cubrir el tema del

Álgebra Booleana hasta cierto nivel de profundidad.

Las lecciones con sus módulos correspondientes son:

1. Lección Historia.

1.1 Módulo Biografía de George Boole.

1.2 Módulo Historia del Álgebra de Boole.

1 Lección Teoría Básica del Álgebra de Boole.

2.1 Módulo Variable Booleana.

2.2 Módulo Operaciones del Álgebra Booleana.

2.3 Módulo Tablas de Verdad.


83

2.4 Módulo Formación de ecuaciones Booleanas.

3. Lección simplificación Algebraica.

4 . L e c c i ó n S i m p l i f i c a c i ó n M é t o d o d e Q u i n e - McCluskey.

4.1 Módulo Expresiones minterms.

4.2 Módulo Tabla de Agrupamientos de orden: Primero. Segundo.

Tercero. Etc.

4.3 Módulo de Reducciones.

6. Lección Aplicaciones.

6.1 Módulo Compuertas Lógicas.

6.2 Módulo Representación de Circuitos Digitales.

6.3 Módulo Deducción de ecuaciones Booleanas a partir de

circuitos Digitales.

2.2.4 Evaluación y Reforzamiento. Los Ejercicios que se

p r oponen para evaluar el progreso del estudiante en una lección se

le asignan niveles de complejidad, se definen cuatro niveles de

complejidad con su respectiva puntuación, como se indica en la

Tabla 9.
84

Tabla 9. Puntuaciones por Complejidad

N I V E L C OMPLEJIDAD P U N T U A C I Ó N

1 Baja 10

2 Media baja 20

3 Media 30

4 Alta 40

Un usuario nuevo se le inicia con un nivel de dificultad 1. en la

tabla Estudiantes de la base de datos Tablas se determina el nivel

e n q u e s e e n c u e n t r a e l u s u a r i o , c o n e s t a i n f o r m a ción se accede a

la Tabla Ejercicios Propuestos se selecciona un ejercicio, se

verifica en la tabla de la lección que va a ser evaluada que no lo

haya realizado el estudiante. Si al ser evaluado se obtiene la

r e s p u e s t a d e s e a d a s e l e a p l i c a u n r e f o r z a d o r p ositivo subiéndolo

de nivel y sumándole el valor de los puntos a su puntaje por lección

y al total. Los puntos se obtienen para las evaluaciones tipo

selección múltiple en su totalidad cuando la respuesta es correcta y

c e r o c u a n d o e s i n c o r r e c t a , y p a r a l a s evaluaciones en que se

califican una serie de pasos el puntaje depende del porcentaje de

pasos acertados, el cual debe ser mayor del 60% para subir de

nivel. Al estudiante además se le premia con estrellas, por cada

v e i n t e p u n t o s q u e é l o b t e n g a e n s u e v a lu a c i ó n c o n s i g u e u n a
85

estrella que lo invita a seguir esforzándose por mejorar siempre y

obtener más premios. Si la respuesta es incorrecta se le aplica un

reforzador negativo para eliminar la conducta indeseada

d i s m i n u y e n d o u n 1 0 % d e l v a l o r d e l a p u n t u a c i ó n que pudo haber

obtenido al puntaje total, se le baja de nivel de complejidad y se le

propone resolver un nuevo ejercicio del mismo tema con su nuevo

nivel; si su respuesta es correcta se le adiciona a su puntaje el

t o t a l d e l a p u n t u a c i ó n d e l e j e r c i c i o , si n o e s c o r r e c t a s e l e p r o p o n e

visitar nuevamente la lección o el módulo evaluado. Todas las

respuestas son reforzadas sean correctas o incorrectas, es decir,

se aplica un reforzamiento continuo.

2 . 2 . 5 E j e r c i c i o s R e s u e l t o s . E l u s u a r i o p u e d e c o n s u l t a r e n la base

de datos la tabla Ejercicios_Resueltos que contiene ejercicios

modelos del tema que está desarrollando, accediendo a estos

desde la opción del menú principal.

2.2.6 Método de Enseñanza. Para dirigir el aprendizaje del

e s t u d i a n t e h a c i a e l o b j e t i v o propuesto, reforzar sus conocimientos

del Álgebra Booleana, se utiliza un conjunto de técnicas

lógicamente coordinadas, estas son las que presentamos a

continuación.
86

2.2.6.1 Método Deductivo. Se presentan los conceptos o

p r i n c i p i o s , d e f i n i c i o n e s o a f i r m a ciones, de las cuales van siendo

extraídas las conclusiones y consecuencias o se examinan

ejemplos particulares sobre las afirmaciones que son presentadas.

2.2.6.2 Método de Sistematización Semirígida . Los esquemas de

las lecciones le ofrecen cierta flexibilidad al estudiante como:

poder visitar ejercicios resueltos, la ayuda, visitar otras lecciones

en cualquier momento; pero restringe de otras maneras por

ejemplo, realizar una segunda evaluación cuando se equivoca.

2.2.6.3 Método Activo. S e t i e n e e n cuenta la participación del

estudiante. El método se convierte en un recurso de activación e

incentivo para que el estudiante sea quien actúe y realice un

auténtico aprendizaje. Se convierte el programa en un orientador,

guía, incentivador y no solo en un transmisor del saber.

2.2.6.4 Método Sintético . Se forma de un todo (El conocimiento

del Álgebra Booleana), utilizando la unión de varios elementos (Las

lecciones y sus respectivos módulos).

2 . 2 . 7 M a n e j o d e l C o l o r . Se maneja con buen gusto para no a gotar,

se busca siempre despertar la atención e interés del usuario, ya

que el ojo humano es sensible a la iluminación de los colores y


87

dependiendo de ésta así es el efecto que se puede lograr. Por lo

tanto se tiene en cuenta las incidencias psicológicas de los colores

para utilizarlos dependiendo de que se quiere despertar en el

usuario.

Los colores son eficaces si se ajustan a ciertos criterios:

1 . Poco Numerosos. Se necesita más tiempo para decodificarlos

e l c e r e b r o . L o i d e a l e s u t i l i z a r d e 5 a 7 , s i se desea utilizar

más se debe agrandar el tamaño de los objetos.

2 . Diferenciarse entre sí.

Los colores poseen sentido y se perciben como lo indica el Cuadro

4.
88

Cuadro 4. Sentido del Color.

Color Sentido

Rojo Fue r z a v i t a l a c t i v i d a d

Azul Tranquilizante

Amarillo Estimulante

Verde Estabilidad

Morado Metamorfosis

Gris Negación

Negro Negación Absoluta

Blanco Positivo

2.3 DISEÑO EDUCATIVO DEL MODULO HISTORIA

2 . 3 . 1 O b j e t i v o . E l c o n o c e r e l p o r q u é , d ó n d e y p a r a qué, surgieron

los conocimientos que poseemos, permite proyectarlos para darles

nuevas aplicaciones y tal vez llegar a nuevos conceptos. Con este

objetivo se desarrolla la lección Historia del Software Didáctico

p a r a Á l g e b r a B o o l e a n a , e n s u s d o s m ó d u l o s : Biografía de George

Boole e Historia de la Lógica donde el usuario puede conocer el

origen de este tema.


89

2.3.2 Motivación. En la lección historia, se explota la curiosidad

por lo nuevo y lo desconocido del ser humano. Se invita al usuario

a d e s c u b r i r q ue h a y d e t r á s de cada escenario que se le presenta,

conforme el usuario va explorando su curiosidad se vuelve más

ambiciosa, hasta que se logra que llegue a donde se desea.

2 . 3 . 3 E s c e n a r i o . La lección historia se desarrolla en una biblioteca

(entrada, estantes, libros), en la cual el usuario se desliza en ella

en búsqueda del conocimiento que desea adquirir. Se selecciona

como escenario la biblioteca, pues es un ambiente que motiva al

estudio, la concentración, la tranquilidad; como se desea que el

usuario se sienta, para que asimile los conceptos que se exponen.

2.4 DISEÑO EDUCATIVO DE LA LECCIÓN TEORIA BASICA.

2.4.1 Objetivo. Al desarrollar esta lección se busca que el usuario

pueda:

• Definir los conceptos de: variable booleana, ecuación

booleana, tablas de verdad, operaciones del álgebra

booleana.

• Crear tablas de verdad.


90

• Formar ecuaciones booleanas.

2.4.2 Motivación: En la lección teoría básica. Para motivar al

usuario en el módulo Variable Booleana, se usa la técnica de

c o r r e l a c i ó n c o n lo real donde se establece una relación entre el

concepto de Variable Booleana y conceptos ya aprendidos ó

experiencias vividas por el usuario; dándole así un sentido de

realidad al concepto que se quiere enseñar, Variable Booleana.

En los módulos: Op e r a c i o n e s d e l á l g e b r a B o o l e a n a , e c u a c i o n e s

Booleanas y Tablas de Verdad; se motiva al usuario mediante la

experimentación. Una vez se le da a conocer los conceptos de cada

módulo, se le insta a experimentar, a hacer algo, y así aplica los

conocimientos ya adquiridos. A la vez se utilizan prudentemente los

elogios y las censuras de acuerdo a los resultados que se obtengan

de la experimentación del usuario, ya que la tendencia del

comportamiento humano es el deseo de aprobación y de éxito, el

estudiante se es forzará por realizar lo que se le proponga de la

mejor manera.

2.4.3 Escenario. Los espacios abiertos producen sensación de

tranquilidad y relajación; propicios para tener una mejor

asimilación de los conceptos que se desean adquirir; por esta

razón se selecciona como escenario el firmamento del que se


91

destaca el color azul que inspira tranquilidad, seguridad, anhelo de

oportunidades para disfrutar de nuevos triunfos.

2.4.4 Evaluación. Como se indica en el literal 2.2.4, se manejan

cuatro niveles de co m p l e j i d a d e n l o s q u e s e p u e d e e n c o n t r a r q u i e n

va a ser evaluado. Para el módulo variable booleana y operaciones

del álgebra booleana no se hace evaluación por lo elemental del

concepto. Para los módulos tablas de verdad y formación de

ecuaciones(Ecuaciones minterms y ecuaciones maxterms) se

manejan los cuatro niveles de complejidad y estos niveles se

determinan de acuerdo al número de variables que tenga el

ejercicio, como lo indica la siguiente Tabla 10.

Tabla 10. Complejidad Ejercicios Teoría Básica


Nive l d e Numero de
Complejidad Variables
4 5
3 4
2 3
1 2

Los ejercicios que evalúan el módulo tablas de verdad le piden al

usuario formar una tabla de verdad a partir de una ecuación

booleana. Para el módulo formación de ecuaciones booleanas se

u t i l i za n ejercicios donde el usuario determina una ecuación


92

booleana a partir de una tabla de verdad. Los resultados que se

obtienen en la evaluación son almacenados en la base de datos

Estudiantes y la de la lección Teoría Básica..

2.5 DISEÑO EDUCATIVO DEL MOD ULO LECCIÓN McCLUSKEY.

2.5.1 Objetivo. Al desarrollar esta lección se busca que el usuario

pueda:

• Crear ecuaciones booleanas en la forma minterms.

• Crear una tabla de agrupamiento base para reducir una

ecuación booleana por el método de McCluskey.

• Reduci r u n a e x p r e s i ó n b o o l e a n a u t i l i z a n d o e s t e m é t o d o .

2.5.2 Motivación. En la lección McCluskey se desarrolla siempre

invitando al estudiante a participar, para que él sea quien

construya sus conocimientos y no se convierta en un simple

espectador. A m e d i d a q u e é l r e a l i z a lo que se propone, se le

incentiva con elogios no exagerados, que lo impulsan a continuar

realizando con éxito el trabajo propuesto. De esta manera el


93

estudiante aplica los conceptos aprendidos y permite así una mejor

asimilación de estos.

2 . 5 . 3 E s c e n a r i o . En la lección McCluskey se utiliza un fondo

abstracto alusivo al Álgebra Booleana, sobre el que se resaltan los

conceptos que el usuario va adquirir.

2.5.4 Evaluación. Como se indica en el literal 2.2.4, se manejan

c u a t r o n i v e l e s d e co m p l e j i d a d e n l o s q u e s e p u e d e e n c o n t r a r q u i e n

va a ser evaluado. En esta lección se asignan los niveles de

complejidad de acuerdo al número de variables que posea el

ejercicio(ver Tabla 11).

Tabla 11. Complejidad Ejercicios Simplificación Quine McClus key

NIVEL VARIABLES

1 3

2 4

3 5

4 6

Se manejan dos formas de evaluación; para el módulo expresiones

minterms, se utiliza evaluación del tipo selección múltiple. Para el


94

módulo tabla de agrupamiento se utilizan ejercicios donde el

u s u a r i o c r e a l a s ta b l a s q u e s e l e p i d e n , y para la reducción se

parte de la tabla de agrupamiento base con la que se evaluó al

usuario en ese módulo. Los resultados que se obtienen en la

evaluación son almacenados en la base de datos Estudiantes y la

de lección.

2.6 DISEÑO EDUCATIVO DE LA LECCIÓN SIMPLIFICACIÓN ALGEBRAICA.

2.6.1 Objetivos. Al desarrollar esta lección se busca que el

estudiante pueda:

• Identificar los Teoremas del Álgebra de Boole y los de

DeMorgan.

• A p l i c a r l o s t e o r e m a s d e l Á l g e b r a d e B o o l e y D e M o r g a n para

simplificar ecuaciones Algebraicas.

2.6.2 Escenario. La lección se desarrolla en medio de tonos verdes

propicios para la concentración y el estudio, producen estabilidad y

se resaltan los conceptos a estudiar en tono azul.

2 . 6 . 3 M o t i v a c i ó n . P a r a m a nt e n e r a l u s u a r i o p r e d i s p u e s t o a l o q u e

se le quiere enseñar, se le hace participe en esta lección ya sea

por ensayo y error, o por reflexión.


95

Se le propone al alumno simplificar una ecuación algebraica

u t i l i z a n d o l o s t e o r e m a s q u e s e l e m u e s t r a n a u n l a d o de la pantalla,

el usuario deja de ser un espectador para convertirse en un

participante seleccionando los teoremas que se pueden aplicar a la

ecuación propuesta ya sea por ensayo y error, o por reflexión sobre

la aplicabilidad de estos teoremas.

2.6.4 Evaluación. En esta lección se manejan los cuatro niveles de complejidad en que
se puede encontrar el usuario que va a ser evaluado, y se determina de acuerdo al
número de variables booleanas que contenga el ejercicio(Ver Tabla 9).

Tabla 12. Complejidad Ejercicios Simplificación Algebraica

NIVEL VARIABLES

1 3

2 4

3 5

4 6

P a r a e v a l u a r a l u s u a r i o e n e s t a l e c c i ó n s e l e p r o p o n e s i m pl i f i c a r u n a e c u a c i ó n
booleana, utilizando los teoremas que se exhiben al lado de ésta, el usuario procura
simplificar la ecuación con el menor número de equivocaciones posibles.

Los resultados obtenidos son almacenados en las tablas

Estudiantes y Lección_Simplificación.

2.7 DISEÑO EDUCATIVO LECCIÓN APLICACIONES.


96

2.7.1 Objetivos. En esta lección el estudiante logrará:

• Identificar cada una de las compuertas lógicas(and, or, nor,

nand, nor).

• Aprender el funcionamiento de cada una de las compuertas

lógica s .

• Representar un circuito lógico por medio de una ecuación

booleana.

• Deducir una ecuación booleana de un circuito digital.

2.7.2 Escenario. La lección se desarrolla en medio de una gama de colores verdes que
inducen a la concentración, en medio de un ambiente adecuado lleno de tranquilidad,
estabilidad donde el estudiante se siente a gusto, lo cual permite que él esté
predispuesto a conocer lo que se le va a enseñar.

2.7.3 Motivación. En esta lección se busca motivar al estudiante haciendo que participe

e n la lección, se le solicita que él llene la tabla de verdad para una ecuación booleana,

que utilice los componentes que se le ofrecen en la lección, elabore su circuito y el

software educativo le permite determinar la salida del circuito que elabore.

2 . 7.4 Evaluación. En esta lección se manejan los cuatro niveles de complejidad en que
se puede encontrar el usuario que va a ser evaluado, y se determina de acuerdo al
número de variables booleanas que contenga el ejercicio(Ver Tabla 13).
97

Tabla 13. C o m p l e j i d a d E j e r c i c i o s S i m p l i f i c a c i ó n A l g e b r a i c a

NIVEL VARIABLES

1 3

2 4

3 5

4 6
3. DISEÑO COMPUTACIONAL

3.1 DISEÑO DE LA BASE DE DATOS

Estudiantes. Esta tabla contiene la información de quienes hayan

u s a d o e l s o f t w a r e , s u s c a m p o s s o n: Código del estudiante, Nombre

del estudiante, Clave del estudiante, Puntaje Acumulado, Ultima

lección vista, Nivel de Complejidad, Estrellas Ganadas.

E j e r c i c i o s _ R e s u e l t o s . Esta tabla contiene ejercicios resueltos del

á l g e b r a b o o l e a n a p a r a c o n s u l t a s , s us c a m p o s s o n : T e m a , N i v e l d e

complejidad del ejercicio, Enunciado, Respuesta, Gráficos, Número

de Ejercicio.

Ejercicios_Propuestos. Con estos ejercicios se busca evaluar el

progreso del usuario en el aprendizaje de cada módulo, sus campos

s o n : T e m a , N i v e l de complejidad, Enunciado, Respuesta, gráfico,

Puntaje, Número de Ejercicio, Número de Variables.

L e c c i ó n _ H i s t o r i a . Contiene la información del estudiante con

respecto a la lección historia, la tabla esta definida con los


99

siguientes c a m p o s : C ó d i g o d e l Alumno. Número de veces que ha

visitado la lección.

Lección_TeoriaB. Esta tabla contiene la información del estudiante

en la lección teoría básica. Los campos que contiene son: Código

del alumno, número de veces que ha visitado la lección, puntaje

o b t e n i do en la lección, número de veces que consulta los ejercicios

resueltos del módulo, tres campos más que controla los ejercicios

que ha resuelto de cada módulo: Operaciones booleanas, tablas de

verdad y ecuaciones booleanas.

Lección_McCluskey. Esta tabla c ontiene la información del

estudiante en la lección del método de simplificación de Quine

McCluskey. Los campos que contiene son: Código del alumno,

número de veces que ha visitado la lección, puntaje obtenido la

l e c c i ó n , c o n s u l t a a e j e r c i c i o s r e s u e l t o s de l a l e c c i ó n , t r e s c a m p o s

más que controla los ejercicios que ha resuelto de cada módulo de

la lección: Expresiones Minterms, Tablas de Agrupamiento Base,

R e d u c c i ó n.

Lección_Aplicación. Esta tabla contiene la información del

e s t u d i a n t e e n l a l e c c i ó n a p li c a c i o n e s d e l á l g e b r a B o o l e a n a . L o s

campos que contiene son: Código del alumno, número de veces que

ha visitado la lección, puntaje obtenido en la lección, consulta a


100

ejercicios resueltos de la lección, tres campos más que controla los

e j e r c i c i o s q u e h a r es u e l t o d e l o s m ó d u l o s .

L e c c i ó n _ s i m p l i f i c a c i ó n . Esta tabla contiene la información del

estudiante en la lección del método de simplificación algebraica.

Los campos que contiene son: Código del alumno, número de veces

q u e h a v i s i t a d o e l m ó d u l o , p u n t a j e o b tenido en el módulo, consulta

a ejercicios resueltos del módulo: Circuitos Digitales y Ecuaciones

Booleanas.
101

3.2 DICCIONARIO DE DATOS

Tabla Estudiantes. El Cuadro 5 Describe los campos de la tabla

Estudiantes de la Base de Datos Tablas.

Cua d r o 5 . T a b l a E s t u d i a n t e s .

CAMPO TIPO DESCRIPCIÓN

Cod_Est (Llave) Alfabético Identifica al estudiante

Nom_Est Alfabético Nombre del usuario

Clave Alfabético Clave del usuario

Punt_Est Real Puntaje acumulado del usuario

Ult_Lek Alfabético Nombre de la ultima lección

vista por el usuario

Estr_Est Entero Corto Numero de estrellas ganadas

por el usuario

Niv_Est Entero Corto Nivel de complejidad en que se

encuentra el usuario
102

Tabla Ejercicios_Resueltos. El Cuadro 6 describe los campos de la

tabla Ejercicios_Resueltos de la Base de Datos Tablas.

Cuadro 6. Tabla Ejercicios_Resueltos.

CAMPO TIPO DESCRIPCIÓN

Tema Alfabético Tema relacionado con el ejercicio.

Enunciado Memo Enunciado del ejercicio

Nivel Entero Corto N i v e l d e d i fi c u l t a d d e l e j e r c i c i o .

Respuesta Memo Respuesta del ejercicio.

Gráfico Gráfico Gráfico del ejercicio si este lo tiene.

Tabla Ejercicios_Propuestos. El Cuadro 7 describe los campos de

la tabla Ejercicios_Propuestos de la Base de Datos Tablas.

Cuadro 7 . Tabla Ejercicios_Propuestos.

CAMPO TIPO DESCRIPCION

Tema Alfabético Tema relacionado con el ejercicio.

Enunciado Memo Enunciado del ejercicio.

Nivel Entero Corto Nivel de dificultad del ejercicio.


103

Respuesta Memo Respuesta d e l e j e r c i c i o .

Gráfico Gráfico Gráfico del ejercicio si este lo tiene.

Puntaje Real Puntaje que da el ejercicio.

Num_ejer Entero Corto Asigna a cada ejercicio un número.

Variables Entero Corto Número de variables que tiene el

ejercicio.

Tabla Lección_Historia. El Cuadro 8 describe los campos de la

tabla Lección_Historia de la Base de Datos Tablas.

Cuadro 8. Tabla Lección_Historia.

CAMPO TIPO DESCRIPCION

Cod_Est Alfabético Código del usuario

Num_Vist Entero Corto Número de veces que

ha visitado la lección

Lección_TeoriaB. El Cuadro 9 describe los campos de la tabla

Lección_TeoríaB de la Base de Datos Tablas.


104

Cuadro 9. Tabla Lección_TeoríaB.

CAMPO TIPO DESCRIPCIÓN

Cod_Est Alfabético Código del Usuario

N u m L e c c _ V i s t E n t e r o C o rto N ú m e r o d e V e c e s q u e h a V i s i t a d o l a

lección.

Cons_Ejer Entero Corto Número de veces que ha consultado

los ejercicios resueltos.

Num_Operac Alfabético Controla los ejercicios que ha

resuelto el usuario del tema

Operaciones Booleanas.

Num_Tablas A l f a b é tico Controla los ejercicios que ha

resuelto el usuario del tema Tablas de

Verdad.

Num_Ecuac Alfabético Controla los ejercicios que ha

resuelto el usuario del Tema

Ecuaciones Booleanas.
105

Punt_Lec Real Puntaje Obtenido en la lección

Tabla Lección_McCluskey. El Cuadro 10 describe los campos de

la tabla Lección_McCluskey de la Base de Datos Tablas.

Cuadro 10. Tabla Lección_McCluskey.

CAMPO TIPO DESCRIPCIÓN

Cod_Est Alfabético Código del Usuario

NumLecc_Vist Entero N ú m e r o d e V e c e s q u e h a V i s i t a d o la

Corto lección.

Cons_Ejer Entero Número de veces que ha consultado

Corto los ejercicios resueltos.

Num_Exp Alfabético Controla los ejercicios que ha resuelto

el usuario del módulo expresiones

Minterms

Num_Tab Alfabético C o n t r o l a l o s e j e r c i c i o s q u e h a r e s u e lto

el usuario del módulo tablas de

agrupamiento.

Num_Red Alfabético Controla los ejercicios que ha resuelto


106

el usuario del módulo reducción.

Punt_Lecc Real Puntaje obtenido en la lección.

Lección_Aplicación El Cuadro 11 describe los campos de la tabla

Lección_Aplicación de la Base de Datos Tablas.

Cuadro 11. Tabla Lección_Aplicación.

CAMPO TIPO DESCRIPCIÓN

Cod_Est Alfabético Código del usuario

NumLecc_Vist Entero Corto Número de veces que ha visitado la

Lección.

C o ns_Ejer Entero Corto Número de veces que ha

consultado

Los ejercicios resueltos.

Num_cir Alfabético Controla los ejercicios que ha

resuelto el usuario del tema

circuitos digitales.

Num_eco Alfabético Controla los ejercicios que ha


107

resuelto el usuario del tema

ecuaciones booleanas.

Punt_lecc Real Puntaje obtenido en la lección

Tabla Lección Simplificación El Cuadro 12 describe los campos de

la tabla Lección_Simplificación de la Base de Datos Tablas.

C u a d r o 1 2 . T a b l a d e l a L e c c i ó n S i m p l i f i cación.

CAMPO TIPO DESCRIPCIÓN

Cod_Est Alfabético Código del usuario.

NumLecc_Vist Entero Corto Número de veces que ha visitado la

lección.

Num_Simp Alfabético Controla los ejercicios que ha

resuelto el usuario en la lección

C o n s _ E je r Entero Corto Número de veces que ha consultado

los ejercicios resueltos.

Punt_Lecc Real Puntaje obtenido en el módulo.


108

3.3 DIAGRAMAS DE FLUJOS DE DATOS DETALLADO.

CONVENCIONES: En la definición del diagrama de flujo de datos

d e t a l l a d o s u t i l i z a m o s la siguiente convención:

: Este simboliza un proceso.

: Este simboliza un flujo de datos.

: Este simboliza un almacenamiento de datos.

: Este simboliza una fuente o destino de datos.

DIAGRAMA USUARIO
109

Identificar
Estudiante

Alumno

Seleccionar
Lección Salir

DIAGRAMA SELECCIÓN
110

Retornar
Salir

Hist Ayuda

Aplicaciones
Seleccionar
Leccion Ayuda
Simplificacion
McCluskey
Lección_I Estudiantes
TB

Simplificacion
Algebraica

DIAGRAMA HISTORIA
111

Ayuda
Retornar
Ayuda

Hist
Estudiante

Leccion_1
Salir

DIAGRAMA SELECCIONAR TEMA


112

Ayuda Ayuda
Retornar

EjercR Estudiante
Salir

Tema
Seleccionado
EjercR

Evaluacion

Evaluar

Leccion_I

E n e l d i a g r a m a L e c c i ó n _ I s e r e fi e r e a l a s t a b l a s : T e o r í a B á s i c a ,

Simplificación, Aplicación, McCluskey, según el tema seleccionado.

Procesos:

1 . Identificar: En este proceso se identifica si un usuario es nuevo

o si ya es usuario. Si es nuevo se le toman todos sus datos y

además se le pide que asigne una clave para poder ejecutar el

software. Si no es nuevo se le pide que inserte su clave para

así poder acceder al programa.


113

2 . Salir: Sale definitivamente del programa.

3 . Retornar: Retorna a la acción inmediatamente anterior.

4 . Ayuda: Este proceso el usuario selecciona la ayuda que desea,

ya sea para el manejo o aspectos del tema.

5 . Seleccionar Lección: En este proceso un usuario puede escoger

el módulo que desea seguir. Estos módulos son: Historia del

Álgebra de Boole, Teoría Bási ca del Álgebra de Boole, Método

de Simplificación Algebraica y Aplicaciones del Álgebra de

Boole.

6 . Iniciar con Tema Seleccionado (Historia del Álgebra de Boole,

Teoría Básica del Álgebra de Boole, Método de Simplificación

Algebraica, Método de S i m p l i f i c a c i ón de McCluskey y

Aplicaciones del Álgebra Boole): En este proceso se exhibe la

información del módulo seleccionado.

7 . Evaluar: En este proceso se hace un seguimiento del

aprendizaje del usuario por medio de proponerle ejercicios de

tema seleccionado para que los resuelva.


114

8 . Ejercicios propuestos: En este proceso se le brinda al usuario la

opción de observar ejercicios del módulo elegido resueltos


4. IMPLEMENTACION DEL SOFTWARE

4.1 LENGUAJE UTILIZADO

E l l e n g u a j e q u e s e u t i l i z a p ara la elaboración de este proyecto es

Delphi 5, es un lenguaje visual orientado a objetos que hereda

todas las ventajas de Object Pascal y ofrece una gran flexibilidad

para el desarrollo rápido de aplicaciones.

T a m b i é n p e r m i t e l a c r e a c i ó n e i n s t a l a c i ó n de componentes visuales

y sirve para el diseño de interfaces gráficas de usuario.

Se selecciona este lenguaje porque es el que más se adapta a

nuestras necesidades, es potente en la creación y manejo de

o b j e t o s y o f r e c e v e n t a j a s a n t e o t r o s l e n g u a j e s v i suales por poseer

una gran cantidad de componentes, para desarrollo de todo tipo de

aplicaciones.
116

4.2 JERARQUÍA DE CLASES

TCustonControl

TEntrada TEntradaB TEntradaC TEntradaD

TEntradaE TEntradaF

OperadorOr OperadorAnd OperadorNand OperadorNor

OperadorNot

4.3 CLASES

4.3.1 L A C L A S E T c u s t o m C o n t r o l . La clase TcustomControl es

una c l a s e a b s t r a c t a y e s e l nodo principal de la jerarquía de

clases, de esta se derivan otras clases como: TOperadorAnd,

TOperadorNand, TOperadorNot, TOperadorOr, ToperadorNor,

TEntradaA, TEntradaB, TEntradaC, TEntradaD, TEntradaE,

TentradaF.
117

4.3.2 LA CLASE TOperadorAnd.

Representa la compuerta And de un circuito eléctrico, puede tener

de una a seis entradas y produce una salida cuyo resultado es la

operación lógica And sobre sus respectivas entradas.

4.3.2.1 Propiedades de la clase

FEntrada. Entero. Contiene el número de entradas de la

compuerta.

FSalida. Cadena. Guarda la salida de la compuerta.

FNumP. Entero. Número que ocupa la compuerta en la pantalla.

FTipo. Tipo. Contiene que clase de compuerta And es de acuerdo a

su número de entradas.

F ConecS. Booleana. Indica si la compuerta esta o no conectada a

otra compuerta.

FEntrada1, FEntrada2, FEntrada3, FEntrada4, FEntrada5,

FEntrada6. Cadena. Indica que componente entro a la compuerta.


118

FNEntrada1, FNEntrada2, FNEntrada3, FNEntrada4,

FNEn t r a d a 5 , FNEntrada6. Cadena. Contiene el nombre del

componente que sirvió de entrada a la compuerta.

FConect1, FConect2, FConect3, FConect4, FConect5, FConect6.

Bolean. Indica si una entrada esta o no conectada.

4.3.2.2 Métodos de la clase

P r o c e s s C l ic k : E n t i e m p o d e e j e c u c i ó n a l d a r c l i c d e r e c h o p e r m i t e

seleccionar en un menú el número de entradas para la compuerta,

e inicializa las propiedades tipo y entradas.

Paint: Hace el dibujo del objeto fuente es decir la compuerta AND.

V a l i d a r . Permite en el diseño controlar que la compuerta tenga de

dos a seis entradas.

ClicK. Muestra la compuerta en la pantalla.

E s c o g T i p o : Durante el diseño permite cambiar la propiedad tipo de

la compuerta y automáticamente cambia la propiedad Entrada.

S a l i r D . A s i g na l a s a l i d a a l a p r o p i e d a d F s a l i d a .
119

4.3.2.3 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

dé sobre una zona sensible del elemento, si esto se cumple se

a c t u a l i z a n l a s p r o p i e d a d e s , r e l a c i o n a d a s a c a d a zo n a s e n s i b l e .

MouseMove: Responde al movimiento del señalador del ratón, al

mover el señalador.

4.3.3 LA CLASE T O p e r a d o r N A n d . Representa la compuerta

NAnd de un circuito eléctrico, puede tener de una a seis entradas y

p r o d u c e u n a s a l i d a c u y o r e s u l t a do es la operación lógica NAnd

sobre sus respectivas entradas.

4.3.3.1 Propiedades de la clase

FEntrada. Entero. Contiene el número de entradas de la

compuerta.

FSalida. Cadena. Guarda la salida de la compuerta.

F N u m P . E n t e r o . N ú m e r o q u e o c u p a l a c o m p ue r t a e n l a p a n t a l l a .
120

F T i p o . Tipo. Contiene que clase de compuerta NAnd es de acuerdo

a su número de entradas.

F C o n e c S . Booleana. Indica si la compuerta esta o no conectada a

otra compuerta.

FEntrada1, FEntrada2, FEntrada3, FEntrada4, FEntrada5,

F E n tr a d a 6 . C a d e n a . I n d i c a q u e c o m p o n e n t e e n t r o a l a c o m p u e r t a .

FNEntrada1, FNEntrada2, FNEntrada3, FNEntrada4,

FNEntrada5, FNEntrada6. Cadena. Contiene el nombre del

componente que sirvió de entrada a la compuerta.

F C o n e c t 1 , F C o n e c t 2 , F C o n e c t 3 , F C o n e c t 4 , FConect5, FConect6.

Bolean. Indica si una entrada esta o no conectada.

4.3.3.2 Métodos de la clase

ProcessClick: En tiempo de ejecución al dar clic derecho permite

seleccionar en un menú el número de entradas para la compuerta,

e inicializa las propi edades tipo y entradas.

Paint: Hace el dibujo del objeto fuente es decir la compuerta

NAND.
121

V a l i d a r . Permite en el diseño controlar que la compuerta tenga de

dos a seis entradas.

Click. Muestra la compuerta en la pantalla.

E s c o g T i p o : D u r a n t e e l d i s e ño permite cambiar la propiedad tipo de

la compuerta y automáticamente cambia la propiedad Entrada.

SalirD. Asigna la salida a la propiedad Fsalida.

4.3.3.3 Eventos Utilizados en la clase

M o u s e D o w n : r e s p o n d e a u n c l i c k d e l r a t ó n . E v a l ú a q u e e l c l i c k se

dé sobre una zona sensible del elemento, si esto se cumple se

actualizan las propiedades, relacionadas a cada zona sensible.

MouseMove: Responde al movimiento del señalador del ratón, al

mover el señalador.

4.3.4 LA CLASE T O p e r a d o r O r . R e p r e s e n t a la compuerta Or de

un circuito eléctrico, puede tener de una a seis entradas y produce

una salida cuyo resultado es la operación lógica Or sobre sus

respectivas entradas.
122

4.3.4.1 Propiedades de la clase.

FEntrada. Entero. Contiene el número de entradas de la

compuerta.

FSalida. Cadena. Guarda la salida de la compuerta.

FNumP. Entero. Número que ocupa la compuerta en la pantalla.

FTipo. Tipo. Contiene que clase de compuerta Or es de acuerdo a

su número de entradas.

F C o n e c S . Booleana. Indica si la co mpuerta esta o no conectada a

otra compuerta.

FEntrada1, FEntrada2, FEntrada3, FEntrada4, FEntrada5,

FEntrada6. Cadena. Indica que componente entro a la compuerta.

FNEntrada1, FNEntrada2, FNEntrada3, FNEntrada4,

FNEntrada5, FNEntrada6. Cadena. C o n t iene el nombre del

componente que sirvió de entrada a la compuerta.

FConect1, FConect2, FConect3, FConect4, FConect5, FConect6.

Bolean. Indica si una entrada esta o no conectada.


123

4.3.4.2 Métodos de la clase

P r o c e s s C l i c k : E n t i e m p o d e e j e c u c i ó n a l d a r clic derecho permite

seleccionar en un menú el número de entradas para la compuerta,

e inicializa las propiedades tipo y entradas.

Paint: Hace el dibujo del objeto fuente es decir la compuerta Or.

V a l i d a r . P e r m i t e e n e l d i s e ñ o c o n t r o l a r q u e l a c o m p u e r ta tenga de

dos a seis entradas.

ClicK. Muestra la compuerta en la pantalla.

E s c o g T i p o : Durante el diseño permite cambiar la propiedad tipo de

la compuerta y automáticamente cambia la propiedad Entrada.

SalirD. Asigna la salida a la propiedad Fsalida.

4.3.4.3 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

dé sobre una zona sensible del elemento, si esto se cumple se

actualizan las propiedades, relacionadas a cada zona sensible.


124

MouseMove: Responde a l m o v i m i e n t o d e l s e ñ a l a d o r d e l r a t ó n , a l

mover el señalador.

4.3.5 LA CLASE TOperadorNor.

Representa la compuerta Nor de un circuito eléctrico, puede tener

de una a seis entradas y produce una salida cuyo resultado es la

o p e r a c i ó n l ó g i c a N o r s o b r e sus respectivas entradas.

4.3.5.1 Propiedades de la clase

FEntrada. Entero. Contiene el número de entradas de la

compuerta.

FSalida. Cadena. Guarda la salida de la compuerta.

FNumP. Entero. Número que ocupa la compuerta en la pantalla.

F T i p o . T i p o . Contiene que clase de compuerta Nor es de acuerdo a

su número de entradas.

F C o n e c S . Booleana. Indica si la compuerta esta o no conectada a

otra compuerta.
125

FEntrada1, FEntrada2, FEntrada3, FEntrada4, FEntrada5,

FEntrada6. Cadena. Indica que componente entro a la compuerta.

FNEntrada1, FNEntrada2, FNEntrada3, FNEntrada4,

FNEntrada5, FNEntrada6. Cadena. Contiene el nombre del

componente que sirvió de entrada a la compuerta.

FConect1, FConect2, FConect3, FConect4, FConect5, FConect6.

B o l e a n . I n d i c a si u n a e n t r a d a e s t a o n o c o n e c t a d a .

4.3.5.2 Métodos de la clase

ProcessClick: En tiempo de ejecución al dar clic derecho permite

seleccionar en un menú el número de entradas para la compuerta,

e inicializa las propiedades tipo y entradas.

Paint: Hace el dibujo del objeto fuente es decir la compuerta Nor.

V a l i d a r . Permite en el diseño controlar que la compuerta tenga de

dos a seis entradas.

ClicK. Muestra la compuerta en la pantalla.


126

E s c o g T i p o : Durante el diseño permite cambiar la propiedad tipo de

la compuerta y automáticamente cambia la propiedad Entrada.

SalirD. Asigna la salida a la propiedad Fsalida.

4.3.5.3 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

d é s o b r e u n a z o n a s e n s i b l e d e l e l e me n t o , s i e s t o s e c u m p l e s e

actualizan las propiedades, relacionadas a cada zona sensible.

MouseMove: Responde al movimiento del señalador del ratón, al

mover el señalador.

4.3.6 LA CLASE TOperadorNot. Representa la compuerta Not de

u n c i r c u i t o e l é c t rico, puede tener de una a seis entradas y produce

una salida cuyo resultado es la negación de su entrada.

4.3.6.1 Propiedades de la clase

FEntrada. Entero. Contiene el número de entradas de la

compuerta.
127

F S a l i d a . C a d e n a . G u a r d a l a s a l i d a d e l a c o m p ue r t a .

FNumP. Entero. Número que ocupa la compuerta en la pantalla.

FTipo. Tipo. Contiene que clase de compuerta And es de acuerdo a

su número de entradas.

F C o n e c S . Booleana. Indica si la compuerta esta o no conectada a

otra compuerta.

F E n t r a d a 1 . Cade n a . I n d i c a q u e c o m p o n e n t e e n t r o a l a c o m p u e r t a .

F N E n t r a d a 1 . Cadena. Contiene el nombre del componente que

sirvió de entrada a la compuerta.

FConect1. Boolean. Indica si una entrada esta o no conectada.

4.3.6.2 Métodos de la clase

P a i n t : Hace el di b u j o d e l o b j e t o f u e n t e e s d e c i r l a c o m p u e r t a N o t .

Validar. Permite en el diseño controlar que la compuerta tenga una

entrada.
128

ClicK. Muestra la compuerta en la pantalla.

SalirD. Asigna la salida a la propiedad Fsalida.

4.3.6.3 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

dé sobre una zona sensible del elemento, si esto se cumple se

actualizan las propiedades, relacionadas a cada zona sensible.

MouseMove: R e s p o n d e a l m o v i m i e n t o d e l s e ñ a l a d o r d e l ratón, al

mover el señalador.

4.3.7 LA CLASE TEntradaA, TEntradaB, TEntradaC,

T E n t r a d a D , T E n t r a d a E , T E n t r a d a F . Representa las entradas a una

de las compuertas del circuito lógico.

4.3.7.1 Propiedades de la clase

FNumP. Entero. Número que ocupa la E ntrada en la pantalla.


129

FConect1, FConect2, FConect3, FConect4, FConect5, FConect6.

Boolean. Indica si una entrada está o no conectada.

4.3.7.2 Métodos de la clase

Paint: Hace el dibujo del objeto fuente es decir la Entrada.

C l i c K . M u e s t r a l a e nt r a d a e n l a p a n t a l l a .

4.3.7.3 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

dé sobre una zona sensible del elemento, si esto se cumple se

actualizan las propiedades, relacionadas a cada zona sensible.

MouseMove: Responde al movimiento del señalador del ratón, al

mover el señalador.

4.3.8 LA CLASE T L í n e a . Representa las líneas que unen los

componentes del circuito lógico.

4.3.8.1 Métodos de la clase

Paint: Hace el dibujo del objeto fuente es d ecir la Entrada.


130

ClicK. Muestra la entrada en la pantalla.

4.3.8.2 Eventos Utilizados en la clase

MouseDown: responde a un click del ratón. Evalúa que el click se

dé sobre una zona sensible del elemento, si esto se cumple se

actualizan las propiedad es, relacionadas a cada zona sensible.

MouseMove: Responde al movimiento del señalador del ratón, al

mover el señalador.
5. RECOMENDACIONES

A partir de la experiencia obtenida en el desarrollo del presente

trabajo de investigación, los autoras recomiendan:

Continuar el uso de la Enseñanza Asistida por Computadoras

incluyendo otros temas bases de la ingeniería. Trabajar en la

creación de herramientas que permitan el uso de la Inteligencia

Artificial en este proceso.

Validar la e f e c ti v i d a d del software elaborado mediante su

introducción en la carreras donde se aborde su contenido.

Desarrollar una herramienta que permite generar un mayor número

de ejercicios para evaluar al usuario en las lecciones Aplicaciones

y Simplificación algebraica.
6. CONCLUSIONES

El proceso planeación y desarrollo del trabajo de investigación,

nos ha permitido a la las autoras arribar a las conclusiones

siguientes:

• El uso de la Enseñanza Asistida por Computadoras (EAC)

e n e l d e s a r r o l l o d e l p r o c e s o d e e n s e ñ a n z a - aprendizaje de

una asignatura o disciplina conlleva la realización de un

trabajo planificado y con la participación de un equipo

multidisciplinario que permita integrar en forma de sistema

los aspectos pedagógicos, sicológicos, metodológicos, el

contenido de la asignatura y los recursos informáticos.

• El uso del software por los estudiantes de ingeniería les

proporciona una herramienta de soporte para el auto

estudio del Álgebra de Boole, le permite crear circuitos

l ó g i c o s h a l l a r s u e x p resión correspondiente y los instruye

para llevar a una forma simple pero equivalente una

expresión booleana.
133

• La presentación amigable, clara y amena del software

Didáctico Aprenda Álgebra Booleana, le permite al usuario

u n a m e j o r a s i m i l a c i ó n d e l o s c o n c e p tos básicos del álgebra

de Boole.
GLOSARIO

Animación : movimiento de un dibujo o gráfica a través de la


pantalla. Se emplea para efectos demostrativos de la evolución de
u n f e n ó m e n o e n e l t i e m p o , o s i m u l a r e l d e s p l a z a mi e n t o d e u n
objeto así como el lograr efectos visuales. Generalmente se logra
mediante la programación del dibujo rápido de un objeto gráfico,
seguido del borrado de las partes que cambian y el volverlo a
dibujar.

A p r e n d i z a j e A s i s t i d o p o r C o m p u t a d o r a : enfoque de la educación
basada en computadora en la cual se hace énfasis en el sujeto que
incrementa su conocimiento, sin que a este se le enseñe o muestre
explícitamente, el sujeto lo tiene que inferir o apropiarselo por sí
mismo, empleando para ello alguno s programas didácticos de
computadora. El proceso ya no es de inculcación de información
sino de capturar conocimiento. Las técnicas de descubrimiento y la
programación en LOGO se señalan como buenos exponentes de
e s t e e n f o q u e . S i n e m b a r g o e s t e e n f a s i s p u e de darsele a cualquier
modalidad de la Enseñanza por Computadora, por lo que se le toma
como sinónimo aunque en el fondo no lo sea.

A r c h i v o ( " f i l e " ): I n f o r m a c i ó n ( o c o n j u n t o d e d a t o s e s t r u c t u r a d o s )
h o m o g é n e a a l m a c e n a d a e n u n d i s c o o d i s k e t t e e i d e n t i f i c ad o s p o r
un nombre. Está formado por un conjunto de registros ("records")
que dan la información acerca de un individuo y están etiquetadas.
Una base de datos consiste de un grupo estructurado y relacionado
de archivos.

B a s e d e d a t o s : Es la organización y f o r m a d e m a n e j o d e u n a
colección de datos (banco de datos) interrelacionados,
estructurados y almacenados en disco (en archivos manejados de
manera transparente para el usuario), dentro de un conjunto sin
r e d u n d a n c i a s p e r j u d i c i a l e s e i n n e c e s a r i a s p a r a s u c onsulta y
actualización. Frecuentemente bajo este nombre se quiere dar a
entender al sistema manejador de una base de datos (DBMS)
consistente en el paquete que permite entrar, actualizar, recuperar,
135

organizar, consultar, visualizar y generar reportes sobre la base de


datos.

Cadena : U n o o v a r i o s c a r a c t e r e s a l f a n u m é r i c o s o e s p e c i a l e s ,
incluyendo el espacio o blanco (en este caso tiene que estar
encerrados entre comillas, para saber el comienzo y fin de la
c a d e n a ) . E s s i m p l e m e n t e l a s e c u e n c i a d e l o s c ó d i g o s de esos
caracteres y no representa un valor o cantidad, por lo que puede
ser utilizada como nombre de una variable o instrucción en un
lenguaje de cómputo (siempre que se respete la sintaxis del
l e n g u a j e ) o c o m o u n d a t o s o b r e e l c u a l s e v a e n p r i n c i p i o a realizar
una operación no numérica como ordenar, consultar, comparar etc.

Categorías del aprendizaje : Son los cinco dominios de


capacidades que un estudiante puede aprender, tal y como lo
propuso Gagné: 1) habilidades intelectuales; 2) estrategias
c o g n i t i va s ; 3 ) i n f o r m a c i ó n v e r b a l ; 4 ) h a b i l i d a d e s m o t o r a s ; 5 )
actitudes.

C ó d i g o : es la representación de un caracter o dígito en la


computadora para su uso.

Código absoluto o código objeto es cuando este conjunto de


c a r a c t e r e s r e p r e s e n t a n l a s i n s t r u c c i o n e s e je c u t a b l e s d i r e c t a m e n t e
por la computadora. El código ASCII (American Standard Code for
Information Interchange) es una representación homologada de los
caracteres alfanuméricos y especiales que se usan en los lenguajes
de computadora mediante una secuencia de 8 bits (Byte).

Código Binario : representación de cualquier número real mediante


bits en el sistema base dos o sistema (numérico) binario.

C ó d i g o F u e n t e : Es el conjunto de instrucciones de un programa


escrito en un lenguaje de alto nivel y que ya se encuentran en la
computadora o alguno de sus periféricos en una representación
homologada como la ASCII, pero que no es directamente ejecutable
136

por la computadora y que necesita de una traducción


(interpretación o compilación).

C o m a n d o : Es un elemento d e u n l e n g u a j e s e n c i l l o d e p r o g r a m a c i ó n
que consiste en órdenes o comandos eventualmente modificados; o
precisados por una secuencia de parámetros.

Computadora: Conjunto de dispositivos, generalmente


e l e c t r ó n i c o s , q u e p e r m i t e n p r o c e s a r y a l m a c e n a r i n f o r m ación
siguiendo las instrucciones de un programa.

Cursor: Es un marcador que indica el lugar en la pantalla en el


cual espera una entrada por parte del usuario. El cursor
generalmente es un guión que parpadea pero puede ser una línea,
un cuadrado, una fle cha, dependiendo de la computadora. El cursor
se puede mover tanto por las teclas de flecha como por algún
dispositivo externo como el ratón.

Dato : Cualquier información utilizada por un programa tanto


numérica como alfabética que no tiene algún signific ado en sí, si no
dentro de un contexto con otros datos con los que se relaciona
(información).

Diagrama de Flujos: Es un diagrama que muestra la secuencia de


las instrucciones de un programa con todo y sus ramificaciones y la
lógica necesaria para las ramificaciones, repeticiones, etc.

D i r e c t o r i o : Lista de los archivos almacenados en un disco u otro


dispositivo periférico.

Disco duro : Disco rígido de plástico con sustrato magnético que


almacena una gran cantidad de información. Tiene que estar al
137

vacío y generalmente es fijo o no reem plazable dentro de una


computadora.

D o c u m e n t a c i ó n : Conjunto de manuales y comentarios en los


programas de cómputo que explican los objetivos, el diseño, el uso
c o r r e c t o , l a s a p l i c a c i o n e s , e j e m p l o s y p o s i b l e s e r r o r e s d e un
"software".

E j e r c i t a c i ó n y p r á c t i c a ( " D r i l l a n d P r a c t i c e " ): Modalidad de la


enseñanza asistida por computadora que pretende el aprendizaje
de conocimientos o habilidades a través de la realización de
e j e r c i c i o s y l a v i s u a l i z a c i ó n d e l a s r e p u e s t a s a p r o pi a d a s .

E n s e ñ a n z a a s i s t i d a p o r c o m p u t a d o r a ( E A C ): Referida también
como instrucción asistida por computadora, define el campo de
metodologías, técnicas, y programas que empleando la
computadora pretenden enseñar algo a un estudiante. De alguna
manera auxi lian o sustituyen al maestro proveyendo información,
ejercicios, demostrando conceptos y convirgiendo las ideas dentro
de un modo interactivo que requiere respuesta del estudiante y que
a su vez modula la dirección de la instrucción.

Estrategia del c o n t ro l del aprendizaje : Procedimientos


instruccionales que permiten a los estudiantes de un "courseware"
tomar decisiones sobre las lecciones, las actividades y exámenes a
seguir.

Herramienta : Paquete de cómputo que ofrece todas las facilidades


para desempeñ ar una actividad sin tener que programar la
computadora. Por ejemplo el procesador de textos ofrece todas las
facilidades de maquinilla y en general de producir textos. Se puede
aprender algo indirectamente empleando herramientas, por ejemplo
contabilidad empleando una hoja electrónica de cálculo. Así
indirectamente mejoran sus facultades de descubrimiento, decisión
y deducción. Se contrapone a la enseñanza o instrucción asistida
por computadora cuyo énfasis y métodos se dedican a la
138

i n c u l c a c i ó n d e l c o n o c i mi e n t o y h a b i l i d a d e s , p e r o s o b r e t o d p o r q u e e l
contenido explícitamente trata sobre el tema a aprender, mientras
que la herramienta es libre de contenido.

Iconos : S í m b o l o s v i s u a l e s e m p l e a d o s p a r a r e p r e s e n t a r o p c i o n e s
dentro de un menú o datos.

Instrucción As i s t i d a p o r C o m p u t a d o r a : Sinónimo de Enseñanza


Asistida por Computadora, muy conocida por sus siglas en Inglés:
CAI.

Interacción : Forma de operar con un lenguaje de computqadora en


el cual durante la ejecución el usuario puede entrar datos,
información y eventualmente instrucciones.

I n t e r a c t i v o o c o n v e r s a c i o n a l: f o r m a d e c o m u n i c a c i ó n d i a l o g a l o =
bidireccional entre el hombre y la computadora.

L ó g i c a B i n a r i a o A l g e b r a d e B o o l e ( B o o l e a n a ) : Sistema lógico y
a l g e b r a i c o e n e l q u e ú n i c a m e n t e s e t i e n e n d o s valores posibles:
Verdadero y Falso, a veces tambien se maneja como 0 y 1.
Shannon aplicó esta lógica a los circuitos de conmutación y creo lo
que se conoce como Circuitos Combinatorios. En esta lógica solo
h a y d o s c o n s t a n t e s 0 o 1 , y t o d a s l a s v a r i a b l e s y expresiones que
se puedan armar pueden valeer sólo 0 o 1. Los circuitos de una
computadora se basan en esta lógica y en la teoría de autómatas.
No confundir con sistema binario.

Memoria : Parte de una computadora donde se almacena datos o


instrucciones. C uando ésta es de tipo permanente se le llama ROM
y cuando es temporal o volátil se le llama RAM. Cuando está dentro
de la computadora y trabaja directamente con el CPU se le llama
memoria principal, cuando es externa a la computadora y trabaja
directamente con la memoria principal, se le llama memoria
secundaria.
139

Pantalla : S e e m p l e a e s t e t é r m i n o e n d o s s e n t i d o s , e l p r i m e r o c o m o
sinónimo de monitor o "display", pero dentro del contexto de
enseñanza asistida por computadora como la información que en un
momento dado se presenta en el monitor ante los ojos del
estudiante. Aunque es deseable que un marco quepa en una
p a n t a l l a n o e s i n d i s p e n s a b l e . M o n i t o r " b i t- m a p " : E s u n t i p o d e
monitor o pantalla de display que permite direccionar cada uno de
l o s p u n t o s d e la pantalla, llamados "pixel". Esto se contrasta con
los monitores de rastreo en el cual solamente pueden direccionar
una línea completa y la gráfica se forma barriendo todas las líneas
d e l m o n i t o r d e a r r i b a h a c i a a b a j o . E s c l a r o q u e l o s m o n i t o r e s " b i t-
map" t i e n e n u n m a y o r p o d e r d e r e s o l u c i ó n .

Paginación : T é c n i c a d e l " c o u r s e w a r e " q u e c o n t r a s t a c o n e l b a r r i d o


en la cual cada imagén llamada "pantalla" es reemplazada
enteramente por otra.

P a q u e t e o S o f t w a r e d e A p l i c a c i ó n : Conjunto de Programas que


r e a l i z a n o satisfacen a toda una aplicación, por ejemplo: el
procesador de textos, la hoja electrónica de cálculo, los sistemas
manejadores de bases de datos etc.

Periféricos : E s c u a l q u i e r d i s p o s i t i v o f í s i c o ( d e " h a r d w a r e " ) d e


e n t r a d a , s a l i d a y a l m a c e n a j e q u e p uede ser conectado a una
computadora.

P r o g r a m a : Un conjunto de instrucciones escritas en un lenguaje de


computadora que tienen un principio y un fin y realizan una tarea
específica.

Ratón : D i s p o s i t i v o d e e n t r a d a e m p l e a d o p a r a m o v e r e l c u r s o r
dentro de la pantalla y eventualmente para seleccionar alguna
opción. El ratón se desplaza sobre una superficie plana cuyo
movimiento es repetido por el cursor en la pantalla.
140

R e t r o a l i m e n t a c i ó n ( " f e e d b a c k " ): conjunto de acciones y mensajes


que genera un "coursewa re" como resultado inmediato de una
petición o respuesta del estudiante.

Sistema Binario o sistema numérico binario : Se refiere al


sistema de representación de números y a su aritmética, cuya base
e s d o s . E n e s t e s i s t e m a t o d o s l o s d í g i t o s d e u n n ú m e r o c ualquiera
son formados exclusivamente con 0 ó 1. No confundir con lógica
binaria o álgebra de Boole. También se emplea para indicar una
decisión que involucra dos alternativas posibles, como por ejemplo
verdadero y falso.

S i s t e m a o p e r a t i v o : C o n j u n t o d e p r ogramas básicos de cualquier


computadora que le permiten efectuar sus funciones primarias - y
trabajar con sus periféricos.

"Software" : Cualquier programa, paquete, o sistema que contiene


instrucciones para que una computadora haga algo.

T e c l a s d e f u n c ión : C o n j u n t o d e t e c l a s e s p e c i a l e s n u m e r a d a s q u e
no tienen una definición fija y que por lo tanto pueden ser
utilizadas por un programa para facilitar la realización rápida de
algunas instrucciones.

Variables: Nombres o etiquetas dados a lugares en la memoria de


la computadora que contienen datos (valores) en un programa,
dado que son llamados por un programa como etiquetas el valor
puede cambiar.

Vector : U n a l i s t a o r d e n a d a d e v a r i a b l e s d e l m i s m o t i p o ( n o m b r e s ,
números, etc.).

V e n t a n a s : Es una porción encuadrada de la pantalla que es


manejada independientemente de la información desplegada en el
141

fondo de la pantalla. Las pantallas se sobreponen ("overlay") y


pueden desplazarse dentro de la pantalla o cambiar el tamaño y
forma.

BILIOGRAFIA

APPLE, M.. Maestros y Textos. Barcelona, España, Paidós MEC,

1989.

B E C K E R , H e n r y J . U s i n g C o m p u t e r F o r I n s t r u c t i o n . Byte (USA):
1 4 9- 1 6 2 F e b r e r o 1 9 8 7 .
142

BOONET, A., y otros. An ICAI System For Teaching Derivates in


M a t h e m a t i c s . C o m p u t e r i n E d u c a t i o n . L a u s a n a , S u i z a : 1 3 5 - 142
Julio 1981.

BRUGUÉS, Amadeu. Desarrollo A Toda Máquina. Byte (Madrid,


E s p a ñ a ) 8 : 5 4 -5 6 J un i o 1 9 9 5 .

CABRALES VERGEL, Gustavo. Metodología Para La Elaboración


d e A n t e p r o y e c t o s y P r o y e c t o s d e I n v e s t i g a c i ó n . C o r poración
UNICOSTA. Barranquilla. 1995. 2 Ed.

CUESTA, L, Gil, PADILLA, A. Schaum: Electrónica Digital.


Álgebra de Boole, Circuitos Combinacionales y Secuenciales,
A u t o m a t i s m o s , M e m o r i a s . Mexico: McGraw Hill. 1 9 9 3 .

DIEUDONNÉ, Jean. La Abstracción En Matemática Y La Evolución


D e l A l g e b r a . E n Piaget, J., y otros. La Enseñanza de las
M a t e m á t i c a s . M a d r i d , E s p a ñ a , A g u i l a r , 1 9 7 1 . p 4 2 -4 6 .

FEDELMAN, Robert S. Psicología Con Aplicaciones Para Ibero


América. Mexico: McGraw Hill. 1996.

GARCÍA, D[24] G U T IÉRREZ, J., y otros. Tratamiento De Las

Interacciones Del Alumno En Un Sistema Tutor Inteligente. IV

Congreso Iberoamericano de Inteligencia Artifical. Chile, 1994.

GOOD, Thomas L. BROPHY, Jere. Psicología Educativa


C o n t e m p o r á n e a . 5 E d . México: McGraw Hi ll. 1 9 9 6 .

HERRERA S., René, y otros. La Informática En La Educación


C u b a n a . C I D . E l e c t r ó n i c a y P r o c e s o d e D a t o s e n C u b a . Habana,
Cuba, No. 2, 1992.

KENDALL. Keneth. Análisis y Diseño De Sistemas. México:


Prentice Hall. 1995.

LERENA, C.. Materiales De Sociología De La Educación Y La

Cultura. Madrid, España, Grupo Cultural Zero, 1985.


143

LOWD, Beth. The Right Ways To Use Computer. The Computing


T e a c h e r (USA) : 4 - 5 O c t u b r e 1 9 8 6 .

MORRIS, Charles. Introducción a la Psicología. 7 Ed. México:


P r e n ti c e H a l l . 1 9 9 2 .

NERICE, Imideo. Hacia Una Didáctica General Dinámica. Buenos


Aires: Kapelusz. 1973.

OSCER, Dan, GROBMAN, Steve. Aprendiendo Delphi 3 En 14


Días. México: Prentice Hall. 1998.

SCHILDT, Herbert. C + + , G u í a D e A u t o e n s e ñ a n z a . 3 E d . M a d rid:


McGraw Hill. 1995.

SENN, Jmes A. Análisis y Diseño De Sistemas De Información.


México: McGraw Hill. 1995.

TOCCI. Ronald. Sistemas Digitales, Principios y Aplicaciones.


México: Prentice Hall. 1996.

UNESCO. Hacia Una Nueva Etapa De Desarrollo Educativo.


B o l e t i n. Quinta Reunión del Proyecto Principal de Educación para
América Latina y el Caribe. Santiago de Chile, Chile, 1993.

VERGEL CABRALES, Gustavo. Metodología Para La Elaboración


D e A n t e p r o y e c t o s y P r o y e c t o s D e I n v e s t i g a c i ó n . 2 E d . B a r r a n q u i lla:
Publicaciones Corporación UNICOSTA. 1995.
144

INTRODUCCION

El Software Didáctico Aprenda Álgebra de Boole es flexible y por

eso ofrece la oportunidad a la persona encargada de su

m a n t e n i m i e n t o d e r e a l i z a r m o d i ficaciones según las necesidades

que surjan y así generar nuevas aplicaciones, para esto se le

recomienda seguir las sugerencias de este manual para cumplir con

el propósito inicial de su creación.


145

En este manual de sistema se presentan c u a t r o c a p í t u l o s que

sirven de ayuda para entender el código fuente de este Software.

El primer capítulo hace referencia a los requerimientos para el

mantenimiento y ejecución de este Software.

El segundo capítulo describe las estructuras de datos, sus campos

y el flujo d e d a t o s d e t a l l a d o .

El tercer capítulo describe los procedimientos principales y muestra

el código fuente de éstos.

El cuarto capítulo muestra el árbol de directorios del programa

fuente, instaladores y archivos de ayuda.


1 . REQUERIMIENTOS

1.1 HARDWARE.

Para editar el programa se requiere un equipo compatible con

Windows, con memoria RAM de 32 MB. Un procesador de 133 Mhz

o m á s , M o u s e , i m p r e s o r a , u n i d a d de C D - ROM, espacio en disco

para su ejecución de 200 Mb. ó más y tarjeta de video.

1.2 SOFTWARE.

El sofware Didáctico fue creado en Delphi 5 así que para sus

actualizaciones se debe utilizar este paquete. Los gráficos se

diseñaron en Corel Draw y un ilustrador cómico.

1.3 DISEÑO EDUCATIVO.

Las modificaciones a realizar deben basarse en la fundamentación

educativa aplicada para el diseño del software, la información

sobre ésta se encuentra en el documento impreso que acompaña al

software.
2 . ESTRUCTURAS DE DATOS

2.1 MODELO ENTIDAD RELACION.

LECCION_
APLICACION
Cod_Est
Num_Lecc_Vist
Cons_Ejer
Num_cir
LECCION_ Num_ecu
TEORIAB EJERCICIOS_
Punt_Lecc
Cod_Est
Num_Lecc_Vist RESUELTOS
Cons_Ejerc
Num_operac Enunciado
Num_Tablas Nivel
Num_Ecuac ESTUDIANTES Respuesta
P u n t _L e c c Grafico
Num_Ejer
Cod_Est
Num_Est
Clave
Punt_Est LECCION_
Ult_Lecc SIMPLIFICACION
Estr_Est Cod_Est
Niv_Est Num_Lecc_Vist
EJERCICIOS_ Cons_Ejerc
PROPUESTOS Punt_Lecc
Tema LECCION_ Num_Simp
Enunciado McCLUSKEY
Nivel Cod_Est
Respuesta NumLecc_Vist
Gráfico Cons_Ejerc
Puntaje LECCIÓN_
Num_Exp
Num_Ejerc HISTORIA Num_Tab
Variables Cod_Est
Num_Red
Num_Vist
Punt_Lec
148

2.2 DICCIONARIO DE DATOS

2.2.1 Tabla Estudiantes

Definición de los campos.

Campo 1.

Nombre. Cod_Est.

Descripción. Identifica al estudiante mediante un número único.

Tipo. Alfabético.

Campo 2.

N o m b r e . Nom_est.

Descripción. Nombre del estudiante.

Tipo. Alfabético.

Campo 3.
149

Nombre. Clave secreta del usuario.

Descripción. Guarda la clave del usuario.

Tipo. Alfabético.

Campo 4.

Nombre. Punt_Est.

D e s c r i p c i ó n . P un t a j e a c u m u l a d o d e l u s u a r i o e n l a s e v a l u a c i o n e s

realizadas.

T i p o . Real.

Campo 5.

Nombre. Ult_lecc.

Descripción. Nombre de la última lección visitada.

Tipo. Alfabético.
150

Campo 6.

N o m b r e . Niv_Est.

D e s c r i p c i ó n . N i v e l d e c o m p l e j i d a d e n e l q u e s e e n c u e ntra el

estudiante.

Tipo. Entero corto.

2.2.2 Tabla Ejercicios Resueltos

Campo 1.

Nombre. Tema.

Descripción. Tema relacionado con el ejercicio.

Tipo. Alfabético.

Campo 2.

Nombre. Enunciado.

Descripción. Enunciado del ejercicio.


151

Tipo. Memo.

Campo 3 .

Nombre. Nivel.

Descripción. Nivel de dificultad del ejercicio.

Tipo. Entero Corto.

Campo 4.

Nombre. Respuesta.

Descripción. Respuesta del ejercicio.

Tipo. Memo.

Campo 5.

Nombre. Grafico.

Descripción. Grafico del ejercicio si este lo tiene.


152

T ipo. Gráfico.

4.3.3 Tabla Ejercicios Propuestos

Campo 1.

Nombre. Tema.

Descripción. Tema relacionado con el ejercicio.

Tipo. alfabético.

Campo 2.

Nombre. Enunciado.

Descripción. Enunciado del ejercicio.

Tipo. Memo.

Campo 3.

Nombre. Nivel.
153

Des cripción. N i v e l d e d i f i c u l t a d d e l e j e r c i c i o .

Tipo. Entero Corto.

Campo 4.

Nombre. Respuesta.

Descripción. Respuesta del ejercicio.

Tipo. Memo.

Campo 5.

Nombre. Gráfico.

Descripción. Grafico del ejercicio si este lo tiene.

Tipo. Grafico.

Campo 6

Nombre. Puntaje.
154

Descripción. Puntaje que del ejercicio.

T i p o . Real.

Campo 7.

Nombre. Num_Ejer.

Descripción. Asigna a cada ejercicio un número.

Tipo. Entero Corto.

Campo 8.

Nombre. Variables.

Descripción. Número de variables que tiene el eje rcicio.

Tipo. Entero Corto.


155

2.2.3 Tabla Lección Historia.

Campo 1.

Nombre. Cod_Est.

Descripción. Código del usuario.

Tipo. Alfabético.

Campo 2.

N o m b r e . Num_Vist.

Descripción. Número de veces que el usuario ha visitado la lección

Historia del Álgebra Booleana.

Tipo. Entero Corto.

2.2.4 Lección_TeoriaB.

Campo 1.
156

Nombre. Cod_Est.

Descripción. Código del usuario.

Tipo. Alfabético.

Campo 2.

Nombre. NumLecc_Vist.

Descripción. Número de veces que el usuario ha visitado la lección

Teoría B á s i c a d e l Á l g e b r a B o o l e a n a .

Tipo. Entero Corto.

Campo 3.

Nombre. Cons_Ejer.

Descripción. Número de veces que ha consultado los ejercicios

resueltos de la lección Teoría Básica del Álgebra Booleana.

Tipo. Entero Corto.


157

Campo 4.

N o m b r e . Num_Operac.

D escripción. C o n t r o l a l o s e j e r c i c i o s q u e h a r e s u e l t o e l u s u a r i o d e l

módulo Operaciones del Álgebra Booleana de la lección Teoría

Básica.

Tipo. Alfabético.

Campo 5.

Nombre. Num_Tab.

Descripción. Controla los ejercicios que ha resuelto el usuario

módulo Tablas de Verdad lección Teoría Básica.

Tipo. Alfabético.

Campo 6.

Nombre. Num_Ecuac.
158

Descripción. Controla los ejercicios que ha resueltos el usuario

módulo Ecuaciones Booleanas de la lección Teoría Básica.

Tipo. Alfabético.

Campo 7.

Nombre. Punt_Lecc.

Descripción. Puntaje obtenido en la lección Teoría Básica.

T i p o . Real.

2.2.5 Tabla Lección McCluskey.

Campo 1.

Nombre. Cod_Est.

Descripción. Código del usuario.

Tipo. Alfabético.

Campo 2.
159

Nombre. NumLecc_Vist.

Descripción. Numero de veces que el usuario ha visitado la lección

Método de Simplificación de Quine McCluskey.

Tipo. Entero Corto.

Campo 3.

Nombre. Cons_Ejer.

Descripción. Numero de veces que ha consultado los ejercicios

resueltos.

Tipo. Entero Corto.

Campo 4.

Nombre. Num_Exp.

Descripción. Controla los ejercicios que ha resuelto el usuario del

Módulo Expresiones Minterms.


160

Tipo. Alfabético..

Campo 5.

Nombre. Num_Tab.

Descripción. Controla los ejercicios que ha resuelto el usuario del

M ó d u l o T a b l a s d e A g r u p a m i e n t o s d e l a l e cción Simplificación de

McCluskey.

Tipo. Alfabético..

Campo 6.

Nombre. Num_Red.

Descripción. Controla los ejercicios que ha resuelto el usuario del

Módulo reducción del Método de simplificación de McCluskey.

Tipo. Alfabético..

Campo 7.
161

N o m b r e . Punt_ L e c c .

Descripción. Puntaje obtenido en el módulo.

T i p o . Real.

2.2.6 Lección_Aplicación

Campo 1.

Nombre. Cod_Est.

Descripción. Código del usuario.

Tipo. Alfabético.

Campo 2.

Nombre. NumLecc_Vist.

Descripción. Numero de veces que el usuario ha visitado la lección

Simplificación Algebraica.

Tipo. Entero Corto.


162

Campo 3.

Nombre. Cons_Ejer.

D e s c r i p c i ó n . Numero de veces que ha consultado el estudiante los

ejercicios resueltos de la lección.

Tipo. Entero Corto.

Campo 4.

Nombre. Num_cir.

D e s c r ipción. C o n t r o l a l o s e j e r c i c i o s q u e h a r e s u e l t o e l u s u a r i o d e l

Módulo Circuitos digitales.

Tipo. Alfabético..

Campo 5.

N o m b r e . Num_ecu.
163

Descripción. Controla los ejercicios que ha resueltos el usuario del

Módulo deducción de Ecuaciones booleanas.

Tipo. Alfabético..

Campo 6.

Nombre. Punt_Lecc.

Descripción. Puntaje obtenido en la lección.

T i p o . Real.

2 . 2 . 7 Tabla Lección Simplificación

Campo 1.

Nombre. Cod_Est.

Descripción. Código del usuario.

Tipo. Alfabético.

Campo 2.
164

Nombre. NumLecc_Vist.

D e s c r i p c i ó n . Numero de veces que el usuario ha visitado la

lección.

Tipo. Entero Corto.

Campo 3.

Nombre. Cons_Ejer.

Descripción. Numero de veces que ha consultado los ejercicios

resueltos.

Tipo. Entero Corto.

Campo 4.

Nombre. Punt_Lecc.

D e s c r i p c ió n . P u n t a j e o b t e n i d o e n e l m ó d u l o .

T i p o . Real.
165

Campo 5.

N o m b r e . Num_ecu.

Descripción. Controla los ejercicios que ha resuelto el usuario de

la lección Simplificación Algebraica.

Tipo. Alfabético..

2.3 FLUJO DE DATOS DETALLADO.

CONVENCIONES : En la definición del diagrama de flujo de datos

detallados utilizamos la siguiente convención:

: Este simboliza un proceso.

: Este simboliza un flujo de datos.

: Este simboliza un almacenamiento de datos.

: Este simboliza una fuente o destino de datos.


166

DIAGRAMA USUARIO

Identificar
Estudiante

Alumno

Seleccionar
Lección Salir
167

DIAGRAMA SELECCIÓN

Retornar
Salir

Hist Ayuda

Aplicaciones
Seleccionar
Leccion Ayuda
Simplificacion
McCluskey
Lección_I Estudiantes
TB

Simplificacion
Algebraica
168

DIAGRAMA HISTORIA

Ayuda
Retornar
Ayuda

Hist
Estudiante

Leccion_1
Salir
169

DIAGRAMA SELECCIONAR TEMA

Ayuda Ayuda
Retornar

EjercR Estudiante
Salir

Tema
Seleccionado
EjercR

Evaluacion

Evaluar

Leccion_I

En el diagrama Lección_I se refiere a las tablas: Teoría Básica,

Simplificación, Aplicación, McCluskey, según el tema seleccionado.


170

3 . PROCEDIMIENTOS PRINCIPALES

3.1 MODULO IDENTIFICAR.

PROCEDIMIENT O VALIDAR_NUM. Valida que los caracteres de

una cadena sean números.

procedure ValidarNum(Numero:String;var sw0:Boolean);

var
Num0:Numeros;
LongNum,i:Integer;

begin
sw0:=False;
Num0:=['0','1','2','3','4','5','6','7','8','9'];
LongNum:=Length(Numer o);
if (Numero='') then
sw0:=true
else
begin
i:=1;
while ((i<=LongNum) and (sw0=False)) do
if (Numero[i] in Num0) then
i:=i+1
else
begin
numero:=' ';
sw0:=True;
end;
end;
end;
171

P R O C E D I M I E N T O V A L I D A R _ L E T R A S . Verific a q u e l o s c a r a c t e r e s

de una cadena sean solo letras.

procedure ValidarLet(Cadena:String;var sw0:Boolean);

var
Let0:Letras;
LongLet,i:Integer;
begin
sw0:=False;

L e t 0 : = [ ' á ' , ' a ' , ' b ' , ' c ' , ' d ' , ' e ' , ' é ' , ' f ' , ' g ' , ' h ' , ' i ' , ' í ' , ' j ' , ' k ' , ' l ' , ' m ' , ' n ' , ' ñ ' , ' o ' , ' ó ' , ' p' , ' q ' , ' r '
,'s','t','u','ú','v','w','x','y','z','A','Á','B','C','D','E','É','F','G','H','I','Í','J','K','L'
,'M','N','Ñ','O','Ó','P','Q','R','S','T','U','Ú','V','W','X','Y','Z',' ','.'];
LongLet:=Length(Cadena);

if (Cadena=' ') then


showmessage('Por favor d i g i t e l o s d a t o s c o m p l e t o s ' )
else
begin
i:=1;

while ((i<=LongLet) and (sw0=False)) do

if (Cadena[i] in Let0) then


i:=i+1
else

begin
showmessage('Por favor solo digite letras');
cadena:=' ';
sw0:=True;
end;
end;
end;
172

PROCEDIMIENTO NUEVO_USUARIO. Constata que el nuevo

usuario diligencie su datos correctamente.

procedure TForm7.SpeedButton1NClick(Sender: TObject);

var
LongN,LongC,i,sw1,sw2:Integer;

begin
Num:=['0','1','2','3','4','5','6','7','8','9'];
L e t : = [ ' a ' ,' b ' , ' c ' , ' d ' , ' e ' , ' f ' , ' g ' , ' h ' , ' i ' , ' j ' , ' k ' , ' l ' , ' m ' , ' n ' , ' ñ ' , ' o ' , ' p ' , ' q ' , ' r ' , ' s ' , ' t ' , ' u ' , ' v ' , '
w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','Ñ','O','P','Q','R',
'S','T','U','V','W','X','Y','Z',' ','.'];

Nombre:=Edit1.Text;
C o d i g o : = E d it2.Text;
LongN:=Length(Nombre);
LongC:=Length(Codigo);
Estudiantes.Open;
sw1:=0;
sw2:=0;
if (Nombre=' ') or (Codigo=' ') then
showmessage('Por favor,digite los datos completos')
else
begin
i:=1;
sw1:=0;
while (i<=LongC)and(sw1=0) do
i f (Codigo[i] in Num) then
i:=i+1
else
begin
Showmessage('El codigo solo debe contener números');
Codigo:=' ';
Edit2.Clear;
Edit2.SetFocus;
sw1:=1;
end;
i:=1;
sw2:=0;
while (i<=LongN)and(sw2=0) do
if (Nombre[i] in Let) then
i:=i+1
else
begin
Showmessage('El nombre solo debe contener letras');
Nombre:=' ';
173

Edit1.Clear;
Edit1.SetFocus;
sw2:=1;
end;
end;
if (sw1=0)and(sw2=0) then
begin
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
showmessage('Código ya existe');
Edit2.Clear;
Edit2.SetFocus;
end
else
begin
panel1.visible:=True;
Edit3.SetFocus;
SpeedButton1N.Enabled:=Fa l s e ;
SpeedButton3N.Enabled:=False;
end;
end;
end;

PROCEDIMIENTO ADICIONAR_USUARIO. Inicializa los datos del

nuevo usuario en la tabla Estudiantes de la base de datos.

procedure TForm7.SpeedButton2NClick(Sender: TObject);


var
Clave1,Clave2:String[10];
begin
Clave1:=Edit3.Text;
Clave2:=Edit4.Text;
If(Clave1<>Clave2) Then
begin
ShowMessage('Rectifique su clave');
Edit4.Clear;
Edit4.SetFocus;
end
else
begin
Estudiantes.DisableControls;
Estudiantes.Last;
174

Estudiantes.Insert;
Estudiantes.Edit;
Estudiantes.Fields[0].AsString:=Codigo;
Estudiantes.Fields[1].AsString:=Nombre;
Estudiantes.Fields[2].AsString:=Clave1;
Estudiantes.Fields[3].AsInteger:=0;
Estudiantes.Fields[4].AsString:=' ';
Estudiantes.Fields[5].AsInteger:=0;
Estudiantes.Fields[6].AsInteger:=1;
Estudiantes.post;
Estudiantes.EnableControls;
panel1.visible:=false;
SpeedButton3N.Enabled:=True;
PageControl1.ActivePage:=PInformacion;
label6I.caption:=Estudiantes.FieldByName('Nom_Est').AsString;
label7I.caption:=Codigo;
Codigo1:=Codigo;
label8I.caption:=Estudiantes.FieldByName('Ult_Lecc').AsString;
Punt:=Estudiantes.FieldByName('Punt_Est').AsFloat;
FormatFloat('0.00',Punt);
label9I.caption:=PuntS;
Estr:=Estudiantes.FieldByName('Estr_Est').As I n t e g e r ;
EstrS:=IntToStr(Estr);
label10I.caption:=EstrS;
Niv:=Estudiantes.FieldByName('Niv_Est').AsInteger;
NivS:=IntToStr(Niv);
label11I.caption:=NivS;
Estudiantes.Refresh;
Estudiantes.Close;
end;
end;

PROCEDIMIENTO ANTIGUO_USUARIO. Controla la entrada de un

antiguo usuario, verificando sus datos en la base de datos.

procedure TForm7.SpeedButton1AClick(Sender: TObject);


var
Clave1,Clave2:String[10];
begin
Num:=['0','1','2','3','4','5','6','7','8','9'];
Codigo1:=Edit1A.Text;
C l a v e 1 : = E d it2A.Text;
LongC:=Length(Codigo1);
Cont:=0;
if (Clave1=' ') or (Codigo1=' ') then
175

showmessage('Por favor,digite los datos completos')


else
begín
i:=1;
sw1:=0;
while (i<=LongC)and(sw1=0) do
if (Codigo1[i] in Num) then
i:=i+1
else
b egin
Showmessage('El código solo debe contener números');
Codigo1:=' ';
Edit2A.Clear;
Edit2A.SetFocus;
sw1:=1;
end;
end;
if (sw1=0) then
begin
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsStrin g : = ( C o d i g o 1 ) ;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Clave2:=Estudiantes.FieldByName('Clave').AsString;
if(Clave1<>Clave2)then
begin
showmessage('Clave errada');
cont:=cont+1;
edit2A.Clear;
Edit2A.SetFocus;
end;
if (Cont>3) then
begin
showmessage('Ya no puedes entrar');
Cont:=0;
PageControl1.ActivePage:=POpciones;
end;
if (clave1=clave2) then
begin
PageControl1.ActivePage:=PInformacion;
label6I.caption:=Estudiantes.FieldByName('Nom_Est').AsString;
label7I.caption:=Codigo1;
label8I.caption:=Estudiantes.FieldByName('Ult_Lecc').AsString;
Punt:=Estudiantes.FieldByName('Punt_Est').AsFloat;
PuntS:=FormatFloat('0.00',Punt);
label9I.caption:=PuntS;
Estr:=Estudiantes.FieldByName('Estr_Est').AsInteger;
EstrS:=IntToStr(Estr);
label10I.caption:=EstrS;
176

Niv:=Estudiantes.FieldByName('Niv_Est').AsInteger;
NivS:=IntToStr(Niv);
label11I.caption:=NivS;
end;
end
else

begin
sho wmessage('Código no existe');
edit1A.Clear;
Edit1A.SetFocus;
edit2A.Clear;
end;
end;
Estudiantes.Close;
end;

3.2 MODULO LECCIONES.

LECCIÓN HISTORIA

PROCEDIMIENTO INICIAR_HISTORIA. Cuando un usuario visita la

lección Historia, actualiza los datos de éste en las tablas

Estudiantes e Historia.

procedure TForm7.BHistoriaClick(Sender: TObject);


begin
form7.hide;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
Estudiantes.Fields[4].AsString:='Historia';
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
177

end;
Leccion_Historia.Open;
Leccion_Historia.SetKey;
Leccion_Historia.FieldByName('Cod_Es t ' ) . A s S t r i n g : = C o d i g o 1 ;
Leccion_Historia.GotoKey;
if (Leccion_Historia.GotoKey=True) then
begin
Leccion_Historia.Edit;

Leccion_Historia.Fields[1].AsInteger:=Leccion_Historia.Fields[1].AsInteg
er+1;
Leccion_Historia.Post;
Leccion_Historia.EnableCont r o l s ;
Leccion_Historia.Close;
end
else
begin
Leccion_Historia.DisableControls;
Leccion_Historia.Last;
Leccion_Historia.Insert;
Leccion_Historia.Edit;
Leccion_Historia.Fields[0].AsString:=Codigo1;
Leccion_Historia.Fields[1].AsInteg e r : = 1 ;
Leccion_Historia.post;
Leccion_Historia.EnableControls;
Leccion_Historia.Close;
end;
FEntrada.Show;
end;
LECCIÓN TEORIA BASICA.

PROCEDIMIENTO INICIAR_TEORIA_BASICA. Cuando un usuario

visita la lección Teoría Básica, actualiza los dato s de éste en las

tablas Estudiantes y LecciónB.

procedure TForm7.BTeoriaBClick(Sender: TObject);


begin
form7.hide;
FEscogTeoria.show;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
178

Estudiantes.Edit;
Estudiantes.Fields[4].AsString:='Teoría Básica';
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
if (Leccion_TeoriaB.GotoKey=True) then
begin
Leccion_TeoriaB.Edit;

Leccion_TeoriaB.Fields[1].AsInteger:=Leccion_TeoriaB.Fields[1].AsInteg
er+1;
Leccion_TeoriaB.Post;
Leccion_TeoriaB . E n a b l e C o n t r o l s ;
Leccion_TeoriaB.Close;
end
else
begin
Leccion_TeoriaB.DisableControls;
Leccion_TeoriaB.Last;
Leccion_TeoriaB.Insert;
Leccion_TeoriaB.Edit;
Leccion_TeoriaB.Fields[0].AsString:=Codigo1;
Leccion_TeoriaB.Fields[1].AsIn teger:=1;
Leccion_TeoriaB.Fields[2].AsFloat:=0;
Leccion_TeoriaB.Fields[3].AsInteger:=0;

Leccion_TeoriaB.Fields[4].AsString:='00000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000';

Leccion_TeoriaB.Fields[5].AsString:='00000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000';

Leccion_TeoriaB.Fields[6].AsString:='00000000000000000000000000000
0 0 0 0 0 0 0 0 0 000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000';

Leccion_TeoriaB.Fields[7].AsString:='00000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
179

000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000';
Leccion_TeoriaB.post;
G Leccion_TeoriaB.EnableControls;
Leccion_TeoriaB.Close;
end;
end;

P R O C E D I M I E N T O T A B L A _ O R . Controlan que el usuario termine de

llenar correctamente la tabla de verdad para la operación Or del

Á l g e b r a B o o l e a n a q u e s e le p r o p o n e e n e s e m ó d u l o .

procedure TFOperacAB2.B0Click(Sender: TObject);


begin
if (NTerm0<=8)then
begin
with StringGrid1 do
begin
Cells[3,NTerm0]:='0';
if ((Cells[0,NTerm0]='1') or (Cells[1,NTerm0]='1') or
(Cells[2,NTerm0]='1')) then
begin
s h o w m essage('Las reglas de la operación Or indican que cuando una de
las variables de entrada tiene de valor uno (1),la salida es uno (1)');
Cells[3,NTerm0]:='';
end
else
NTerm0:=NTerm0+1;
if (NTerm0=9) then
begin
label1.Visible:=False;
l a b e l 2 . Visible:=False;
label3.Visible:=False;
label4.Visible:=False;
B0.visible:=False;
B1.visible:=False;
Panel1.Visible:=True;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
BRegresar.Enabled:=True;
Cerrar1.Enabled:=True;
end;
180

end;
end;
end;

procedure TFOperacAB2.B1Click(Sender: TObject);


begin
if (NTerm0<=8)then
begin
with StringGrid1 do
begin
Cells[3,NTerm0]:='1';
if ((Cells[0,NTerm0]='0') and (Cells[1,NTerm0]='0') and
(Cells[2,NTerm0]='0')) then
begin
sho wmessage('Las reglas de la operación Or indican que cuando todas
las variables de entrada tiene de valor cero (0),la salida es cero (0)');
Cells[3,NTerm0]:='';
end
else
NTerm0:=NTerm0+1;
if (NTerm0=9) then
begin
label1.Visible:=False;
l a b el2.Visible:=False;
label3.Visible:=False;
label4.Visible:=False;
B0.visible:=False;
B1.visible:=False;
Panel1.Visible:=True;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Enabled:=Tru e ;
end;
end;
end;
end;

P R O C E D I M I E N T O T A B L A _ A N D . Controla que el usuario termine de

llenar correctamente la tabla de verdad para la operación And del

Álgebra Booleana que se le propone en ese módulo.


181

procedure TFOperacABAnd2.B1Click(Sender: TObject);


begin
if (NTerm1<=8)then
begin
with StringGrid1 do
begin
Cells[3,NTerm1]:='1';
if ((Cells[0,NTerm1]='0') or (Cells[1,NTerm1]='0') or
(Cells[2,NTerm1]='0')) then
begin
showmessage('Las reglas de la operación And indican que cuando una
de las variables de entrada tiene de valor cero (0),la salida es cero (0)');
Cells[3,NTerm1]:='';
end
else
NTerm1:=NTerm1+1;
if (NTerm1=9) then
begin
label3.visible:=false;
label4.Visible:=False;
B0.visible:=False;
B1.visible:=False;
Panel1. Visible:=True;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
end;
end;
end;

procedure TFOperacABAnd2.B0Click(Sender: TObject);


begin
if (NTerm1<=8)then
begin
w i t h S t r i n gGrid1 do
begin
Cells[3,NTerm1]:='0';
if ((Cells[0,NTerm1]='1') and (Cells[1,NTerm1]='1') and
(Cells[2,NTerm1]='1')) then
begin
showmessage('Las reglas de la operación And indican que cuando
t o d a s l a s v a r i a b l e s d e e n t r a d a t i e n e d e v a l o r u n o ( 1 ) , l a salida es uno
(1)');
Cells[3,NTerm1]:='';
end
else
NTerm1:=NTerm1+1;
if (NTerm1=9) then
182

begin
label1.Visible:=False;
label2.Visible:=False;
label3.Visible:=False;
label4.Visible:=False;
B0.visible:=False;
B1.visible:=False;
P anel1.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
end;
end;
end;
end;

PROCEDIMIENTO PROPUESTOS_OPERACIONES. Asigna al

u s u a r i o u n e j e r c i c i o p a r a e v a l u a r l o e n e l modulo Operaciones del

Álgebra Booleana de la lección Teoría Básica, de acuerdo al nivel

en el que se encuentre éste.

procedure TFOperacABAnd.N1Click(Sender: TObject);


var
sw:boolean;
begin
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.Field ByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
EjerSiNo:=Leccion_TeoriaB.Fields[5].AsString;
Leccion_TeoriaB.Close;
Ejercicios_Propuestos.Open;
183

Ejercicios_Propuestos.DisableControls;
sw:=False;
Ejercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
if (Ejercicios_Propuestos.Fields[0].AsString= 'Operaciones
Booleanas')and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin
PropBas3:=PropBas3+1;
Ecuac:=Ejercicios_Propuestos.Fields[1].asstring;
FEvaluarOperac.Label2 . C a p t i o n : = ' X = ' + E c u a c ;
FEvaluarOperac.Show;
FOperacABAnd.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

P R O C E D I M I N T O A N D _ O R . Permite determinar si la evaluación es

c o n l a o p e r a c i ó n t i p o O r ó c o n l a A n d y cuantas variables se van a

utilizar.

procedure AndOr(Ecuac:string;var Tipo:string;var CantV:integer);


var
i:integer;
sw:boolean;
begin
sw:=False;
CantV:=0;
for i:=1 to length(Ecuac) do
if (Ecuac[i]='+') then
sw:=True
else
CantV:=CantV+1;
if (sw) then
Tipo:='Or'
184

else
Tipo:='And';
end;

PROCEDIMIENTO NAND_NOR. Permite determinar si la evaluación

es con la operación tipo Or ó con la And y cuantas variables se van

a utilizar.

procedure NandNor (Ecuac :string ;var Tipo: string; var C antV: integer);
var
i,j:integer;
sw1:boolean;
Expres:string;
begin
sw1:=False;
CantV:=0;
Expres:='';
for i:=1 to length(Ecuac) do
if ((Ecuac[i]=' -' ) a n d ( E c u a c [ i + 1 ] = ' ( ' ) ) t h e n
begin
Expres:=Expres+Ecuac[i]+Ecuac[i+1];
j:=i+2;
while ((Ec uac[j]<>')') and (j<=length(Ecuac))) do
begin
Expres:=Expres+Ecuac[j];
if (Ecuac[j]='+') then
sw1:=True
else
CantV:=CantV+1;
j:=j+1;
end;
end;
if (sw1) then
Tipo:='Nor'
else
Tipo:='Nand';
end;

P R O C E D I M I E N T O E V A L U AR _ O P E R A C 1 . Este procedimiento hace

el seguimiento a la evaluación en el módulo Operaciones del


185

Álgebra Booleana, cuando al hacer el llenado de la tabla que se le

solicita al usuario con ceros y unos, él selecciona 1.

procedure TFEvaluarOperac.B1Click(Sender: TObject);


var
Comp,i,j,ceros,num0:integer;
sw,sw0:Boolean;
begin
panel1.Visible:=False;
panel2.Visible:=False;
panel3.Visible:=False;
if (sw_t=false) then
begin
if (NTerm<StringGrid1.RowCount) then
begin
StringGrid1.Cells[NCol,NTerm]:=' 1 ' ;
if (NCol<stringgrid1.ColCount- 1) then
Acumula:=Acumula+'1';
NCol:=NCol+1;
if (NCol=stringgrid1.ColCount- 1) then
begin
if (NTerm=1)then
begin
VTerm[NTerm- 1 ] : = A c u m u l a ;
acumula:='';
end
else
begin
s w : = F a lse;
i:=0;
while ((i<=NTerm) and (sw=False))do
begin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
panel3.Visible:=True;
label14.Caption:=Acumula;
NError:=NError+1;
NCol:=0;
sw:=True;
for j:=0 to StringGrid1.ColCount-1 d o
StringGrid1.Cells[j,NTerm]:='';
acumula:='';
end
else
i:=i+1;
end;//while
186

if (sw=False) then
begin
VTerm[NTerm- 1]:=Acumula;
Acumula:='';
end;
end;
end;
if (NCol=stringgrid1.ColCount- 1) then
begin
NTerm:=NTerm+1;
NCol:=0;
end;
if (NTerm=stringgrid1.RowCount) then
if (Cantv<=4) then
begin
sw_t:=True;
NCol:=stringgrid1.ColCount-1 ;
NTerm:=1;
end
else
begin
NCol:=0;
NTerm2:=1;
end;
end
else
if (NTerm2<StringGrid2.RowCount) then
begin
StringGrid2.Cells[NCol,NTerm2]:='1';
if (NCol<stringgrid2.ColCount - 1 ) t h e n
Acumula:=Acumula+'1';
NCol:=NCol+1;
if (NCol=stringgrid2.ColCount - 1 ) t h e n
begin
sw:=False;
i:=0;
while ((i<=NTerm+NTerm2- 2 ) a n d ( s w = F a l s e ) ) d o
begin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
panel3.Visible:=True;
label14.Caption:=Acumula;
NError:=NError+1;
NCol:=0;
sw:=True;
for j:=0 to StringGrid2.ColCount-1 d o
StringGrid2.Cells[j,NTerm2]:='';
acumula:='';
end
else
187

i:=i+1;
end;//while
i f ( s w = F a l s e ) then
begin
VTerm[NTerm+NTerm2- 2]:=Acumula;
Acumula:='';
end;
end;//
if (NCol=stringgrid2.ColCount - 1 ) t h e n
begin
NTerm2:=NTerm2+1;
NCol:=0;
if (NTerm2=stringgrid2.RowCount) then
begin
sw_t:=True;
NCol:=stringgrid2.ColCount- 1 ;
NTerm:=1;
NTerm2:=20;
end;
end;
end;
end
else
if (sw_t) then
begin
if (NTerm<StringGrid1.RowCount) then
begin
StringGrid1.Cells[NCol,NTerm]:='1';
if (Tipo='And') then
begin
Term:=VTerm[NTerm- 1];
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end;
end
else
188

if (sw0) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end;
end
else
if (Tipo='Or') then
begin
ceros:=StringGrid1.ColCount - 1;
num0:=0;
Term:=VTerm[NTerm -1 ] ;
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end;
end
else
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end
else
begin
189

panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end;
end
else
if (Tipo='Nand') then
begin
Term:=VTerm[NTerm- 1];
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end
else
begin
p anel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end
else
if (sw0) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end;
end;
end
else
if (Tipo='Nor') then
begin
c e r o s : = S t r i n g G r i d 1 . C o l C o u n t- 1 ;
num0:=0;
Term:=VTerm[NTerm- 1];
190

for j:=1 to length(Term) do


if (Term[j]='0') then
num0:=num0+1;
i f ( n u m 0=ceros) then
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end
e lse
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end
else
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel1.Visible:=Tr u e ;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end;
end;
end;
NTerm:=NTerm+1;
if (NTerm=stringgrid1.RowCount) then
if (cantv<=4) then
begin
BRegresar.Visible:=true;
B0.Visible:=false;
B1.Visible:=false;
end
else
NTerm2:=1;
end
else
if (NTerm2<StringGrid2.RowCount) then
begin
StringGrid2.Cells[NCol,NTerm2]:='1';
if (Tipo='And') then
begin
191

Term:=VTerm[NTerm+NTerm2-2 ] ;
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]=' 0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2 . V i s i b l e : = T r u e ;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end;
end
else
if (sw0) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
p a n e l 2 . Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end;
end
else
if (Tipo='Or') then
begin
ceros:=StringGrid2.ColCount - 1;
num0:=0;
Term:=VTerm[NTerm+NTerm2- 2];
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel1.Visible:=True;
192

label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0 ' ;
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end;
end
else
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NEr ror:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end;
end
else
if (Tipo='Nand') then
begin
T e r m : = V T e r m [ N T e r m + N T e r m 2- 2];
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm 2 ] ;
end;
end
else
if (sw0) then
193

begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end;
end;
end
else
if (Tipo='Nor') then
begin
c e r o s : = S t r i n g G r i d 2 . C o l C o u n t- 1 ;
num0:=0;
Term:=VTerm[NTerm+NTerm2-2 ] ;
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end
else
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
194

StringGrid2.Cells[NCol,NTerm2]:='0';
end;
end;
end;
NTerm2:=NTerm2+1;
if (NTerm2=stringgrid2.RowCount) then
begin
BRegresar.Visible:=true;
B0.Visible:=false;
B1.Visible:=false;
end;
end;
end;
end;

PROCEDIMIENTO EVALUAR_OPERAC2 Este procedimiento hace

e l s e g u i m i e n t o a l a e v a l u a c i ón en el módulo Operaciones del

Álgebra Booleana, cuando al hacer el llenado de la tabla que se le

solicita al usuario con ceros y unos, él selecciona 0.

procedure TFEvaluarOperac.B0Click(Sender: TObject);


var
Comp,i,j,ceros,num0:integer;
sw,sw0:Boole an;
begin
panel1.Visible:=False;
panel2.Visible:=False;
panel3.Visible:=False;
if (sw_t=false) then
begin
if (NTerm<StringGrid1.RowCount) then
begin
StringGrid1.Cells[NCol,NTerm]:='0';
if (NCol<stringgrid1.ColCount- 1) then
A c u m u l a : = A c u m ul a + ' 0 ' ;
NCol:=NCol+1;
if (NCol=stringgrid1.ColCount- 1) then
begin
if (NTerm=1)then
begin
VTerm[NTerm- 1 ] : = A c u m u l a ;
acumula:='';
end
else
195

begin
sw:=False;
i:=0;
while ((i<=NTerm) and (sw=False))do
b e gin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
panel3.Visible:=True;
label14.Caption:=Acumula;
NError:=NError+1;
NCol:=0;
sw:=True;
for j:=0 to StringGrid1.ColCount-1 d o
St ringGrid1.Cells[j,NTerm]:='';
acumula:='';
end
else
i:=i+1;
end;//while
if (sw=False) then
begin
VTerm[NTerm- 1]:=Acumula;
Acumula:='';
end;
end;// NTerm
end;//NCol
if (NCol=stringgrid1.ColC o u n t- 1) then
begin
NTerm:=NTerm+1;
NCol:=0;
end;
if (NTerm=stringgrid1.RowCount) then
if (Cantv<=4) then
begin
sw_t:=True;
NCol:=stringgrid1.ColCount-1 ;
NTerm:=1;
end
else
begin
NCol:=0;
N T e r m 2:=1;
end;
end
else
if (NTerm2<StringGrid2.RowCount) then
begin
StringGrid2.Cells[NCol,NTerm2]:='0';
if (NCol<stringgrid2.ColCount - 1 ) t h e n
Acumula:=Acumula+'0';
196

NCol:=NCol+1;
if (NCol=stringgrid2.ColCount - 1 ) t h e n
begin
sw:=False;
i:=0;
while ((i<=NTerm+NTerm2- 2 ) a n d ( s w = F a l s e ) ) d o
begin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
panel3.Visible:=True;
label14.Caption:=Acumula;
NError:=NError+1;
NCol:=0;
sw:=True;
for j:=0 to StringGrid2.ColCount-1 d o
StringGrid2.Cells[j,NTerm2]:='';
acumula:='';
end
else
i:=i+1;
end;//while
if (sw=False) then
begin
VTerm[NTerm+NTerm2- 2 ] : = A c um u l a ;
Acumula:='';
end;
end;
if (NCol=stringgrid2.ColCount - 1 ) t h e n
begin
NTerm2:=NTerm2+1;
NCol:=0;
if (NTerm2=stringgrid2.RowCount) then
begin
sw_t:=True;
NCol:=stringgrid2.ColCount- 1 ;
NTerm:=1;
NTerm2:=20;
end;
end;
end;
end
else
if (sw_t) then
begin
if (NTerm<StringGrid1.RowCount) then
begin
StringGrid1.Cells[NCol,NTerm]:='0';
if (Tipo='And') then
begin
Term:=VTerm[NTerm -1 ] ;
197

s w 0 : = F a lse;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.C ells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end;
end
else
if (sw0) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end;
end
else
if (Tipo='Or') then
begin
ceros:=StringGrid1.ColCount- 1 ;
num0:=0;
Term:=VTerm[NTerm- 1];
f o r j : = 1 t o l e n g t h (Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
198

end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end;
end
else
begin
i f ( S t r i n g G r i d 1 . C e l l s [ N C o l ,NTerm]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='1';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end;
end
else
if (Tipo='Nand') then
begin
Term:=VTerm[NTerm- 1];
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end
else
if (sw0) then
begin
199

if (StringGrid1.Cells[NCol,NTerm]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm]: = ' 1 ' ;
end;
end;
end
else
if (Tipo='Nor') then
begin
c e r o s : = S t r i n g G r i d 1 . C o l C o u n t- 1 ;
num0:=0;
Term:=VTerm[NTerm- 1];
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid1.Cells[NCol,NTerm ] : = ' 1 ' ;
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end;
end
else
begin
if (StringGrid1.Cells[NCol,NTerm]='0') then
b egin
panel1.Visible:=True;
label6.Caption:=StringGrid1.Cells[NCol,NTerm];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
S t r i n g G r i d 1 . C e l l s [NCol,NTerm]:='0';
200

end;
end;
end;
NTerm:=NTerm+1;
if (NTerm=stringgrid1.RowCount) then
if (cantv<=4) then
begin
BRegresar.Visible:=true;
B0.Visible:=false;
B1.Visible:=false;
end
else
NTerm2:=1;
end
else
if (NTerm2<StringGrid2.RowCount) then
begin
StringGrid2.Cells[NCol,NTerm2]:='0';
if (Tipo='And') then
begin
T e r m : = V T e r m [ N T e r m + N T e r m 2- 2];
sw0:=False;
for j:=1 to length(Term) do
if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end;
end
else
if (sw0) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end
else
201

b eg i n
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end;
end
else
if (Tipo='Or') then
begin
c e r o s : = S t r i n g G r i d 2 . C o l C o u n t- 1 ;
num0:=0;
Term:=VTerm[NTerm+NTerm2-2 ] ;
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end;
end
else
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end;
end
else
if (Tipo='Nand') then
begin
Term:=VTerm[NTerm+NTerm2- 2];
sw0:=False;
202

for j:=1 to length(Term) do


if (Term[j]='0') then
sw0:=True;
if (sw0=False) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
en d ;
end
else
if (sw0) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='1') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='1';
end;
end;
end
else
if (Tipo='Nor' ) then
begin
ceros:=StringGrid2.ColCount- 1 ;
num0:=0;
T e r m : = V T e r m [ N T e r m + N T e r m 2- 2];
for j:=1 to length(Term) do
if (Term[j]='0') then
num0:=num0+1;
if (num0=ceros) then
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel2.Visible:=True;
label10.Caption:='1';
NError:=NError+1;
203

StringGrid2.Cells[NCol,NTerm2]:='1';
end
else
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end;
end
else
begin
if (StringGrid2.Cells[NCol,NTerm2]='0') then
begin
panel1.Visible:=True;
label6.Caption:=StringGrid2.Cells[NCol,NTerm2];
end
else
begin
panel2.Visible:=True;
label10.Caption:='0';
NError:=NError+1;
StringGrid2.Cells[NCol,NTerm2]:='0';
end;
end;
end;
NTerm2:=NTerm2+1;
if (NTerm2=stringgrid2.RowCount) then
begin
BRegresar.Visible:=true;
B0.Visible:=false;
B1.Visible:=false;
end;
end;
end;
end;

PROCEDIMIENTO ACTUALIZAR_OPERACIONES. Una vez realizada la

evaluación del módulo Operaciones del Álgebra Booleana este

procedimiento procede a realizar las actualizaciones necesarias en la

base de datos Tablas.

p r o c e d u re TFEvaluarOperac.BRegresarClick(Sender: TObject);
var
PorcE,Punt,Desc,Puntaje,PuntE:Real;
NumEjer:integer;
begin
204

panel1.Visible:=False;
panel2.Visible:=False;
if ((Tipo='And') or (Tipo='Or')) then
begin
NumEjer:=FTablasdeV.Ejercicios_Propuestos.Fields[7].AsInteger;
EjerSiNo[NumEjer]:='1';
Punt:=FTablasdeV.Ejercicios_Propuestos.Fields[5].AsFloat;
PorcE:=(NError*100)/TError;
FTablasdeV.Ejercicios_Propuestos.Close;
Leccion_TeoriaB.open;
Leccion_TeoriaB.DisableControls;
Leccion_TeoriaB.Se t K e y ;
Leccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
if (Leccion_TeoriaB.GotoKey=True) then
begin
Leccion_TeoriaB.Edit;
if (PorcE<=60) then
begin
Punt:=((100 -((NError*100)/(2*TError)))*Punt)/100;
if (ResBas3=0) then
begin
Puntaje:=Punt;
Leccion_TeoriaB.Fields[2].AsFloat:=
Leccion_TeoriaB.Fields[2].AsFloat+Punt;
end
else
begin
D e s c : = P u n t- (Punt*0.05);
Puntaje:=Desc;
Leccion_TeoriaB.Fields[2].AsFloat:=
L ec c i o n _ T e o r i a B . F i e l d s [ 2 ] . A s F l o a t + D e s c ;
end;
Leccion_TeoriaB.Fields[5].AsString:=EjerSiNo;
Leccion_TeoriaB.Post;
Leccion_TeoriaB.EnableControls;
Leccion_TeoriaB.Close;
Estudiantes.Open;
Estudiantes.DisableControls;
Estudiantes .Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin
Estudiantes.Edit;
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger+1;
Estudiantes.fields[3].Asfloat:=Estudiantes.fields[3].Asfloat+Punt;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
Estudiantes.fields[5].AsInteger:=Estrellas;
Estudiantes.Post;
205

Estudiantes.EnableControls;
Estudiantes.Clos e ;
end;
FFelicit.Memo2.Text:=FormatFloat('0.00',Puntaje);
FFelicit.Show;
FEvaluarOperac.Hide;
end
else
begin
PuntE:=(Leccion_TeoriaB.Fields[2].AsFloat)*0.1;
Leccion_TeoriaB.Fields[2].AsFloat:=
Leccion_TeoriaB.Fields[2] .AsFloat- PuntE;
Leccion_TeoriaB.Fields[5].AsString:=EjerSiNo;
Leccion_TeoriaB.Post;
Leccion_TeoriaB.EnableControls;
Leccion_TeoriaB.Close;
Estudiantes.Open;
Estudiantes.DisableControls;
Estudiantes.Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin
Estudiantes.Edit;
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger- 1 ;
E s t u d i a n t e s . f i e l d s [ 3 ] . A s f l o a t : = E s t u d i a n t e s . f i e l d s [3].Asfloat -PuntE;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
Estudiantes.fields[5].AsInteger:=Estrellas;
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
FEquivoc.Show;
FEvaluarOperac.Hide;
end;
end;
end
else
if ((Tipo='Nand') or (Tipo='Nor')) then
begin
NumEjer:=FAplicNand3.Ejercicios_Propuestos.Fields[7].AsInteger;
EjerSiNo[NumEjer]:='1';
Punt:=FAplicNand3.Ejercicios_Propuestos.Fields[5].AsFloat;
PorcE:=(NError*100)/TError;
FAplicNand3.Ejercicios_Propuestos.Close;
Leccion_Aplicaciones.open;
Leccion_Aplicaciones.DisableControls;
Leccion_Aplicaciones.SetKey;
Leccion_Aplicaciones.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_Aplicaciones.GotoK e y ;
206

if (Leccion_Aplicaciones.GotoKey=True) then
begin
Leccion_Aplicaciones.Edit;
if (PorcE<=60) then
begin
Punt:=((100 -((NError*100)/(2*TError)))*Punt)/100;
if (ResBas3=0) then
begin
Puntaje:=Punt;
Leccion_Aplicaciones.Fields[2].AsFloat:=
Leccion_Aplicaciones.Fields[2].AsFloat+Punt;
end
else
begin
D e s c : = P u n t- (Punt*0.05);
Puntaje:=Desc;
Leccion_Aplicaciones.Fields[2].AsFloat:=
Leccion_Aplicaciones.Fields[2].AsFloat+Desc;
end;
Lec cion_Aplicaciones.Fields[4].AsString:=EjerSiNo;
Leccion_Aplicaciones.Post;
Leccion_Aplicaciones.EnableControls;
Leccion_Aplicaciones.Close;
Estudiantes.Open;
Estudiantes.DisableControls;
Estudiantes.Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin
Estudiantes.Edit;
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger+1;
Estudiantes.fields[3].Asfloat:=Estudiantes.fields[3].Asfloat+Punt;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
Estudiantes.fields[5].AsInteger:=Estrellas;
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
FFelicit.Memo2.Text:=F ormatFloat('0.00',Puntaje);
FFelicit.Show;
FEvaluarOperac.Hide;
end
else
begin
PuntE:=(Leccion_Aplicaciones.Fields[2].AsFloat)*0.1;
Leccion_Aplicaciones.Fields[2].AsFloat:=
Leccion_Aplicaciones.Fields[2].AsFloat-PuntE;
Leccion_Aplicaciones.Fields[4].AsString:=EjerSiNo;
Leccion_Aplicaciones.Post;
207

Leccion_Aplicaciones.EnableControls;
Leccion_Aplicaciones.Close;
Estudiantes.Open;
Estudiantes.DisableControls;
Estudiantes.Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin
Estudiantes.Edit;
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger- 1 ;
E s t u d i a n t e s . f i e l d s [ 3 ] . A s f l o a t : = E s t u d i a n t e s . f i e l d s [3].Asfloat -PuntE;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
Estudiantes.fields[5].AsInteger:=Estrellas;
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
FEquivoc.Show;
FEvaluarOperac.Hide;
end;
end;
end;
end;

P R O C E D I M I E N T O P R O P U E S T O S _ T A B L A _ V E R D A D . Selecciona un

ejercicio para evaluar al usuario en el módulo tablas de verdad de

la lección Teoria Básica, de acuerdo a las características de éste.

procedure TFTablasdeV.N1Click(Sender: TObject);


var
sw:boolean;
begin
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
208

Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
EjerSiNo:=Leccion_TeoriaB.Fields[5].AsString;
L e c c ion_TeoriaB.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
sw:=False;
Ejercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
i f (Ejercicios_Propuestos.Fields[0].AsString='Tablas de Verdad')and
(Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin
PropBas2:=PropBas2+1;
Ecuac:=Ejercicios_Propuestos.Fields[1].asstring;
FEvaluarTabladeV.Memo1.Text:='X= '+Ecuac;
FEvaluarTabladeV.Show;
FTablasdeV.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

PROCEDIMIENTO R E S U E L T O S _ T A B L A _ V E R D A D . Selecciona un

ejercicio resuelto para mostrar al usuario del tema Tablas de

Verdad.

procedure TFTablasdeV.Acercade1Click(Sender: TObject);


var
sw:boolean;
begin
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
209

Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.Field ByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
Leccion_TeoriaB.Close;
Ejercicios_Resueltos.Open;
Ejercicios_Resueltos.DisableControls;
sw:=False;
Ejercicios_Resueltos.First;
while ((not(Ejercicios_Resueltos.EOF)) a n d ( s w = F a l s e ) ) d o
begin
Ejercicios_Resueltos.Edit;
if (Ejercicios_Resueltos.Fields[0].AsString='Tablas de
Verdad')and(Ejercicios_Resueltos.Fields[1].Asinteger=niv) then
begin
if (Ejercicios_Resueltos.Fields[2].Asinteger=Num_Res) then
begin
sw:=True;
Num_Res:=Num_Res+1;
end
else
Ejercicios_Resueltos.Next;
end
else
if (sw=false) then
Ejercicios_Resueltos.Next;
end;
if (sw) then
begin
Ecuac:=Ejercicios_Resueltos.Fields[3].asstring;
FEjerTVRes.Mem o 1 . T e x t : = ' X =
'+Ejercicios_Resueltos.Fields[3].asString;
FEjerTVRes.Show;
FTablasdeV.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;
210

PROCEDIMIENTO EXPRESIÓN_TABLA. Permite deducir la

e x p r e s i ó n q u e r e s u l t a de l a t a b l a d e v e r d a d q u e l l e n a e l u s u a r i o e n

el módulo Tablas de verdad de la lección Teoría Básica.

procedure EcuacTab(var Ecuac:string);


var
i,long:integer;
Expresion:string;
begin
with FTablasdeV2.StringGrid1 do
begin
Expresion:='';
for i:=1 to 8 do
begin
if (Cells[3,i]='1') then
begin
if (Cells[0,i]='1') then
Expresion:=Expresion+'A'
else
Expresion:=Expresion+' - A';
if (Cells[1,i]='1') then
Expresion:=Expresion+'B'
else
Expresion:=Expresion+' -B ' ;
if (Cells[2,i]='1') then
Expresion:=Expresion+'C'
else
Expresion:=Expresion+' -C ' ;
Expresion:=Expresion+'+';
end;
end;
end;
long:=length(Expresion);
f o r i : = 1 t o ( l o n g -1 ) d o
Ecuac:=Ecuac+Expresion[i];
end;

PROCEDIMIENTO C O M B I N AC I O N E S . Controla que el usuario

forme correctamente la tabla de verdad que se le propone llenar en

el modulo tablas de verdad.


211

procedure TFTablasdeV2.B0Click(Sender: TObject);


var
Comp,i:integer;
sw:Boolean;
begin
if (NTerm<9) then
begin
StringGr id1.Cells[NCol,NTerm]:='0';
if (NCol<3) then
Acumula:=Acumula+'0';
NCol:=NCol+1;
if (NCol=3) then
begin
if (NTerm=1)then
begin
VTerm[NTerm -1 ] : = A c u m u l a ;
acumula:='';
end
else
begin
sw:=False;
i:=0;
while ((i<=NTerm ) and (sw=False))do
begin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
Showmessage('Esa combinación ya la realizaste');
NCol:=0;
sw:=True;
StringGrid1.Cells[0,NTerm]:='';
StringGrid1.Cells[1,NTerm]:='';
StringGrid1.Cells[2,NTerm]:='';
acumula:='';
end
else
i:=i+1;
end;//while
if (sw=False) then
begin
VTerm[NTerm -1 ] : = A c u m u l a ;
Acumula:='';
end;
end;// NTerm 1
end;//NCol 3
if (NCol=4) then
begin
NTerm:= NTerm+1;
NCol:=0;
end;
if (NTerm=9) then
212

begin
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
B0.Visible:=False;
B1.Visible:=False;
label1.Visible:=False;
label2.Visible:=False;
label3.Visible:=False;
l a b e l 4 . V i s i b l e : = F a l s e;
label5.Visible:=False;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
panel1.Visible:=True;
EcuacTab(Ecuac);
label9.Visible:=True;
label10.Visible:=True;
label10.Caption:='X= '+Ecuac;
end;
end;
end;

p r o c edure TFTablasdeV2.B1Click(Sender: TObject);


var
sw:Boolean;
Comp,i:integer;
begin
if (NTerm<9) then
begin
StringGrid1.Cells[NCol,NTerm]:='1';
if (NCol<3) then
Acumula:=Acumula+'1';
NCol:=NCol+1;
if (NCol=3) then
begin
if (NTerm=1)then
begin
VTerm[NTerm- 1]:=Acumula;
acumula:='';
end
else
begin
sw:=False;
i:=0;
while ((i<=NTerm) and (sw=False))do
begin
Comp:=CompareStr(VTerm[i],Acumula);
if (Comp=0) then
begin
Showmessage('Esa combinación ya la r e a l i z a s t e ' ) ;
NCol:=0;
213

sw:=True;
StringGrid1.Cells[0,NTerm]:='';
StringGrid1.Cells[1,NTerm]:='';
StringGrid1.Cells[2,NTerm]:='';
acumula:='';
end
else
i:=i+1;
end;
if (sw=False) then
begin
VTerm[NTerm -1 ] : = A c u m u l a ;
Acumula:='';
end;
end;
end;
if (NCol=4) then
begin
NTerm:=NTerm+1;
NCol:=0;
end;
if (NTerm=9) then
begin
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
B0.Visible:=False;
B1.Visible:=False;
label1.Visible:=False;
label2.Visible:=False;
label3.Visible:=False;
label4.Visible:=False;
label5.Visible:=False;
label6.Visible:=True;
label7.Visible:=True;
label8.Visible:=True;
panel1.Visible:=True;
EcuacTab(Ecuac);
label9.Visible:=True;
label10.Visible:=True;
label10.Caption:='X= '+Ecuac;
end;
end;
end;

MODULO ECUACIONES BOOLEANAS


214

P R O C E D I M I E N T O P R O P U E S T O S _ E C U A C I Ó N _ M A X . Selecciona un

ejercicio para evaluar al usuario en el módulo Ecuaciones

booleanas de la lección Teoria Básica, de acuerdo a las

características de éste.

procedure TFFormEcMax.N1Click(Sender: TObject);


var
sw:boolean;
i:integer;
begin
TipoEc:='Ecuaciones Maxterms';
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.FieldByName('Cod_Est').AsSt r i n g : = C o d i g o 1 ;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
EjerSiNo:=Leccion_TeoriaB.Fields[5].AsString;
Leccion_TeoriaB.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
sw:=False;
Ejercicios_Propuestos.First;
w h i l e ( ( not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
if (Ejercicios_Propuestos.Fields[0].AsString='Ecuaciones
Maxterms')and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin
PropBas5:=PropBas5+1;
215

for i:=1 to 32 do
VEcuac[i]:='X';
Ecuacion:=Ejercicios_Propuestos.Fields[1].asstring;
NumV:=Ejercicios_Propuestos.Fields[6].asInteger;
NumTer:=Length(Ecuacion);
for i:=1 to NumTer do
VEcuac[i]:=Ecuacion[i];
FEvaluarEc.Show;
FFormEcMax.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

PROCEDIMIENTO R E S U E L T O S _ E C U A C I O N M A X . Selecciona un

ejercicio resuelto para mostrar al usuario del tema Ecuaciones

Booleanas en la forma maxterms .

procedure TFFormEcMax.Acercade1Click(Sender: TObject);


var
sw:boolean;
i:integer;
begin
// NSimpRes:=NSimpRes+1;
TipoEc:=' Ecuaciones Maxterms';
NumTer:=0;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
Leccion_TeoriaB.Close;
Ejercicios_Resueltos.Open;
E j e r c i c i o s _ R e s u e l t o s . D is a b l e C o n t r o l s ;
sw:=False;
Ejercicios_Resueltos.First;
216

while ((not(Ejercicios_Resueltos.EOF)) and (sw=False)) do


begin
Ejercicios_Resueltos.Edit;
if (Ejercicios_Resueltos.Fields[0].AsString='Ecuaciones
Maxterms')and(Ejercicios_Resueltos.Fields[1]. A s i n t e g e r = n i v ) t h e n
begin
if (Ejercicios_Resueltos.Fields[2].Asinteger=Num_Res) then
begin
sw:=True;
Num_Res:=Num_Res+1;
end
else
Ejercicios_Resueltos.Next;
end
else
if (sw=false) then
Ejercicios_Resueltos.Ne x t ;
end;
if (sw) then
begin
Ecuacion:=Ejercicios_Resueltos.Fields[3].asstring;
NumTer:=Length(Ejercicios_Resueltos.Fields[3].AsString);
for i:=1 to 32 do
VEcuac[i]:='X';
for i:=1 to NumTer do
VEcuac[i]:=Ecuacion[i];
FEjerEBRes.Memo1.Text:=Ejercicios_Resueltos.Fields[4].asString;
FEjerEBRes.Show;
FFormEcMax.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

PROCEDIMIENTO SELECCIONA_FILA. Lleva el control de las filas que

s e h a n s e l e c c i o n a d o de la tabla de verdad propuesta para que el usuario

forme la ecuación maxterms correspondiente.

procedure TFFormEcMax1.BAceptarClick(Sender: TObject);


var
i,Numero:integer;
sw0:boolean;
begin
if (Num1<5) then
begin
Numero:=StrToInt(Edit1.Text);
217

if (Edit1.Text<>'') then
begin
if (( Numero<1) or ( Numero>8)) then
begin
showmessage('El número de filas se encuentra entre uno (1) y ocho
(8)');
edit1.Clear;
end
else
begin
sw0:=False;
for i:=0 to 3 do
i f ( E d i t 1 . T ext=VecST[i])then
sw0:=True;
if (sw0) then
begin
showmessage('Ese número de fila ya lo digitaste. Prueba con otro
por favor');
Edit1.Clear;
end
else
begin
NT:=StrToInt(Edit1.Text);
if (StringGrid1.Cells[3,NT]='1' ) t h e n
begin
showmessage('Para obtener una función maxterms solo se tienen en
cuenta las variables de entrada que hacen cero (0) la función');
Edit1.Clear;
end
else
begin
VecST[Num1- 1]:=Edit1.Text;
Num1:=Num1+1;
NumV:=0;
Ecuac:='';
label3.Visible:=True;
label4.Visible:=True;
label8.visible:=true;
label10.Visible:=True;
label7.Visible:=True;
BA.visible:=True;
BA1.visible:=True;
BB.visible:=True;
B B 1.visible:=True;
BC.visible:=True;
BC1.visible:=True;
BA.enabled:=true;
BA1.enabled:=true;
Bb.enabled:=true;
Bb1.enabled:=true;
Bc.enabled:=true;
218

Bc1.enabled:=true;
Label1.Visible:=False;
Label9.Vi sible:=False;
Label5.Visible:=False;
Label6.Visible:=False;
label7.caption:=Edit1.Text;
Edit1.Clear;
Edit1.Visible:=False;
BAceptar.visible:=False;
label2.Visible:=true;
end;
end;//else
end;//else
end
else
showmessage('Por favor digite el número de la fila que hace cero (0)
la función');
end;
end;

P R O C E D I M I E N T O F O R M A R _ A . Cuando el usuario está formando la

ecuación en forma maxterms resultante de la tabla propuesta en en

el modulo ecuaciones bo oleanas, al seleccionar A este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMax1.BAClick(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[0,NT]='0') then
begin
if (Ecuac='') then
Ecuac:='('+BA.Caption
e lse
Ecuac:=Ecuac+'+'+BA.Caption;
label2.Caption:=Func+Ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
219

end;
i f ( N u m V= 3 ) t h e n
begin
Ecuac:=Ecuac+')';
Func:=Func+Ecuac;
end;
BA.Enabled:=False;
BA1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.Visible:=True;
BAceptar.Enabled:=True;
end;
label2.Caption:=func;
end
else
Showmessage('Debes digitar - A');
end;
end;

P R O C E D I M I E N T O F O R M A R _- A. C u a n d o e l u s u a r i o e s t á f o r m a n d o

la ecuación en forma maxterms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -A este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMax1.BA1Click(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[0,NT]='1') then
begin
if (Ecuac='') then
Ecuac:='('+BA1.Caption
else
Ecuac:=Ecuac+'+'+BA1.Caption;
label2.Caption:=Func+Ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
220

Label11.Visible:=True;
Cerrar1.Enabled:=True;
B R e g r e s a r . V i s i b le:=True;
end;
if (NumV=3) then ///# de terminos
begin
Ecuac:=Ecuac+')';
Func:=Func+Ecuac;
end;
BA.Enabled:=False;
BA1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible : = T r u e ;
Edit1.Visible:=True;
BAceptar.Visible:=True;
BAceptar.Enabled:=True;
end;
label2.Caption:=func;
end
else
Showmessage('Debes digitar A');
end;
end;

P R O C E D I M I E N T O F O R M A R _ B . Cuando el usuario está formando la

e c u a c i ó n e n forma maxterms resultante de la tabla propuesta en en

el modulo ecuaciones booleanas, al seleccionar B este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMax1.BBClick(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells [1,NT]='0') then
begin
if (Ecuac='') then
Ecuac:='('+BB.Caption
else
Ecuac:=Ecuac+'+'+BB.Caption;
label2.Caption:=Func+Ecuac;
NumV:=NumV+1;
221

if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
L a b e l 1 1 . V i s i b l e : = T r u e;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then ///# de terminos
begin
Ecuac:=Ecuac+')';
Func:=Func+Ecuac;
end;
BB.Enabled:=False;
BB1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
b eg i n
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.Visible:=True;
BAceptar.Enabled:=True;
end;
label2.Caption:=Func;
end
else
Showmessage('Debes digitar - B');
end;
end;

P R O C E D I M I E N T O F O R M A R _- B . C u a n d o e l u s u a r i o e s t á f o r m a n d o

la ecuación en forma maxterms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -B este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMax1.BB1Click(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[1,NT]='1') then
begin
if (Ecuac='') then
Ecuac:='('+BB1.Caption
else
222

Ecuac:=Ecuac+'+'+BB1.Caption;
label2.Caption:=Func+Ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then ///# de terminos
begin
Ecuac:=Ecuac+')';
Func:=Func+Ecuac;
end;
BB.Enabled:=False;
BB1.En a b l e d : = F a l s e ;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.Visible:=True;
BAceptar.Enabled:=True;
end;
label2.Caption:=Func;
end
else
Showmessage('Deb e s d i g i t a r B ' ) ;
end;
end;

P R O C E D I M I E N T O F O R M A R _ C . Cuando el usuario está formando la

ecuación en forma maxterms resultante de la tabla propuesta en en

el modulo ecuaciones booleanas, al seleccionar C este

procedimiento revisa que sea la selección corre cta.

procedure TFFormEcMax1.BCClick(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[2,NT]='0') then
begin
223

if (Ecuac='') then
Ecuac:='('+BC.Caption
else
Ecuac:=Ecuac+'+'+BC.Caption;
label2.Caption:=Func+Ecuac;
NumV:= NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then ///# de terminos
begin
Ecuac:=Ecuac+')';
F u n c : = F u nc+Ecuac;
end;
BC.Enabled:=False;
BC1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.Visible:=True;
BAceptar.Enabled:=True;
end;
label2. C a p t i o n : = F u n c ;
end
else
Showmessage('Debes digitar -C ' ) ;
end;
end;

P R O C E D I M I E N T O F O R M A R _- C . C u a n d o e l u s u a r i o e s t á f o r m a n d o

la ecuación en forma maxterms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -C e ste

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMax1.BC1Click(Sender: TObject);


begin
with StringGrid1 do
224

begin
if (Cells[2,NT]='1') then
begin
if (Ecuac='') then
Ecuac:='('+BC1.Caption
else
Ecuac:=Ecuac+'+'+ B C 1 . C a p t i o n ;
label2.Caption:=Func+Ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then
begin
Ecuac:=Ecuac+')';
Func:=Func+Ecuac;
end;
BC.Enabled:=False;
BC1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.Visible:=True;
B A c e p t a r . E na b l e d : = T r u e ;
end;
label2.Caption:=Func;
end
else
Showmessage('Debes digitar C');
end;
end;

PROCEDIMIENTO SELECCIONA_FILA. Lleva el control de las filas

que se han seleccionado de la tabla de verdad propuesta para que

el usuario forme la ec uación minterms correspondiente.

procedure TFFormEcMin1.BAceptarClick(Sender: TObject);


var
225

i,Numero:integer;
sw0:boolean;
begin
if (Num1<5) then
begin
if (Edit1.Text<>'') then
begin
Numero:=StrToInt(Edit1.Text);
if ((Numero<1) or (Numero> 8 ) ) t h e n
begin
showmessage('El número de filas se encuentra entre uno (1) y ocho
(8)');
edit1.Clear;
end
else
begin
sw0:=False;
for i:=0 to 3 do
if (Edit1.Text=VecST[i])then
sw0:=True;
if (sw0) then
begin
showmessage('Ese número de fila ya lo digitaste. Prueba con otro
por favor');
Edit1.Clear;
end
else
begin
NT:=StrToInt(Edit1.Text);
if (StringGrid1.Cells[3,NT]='0') then
begin
showmessage('Para obtener una función min t e r m s s o l o s e t i e n e n e n
cuenta las variables de entrada que hacen uno (1) la función');
Edit1.Clear;
end
else
begin
VecST[Num1- 1]:=Edit1.Text;
Num1:=Num1+1;
NumV:=0;
Ecuac:='';
label3.Visible:=True;
label4.Visible:=True;
label8.visible:=true;
label7.Visible:=True;
label10.Visible:=True;
BA.visible:=True;
BA1.visible:=True;
BB.visible:=True;
BB1.visible:=True;
BC.visible:=True;
226

BC1.visible:=True;
BA.enabled:=true;
BA1.enabled:=true;
Bb.enabled:=true;
Bb1.enabled:=true;
Bc.enabled:=true;
Bc1.enabled:=true;
Label5.Visible:=False;
Label6.Visible:=False;
label7.caption:=Edit1.Text;
Edit1.Clear;
Edit1.Visible:=False;
BAceptar.visible:=False;
label2.Visible:=true;
end;
end;//else
end;//else
end
else
showmessage('Por favor digite el número de la fila que hace cero (0)
la función');
end;
end;

P R O C E D I M I E N T O F OR M A R _ A . Cuando el usuario está formando la

ecuación en forma minterms resultante de la tabla propuesta en en

el modulo ecuaciones booleanas, al seleccionar A este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BAClick(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[0,NT]='1') then
begin
ecuac:=ecuac+BA.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
227

BRegresar.Visible:=True;
end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
Bb.VISIBLE:=false;
Bc.VISIBLE:=false;
Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
BA.Enabled:=False;
BA1.Enabled:=Fa l s e ;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar - A');
end;
end;

P R O C E D I M I E N T O F O R M A R _- A. Cuando el usuario está formando

la ecuación en forma minterms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -A este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BA1Click(Sender: TObject);


228

begin
with StringGrid1 do
begin
if (Cells[0,NT]='0') then
begin
ecuac:=ecuac+BA1.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.En abled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
Bb.VISIBLE:=false;
Bc.VISIBLE:=false;
Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
BA.Enabled:=False;
BA1.Enabled:=False;
i f ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar A');
end;
end;
229

P R O C E D I M I E N T O F O R M A R _ B . C u a n d o e l u s u a r i o está formando la

ecuación en forma minterms resultante de la tabla propuesta en en

el modulo ecuaciones booleanas, al seleccionar B este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BBClick(Sender: TObject);


begin
w i t h S t r i ngGrid1 do
begin
if (Cells[1,NT]='1') then
begin
ecuac:=ecuac+Bb.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
B b.VISIBLE:=false;
Bc.VISIBLE:=false;
Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
Bb.Enabled:=False;
Bb1.Enabled:=False;
if ((Num1<5) and ( NumV=3)) then
begin
230

Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar - B');
end;
end;

P R O C E D I M I E N T O F O R M A R _- B . C u a n d o e l u s u a r i o e s t á f o r m a n d o

la ecuación en forma minterms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -B este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BB1Click(Sender: TObject);


begin
with StringGrid1 do
begin
if (Cells[1,NT]='0') then
begin
ecuac:=ecuac+Bb1.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
B R e g r e s a r . Visible:=True;
end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
Bb.VISIBLE:=false;
Bc.VISIBLE:=false;
231

Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
Bb.Enabled:=False;
Bb1.Enabled:=False;
if ((Num1<5) and (NumV=3)) the n
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar B');
end;
end;

P R O C E D I M I E N T O F O R M A R _ C . Cuando el usuario está formando la

ecuación en forma minterms resultante de la tabla propuesta en en

el modulo ecuaciones booleanas, al seleccionar C este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BCClick(Sender: TObject);


begin
with StringGrid1 do
begin
i f ( C e l ls[2,NT]='1') then
begin
ecuac:=ecuac+Bc.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
232

end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
Bb.VISIBLE:=false;
B c . VI S I B L E : = f a l s e ;
Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
Bc.Enabled:=False;
Bc1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Visible:=True;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar -C ' ) ;
end;
end;

P R O C E D I M I E N T O F O R M A R _- C . C u a n d o e l u s u a r i o e s t á f o r m a n d o

l a e c u a c i ó n e n f o r m a m i n t e r ms resultante de la tabla propuesta en

en el modulo ecuaciones booleanas, al seleccionar -C este

procedimiento revisa que sea la selección correcta.

procedure TFFormEcMin1.BC1Click(Sender: TObject);


begin
233

with StringGrid1 do
begin
i f ( C e l l s [ 2 , N T ] = ' 0') then
begin
ecuac:=ecuac+Bc1.Caption;
label2.caption:=func+ecuac;
NumV:=NumV+1;
if ((Num1=5)and(NumV=3)) then
begin
Label4.Visible:=False;
Label11.Visible:=True;
Cerrar1.Enabled:=True;
BRegresar.Visible:=True;
end;
if (NumV=3) then
begin
if (Num1<=4) then
begin
Ecuac:=Ecuac+'+';
Func:=Func+Ecuac;
label3.visible:=false;
label10.visible:=false;
label7.visible:=false;
BA.VISIBLE:=false;
Bb.VISIBLE:=false;
Bc.VISIBLE:=fa l s e ;
Ba1.VISIBLE:=false;
Bb1.VISIBLE:=false;
Bc1.VISIBLE:=false;
end
else
Func:=Func+Ecuac;
label2.caption:=func;
end;
Bc.Enabled:=False;
Bc1.Enabled:=False;
if ((Num1<5) and (NumV=3)) then
begin
Label5.Vis i b l e : = T r u e ;
Label6.Visible:=True;
Edit1.Visible:=True;
BAceptar.visible:=True;
end;
end
else
Showmessage('Debes digitar C');
end;
end;
234

P R O C E D I M I E N T O P R O P U E S T O S _ E C U A C I Ó N _ M I N . Selecciona un

ejercicio para evaluar al usuario en el m ódulo Ecuaciones

booleanas de la lección Teoria Básica, de acuerdo a las

características de éste.

procedure TFFormEcMin.N1Click(Sender: TObject);


var
sw:boolean;
i:integer;
begin
TipoEc:='Ecuaciones Minterms';
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
L eccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
EjerSiNo:=Leccion_TeoriaB.Fields[5].AsString;
Leccion_TeoriaB.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
s w : = F a l s e;
Ejercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
i f (Ejercicios_Propuestos.Fields[0].AsString= 'Ecuaciones Minterms')
and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin
PropBas4:=PropBas4+1;
for i:=1 to 32 do
235

VEcuac[i]:='X';
Ecuacion:=Ejercicios_Propuestos.Fields[1].asstring;
NumV:=Ejercicios_Propuestos.Fields[6].asInteger;
NumTer:=Length(Ecuacion);
for i:=1 to NumTer do
VEcuac[i]:=Ecuacion[i];
FEvaluarEc.Show;
FFormEcMin.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

PROCEDIMIENTO R E S U E L T O S _ E C U A C I O N M I N . Selecciona un

ejercicio resuelto para mostrar al usuario del tema Ecuaciones

Booleanas en la forma minterms .

procedure TFFormEcMin.Acercade1Click(Sender: TObject);


var
sw:boolean;
i : i n t e g er ;
begin
// NSimpRes:=NSimpRes+1;
TipoEc:='Ecuaciones Minterms';
NumTer:=0;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_TeoriaB.Open;
Leccion_TeoriaB.SetKey;
Leccion_TeoriaB.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_TeoriaB.GotoKey;
Leccion_TeoriaB.Edit;
Leccion_TeoriaB.Close;
Ejercic ios_Resueltos.Open;
Ejercicios_Resueltos.DisableControls;
sw:=False;
Ejercicios_Resueltos.First;
236

while ((not(Ejercicios_Resueltos.EOF)) and (sw=False)) do


begin
Ejercicios_Resueltos.Edit;
if (Ejercicios_Resueltos.Fields[0].AsString='Ecuaciones
Minterms')and(Ejercicios_Resueltos.Fields[1].Asinteger=niv) then
begin
if (Ejercicios_Resueltos.Fields[2].Asinteger=Num_Res) then
begin
sw:=True;
NumTer:=Length(Ejercicios_Resueltos.Fields[3].AsString);
Num_Res:=Num_Res+1;
end
else
Ejercicios_Resueltos.Next;
end
else
if (sw=false) then
Ejercicios_Resueltos.Next;
end;
if (sw) then
begin
Ecuacion:=Ejercicios_Resueltos.Fields[3].asstring;
NumTer:=Length(Ejercicios_Resueltos.Fields[3].AsString);
for i:=1 to 32 do
VEcuac[i]:='X';
for i:=1 to NumTer do
VEcuac[i]:=Ecuacion[i];
FEjerEBRes.Memo1.Text:=Ejercicios_Resueltos.Fields[4].asString;
FEjerEBRes.Show;
FFormEcMin.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en es t e n i v e l . ' ) ;
end;

LECCIÓN SIMPLIFICACIÓN McCLUSKEY.

PROCEDIMIENTO INICIAR_McCLUSKEY. Cuando un usuario visita

la lección Método de simplificación de Quine McCluskey, actualiza

los datos de éste en las tablas Estudiantes e Lección_McCluskey.


237

procedure TForm7.BMcCluskeyClick(Sender: TObject);


begin
form7.hide;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
Estudiantes.Fields[4].AsString:='Simplificación de McCluskey';
Estudiantes.Post;
end;
Estudiantes.EnableControls;
Estudiantes.Close;
Leccion_McCluskey.Open;
Leccion_McCluskey.SetKey;
Leccion_McCluskey.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_McCluskey.GotoKey;
if (Leccion_McCluskey.GotoKey=True) then
begin
Leccion_McCluskey.Edit;

Leccion_McCluskey.Fields[1].AsInteger:=Leccion_McCluskey.Fields[1].A
sInteger+1;
Leccion_McCluskey.Post;
Leccion_McCluskey.EnableControls;
Leccion_McCluskey.Close;
end
else
begin
Leccion_McCluskey.DisableControls;
Leccion_McCluskey.Last;
Leccion_McCluskey.Insert;
Leccion_McCluskey.Edit;
Leccion_McCluskey.Fields[0].AsString:=Codigo1;
Leccion_McCluskey.Fields[1].AsInteger:=1;
Leccion_McCluskey.Fields[2].AsFloat:=0;
Leccion_McCluskey.Fields[3].AsInteger:=0;

Leccion_McCluskey.Fields[4].AsString:='00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000';

Leccion_McCluskey.Fields[5].AsString:='00000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000';
238

Leccion_McCluskey.Fields[6].AsString:='00000000000000000000000000
00000000000000000000000000000000 0000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000';
Leccion_McCluskey.post;
Leccion_McCluskey.EnableC o n t r o l s ;
Leccion_McCluskey.Close;
end;
form9.show;
end;

P R O C E D I M I E N T O E V A L U A R _ M I N T E R M S . Asigna un ejercicio para

evaluar al estudiante en el modulo Expresiones Minterms de la

lección Simplificación de McCluskey, de acuerdo al nivel en que se

e n c u e nt r e é l .

procedure TForm10.Propuestos1Click(Sender: TObject);


var
niv:integer;
sw:boolean;
begin
PropExp:=PropExp+1;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
Estudiantes.Edit ;
niv:=Estudiantes.Fields[6].AsInteger;
Estudiantes.Close;
Leccion_McCluskey.Open;
Leccion_McCluskey.SetKey;
Leccion_McCluskey.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_McCluskey.GotoKey;
Leccion_McCluskey.Edit;
EjerSiNo:=Leccion_McCluskey.Fields[4].AsString;
Leccion_McCluskey.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
sw:=False;
Ejercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
239

begin
Ejercicios_Propuestos.Edit;
if (Ejercicios_Propuestos.Fields[0].AsString='Expresiones
Minterms')and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin

FEvaluarMinterms.MEnunciado.Text:=Ejercicios_Propuestos.Fields[1].as
string;
form10.hide;
FEvaluarMinterms.Show;
end
else
showmessage('No existen más ejercicios de este nivel');
end;

PROCEDIMIENTO BINARIO_DECIMAL. Toma una cadena de unos

y ceros y la convierte en una que sea el número decimal

correspondiente.

procedure binadec(var binario:string);


var
acumbin,bin,k,j: integer;
begin
acumbin:=0;
for k:=1 to length(binario) do
if (binario[k]='1') then
b egin
bin:=1;
f o r j : = 1 t o l e n g t h ( b i n a r i o )- k do
bin:=bin*2;
acumbin:=acumbin+bin;
end;
binario:=inttostr(acumbin);
end;
240

PROCEDIMIENTO ORDENAR_TERMINOS. Permite ordenar

alfabéticamente de menor a mayor, un termino de una ecuación

booleana.

procedure ordenterm(var guarda:string);


var
i,sw,sw1,sw2,j,l,long: integer;
aux: char;
begin
sw:=0;

while(sw=0)do{mq 1}
begin
i:=1;
j:=1;
sw:=1;
long:=length(guarda);
w h i l e ( j < = l o n g- 1 ) d o { m q 2 }
begin
sw1:=0;
sw2:=0;
if(guarda[i]='- ')then
begin
i:=i+1;
sw1:=1;
end;
if(guarda[i+1]='- ')then
begin
j:=i+2;
sw2:=1;
end
else
j:=i+1;
l:=comparestr(guarda[i],guarda[j]);
if (l>0)then
begin
sw:=0;

if ((sw1=0) a n d ( s w 2 = 0 ) ) o r ( ( s w 1 = 1 ) a n d ( s w 2 = 1 ) ) t h e n
begin
aux:=guarda[i];
guarda[i]:=guarda[j];
guarda[j]:=aux;
end
else
if (sw1=1) and (sw2=0) then
241

begin
guarda[i- 1]:=guarda[j];
aux:=guarda[i];
guarda[i]:=' -' ;
guarda[j]:=aux;
end
else
if (sw1=0) and (sw2=1) then
begin
aux:=guarda[i];
guarda[i]:=' -' ;
guarda[j- 1]:=guarda[j];
guarda[j]:=aux;
end;
end;
if ((sw=0)and(sw1=0)and(sw2=1)) or ((sw=0)and(sw1=0)and(sw2=0))
or((sw=1)and(sw1=0)and(sw2=0)) or ((sw=1)and(sw1=1)and(sw2=0))
then
i:=j
else
i : = j- 1;
end;
end;
end;

PROCEDIMIENTO LLENAR_AGRUPAMIENTO. Controla que el

usuario llene correctamente la columna 2 de la tabla de

agrupamiento base del método de simplificación Quine McCluskey.

procedure TForm12.AceptarClick(Sender: TObject);


var
i,k,longitud,comp:integer;
sw:boolean;
begin
if (cuentavar<>cuentavar1) then
showmessage('Faltan variables en el término')
else
begin
if (stringGrid1.colcount=1)then
begin
termagrup:='';
termagrup:=stringGrid1.cells[0,cuentaterm];
ordenterm(termagrup);
k:=0;
242

sw:=False;
while (k<CuentaTerm) and (sw=False) do
begin
comp:=CompareStr(stringGrid1.cells[0,k],Termagrup);
if (comp=0) then
sw:=True;
k:=k+1;
end;
if (sw) then
begin
showmessage('Término ya existe');
stringGrid1.Cells[0,CuentaTerm]:='';
cuentavar1:=0;
if (form13.BD.Enabled=False)then
begin
BD.Enabled:=True;
BD1.Enabled:=True;
end;
if ((form13.BB1.Enabled=False) or (form13.BB2.Enabled=False) or
(form13.BB3.Enabled=False))then
begin
BB.Enabled:=True;
BB1.Enabled:=True;
end;
if ((form13.BC1.Enabled=False) or (form13.BC2.Enabled=False) or
(form13.BC3.Enabled=False))then
begin
BC.Enabled:=True;
BC1.Enabled:=True;
end;
if ((form13.BE1.Enabled=False) or (form13.BE2.Enabled=False) or
(form13.BE3.Enabled=False))then
begin
BE.Enabled:=True;
BE1.Enabled:=True;
end;
if ((form13.BA1.Enabled=False) or (form13.BA2.Enabled=False)) then
begin
BA.Enabled:=True;
BA1.Enabled:=True;
end;
if ((form13.BF1.Enabled=False) or (form13.BF2.Enabled=False)) then
begin
BF.Enabled:=True;
BF1.Enabled:=True;
end;
end
else
begin
stringGrid1.Cells[0,cuentaterm]:=termagrup;
cuentavar1:=0;
243

CuentaTerm:=CuentaTerm+1;
if (CuentaTerm=NumTerminos) then
begin
label3.visible:=Fals e ;
label4.visible:=False;
edit1.visible:=False;
Aceptar4.visible:=False;
memo2.visible:=True;
stringGrid1.colcount:=2;
cuentavar1:=0;
cuentaterm:=0;
end
else
begin
if (form13.BD.Enabled=False)then
begin
BD.E nabled:=True;
BD1.Enabled:=True;
end;

if ((form13.BB1.Enabled=False) or (form13.BB2.Enabled=False) or
(form13.BB3.Enabled=False))then
begin
BB.Enabled:=True;
BB1.Enabled:=True;
end;

if ((form13.BC1.Enabled=False) or (form13.BC2.Enabled=False) or
(form13.BC3.Enabled=False))then
begin
BC.Enabled:=True;
BC1.Enabled:=True;
end;

if ((form13.BE1.Enabled=False) or (form13.BE2.Enabled=False) or
(form13.BE3.Enabled=False))then
begin
BE.Enabled:=True;
B E 1 . E n a bl e d : = T r u e ;
end;

if ((form13.BA1.Enabled=False) or (form13.BA2.Enabled=False)) then


begin
BA.Enabled:=True;
BA1.Enabled:=True;
end;

if ((form13.BF1.Enabled=False) or (form13.BF2.Enabled=False)) then


begin
BF.Enabled:=True;
BF1.Enabled:=True;
244

end;
end;
end;
end;

if (stringGrid1.colcount=2)then
begin //5
label3.visible:=false;
label4.visible:=false;
label1.visible:=false;
label2.visible:=false;
strinGgrid1.width:=192;
B 0 . e n a b l e d : = t r u e;
B1.enabled:=true;
BA.visible:=false;
BA1.visible:=false;
BB.visible:=false;
BB1.visible:=false;
BC.visible:=false;
BC1.visible:=false;
BD.visible:=false;
BD1.visible:=false;
BE.visible:=false;
B E 1 . v i s i b l e : = f a lse;
BF.visible:=false;
BF1.visible:=false;
B0.visible:=true;
B1.visible:=true;
term2:=' ';
if (cuentaterm>0)then
begin//6
term0:=stringGrid1.cells[0,cuentaterm- 1];
i:=1;
longitud:=length(term0);
term1:='' ;
While(i<=longitud)do
begin
if (term0[i]=' -') then
begin
term1:=term1+'0';
i:=i+2;
end
else
if (term0[i]='A')or
(term0[i]='B')or(term0[i]='C')or(term0[i]='D')or(term0[i]='E')OR
(term0[i]='F')then
begin
term1:=term1+'1';
i:=i+1;
end
ELSE
245

I:=I+1;
end;
term2:=stringGrid1.cells[1,cuentaterm- 1];
if (term1<>term2)then
begin
panel1.visible:=true;
label14.caption:=term1;
l a b e l 1 9 .caption:=term2;
stringGrid1.cells[1,cuentaterm- 1]:=term1;
end;
end;
if (CuentaTerm=NumTerminos) then
begin
stringGrid1.colcount:=3;
stringGrid1.Width:=288;
cuentavar1:=0;
cuentaterm:=0;
memo2.visible:=false;
B0.Enabled:=false;
B1.Enabled:=false;
memo2.visible:=false;
memo1.visible:=true;
memo3.visible:=true;
edit2.visible:=true;
edit2.Focused;
edit2.enabled:=true;
aceptar2.visible:=true;
aceptar.visible:=false;
b1.visible:=false;
b0.visible:=false;
ba.visible:=false;
bb.visible:=false;
bc.visible:=false;
bd.visible:=false;
be.visible:=false;
bf.visible:=false;
ba1.visible:=false;
bb1.visible:=false;
b c 1 . v i s i b l e:=false;
bd1.visible:=false;
be1.visible:=false;
bf1.visible:=false;
cuentaterm:=0;
panel1.visible:=false;
ejemplo.visible:=true;
end
else
begin
cuentavar1:=0;
cuentaterm:=cuentaterm+1;
end;
246

end;
end;
end;

PROCEDIMIENTO LLENAR_AGRUPAMIENTO2. Controla que el

usuario llene correctamente la columna 3 de la tabla de

agrupamiento base del método de simplificación Quine McCluskey.

procedure TForm14.SpeedButton1Click(Sender: TObject);


var
num,bina:str i n g ;
sw:boolean;
long,i,cuenta,j,k:integer;
begin
if (cuentaterm<=NumTerminos - 1 ) t h e n
begin
num:=edit1.text;
validarnum(num,sw);

if (sw=true)then
showmessage('Digite solo números')
else
begin

i f ( s t r t o i n t ( n u m ) < 6 ) o r ( s t r t o i n t ( n u m ) > =0 ) t h e n
begin
bina:=stringGrid1.cells[1,cuentaterm];
long:=length(bina);
i:=1;
cuenta:=0;
while(i<=long)do
begin
if (bina[i]='1') then
cuenta:=cuenta+1;
i:=i+1;
end;
if (inttostr(cuenta)<>edit1.Text)then
begin
panel3.Visible:=True;
label56.Caption:=inttostr(cuenta);
label58.Caption:=edit1.Text+'.';
label56.Visible:=True;
label58.Visible:=True;
end;
edit1.clear;
247

stringGrid1.Cells[3,cuentaterm]:='indice '+inttostr(cuenta);
cuentaterm:=cuentaterm+1;
end
else
showmessage('El número mínimo de unos es 0, y el máximo es 6');
end;
end;
if (cuentaterm=numterminos)then
begin
label8.visible:=true;
Me m o 1 . v i s i b l e : = t r u e ;
BotonOk.visible:=true;
Memo2.visible:=false;
edit1.visible:=false;
speedbutton1.visible:=false;
with stringGrid1 do
f o r j : = 0 t o c o l c o u n t - 1 do
for k:=0 to rowcount- 1 d o
mat[j,k]:=cells[j,k];
ordenmat(mat);
with stringGrid1 do
f o r j : = 0 t o c o l c o u n t - 1 do
for k:=0 to rowcount- 1 d o
cells[j,k]:=mat[j,k+1];
end;
end;

P R O C E D I M I E N T O E S C O G E R _ V A R I A B L E S . Controla que el número

de variables no esté en conflicto con el número de términos

previamente escogidos por el usuari o .

procedure TForm13.SpeedButton15Click(Sender: TObject);


begin
if (cuentavar<2) then
showmessage('Debe seleccionar mas de una variable')
else
if (numterminos=5) and (cuentavar<3)then
showmessage('Para una expresión de cinco términos, debes escoger
mínimo tres variables')
else
if (numterminos=6) and (cuentavar<3)then
showmessage('Para una expresión de seis términos, debes escoger
mínimo tres variables')
else
if (numterminos=7) and (cuentavar<3)then
248

showmessage('Para una expresión de siete términos, debes escoger


mínimo tres variables')
else
if (numterminos=8) and (cuentavar<3)then
showmessage('Para una expresión de ocho términos, debes escoger
mínimo tres variables')
else
if (numterminos=9) and (cuentavar<4)then
s h o w m e s s a ge('Para una expresión de nueve términos, debes escoger
mínimo cuatro variables')
else
if (numterminos=10) and (cuentavar<4)then
showmessage('Para una expresión de diez términos, debes escoger
mínimo cuatro variables')
else
begin
Form13.Hide;
Form12.Show;
if (form13.BD.Enabled=False)then
begin
form12.BD.Visible:=True;
form12.BD1.Visible:=True;
form12.BD.Enabled:=True;
form12.BD1.Enabled:=True;
end
else
begin
form12.BD.Enabled:=False;
form12.BD1.Enabled: =False;
end;

if ((form13.BB1.Enabled=False) or (form13.BB2.Enabled=False) or
(form13.BB3.Enabled=False))then
begin
form12.BB.Visible:=True;
form12.BB1.Visible:=True;
form12.BB.Enabled:=True;
form12.BB1.Enabled:=True;
end
els e
if ((form13.BB1.Enabled=True) or (form13.BB2.Enabled=True) or
(form13.BB3.Enabled=True))then
begin
form12.BB.Enabled:=False;
form12.BB1.Enabled:=False;
end;

if ((form13.BC1.Enabled=False) or (form13.BC2.Enabled=False) or
(form13.BC3. Enabled=False))then
begin
form12.BC.Visible:=True;
249

form12.BC1.Visible:=True;
form12.BC.Enabled:=True;
form12.BC1.Enabled:=True;
end
else
if ((form13.BC1.Enabled=True) or (form13.BC2.Enabled=True) or
(form13.BC3.Enabled=True))the n
begin
form12.BC.Enabled:=False;
form12.BC1.Enabled:=False;
end;

if ((form13.BE1.Enabled=False) or (form13.BE2.Enabled=False) or
(form13.BE3.Enabled=False))then
begin
form12.BE.Visible:=True;
form12.BE1.Visible:=True;
form12.BE.Enabled:=True;
form12.BE1.Enabled:=True;
end
else
if ((form13.BE1.Enabled=True) or (form13.BE2.Enabled=True) or
(form13.BE3.Enabled=True))then
begin
form12.BE.Enabled:=False;
form12.BE1.Enabled:=False;
end;

if ((form13.BA1.Enabled=False) or (form13.BA2.Enabled=False)) then


begin
form12.BA.Visible:=True;
form12.BA1.Visible:=True;
form12.BA.Enabled:=True;
form12.BA1.Enabled:=True;
end
else
if ((form13.BA1.Enabled=True) or (form13.BA2.Enabled=True))then
begin
form12.BA.Enabled:=False;
form12.BA1.Enabled:=False;
end;

if ((form13.BF1.Enabled=False) or (form13.BF2.Enabled=False)) then


begin
form12.BF.Visible:=True;
form12.BF1.Visible:=True;
form12.BF.Enabled:=True;
form12.BF1.Enabled:=True;
end
else
if ((form13.BF1.Enabled=True) or (form13.BF2.Enabled=True))then
250

begin
form12.BF.Enabled:=False;
form12.BF1.Enabled:=False;
end;
Form12.label1.Visible:=False;
Form12.label2.Visible:=False;
Form12.edit1.visible:=false;
Form12.edit1.Enabled:=false;
Form12.Aceptar4.Visible:=false;
form12.aceptar.visible:=true;
form12.aceptar.enabled:=true;
Form12.label3.Visible:=True;
Form12.label4.Visible:=True;
Form12.StringGrid1.Visible: = T r u e ;
end;
ordenterm(TermGral);
end;

PROCEDIMIENTO ORDENAR_MATRIZ. Ordena una matriz cuyos

datos son de tipo cadena, de menor a mayor según la columna

número tres.

procedure ordenmat(var mat1:matriz1);


var
sw,i,c: integer;
aux1,aux2,aux3,aux4,a,b: string;
begin
sw:=0;
while(sw=0)do
begin
sw:=1;
for i:=0 to numterminos - 1 do
begin
a:=mat1[3,i];
b:=mat1[3,i+1];
c:=comparestr(a,b);
if (c>0) then
begin
aux1:=mat1[0,i];
aux2:=mat1[1,i];
aux3:=mat1[2,i];
aux4:=mat1[3,i];
mat1[0,i]:=mat1[0,i+1];
mat1[1,i]:=mat1[1,i+1];
mat1[2,i]:=mat1[2,i+1];
251

mat1[3,i]:=mat1[3,i+1];
mat1[0,i+1]:=aux1;
mat1[1,i+1]:=aux2;
mat1[2,i+1]:=aux3;
mat1[3,i+1]:=aux4;
sw:=0;
end;
e nd;
end;
end;

PROCEDIMIENTO PROPUESTOS_McCluskey. Selecciona la

evaluación que se utiliza en el modulo tabla de agrupamiento base

de la lección de Quine McCluskey.

procedure TForm14.Propuestos1Click(Sender: TObject);


var
i,j:integer;
sw:boolean;
begin
PropTab:=PropTab+1;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Cod;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
E s t u d iantes.Close;
Leccion_McCluskey.Open;
Leccion_McCluskey.SetKey;
Leccion_McCluskey.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_McCluskey.GotoKey;
Leccion_McCluskey.Edit;
EjerSiNo:=Leccion_McCluskey.Fields[5].AsString;
Leccion_McCluskey.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
sw:=False;
Ejercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
252

if (Ejercicios_Propuestos.Fields[0].AsString= 'Tabla de Agrupamiento


Base')and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
if (sw) then
begin
Func ion:=Ejercicios_Propuestos.Fields[1].asstring;
FEvaluarTabla.Memo4.Lines.Text:='X='+Funcion;
NumT:=0;
ContarTerm(Funcion,NumT);
FEvaluarTabla.StringGrid1.Height:=20*NumT;
// FEvaluarTabla.StringGrid1.Height:=20*(NumT+1);
w i t h F E v a l u a r T a b l a . S t r i ngGrid1 do
begin
RowCount:=NumT;
for i:=0 to 3 do
for j:=0 to NumT- 1 do
Cells[i,j]:='';
end;
with FEvaluarTabla.StringGrid1 do
f o r i : = 0 t o N u m T -1 d o
Vec[i]:='';
FuncVec(Funcion,Vec);
with FEvaluarTabla.StringGrid1 do
begin
Height:=NumT*19;
RowCount:=NumT;
for i:=0 to NumT- 1 do
Cells[0,i]:=Vec[i];
end;
col:=1;
FEvaluarTabla.B0.Enabled:=True;
FEvaluarTabla.B1.Enabled:=True;
FEvaluarTabla.B2.Enabled:=False;
FEvaluarTabla.B3.Enabled:=False;
FEvaluarTabla.B4.Enabled:=False;
FEvaluarTabla.B5.Enabled:=False;
FEvaluarTabla.B6.Enabled:=False;
FEvaluarTabla.B7.Enabled:=False;
FEvaluarTabla.B8.Enabled:=False;
FEvaluarTabla.B9.Enabled:=False;
FEvaluarTabla.BAceptar.Enabled:=true;
F E v a l uarTabla.Show;
form14.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;
253

PROCEDIMIENTO RESUELTOS_McCLUSKEY. Selecciona un

ejercicio resuelto para que sea consultado por el usuario del

módulo tabla de agrupamie nto base de la lección de Quine

McCluskey.

procedure TForm14.Resueltos1Click(Sender: TObject);


var
i,j,k:integer;
sw:boolean;
begin
ResTab:=ResTab+1;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Cod;
E s t u d i a n t es . G o t o K e y ;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_McCluskey.Open;
Leccion_McCluskey.SetKey;
Leccion_McCluskey.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_McCluskey.GotoKey;
Leccion_McCluskey.Edit;
EjerSiNo:='';
for k:=1 to 255 do
EjerSiNo:=EjerSiNo+VEjerR[k];
Leccion_McCluskey.Close;
Ejercicios_Resueltos.Open;
Ejercicios_Resueltos.DisableControls;
sw:=False;
Ejercicios_Resueltos.First;
w hile ((not(Ejercicios_Resueltos.EOF)) and (sw=False)) do
begin
Ejercicios_Resueltos.Edit;
if (Ejercicios_Resueltos.Fields[0].AsString='Tabla de Agrupamiento
Base')and (Ejercicios_Resueltos.Fields[1].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Res ueltos.Fields[2].AsInteger]='0') then
sw:=True;
if sw=false then
254

Ejercicios_Resueltos.Next;
end;
if (sw) then
begin
Funcion:=Ejercicios_Resueltos.Fields[3].asstring;
FEjerMCRes.Memo4.Lines.Text:='X='+Funcion;
VEjerR[Ejercicios_Resueltos . F i e l d s [ 2 ] . A s I n t e g e r ] : = ' 1 ' ;
NumT:=0;
ContarTerm(Funcion,NumT);
FEjerMCRes.StringGrid1.Height:=19*(NumT+1);
with FEjerMCRes.StringGrid1 do
begin
RowCount:=NumT;
for i:=0 to 3 do
for j:=0 to NumT- 1 do
Cells[i,j]:='';
end;
w i t h FEjerMCRes.StringGrid1 do
f o r i : = 0 t o N u m T -1 d o
Vec[i]:='';
FuncVec(Funcion,Vec);
with FEjerMCRes.StringGrid1 do
begin
Height:=NumT*19;
RowCount:=NumT;
for i:=0 to NumT- 1 do
Cells[0,i]:=Vec[i];
end;
col:=1;
F E j e r MCRes.PageControl1.ActivePage:=FEjerMCRes.PTablaAgr;
FEjerMCRes.Image1.Visible:=True;
FEjerMCRes.Show;
form14.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

P R O C E D I M I E N T O D E C I M A L _ B I N A R I O . Toma una cadena que lo

contiene un número decimal y lo convierte en una cadena binaria

de unos y ceros.

procedure decbin(longceld:integer;var dec:string);


var
bin,num,long,i: integer;
255

cad,num1:string;
begin
num:=strtoint(dec);
dec:='';
repeat
bin:=num mod 2;
dec:=dec+inttostr(bin);
num:=num div 2;
until(num<2);
num1:=IntToStr(num);
dec:=dec+num1;
long:=length(dec);
cad:='';
for i:=long downto 1 do
cad:=cad+dec[i];
if (longceld>long) then
for i:=1 to (longceld- long) do
cad:='0'+cad;
dec:=cad;
end;

PROCEDIMIENTO COMPARE_CADENAS. Compara dos cadenas y

genera una tercera cadena donde a los teminos diferentes se les

asigna (-).

procedure comparecad(cadena1,cadena2:string; var cadena3:string; var


sw:boolean);
var
long,i,c:integer;
begin
long:= length(cadena1);
c:=0;
sw:=false;
for i:=1 to long do
if cadena1[i]=cadena2[i] then
cadena3:=cadena3+cadena1[i]
else
begin
cadena3:=cadena3+' -' ;
c:=c+1;
end;
if c=1 then
sw:=true;
end;
256

PROCEDIMIENTO AGRUPAMIENTO. Realiza la primer a reducción

sobre la tabla de agrupamiento base del método de simplificación

de Quine McCluskey.

procedure agrupamiento(StringGrid1:
TStringGrid;mat1:agrupa;col1:integer;col2:integer;col3:integer;var mat2:
agrupa;var cont:integer);
var
i , j , l o n g , c , c 1 : i n te g e r ;
indice,indice2,cadena:string;
sw,sw1:boolean;
begin
j:=0;
while(j<=stringGrid1.rowcount -1 ) d o
begin
indice:=mat1[col1,j];
i:=j+1;
sw:=false;
while(i<=stringGrid1.rowcount- 1)and (sw=false)do
if indice=mat1[col1,i] then
i:=i+1
e lse
begin
sw:=true;
indice2:=mat1[col1,i];
end;
if (sw) then
while(mat1[col1,i]=indice2)and(i<=stringGrid1.rowcount- 1)do
begin
cadena:='';
comparecad(mat1[col2,j],mat1[col2,i],cadena,sw1);
if (sw1) then
begin
m a t2[0,cont]:=cadena;
mat2[1,cont]:=mat1[col3,j]+','+mat1[col3,i];
long:=length(cadena);
c1:=0;
for c:=1 to long do
if cadena[c]='1' then
c1:=c1+1;
mat2[2,cont]:='indice'+inttostr(c1);
cont:=cont+1;
end;
i:=i+1;
257

end;
j:=j+1;
end;
end;

P R O C E D I M I E N T O O R D _ V E C T . Ordena un vector

procedure ordenvect(tam:integer;var vect:vector);


var
aux:integer;
sw:boolean;
i,j:integer;
begin
sw:=true;
i:=0;
while(i<=tam+1) and (sw)do
begin
sw:=false;
for j:=0 to tam - i- 1 do
if (vect[j]>vect[j+1]) then
begin
sw:=true;
aux:=vect[j];
vect[j]:=vect[j+1];
vect[j+1]:=aux;
end;
i:=i+1;
end;
end;

LECCIÓN SIMPLIFICACIÓN ALGEBRAICA.

P R O C E D I M I E N T O I N I C I A R _ S I M P L I F I C A C I O N . Cuando un u s u a r i o

visita la lección Simplificación Algebraica, actualiza los datos de

éste en las tablas Estudiantes y Lección_Simplificación.

procedure TForm7.Bsimplifi
258

cClick(Sender: TObject);
begin
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
Estudiantes.Fields[4].AsString:='Simplificación Algebraica';
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
Leccion_Simplificacion.Open;
Leccion_Simplificacion.SetKey;
Leccion_Simplificacion.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_Simplificacion.GotoKey;
if (Leccion_Simplificacion.GotoKey=True) then
begin
Leccion_Simplificacion.Edit;

L e c c i o n_Simplificacion.Fields[1].AsInteger:=Leccion_Simplificacion.Field
s[1].AsInteger+1;
Leccion_Simplificacion.Post;
Leccion_Simplificacion.EnableControls;
Leccion_Simplificacion.Close;
end
else
begin
Leccion_Simplificacion.DisableControls;
Lec cion_Simplificacion.Last;
Leccion_Simplificacion.Insert;
Leccion_Simplificacion.Edit;
Leccion_Simplificacion.Fields[0].AsString:=Codigo1;
Leccion_Simplificacion.Fields[1].AsInteger:=1;
Leccion_Simplificacion.Fields[2].AsFloat:=0;
Leccion_Simplificacion.Fields[3].AsInteger:=0;

Leccion_Simplificacion.Fields[4].AsString:='000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000 000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000';

Leccion_Simplificacion.Fields[5].AsString:='000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000';
259

Leccion_Simplificacion.Fields[6].AsString:='000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000';

Leccion_Simplificacion.Fields[7].AsString:='000000000000000000000 0 0 0
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000';
Leccion_Simplificacion.post;
Leccion_Simplificacion.EnableControls;
Leccion_Simplificacion.Close;
end;
form7.hide;
FSimpAlg0.Show;
end;

PROCEDIMIENTO TEOREMA_CUATRO. Determina si el teorema X-

X=0 del Álgebra booleana es aplicable al ejercicio que se le ha

p r o p ue s t o resolver al usuario en la lección simplificación

Algebraica.

procedure TFSimpAlg.B4Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
e ls e
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
260

MostOcul;
showmessage('Esta ley no es aplicable en e s t e c a s o ' ) ;
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
begin
MostOcul;
s h o w m e s s age('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=1) then
begin
label29.Visible:=True;
Ecuacion:='X=Q-R +-QR';
showmessage('Hemos obtenido el resultado X=Q-R +-QR aplicando el
teorema 4');
Dos.Visible:=True;
D o s . F o n t .C o l o r : = c l W h i t e ;
Dos.Caption:=Ecuacion;
Cont_T:=0;
DeshBot(FSimpAlg);
{ FSimpAlg2.Show;
FSimpAlg.Hide;}
end
else
showmessage('Esta ley no es aplicable en este caso');
end;
end;

P R O C E D I M I E N T O T E O R E M A _ D I E C I S I E T E . D e t e r m i n a s i el teorema

– (XY)=- X +- Y d e l Á l g e b r a b o o l e a n a e s a p l i c a b l e a l e j e r c i c i o q u e s e

le ha propuesto resolver al usuario en la lección simplificación

Algebraica.
261

procedure TFSimpAlg.B17Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
i f ( C ont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3] ) then
begin
if (Cont_T=0) then
begin
OculLB;
Label29.Visible:=False;
LEcuacion.Visible:=True;
LEcuacion.Caption:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=( -R+ -S+ -T )- (R+S+T)';
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando la Ley 17 al
t é r m i n o - (RST)');
end
else
if ((Cont_T=1) and (Ecuacion='X=- (RST) -R -S- T')) then
begin
Dos.Visible:=True;
Ecuacion:='X=( -R+ -S+ -T )-R -S -T';
Dos.Caption:=Ecuacion;
showmessage('O btuvimos este resultado aplicando la Ley 17 al
t é r m i n o - (RST)');
Cont_T:=Cont_T+1;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
begin
OculLB;
Label29.Visible:=False;
262

LEcuacion.Visible:=True;
LEcuacion.Caption:=Ejercicio;
Uno.Visible:=True;
E c u a c i o n : = ' X = A B C + A-B (- - A+ -- C ) ' ;
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando la Ley 17 al
t é r m i n o - (- A-C)');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;

PROCEDIMIENTO TEOREMA_DIECIOCHO. Determina si el teorema

–X=X del Álgebra booleana es aplicable al ejercicio que se le ha

propuesto resolver al usuario en la lección simplificación

Algebraica.

procedure TFSimpAlg.B18Click(Sender: TObject);


begin
i f ( E j e r c i c i o = V E j e r c [ 1 ] ) t h en
begin
if (Cont_T=0) then
MostOcul;
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end
else
263

if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end
else
if (Cont_T=1) then
begin
Dos.Visible:=True;
E c u a c i o n : = ' X = A B C + A-B ( A + C ) ' ;
Dos.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
show message('Obtuvimos este resultado cancelando las inversiones
dobles en los términos - - A y -- C ' ) ;
end
else
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end
else
if (Ejercicio=VEjerc[5]) then
begin
i f ( C o n t _ T = 0 ) then
MostOcul;
showmessage('En este caso no es posible cancelar las inversiones
dobles');
end;
end;

P R O C E D I M I E N T O T E O R E M A _ T R E C E . Determina si el teorema

X(Y+Z)=XY+XZ del Álgebra booleana es aplicable al ejercicio que

s e l e h a p r o p u e s t o r e s o l v e r al u s u a r i o e n l a l e c c i ó n s i m p l i f i c a c i ó n

Algebraica.
264

procedure TFSimpAlg.B13AClick(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
begin
OculLB;
LEcuacion.Visible:=True;
LEcuacion.Caption:=Ejercicio;
Uno.Vi s i b l e : = T r u e ;
Ecuacion:='X=BC( - A+A)+ -B -C( - A+A)+A- B C ' ;
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Hemos agrupado los términos - A B C + A B C y A- B -C+ - A-
B -C a p l i c a n d o e l t e o r e m a 1 3 A ' ) ;
end
else
if (Cont_T=2) then
begin
T r e s . V i s ib l e : = T r u e ;
Ecuacion:='X=BC+ -B (-C + A C ) ' ;
Tres.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Hemos agrupado los términos -B -C + A-BC aplicando el
teorema 13A');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
e ls e
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
begin
OculLB;
LEcuacion.Visible:=True;
LEcuacion.Caption:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- (C+D)+C -D(A+ - A)+- B ( A-C+ - ACD)';
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacio n ;
Showmessage('Hemos agrupado los términos - ACD+AC -D aplicando el
teorema 13A');
end
else
if ((Cont_T=1) and (Ecuacion='X= -C-D +- AC-D + A- B-C +- A-BCD+AC-D'))
then
begin
Dos.Visible:=True;
265

Ecuacion:='X=-C -D+C -D (- A+A)+- B ( A-C+ - ACD)';


D o s . C aption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Obtuvimos este resultado aplicando el Teorema 13A a
los términos - AC -D+AC-D y A- B-C + A- B C D ' ) ;
end
else
if (Cont_T=3) then
begin
Cuatro.Visible:=True;
Ecuacion:='X= -D (-C+C)+ -B ( A- C+- A C D ) ' ;
Cuatro.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Obtuvimos este resultado aplicando el Teorema 13A a
los términos - C-D + C -D ' ) ;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
i f ( E j e r c icio=VEjerc[3]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=2) then
begin
Tres.Visible:=True;
Ecuacion:='X=-R -R -S- T+ -S -R- S- T+- T- R-S -T ' ;
Tres.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando el Teorema 13A a
los términos ( -R+ -S+ -T )- R-S - T');
Cont_T:=Cont_T+1;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=2) then
begin
266

Tres.Visible:=True;
E c u a c i o n : = ' X = A B C + A-B A + A-BC';
Tres.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Obtuvimos este resultado aplicando la Ley 13A al
t é r m i n o A-B(A+C)');
end
else
if (Cont_T=4) then
begin
Cinco.Visible:=True;
Ecuacion:='X=AC(B+- B ) + A- B ' ;
cinco.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
s h o w m e s s age('Obtuvimos este resultado aplicando el Teorema 13A
agrupando los términos ABC+A- BC');
end
else
if (Cont_T=6) then
begin
label29.Visible:=True;
Siete.Visible:=True;
Siete.Font.Color:=clWhite;
Ecuacion:='X=A(- B+C ) ' ;
Siete.Caption:=Ecuacion;
Cont_T:=0;
showmessage('Obtuvimos este resultado aplicando el Teorema 13A
a l o s t é r m i n o s A C + A-B ' ) ;
DeshBot(FSimpAlg);
{ FSimpAlg2.Show;
FSimpAlg.Hide;}
end
else
s h o w m e s s age('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;

PROCEDIMIENTO TEOREMA_TRES. Determina si el teorema

X· X=X d e l Á l g e b r a b o o l e a n a e s a p l i c a b l e a l e j e r c i c i o q u e s e l e h a
267

propuesto resolver al usuario en la lección simplificación

Algebraica.

procedure TFSimpAlg.B3Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont _T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=3) then
begin
Cuatro.Visible:=True;
Ecuacion:='X=-R -S -T+ -S -R -T+ -T -R- S ' ;
Cuatro.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando el Teorema 3 a los
t é r m i n o -R -R -S -T+ -S -S -R- T+- T- R- S- T');
Cont_T:=Cont_T+1;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
268

else
if (Cont_T=3) then
begin
Cuatro.Visible:=True;
E c u a c i o n : = ' X = A B C + A-B + A- B C ' ;
Cuatro.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
s h o w m e s s a g e ( ' O b t u v i m o s e s t e resultado aplicando el Teorema 3 al
t é r m i n o A-B A ' ) ;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este c aso');
end;
end;

PROCEDIMIENTO TEOREMA_DIECISEIS. Determina si el teorema -

(X+Y)=- X - Y del Álgebra booleana es aplicable al ejercicio que se le

ha propuesto resolver al usuario en la lección simplificación

Algebraica.

procedure TFSimpAlg.B16Click(Sende r: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
begin
OculLB;
LEcuacion.Visible:=True;
LEcuacion.Caption:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- C-D +- AC-D + A- B-C +- A-BCD+AC -D';
269

Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (C+D)');
end
else
i f ((Cont_T=2) and (Ecuacion='X=- (C+D)+C -D+ -B ( A-C +- ACD)')) then
begin
Tres.Visible:=True;
Ecuacion:='X=-C -D+C -D+ -B ( A-C+- A C D ) ' ;
Tres.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Obtuvimos este resultado aplicando la Ley 16 al
térm ino - (R+S+T)');
end
else
if ((Cont_T=1) and (Ecuacion='X= -( C + D ) + C-D(A+ - A)+- B ( A-C+ - ACD)'))
then
begin
dos.Visible:=True;
Ecuacion:='X= -C -D+C -D(A+- A)+ -B ( A-C+- A C D ) ' ;
Dos.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
s h o w m e s s a g e ( 'Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (C+D)');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
begin
OculLB;
LEcuacion.Visible:=True ;
LEcuacion.Caption:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- ( R S T )-R -S -T';
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (R+S+T)');
end
else
if ((Cont_T=1) and ( Ecuacion='X=( -R+ -S+ -T )- ( R + S + T ) ' ) ) t h e n
begin
Dos.Visible:=True;
Ecuacion:='X=( -R+ -S+ -T )-R -S -T';
Dos.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
270

showmessage('Obtuvimos este resultado aplicando la Ley 16 al


t é r m i n o - (R+S+T)');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
i f ( C o nt _ T = 0 ) t h e n
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;

PROCEDIMIENTO TEOREMA_13B. Determina si el teorema

(W+X)(Y+Z)=WY+XY+WZ+XZ del Álgebra booleana es aplicable al

e j e r c i c i o q u e s e l e h a p r o p u e s t o r e s o l v e r a l u s u a rio en la lección

simplificación Algebraica.

procedure TFSimpAlg.B13BClick(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
i f ( E j e r c i c i o = VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
271

if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
begin
OculLB;
LEcuacion.Visible:=True;
LEc u a c i o n . C a p t i o n : = E j e r c i c i o ;
Uno.Visible:=True;
Ecuacion:='X=Q -Q+Q-R + R -Q + R-R';
Cont_T:=Cont_T+1;
Uno.Caption:=Ecuacion;
showmessage('Hemos obtenido este resultado aplicando el teorema
13B a los términos (Q+R)(-Q +-R ) ) ' ) ;
end
else
showmes sage('Esta ley no es aplicable en este caso');
end;
end;

PROCEDIMIENTO TEOREMA_SIETE. Determina si el teorema

X+X=X del Álgebra booleana es aplicable al ejercicio que se le ha

propuesto resolver al usuario en la lección simplificación

Algebraica.

p r ocedure TFSimpAlg.B7Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
MostOcul;
272

showmessage('Esta ley no es aplicable en este caso');


end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=4) then
begin
label29.Visible:=True;
Cinco.Visible:=True;
Cinco.Font.Color:=clWhite;
Ecuacion:='X=-R -S -T';
Cinco.Caption:=Ecuacion;
showmessage('Obtuvimos este resultado aplicando el Teorema 7 a los
t é r m i n o s -R -S -T +-R -S -T+ -R- S- T');
Cont_T:=0;
DeshBot(FSimpAlg);
{ FSimpAlg2.Show;
FSimpAlg.Hide;}
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplic a b l e e n e s t e c a s o ' ) ;
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;
273

PROCEDIMIENTO TEOREMA_OCHO. Determina si el teorema X +-

X = 1 d e l Á l g e b r a b o o l e a na e s a p l i c a b l e a l e j e r c i c i o q u e s e l e h a

propuesto resolver al usuario en la lección simplificación

Algebraica.

procedure TFSimpAlg.B8Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmes s a g e ( ' E s t a l e y n o e s a p l i c a b l e e n e s t e c a s o ' ) ;
end
else
if (Cont_T=1) then
begin
Dos.Visible:=True;
Ecuacion:='X=BC+ -B -C + A-B C ' ;
Dos.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Hemos agrupado los términos BC(A+ - A) y - B-C ( A+ - A)
aplicando el teorema 8');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
i f ((Cont_T=2) and (Ecuacion='X=- C-D + C-D (- A+A)+- B ( A-C+ - ACD)'))
then
begin
Tres.Visible:=True;
Ecuacion:='X=-C -D+C -D+ -B ( A-C+- A C D ) ' ;
Tres.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
274

s h o w m e s s a g e ( ' H e m o s o b t e n i d o e s t e r e s u l t a d o a p l icando el Teorema


13A al término C- D(A+- A ) ' ) ;
end
else
if ((Cont_T=4) and (Ecuacion='X= -D (-C+C)+ -B ( A-C+- ACD)'))then
begin
label29.Visible:=True;
Cinco.Visible:=True;
Cinco.Font.Color:=clWhite;
Ecuacion:='X= -D+ -B ( A- C+- A C D ) ' ;
Cinco.Caption:=Ecuacion;
Cont_T:=0;
showmessage('Hemos obtenido este resultado aplicando el Teorema
13A al término -D(C+ -C ) ' ) ;
DeshBot(FSimpAlg);
{ FSimpAlg2.Show;
FSimpAlg.Hide;}
end
else
if ((Cont_T=1) and (Ecuacion='X= -( C + D ) + C-D(A+ - A)+- B ( A-C+ - ACD)'))
then
begin
Dos.Visible:=True;
Ecuacion:='X= -(C+D)+C -D+ -B ( A-C+- A C D ) ' ;
Dos.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Hemos obtenido este resultado aplicando el Teorema
1 3A al término C- D(A+- A ) ' ) ;
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=5) then
begin
Seis.Visible:=True;
275

Ecuacion:='X=AC+A- B ' ;
seis.Caption:=Ecuacion;
Cont_T:=Cont_T+1;
showmessage('Obtuvimos este resultado aplicando el Teorema 8 al
término AC(B+ -B)');
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;

PROCEDIMIENTO TEOREMA_QUINCE. Determina si el teorema

X +-X Y = X + Y d e l Á l g e b r a b o o l e a n a e s a p l i c a b l e a l e j e r c i c i o q u e s e l e

ha propuesto resolver al usuario en la lección s i mplificación

Algebraica.

procedure TFSimpAlg.B15Click(Sender: TObject);


begin
if (Ejercicio=VEjerc[1]) then
begin
if (Cont_T=0) then
begin
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Cont_T=3) then
b egin
label29.Visible:=True;
Cuatro.Visible:=True;
Cuatro.Font.Color:=clWhite;
Ecuacion:='X=BC+ -B (-C + A ) ' ;
Cuatro.Caption:=Ecuacion;
showmessage('Hemos a g r u p a d o e l t é r m i n o - B( -C+CA) aplicando el
teorema 15');
Cont_T:=0;
276

D e s h B ot(FSimpAlg);
{ FSimpAlg2.Show;
FSimpAlg.Hide;}
end
else
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[2]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este c a s o ' ) ;
end
else
if (Ejercicio=VEjerc[3]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[4]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end
else
if (Ejercicio=VEjerc[5]) then
begin
if (Cont_T=0) then
MostOcul;
showmessage('Esta ley no es aplicable en este caso');
end;
end;

P R O C E D I M I E N T O R E S U E L T O S _ S I M P L _ A L G E B R A I C A . Selecciona

un ejercicio r e s u e lt o del tema Simplificación Algebraica para

mostrar al usuario.

procedure TFSimpAlg.Resueltos1Click(Sender: TObject);


var
sw:boolean;
begin
277

NSimpRes:=NSimpRes+1;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo 1 ;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_Simplificacion.Open;
Leccion_Simplificacion.SetKey;
Leccion_Simplificacion.FieldByName('Cod_Est').AsString:=
Codigo1;
Leccion_Simplificacion.GotoKey;
Leccion_Simplificacion.Edit;
EjerSiNo:=Leccion_Simplificacion.Fields[4].AsString;
Leccion_Simplificacion.Close;
Ejercicios_Resueltos.Open;
Ejercicios_Resueltos.DisableControls;
sw:=False;
E jercicios_Resueltos.First;
while ((not(Ejercicios_Resueltos.EOF)) and (sw=False)) do
begin
Ejercicios_Resueltos.Edit;
if (Ejercicios_Resueltos.Fields[0].AsString = 'Simplificacion Algebraica')
and (Ejercicios_Resueltos.Fields[1].Asinteger=niv) then
begin
if (Ejercicios_Resueltos.Fields[2].Asinteger=Num_Res) then
begin
sw:=True;
Num_Res:=Num_Res+1;
end
else
Ejercicios_Resueltos.Next;
end
else
if (sw=false) then
Ejercicios_Resueltos.Next;
end;
if (sw) t hen
begin
FEjerSARes.Memo2.Text:=Ejercicios_Resueltos.Fields[4].asString;
FEjerSARes.Memo1.Text:=Ejercicios_Resueltos.Fields[3].asString;
FEjerSARes.Show;
FSimpAlg.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;
278

PROCEDIMIENTO PROPUESTOS_SIMPL_ALGEBRAICA. Selecciona un

ejercicio para evaluar al estudiante en la lección simplificación

algebraica.

procedure TFSimpAlg.Propuestos1Click(Sender: TObject);


var
sw:boolean;
begin
Estudiantes.Open;
E s t u d i a n t e s . S etKey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
niv:=Estudiantes.Fields[6].AsInteger;
end;
Estudiantes.Close;
Leccion_Simplificacion.Open;
Leccion_Sim plificacion.SetKey;
Leccion_Simplificacion.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_Simplificacion.GotoKey;
Leccion_Simplificacion.Edit;
case niv of
1:EjerSiNo:=Leccion_Simplificacion.Fields[4].AsString;
2:EjerSiNo:=Leccion_Simplificacion.Fields[5].AsString;
3:EjerSiNo:=Leccion_Simplificacion.Fields[6].AsString;
4:EjerSiNo:=Leccion_Simplificacion.Fields[7].AsString;
end;
Leccion_Simplificacion.Close;
Ejercicios_Propuestos.Open;
Ejercicios_Propuestos.DisableControls;
sw:=False;
E j ercicios_Propuestos.First;
while ((not(Ejercicios_Propuestos.EOF)) and (sw=False)) do
begin
Ejercicios_Propuestos.Edit;
if (Ejercicios_Propuestos.Fields[0].AsString='Simplificación
Algebraica')and (Ejercicios_Propuestos.Fields[2].Asinteger=niv) then
if (EjerSiNo[Ejercicios_Propuestos.Fields[7].AsInteger]='0') then
sw:=True;
if sw=false then
Ejercicios_Propuestos.Next;
end;
279

if (sw) then
begin
PropSA:=PropSA+1;
Ejercicio:=Ejercicios_Propuestos.Fields[1].asstring;
//Ejercicio:='X=-(A+B+-C+-D+E)+-A-B-C-E+ABCD-E+ABC+-A-BCD-E';
FEvaluarSA.M28.Text:=Ejercicio;
FEvaluarSA.Show;
FSimpAlg.Hide;
end
else
showmessage('No hay más ejercicios sobre este tema en este nivel.');
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA13A. Permite aplicar el

te o r e m a X ( Y + Z ) = X Y + X Z d e l á l g e b r a b o o l e a n a e n l a e v a l u a c i ó n

sobre simplificación algebraica, una vez lo ha seleccionado el

usuario.

procedure TFEvaluarSA.B13AClick(Sender: TObject);


begin
if (Ejercicio='S= -P -Q-R +-P -QR+ -PQ -R+ -PQR+PQR') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='S=- P-Q (- R + R ) +-P Q (- R+R)+PQR';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A a los términos -P-Q -R c o n - P-Q R y - PQ-R c o n -PQR';
end
else
if ((Cont_T=2) and (Ecuacion='S=- P-Q+ -PQ+PQR')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='S=- P( -Q+Q)+PQR';
Tres.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
280

Memo1.Text:='Obtuvimos este resultado aplicando el Teorema


13A al término -P -Q c o n -P Q ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=ABC+ - AC') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
E c u a c i o n : = ' X=C(AB+ - A)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A a los términos ABC y - AC';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=ABC+A-BC+ - A') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visibl e:=True;
Ecuacion:='X=AC(B+- B ) +- A';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A a los términos ABC con A-B C ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
281

NError:=NError+1;
end
else
if (Ejercicio='X= - A-B -C- D+- A-B C-D+ - AB-C -D ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuac ion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= - A- C-D (- B+B)+- A- BC-D ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A a los términos - A-B -C- D con - AB-C -D ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X=- A-C -D+ - A-BC -D ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A-D (-C +-BC)';
Tres.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A al término - A-C- D c o n - A-BC -D';
end
else
if ((Cont_T=1) and (Ecuacion='X= - A-C-D (- B+B)+- A- BC- D ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-D( -C (-B+B)+- BC)';
Dos.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A al término - A-C- D( -B+B)con - A-BC -D ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=ABCDE+- A- BCDE+ABCD- E+- A-B -C -D E ' ) t h e n
if (Cont_T=0) then
282

begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=ABCD(E+- E)+ - A-B E ( C D +-C -D ) ' ;
Cont_T : = C o n t _ T + 1 ;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
13A a los términos ABCDE con ABCD- E y - A- BCDE con - A-B-
C -D- E ' ;
end
else
begin
P a nel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -A-B-C-D-E + -(A+B+C+D+E) + ABCDE + AB-CD-E') then
if (Cont_T=0) then
begin
C o n tB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= - A-B -C- D-E +- (A+B+C+D+E)+ABD(CE+-C -E ) ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término ABCDE con AB -CD -E ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X=-A-B-C-D-E+ABCDE+AB-CD-E')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A- B- C-D -E+ABD(CE+ -C -E ) ' ;
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos ABCDE y AB -CD -E';
Label29.Visible:=True;
BRegresar.Visible:=True;
283

BRegresar.Enabled:=True;
end
else
if ((Cont_T=1) and (Ecuacion='X= - A-B -C-D -E+ - A-B -C- D-E + ABCDE+AB -

CD -E')) then

begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A- B-C -D- E+- A- B-C -D -E+ABD(CE+ -C- E)';
Dos.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término ABCDE con AB -CD -E ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
N E r r o r : = NError+1;
end
else
if (Ejercicio='X=- A- BCD -EF+ABCDEF+AB-C D- E F + A- B-CD -EF+ - A- B-C -D -
E -F ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio ;
Uno.Visible:=True;
Ecuacion:='X=-A-B-E(CDF+-C-D-F)+ABCDEF+A-CD-EF(B+-B)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
T e o r e m a 1 3 A a los términos - A- BCD -E F c o n - A-B -C- D-E -F y
AB -CD -E F c o n A- B-CD -E F ' ;
end
else
if (Cont_T=2) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A- B-E(CDF+- C-D -F)+ADF(BCE+- C-E ) ' ;
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
284

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos AB C D E F y A-CD -E F ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este c a s o ' ;
NError:=NError+1;
end
else
if (Ejer cicio='X=-(A+B+-C+D+E+F)+A-B-CDEF+-ABCD-E-F+-(-A+-B+-C+-D+-E+-F)')
then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=Tru e ;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- (A+B+- C + D + E + F ) + D ( A- B-C E F +- ABC -E- F ) +
- (- A+- B+- C+-D +-E +- F)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término A-B -C D E F c o n - A B C D- E- F ' ;
end
else
i f ( ( C o n t _ T = 2 ) a n d ( E c u a c i o n = ' X = - A-B C-D -E -F + A- B-C D E F +- ABCD -E -
F+ABCDEF')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - AC-E -F (- B-D + B D ) + A D E F (- B-C + B C ) ' ;
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A- BC -D- E- F con - ABCD -E- F y
A- B-C D E F c o n A B C D E F ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enab l e d : = T r u e ;
end
else
285

if (Cont_T=3) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- A- BC-D -E -F + D ( A-B -CEF+ - ABC- E- F+ABCEF)';
Cuatro.Text:=Ecuacion;
Cont_T : = C o n t _ T + 1 ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término D(A-B -CEF+- ABC -E -F ) c o n
ABCDEF';
end
else
if (Cont_T=4) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A- BC-D -E -F+D(AEF( -B- C+BC)+- ABC -E -F ) ' ;
Cinco.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término A-B -C E F c o n A B C E F ' ;
end
else
if (Cont_T=5) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X=- A- BC-D -E -F + A D E F (-B -C + B C ) +- ABCD -E -F';
Seis.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término D ( A E F (-B -C + B C ) +- ABC -E- F ) ' ;
end
else
if (Cont_T=6) then
begin
ContB:=ContB+1;
Siete.Visible:=True;
Ecuacion:='X= - A-E- F( -B C-D+BCD)+ADEF(- B-C + B C ) ' ;
Siete.Font.Color:=clWhite;
Siete.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término - A-BC -D -E- F c o n - ABCD -E -F ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
286

BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if(Ejercicio='X=- (- A+ -B+ -C+- D+- E+- F)+ABCDEF+- A- BCDE -F + A- BCD -E -F')
then
if (Cont_T=0) then
begin
ContB:=Cont B+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=-(-A+-B+-C+-D+-E+-F)+ABCDEF+-BCD-F(-AE+A-E)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término - A- BCDE -F c o n A-BCD- E- F ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=ABCDEF+- A- BCDE -F + A-BCD -E -F'))
then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=ABCDEF+ -B C D- F( - A E + A-E)';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término - A-BCDE- F c o n A-BCD -E -F';
end
else
if (Cont_T=4) and (Ecuacion='X=ABCDEF+-BCD- F( - A E + A-E ) ' ) ) t h e n
begin
ContB:=ContB+1;
Cinco.Vis i b l e : = T r u e ;
Ecuacion:='X=CD(ABEF+-B -F (- A E + A- E ) ) ' ;
Cinco.Font.Color:=clWhite;
Cinco.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:= 'Obtuvimos este resultado aplicando el
Teorema 13A al término ABCDEF con -BCD -F (- A E + A- E)';
287

Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
i f ( (Cont_T=1) and (Ecuacion='X= -( - A+ -B+ -C+- D+- E+- F)+ABCDEF+- BCD -
F ( - AE+A- E)')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:= 'X=-(-A+-B+-C+-D+-E+-F)+CD(ABEF+-B-F(-AE+A-E))';
Cont_T :=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término ABCDEF con - BCD- F (- A E + A-E ) ' ;
end
else
i f ( ( C ont_T=4) and (Ecuacion='X=ABCDEF+CD(ABEF+ -B -F (- A E + A-E))'))
then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=CD(ABEF+ABEF+- B- F( - A E + A-E ) ) ' ;
Cinco.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término ABCDEF con CD(ABEF+
-B -F (- A E + A-E ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if(Ejercicio= 'X= -( A + B + C + D + E + F ) + - A- B-C -D -E- F + - A-
BCDEF+ABCDEF+AB- CDE -F ' ) t h e n
i f (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= -( - A+ -B+ -C+ -D+- E+- F ) +-C -F (- A- B-D -
+ABDE)+CDEF( - A-B+AB)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
288

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A al término - A-B -C- D-E -F c o n - A-BCDEF y
- A- BCDEF con ABCDEF';
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-B -C-D -E -F +- A-BCDEF + ABCDEF +
AB -CDE -F')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
E c u a c i o n:='X=-C - F(- A- B-D -E+ABDE)+CDEF( - A-B + A B ) ' ;
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A-B -C- D-E -F con AB -CDE -F
y - A-B C D E F c o n A B C D E F ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-B- C-D -E -F+ -C -F (- A-B -D -
E+ABDE)+CDEF( - A-B + A B ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= -C -F (- A-B -D -E+ - A-B- D-E + A B D E ) +
CDEF( - A-B + A B ) ' ;
Tres.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A- B- C-D -E -F c o n
-C - F( - A- B-D -E+ABDE)';
end
else
if ((Cont_T=1) and (Ecuacion='X=- A- B-C -D- E- F+ - A- B-C -D -E -F+ - A-
BCDEF+ABCDEF+AB- CDE -F')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=-A-B-C-D-E-F+-C-F(-A-B-D-E+ABDE)+
CDEF(-A-B+AB)';
Dos.Text:=Ecuacion;
Cont_T:=Cont_T+1;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
289

Teorema 13A a los términos -A-B-C-D-E-F con AB-CDE-F y


-A-BCDEF con AB-CDE-F';
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-B- C-D -E -F+ -C -F (- A-B -D -

E+ABDE)+CDEF( - A-B + A B ) ' ) ) t h e n

begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=-C-F(-A-B-D-E+-A-B-D-E+ABDE)+CDEF(-A-B+AB)';
Tres.Text:=Ecuacion;
Cont_T:=Cont_T+1;
P a n e l 3 . V i s i b l e : = T r u e;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A-B -C- D-E - F con
- C- F( - A- B- D-E+ABDE)';
end
else
begin
P a n e l 4 . V i s ible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
i f ( E j e r c i c i o = ' X = A-B C-D+ -(A+B+C+- D)+ - A-BCD') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- B C ( A-D +- AD)+ -(A+B+C+-D ) ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos A- BC- D con - A-B C D ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X=A-BC-D+-A-B-CD+-A-BCD')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=A- BC- D+- A- BD( -C + C ) ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
P a n e l 3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
290

Teorema 13A a el término - A-B- C D c o n - A-B C D ' ;


end
else
if ((Cont_T=4) and (Ecuacion='X=A- BC-D +- A-B D ' ) ) t h e n
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X= -B(AC -D+- A D ) ' ;
Cinco.Font.Color:=clWhite;
Cinco.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarS A ) ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término A-BC -D c o n - A- B D ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=3) and (Ecuacion='X=-BC(A-D+-AD)+-A-B-CD')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
E c u a c i o n:='X=- B ( C ( A-D+ - AD)+- A-C D ) ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término -B C ( A-D+ - AD) con - A- B-CD';
end
else
if ((Cont_T=4) and (Ecuacion='X=-B(C(A-D+-AD)+-A-CD)')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:=' X= -B(AC -D+ - ACD+- A-C D ) ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término -B ( C ( A-D+- A D ) +- A-C D ) ' ;
end
else
if ((Cont_T=5) and (Ecuacion='X=-B(AC-D+-ACD+-A-CD)')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X= -B(AC -D+- AD(C+- C ) ) ' ;
Cont_T:=Cont_T+1;
Seis.Text:=Ecuacion;
291

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término - ACD con - A- C D ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=A-BC-D+-A-B-C--D+-A-BCD')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
E c u a c i o n :='X=- B C ( A-D +- AD)+ - A-B -C- -D ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el términ o A-BC -D c o n - A- BCD';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- (A+B+- C)+ - A-B C D +- AB- CD') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Te xt:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= -( A + B +-C)+- AD( -BC+B -C)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado ap l i c a n d o e l
Teorema 13A a los términos A-B C-D c o n - A- BCD';
end
else
if ((Cont_T=2) and (Ecuacion='X=-A-BC+-A-BCD+-AB-CD')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-BC(1+D)+ - AB-C D ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término - A- B C c o n - A-B C D ' ;
end
else
292

if ((Cont_T=4) and (Ecuacion='X=- A- BC+ - AB -CD')) then


begin
ContB:=ContB+1;
Cinco.Visible:=True;
E c u a c i o n : = ' X=- A( -B C + B-CD)';
Cinco.Font.Color:=clWhite;
Cinco.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término - A-B C c o n - AB-C D ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=1) and (Ecuacion='X=-A-B--C+-A-BCD+-AB-CD')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-B --C +- AD( -B C + B-C ) ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ec u a c i o n ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término - A- B C D c o n - AB -C D ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=-A-BC+-AD(-BC+B-C)')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - A(-BC+D( -BC+B -C ) ) ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término - A- B C c o n - AD( -BC+B- C ) ' ;
end
else
i f ( ( C o n t _ T = 4 ) a n d ( E c uacion='X= - A(-BC+D( -BC+B -C ) ) ' ) ) t h e n
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A( -BC+ -BCD+B -C D ) ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ec u a c i o n ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término D( -BC+B- C)';
293

end
else
if ((Cont_T=5) and (Ecuacion='X= - A(-BC+- B C D + B-C D ) ' ) ) t h e n
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X=- A(- BC(1+D)+B-C D ) ' ;
Cont_T:=Cont_T+1;
S e i s . T e x t : = E c uacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término -B C c o n -B C D ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if(Ejercicio='X=-(A+B+-C+-D+E)+-ABC-DE+A-B-C-DE+ABCDE') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=-(A+B+-C+-D+E)+BCE(-A-D+AD)+A-B-C-DE';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos A-B -C-DE con ABCDE';
end
else
if ((Cont_T=3) and (Ecuacion='X=-A-BCD-E+BCE(-A-D+AD)+A-B-C-DE'))
then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- B( - ACD -E + A- C-D E ) + B C E (- A-D + A D ) ' ;
Cuatro.Font.Color:=clWhite;
Cuatro.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A-B C D-E c o n A- B-C -DE';
Label29.Visible:=True;
BRegresar.Visible:=True;
294

BRegresar.Enabled:=True;
end
else
if ((Cont_T=2) and (Ecuacion='X=-A-BCD-E+-ABC-DE+A-B-C-DE+ABCDE')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= -B (- ACD -E + A-C -DE)+BCE( - A-D+AD)';
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A- BCD -E c o n A-B -C- DE y
- ABC- D E c o n A B C D E ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=1) and (Ecuacion='X= - A-B --C --D -E+ - ABC- D E + A-B -C -
DE+ABCDE')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=-A-B--C--D-E+BCE(-A-D+AD)+A-B-C-DE';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - ABC -D E c o n A B C D E ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
i f ( E j e r c i c i o = ' X = (- A+B)(A+B+C)- D') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=( - A+ B ) ( A-D+B -D+C -D ) ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
295

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos (A+B+C) con -D';
end
else
if ((Cont_T=4) and (Ecuacion='X=- AB -D+- AC- D+AB-D + B- D+BC -D ' ) ) t h e n
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=B- D( - A+A)+C -D (- A+B)+B- D ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - AB-D con AB- D y
- AC- D con BC- D ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=( - AB+- AC+AB+B+BC)-D ' ) ) t h e n
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - AB -D+ - AC -D+ AB- D+B -D + B C-D';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término ( - AB+- A C + AB+B+BC) con
–D';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(B+- C ) (-B+C)+ -( - A+B+ -C ) ' ) t h e n
if ((Cont_T=4) and (Ecuacion='X=BC+ -B -C + A-B C ' ) ) t h e n
begin
ContB:=ContB+1;
Cinco.Visible:=True;
E c u a c i o n : = ' X = C ( B + A-B ) +- B-C';
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término BC c o n A-BC';
end
else
if ((Cont_T=3) and (Ecuacion='X=- BB+BC+- B- C+-C C + A-BC')) then
296

begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= -B B + C ( B + A-B)+- B-C +-CC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a el término BC con A- B C ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este
caso';
NError:=NError+1;
end
else
if (Ejercicio='X=-(A+B+-C+-D+E)+-A-B-C-E+ABCD-E+ABC+-A-BCD-E') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=-(A+B+-C+-D+E)+-A-B-E(-C+CD)+ABC(D-E+1)';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Pa n e l 3 . V i s i b l e : = T r u e ;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A- B-C -E c o n - A- BCD -E y
ABCD -E c o n A B C ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-BCD -E+ - A-B -C- E+ABCD -

E+ABC

+- A-BCD- E ' ) ) t h e n

begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=-A-B-E(CD+-C)+ABC(D-E+1)+-A-BCD-E';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 13A a los términos - A-BCD -E c o n - A- B-C -E
y ABCD -E c o n A B C ' ;
297

end
else
if ((Cont_T=5) and (Ecuacion='X=-A-B-E(-C+D)+ABC+-A-BCD-E')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X= - A-B- E( -C + D + C D ) + A B C ' ;
Cont_T:=Cont_T+1;
Seis.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resulta do aplicando
el Teorema 13A a el término - A-B -E( -C + D ) c o n
- A-BCD -E';
end
else
if ((Cont_T=6) and (Ecuacion='X=- A- B-E (- C+D+CD)+ABC'))
then
begin
ContB:=ContB+1;
Siete.Visible:=True;
Ecuacion:='X=- A- B- E(- C+D(1+C))+ABC';
Cont_T:=Cont_T+1;
Siete.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando
el Teorema 13A a el término D con CD';
end
else
if ((Cont_T=3) and (Ecuacion='X=-A-BCD-E+-A-B-C-E+ABCD-E+ABC'))
then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- A-B -E(CD+ -C)+ABC(D -E + 1 ) ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando
el Teorema 13A a los términos - A-B C D- E c o n
- A-B -C -E y ABCD -E c o n A B C ' ;
end
else
if ((Cont_T=5) and (Ecuacion='X=-A-BCD-E+-A-B-E(-C+D)+ABC')) then
begin
ContB:=ContB+1;
S e i s . V i s i b le:=True;
Ecuacion:='X= - A-B- E(CD+- C+D)+ABC';
Cont_T:=Cont_T+1;
Seis.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este res u l t a d o a p l i c a n d o
298

el Teorema 13A a los términos - A-BCD -E c o n


- A-B- E( -C + D ) ' ;
end
else
if ((Cont_T=6) and (Ecuacion='X=- A- B-E ( C D +-C+D)+ABC'))
t hen
begin
ContB:=ContB+1;
Siete.Visible:=True;
Ecuacion:='X=- A- B- E( -C+D(1+C))+ABC';
Cont_T:=Cont_T+1;
Siete .Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado
aplicando el Teorema 13A a el término D con CD';
end
e ls e
if ((Cont_T=1) and (Ecuacion='X=-A-B--C--D-E+-A-B-C-E+
ABCD-E+ABC+-A-BCD-E')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=-A-B--C--D-E+-A-B-E(-C+CD)+ABC(D-E+1)';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando
el Teorema 13A a los términos - A-B- C-E c o n
- A-BCD -E y ABCD- E con ABC';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en
este caso';
NError:=NError+1;
end
else
begin
i f ( C o n t _ T= 0 ) t h e n
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13A no es aplicable en este caso';
NError:=NError+1;
end;
end;
299

PROCEDIMIENTO EVALUAR_SIMPLIFICA16. Permite aplicar el

t e o r e m a - - X=X del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B16Click(Sender: TObject);


begin
if (Ejercicio='X= - A-B -C-D -E +- (A+B+C+D+E)+ABCDE+AB- CD- E') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- A- B-C -D -E+ - A-B- C-D -E+ABCDE+AB- CD- E ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=Tr u e ;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al término
- (A+B+C+D+E)';
end
else
if ((Cont_T=1) and (Ecuacion='X=- A- B-C -D -E+ -
(A+B+C+D+E)+ABD(CE+-C -E ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A-B -C -D- E+- A- B-C -D- E+ABD(CE+ -C- E)';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos e s t e r e s u l t a d o a p l i c a n d o l a L e y 1 6 a l
t é r m i n o - (A+B+C+D+E)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- (A+B+ -C + D + E + F ) + A-B -CDEF+ - ABCD- E- F+ -( - A+ -B+ -
C+ -D+ -E+ -F)') then
if (Cont_T=0) then
begin
OculL;
300

ContB:=ContB+1;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- A-B -- C-D -E -F + A- B-C D E F +- ABCD -E -F+ -- A- -B --C --D -- E-
-F';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 a los
t é r m i n o s - (A+B+- C+D+E+F) y - (- A+- B+ -C+- D+- E+- F)';
end
else
if ((Cont_T=1) and (Ecuacion='X= -(A+B+ -C + D + E + F ) + D ( A-B -CEF+ -
A B C- E- F ) +- (- A+-B +-C+ -D+ -E+ -F ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-B --C -D- E- F + D ( A-B -CEF+- ABC -E -F)+- - A-- B- -C- -D- -
E -- F ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+- B+- C+-D +-E +- F)';
end
else
begin
Panel4. Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- (- A+- B+- C+- D+- E+- F)+ABCDEF+- A-BCDE -F + A- BCD -
E -F ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= -- A- -B --C --D -- E- -F+ABCDEF+- A- BCDE -F + A- BCD -E -F';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos e s t e resultado aplicando la Ley 16 al
t é r m i n o - (- A+- B+- C+-D +-E +- F)';
end
else
301

i f ((Cont_T=1) and (Ecuacion='X= -( - A+ -B+ -C+ -D+ -E+ -F)+ABCDEF+ -


BCD- F( - A E + A-E ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -- A-- B- -C- -D --E -- F+ABCDEF+ -BCD- F( - A E + A-E ) ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+- B+- C+-D +-E +- F)';
end
else
i f ( ( C o n t _ T = 2 ) a n d (Ecuacion='X=- (- A+- B+- C+-D +-E +- F)+CD(ABEF+ -
B -F (- A E + A- E ) ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- - A--B -- C- -D- -E -- F+CD(ABEF+- B- F( - AE+A- E ) ) ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
P a n e l 3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+- B+- C+-D +-E +- F)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NEr r o r + 1 ;
end
else
if (Ejercicio='X= -(A+B+C+D+E+F)+ - A- B-C -D -E -F+ - A-
BCDEF+ABCDEF+AB- CDE -F ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visib le:=True;
Ecuacion:='X= - A- B-C -D -E -F+ - A-B- C-D -E -F+ - A-BCDEF+ABCDEF+AB-
C D E- F ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+C+D+E+F)';
end
else
302

i f ( ( C o n t _ T = 1 ) a n d ( E c u a c i o n = ' X = - (- A+- B+-C +-D+ -E+ - F)+ -C- F( - A-B -


D -E+ABDE)+CDEF( - A- B+AB)')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A-B -C -D- E- F+- C- F( - A-B- D-E+ABDE)+CDEF( - A-
B+AB)';
Con t_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+- B+- C+-D +-E +- F)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
i f ( E j e r c i c i o = ' X = A-B C-D+ -(A+B+C+- D)+ - A-BCD') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
L E c u a c ion.Text:=Ejercicio;
Uno.Visible:=True;
E c u a c i o n : = ' X = A-BC -D+ - A- B-C -- D+- A- BCD';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+C+ -D ) ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X= -B C ( A-D+- A D ) +- (A+B+C+ -D)'))
then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -B C ( A-D+ - AD)+- A- B-C -- D ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ec u a c i o n ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+C+ -D ) ' ;
end
else
begin
Panel4.Visible:=True;
303

Memo2.Text:='La Ley 16 no es aplicable en este caso';


NError:=NError+1;
end
else
if (Ejercicio='X=- (A+B+- C)+ - A-B C D +- AB-C D ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= - A-B --C+ - A-BCD+- AB -C D ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C ) ' ;
end
el s e
if ((Cont_T=1) and (Ecuacion='X= -(A+B+ -C ) +- AD( -B C + B-C ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A- B- -C+ - AD(- BC+B -C ) ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
P a n e l3.Visible:=True;
Memo1.Text:='Obtuvimos e s t e r e s u l t a d o a p l i c a n d o l a L e y 1 6 a l
t é r m i n o - (A+B+- C ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -( A + B +-C+ -D+E)+ - ABC-D E + A-B -C- DE+ABCDE')
then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= - A- B- -C- -D -E+ - ABC-D E + A-B -C- DE+ABCDE';
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
304

Memo1.Text:='Obtuvimos e s t e r e s u l t a d o a p l i c a n d o l a L e y 1 6 a l
t é r m i n o - ( A+B+- C+-D + E ) ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=- (A+B+ -C+- D+E)+BCE( - A-
D + A D ) + A- B- C-D E ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A- B-- C- -D- E+BCE( - A-D + A D ) + A- B-C -DE';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C+-D + E ) ' ;
end
else
begin
Panel4.Visible:=Tr ue;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(B+ -C ) (- B+C)+- (- A+B+ -C ) ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=(B+-C)( -B+C)+ -- A- B- -C ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+B+ -C ) ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X=BC+ -B -C+ -(- A + B +-C ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=BC+ -B -C+- - A-B --C';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+B+ -C ) ' ;
end
else
305

i f ( ( C o n t _ T = 1 ) a n d ( E c u a c i o n = ' X = -BB+BC+- B-C +-C C +- (- A+B+ -


C)')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -BB+BC+ -B -C+ -CC+ -- A-B --C ' ;
Cont_T:=Cont_T+1;
Dos.Text:= Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (- A+B+ -C ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- (A+B+-C +-D+E)+ - A-B -C- E+ABCD -E+ABC+ - A-
BCD- E') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X= - A-B --C -- D-E +- A-B -C- E+ABCD -E+ABC+ - A-B C D-E ' ;
Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C+-D + E ) ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+D)+ABC')) then
begin
ContB:=Con t B + 1 ;
Cuatro.Visible:=True;
Ecuacion:='X= - A- B- -C --D -E+ - A-B- E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C+-D + E ) ' ;
end
else
i f ((Cont_T=1) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
306

begin
ContB:=ContB+1;
Dos.Visible:=True;
E c uacion:='X=- A- B- -C- -D- E+- A- B- E( -C+CD)+ABC(D-E + 1 ) ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C+-D + E ) ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-B --C -- D-E +- A-B -E (-C + C D ) + A B C ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16 al
t é r m i n o - (A+B+- C+-D + E ) ' ;
end
else
i f ( ( Cont_T=2) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+D)+ABC(D- E+1)')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-B- -C --D -E+ - A-B -E( -C+D)+ABC(D- E+1)';
C o n t _ T : = C o n t _ T +1 ;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando la Ley 16
al término -(A+B+ -C+ -D + E ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Mem o2.Text:='La Ley 16 no es aplicable en este caso';
NError:=NError+1;
end;
end;
307

PROCEDIMIENTO EVALUAR_SIMPLIFICA8. Permite aplicar el

t e o r e m a X +-X=1 del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B8Click(Sender: TObject);


begin
if (Ejercicio='S= -P -Q-R +-P -QR+ -PQ -R+ -PQR+PQR') then
if ((Cont_T=1) and (Ecuacion='S= -P-Q (- R+R)+- PQ( -R+R)+PQR')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
E c uacion:='S=- P-Q +-PQ+PQR';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 a los
t é r m i n o s - P-Q (-R + R ) Y - PQ( -R + R ) ' ;
end
else
if ((Cont_T=3) and (Ecuacion='S=- P( -Q + Q ) + PQR')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='S=- P+PQR';
Cuatro.Font.Color:=clWhite;
Cuatro.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resulta do aplicando el Teorema 8 al
t é r m i n o - P( -Q+Q)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:= N E r r o r + 1 ;
end
else
308

i f ( E j e r c i c i o = ' X = A B C + A-BC+- A') then


if (Cont_T=1) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=AC+ - A';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvim o s e s t e r e s u l t a d o a p l i c a n d o e l T e o r e m a 8 a l o s
términos B y -B';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- A-B -C -D+- A- BC- D+- AB -C-D ') then
if ((Cont_T=1) and (Ecuacion='X= - A-C -D( -B+B)+ - A-BC -D ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-C- D+- A- BC-D';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 al
t é r m i n o - A-C -D (-B + B ) ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-D( -C( -B+B)+ -B C ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A- D( -C+- B C ) ' ;
C ont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 al
t é r m i n o -C (- B + B ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es a p l i c a b l e e n e s t e c a s o ' ;
NError:=NError+1;
end
else
if (Ejercicio='X=ABCDE+ - A- BCDE+ABCD- E+ - A- B-C -D E ' ) t h e n
309

if (Cont_T=1) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=ABCD+ - A-B E ( C D +-C -D ) ' ;
D os . F o n t . C o l o r : = c l W h i t e ;
Dos.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 al
término ABCD(E+ -E)';
Label29.Visible:=True;
B R e g r e s a r. V i s i b l e : = T r u e ;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=- A-BCD- EF+ABCDEF+AB -CD -E F + A-B -CD -EF+- A-B -C -
D -E -F ' ) t h e n
if (Cont_T=1) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A-B -E(CDF+- C-D -F)+ABCDEF+A-C D-E F ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 a
e l t é r m i n o A-CD -EF(B+- B)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=A-BC -D+ -( A + B + C +-D)+- A- B C D ' ) t h e n
i f ( ( C o n t _ T = 3 ) a n d ( E c u a c i o n = ' X = A- BC- D+- A- BD( -C + C ) ' ) ) t h e n
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=A- BC- D+- A-B D ' ;
Cont_T:=Cont _T+1;
Cuatro.Text:=Ecuacion;
310

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 a
el término - A- B D (-C + C ) ' ;
end
else
if ((Cont_T=6) and (Ecuacion='X= -B(AC -D+- AD(C+- C ) ) ' ) ) t h e n
begin
ContB:=ContB+1;
Siete.Visible:=True;
Ecuacion:='X= -B(AC -D+- A D ) ' ;
Siete.Font.Color:=clWhite;
Siete.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 a
el término - AD(-C+C)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=Tr u e ;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(- A+B)(A+B+C) -D') then
if ((Cont_T=5) and (Ecuacion='X=B-D (- A+A)+C -D( - A+B)+B-D')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X=B -D + C-D (- A+B)+B -D ' ;
Cont_T:=Cont_T+1;
Seis.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 8 a
e l término B-D (- A + A ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 8 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
311

Memo2.Text:='El Teorema 8 no es aplicable en este caso';


NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA15. Permite aplicar el

t e o r e m a X +-X Y = X + Y d e l á l g e b r a b o o l e a n a e n l a e v a l u a c ión sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B15Click(Sender: TObject);


begin
i f ( E j e r c i c i o = ' X = A B C +- AC') then
if ((Cont_T=1) and (Ecuacion='X=C(AB+- A)')) then
begin
ContB:=ContB+1;
Dos.Vis i b l e : = T r u e ;
Ecuacion:='X=C( - A+B)';
Dos.Font.Color:=clWhite;
Dos.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 al
término (AB+ - A)';
Label2 9.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 15 no es aplicable en este caso';
NError:=NError+1;
end
else
i f ( E j e r c i c i o = ' X = A B C + A-BC+- A') then
if (Cont_T=2) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A+C';
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
312

DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 al
t é r m i n o A C +- A)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 15 no es aplicable en este caso';
NE r r o r : = N E r r o r + 1 ;
end
else
if (Ejercicio='X=- A-B -C -D+- A- BC- D+- AB -C-D ' ) t h e n
if (Cont_T=3) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - A-D( -B+ -C ) ' ;
Cuatro.Font.Color:=clWhite;
Cuatro.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 al
t é r m i n o - A-D (- C+- BC)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 15 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(B+ -C)( -B+C)+- (- A + B +-C)') then
if ((Cont_T=5) and (Ecuacion='X=C(B+A- B)+ -B -C')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X=C(A+B)+ -B -C ' ;
Seis.Font.Color:=clWhite;
Seis.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
313

Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 a


e l t é r m i n o C ( B + A- B)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=4) and (Ecuacion='X=- B B + C ( B + A- B)+ -B -C+ -CC')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- BB+C(A+B)+ -B -C+ -C C ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 a
el término C ( B + A- B)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 15 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+ -C+ -D+E)+ - A-B- C-E+ABCD- E+ABC+- A- BCD -
E') then
if ((Cont_T=4) and (Ecuacion='X= - A- B- E(CD+-C)+ABC+ - A-BCD -E'))
then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A-B -E (- C+D)+ABC+- A-BCD- E ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
P a n e l 3 . V i s ible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 a
el término - A- B- E(CD+-C ) ' ;
end
else
if ((Cont_T=4) and (Ecuacion='X= - A-B -E(CD+- C)+ABC(D- E+1)'))
then
begin
ContB:=ContB+1;
Cinco.Vis ible:=True;
Ecuacion:='X= - A-B -E (-C+D)+ABC(D- E+1)';
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15 a
el término - A- B- E(CD+-C ) ' ;
314

end
else
if ((Cont_T=5) and (Ecuacion='X= - A-B- E(CD+- C)+ABC')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X= - A- B- E( -C+D)+ABC';
Seis.Font.Color:=clWhite;
Seis.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15
a e l t é r m i n o - A-B -E(CD+ -C)';
Label29.Visible:=True;
BRegresar.Visible:=True;
B R e g resar.Enabled:=True;
end
else
if ((Cont_T=2) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- (A+B+- C+-D + E ) +- A-B -E (-C+D)+ABC';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15
a e l t é r m i n o - A-B -E (-C+CD)';
end
else
if ((Cont_T=1) and (Ecuacion='X= -(A+B+ -C+ -D+E)+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -( A + B +-C+ -D+E)+ - A-B -E( -C+D)+ABC(D- E+1)';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 15
a e l t é r m i n o - A-B -E (-C+CD)';
end
else
if ((Cont_T=3) and (Ecuacion='X=- A- BCD- E+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
b e gin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - A- BCD -E+ - A-B -E( -C+D)+ABC(D- E+1)';
315

Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
1 5 a e l t é r m i n o - A- B-E (- C + C D ) ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Cuatro.Vis i b l e : = T r u e ;
Ecuacion:='X=- A- B- -C- -D- E+- A- B- E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
15 a el térm ino - A- B-E (- C + C D ) ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-B --C -- D-E +- A-B -E (-C+D)+ABC(D -E+1)';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
1 5 a e l t é r m i n o - A- B-E (- C + C D ) ' ;
end
else
if ((Cont_T=4) and (Ecuacion='X=- A- BCD- E+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X= - A-BCD -E+ - A-B -E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
1 5 a e l t é r m i n o - A- B-E (- C + C D ) ' ;
end
else
if ((Cont_T=4) and (Ecuacion='X=- A- BCD- E+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
316

Ecuacion:='X=- A- BCD- E+- A- B- E( -C+D)+ABC';


Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el
Teorema 15 a el término - A-B -E( -C+CD)';
end
else
begin
P a n el4.Visible:=True;
Memo2.Text:='El Teorema 15 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El T eorema 15 no es aplicable en este caso';
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA7. ermite aplicar el

teorema X+X=X del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usua rio.

procedure TFEvaluarSA.B7Click(Sender: TObject);


begin
if (Ejercicio='X= - A-B -C-D -E +- (A+B+C+D+E)+ABCDE+AB- CD- E') then
if ((Cont_T=1) and (Ecuacion='X= - A-B -C-D -E+ - A-B -C- D-E+ABCDE+AB -
CD -E')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ec uacion:='X=- A- B-C -D -E+ABCDE+AB-C D-E ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
t é r m i n o - A- B-C -D- E c o n - A-B -C -D- E ' ;
end
else
317

if ((Cont_T=2) and (Ecuacion=' X=- A- B-C -D -E+ - A- B- C-D -E+ABD(CE+ -C -


E)')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A-B -C -D- E+ABD(CE+ -C- E)';
Tres.Font.Color:=clWhite;
Tres.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:= True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
t é r m i n o - A- B-C -D- E c o n - A-B -C -D- E ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -(- A+ -B+ -C+- D+- E+- F)+ABCDEF+- A- BCDE -F + A- BCD -E -
F') then
if ((Cont_T=2) and (Ecuacion='X=ABCDEF+ABCDEF+- A- B C D E- F + A-
BCD- E- F ' ) ) t h e n
begin
ContB:= C o n t B + 1 ;
Tres.Visible:=True;
Ecuacion:='X=ABCDEF+- A- B C D E- F + A-BCD -E -F';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
término ABCDEF con ABCDEF';
end
else
if ((Cont_T=3) and (Ecuacion='X=ABCDEF+ABCDEF+-BCD- F( - A E + A-
E)')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=ABCDEF+- BCD- F( - A E + A-E ) ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=Tru e ;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
término ABCDEF con ABCDEF';
end
318

else
if (Cont_T=5) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X=CD(ABEF+- B- F( - A E + A-E ) ) ' ;
S e i s .Font.Color:=clWhite;
Seis.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
término ABCDEF con ABCDEF';
Label29.Visible:=True;
B R e gresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+C+D+E+F)+ - A- B-C -D -E -F+ - A-
BCDEF+ABCDEF+AB- CDE -F ' ) t h e n
if ((Cont_T=1) and (Ecuacion='X=- A- B-C -D- E- F+ - A- B-C -D -E -F+ - A-
BCDEF+ABCDEF+AB- CDE -F')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-B -C-D -E -F +- A-BCDEF+ABCDEF+AB- CDE -F';
C o n t _T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al
t é r m i n o - A- B-C -D- E- F ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- C- F( - A-B- D- E+- A-B -D -
E+ABDE)+CDEF( - A-B + A B ) ' ) ) t h e n
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= -C- F( - A-B -D- E+ABDE)+CDEF(- A-B + A B ) ' ;
Cuatro.Font.Color:=clWhite;
Cuatro.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
319

Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 al


t é r m i n o - A- B-D -E c o n - A- B-D -E';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(- A+B)(A+B+C) -D') then
if ((Cont_T=6) and (Ecuacion='X=B-D + C-D (- A+B)+B -D ' ) ) t h e n
begin
ContB:=ContB+1;
S i e t e . V i s ib l e : = T r u e ;
Ecuacion:='X=B -D+C -D (- A + B ) ' ;
Siete.Font.Color:=clWhite;
Siete.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 a el
t é r m ino B -D c o n B -D ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+ -C+ -D+E)+ - A-B- C-E+ABCD- E+ABC+- A- BCD -
E') then
if ((Cont_T=2) and (Ecuacion='X= - A-BCD -E+ - A-B -C- E+ABCD -
E+ABC+- A-BCD- E ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A-BCD- E+- A- B-C -E + A B C D-E + A B C ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 7 a
los términos - A- BCD -E y - A-BCD -E';
end
320

else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 7 no es aplicable e n e s t e c a s o ' ;
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA18. Permite aplicar el teorema

- - X=X del álgebra booleana en la evaluación sobre simplificación

algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B18Click(Sender: TObject);


begin
if (Ejercicio='X= -(A+B+ -C + D + E + F ) + A-B -CDEF+ - ABCD -E- F+ -( - A+ -B+ -C+ -
D+ -E+ -F)') then
if ((Cont_T=1) and (Ecuacion='X=- A-B -- C-D -E -F + A- B-C D E F +- ABCD -E -
F +- - A--B -- C- -D- -E -- F ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=T r u e ;
Ecuacion:='X=- A- BC- D- E- F + A-B- CDEF+- A B C D- E- F+ABCDEF';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
dobles en los término - A- B-- C-D -E -F y - - A- -B --C -- D- -E -- F' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= - A-B --C -D- E- F + D ( A-B- CEF+- ABC -E -
F)+ -- A- -B- -C --D -- E- -F')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A-B C-D -E -F + D ( A-B -CEF+ - ABC- E- F)+ABCDEF';
Cont_T:=Cont_T+1;
Tres.Text : = E c u a c i o n ;
321

Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
dobles en los término - A- B-- C-D -E -F y - - A- -B --C -- D- -E -- F ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
if (Ejercicio='X= -(- A+ -B+ -C+- D+- E+- F)+ABCDEF+- A- BCDE -F + A- BCD -E -
F') then
if ((Cont_T=1) and (Ecuacion='X=- - A-- B- -C- -D- -E -- F+ABCDEF+ - A-
BCDE -F + A- BCD -E- F')) then
begin
ContB:=Cont B + 1 ;
Dos.Visible:=True;
Ecuacion:='X=ABCDEF+ABCDEF+ - A-B C D E- F + A-B C D- E- F ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - - A-- B- -C- -D- -E -- F ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= -- A- -B --C --D -- E- -F+ABCDEF+- BCD -
F ( - AE+A- E)')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=ABCDEF+ABCDEF+- BCD -F (- A E + A-E ) ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - - A-- B- -C- -D- -E -- F ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- - A-- B-- C- -D- -E -- F+CD(ABEF+- B- F( -
A E + A-E))')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=ABCDEF+CD(ABEF+ -B- F (- A E + A-E))';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - - A-- B- -C- -D- -E -- F ' ;
322

end
else
begin
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
if (Ejercicio='X=A-BC -D+ -(A+B+C+ -D)+- A- B C D ' ) t h e n
i f ( ( C o n t _ T = 1 ) a n d ( E c u a c i o n = ' X = A- BC- D+- A- B-C --D +- A-B C D ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=A- BC- D+- A-B -CD+ - A-B C D ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - A- B-C --D ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= -B C ( A-D+- AD)+- A-B -C --D')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ec uacion:='X= -B C ( A- D+- A D ) +- A-B -CD';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - A- B-C --D ' ;
end
else
begin
P a n el4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+ -C)+- A- BCD+ - AB -C D ' ) t h e n
if ((Cont_T=2) and (Ecuacion='X= - A-B- -C+ - AD(- BC+B -C ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A- BC+ - AD(- BC+B -C ) ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
323

Memo1.Text:='Obtuvimos este resultado cancelando las inversiones


d o b l e s e n el término - A- B- -C ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=- A- B- -C+- A- BCD+ - AB -CD')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- A-BC+- A- BCD+ - AB -CD';
Cont_T:=Cont_T+1;
Dos.Text:=Ec u a c i o n ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - A- B- -C ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+ -C+ -D+E)+- ABC -D E + A-B- C-DE+ABCDE') then
if ((Cont_T=2) and (Ecuacion='X= - A-B --C --D -E + B C E (- A-D + A D ) + A-B -
C -DE')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- A-BCD- E+BCE( - A-D + A D ) + A- B-C -DE';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las inversiones
d o b l e s e n e l t é r m i n o - A- B- -C- -D- E ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X= - A-B --C --D -E+ - ABC- D E + A-B -C -
DE+ABCDE')) then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A-B C D-E +- ABC -D E + A- B-C -DE+ABCDE';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término - A-B --C --D -E';
end
else
begin
324

Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
if (Ejercicio='X=(B+-C)( -B+C)+ -( - A+B+- C ) ' ) t h e n
if ((Cont_T=3) and (Ecuacion='X=BC+ -B -C+- - A-B --C')) then
begin
C o n t B : = C o n t B + 1;
Cuatro.Visible:=True;
Ecuacion:='X=BC+ -B -C + A-BC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término -- A- B- -C ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=(B+ -C ) (- B+C)+- - A-B --C ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=(B+ -C ) (- B + C ) + A-BC';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término -- A- B- -C ' ;
end
else
i f ((Cont_T=2) and (Ecuacion='X=- BB+BC+ -B- C+-C C + - - A-B --C'))
then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- BB+BC+- B- C+-C C + A-BC';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término -- A- B- -C ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
325

if (Ejercicio='X= -(A+B+ -C+ -D+E)+ - A-B- C-E+ABCD- E+ABC+- A- BCD -


E') then
i f ((Cont_T=1) and (Ecuacion='X= - A-B --C --D -E+ - A-B -C- E+ABCD -
E+ABC+- A-BCD- E ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= - A- BCD -E+ - A-B -C- E+ABCD- E+ABC+ - A- BCD -E';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término - A-B --C --D -E';
end
else
if ((Cont_T=4) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+D)+ABC')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A- BCD- E+- A- B- E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuac i o n ;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término - A-B --C --D -E';
end
else
if ((Cont_T=2) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+CD)+ABC(D -E+1)') ) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-B C D-E +- A-B -E (-C+CD)+ABC(D -E + 1 ) ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término - A-B --C --D -E';
end
else
if ((Cont_T=3) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+CD)+ABC')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - A- BCD -E+ - A-B -E( -C+CD)+ABC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
326

Memo1.Text:='Obtuvimos este resultado cancelando las


inversiones d obles en el término - A-B --C --D -E';
end
else
if ((Cont_T=3) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+D)+ABC(D- E+1)')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- A- BCD- E+- A- B- E( -C+D)+ABC(D -E + 1 ) ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado cancelando las
inversiones dobles en el término - A-B --C --D -E ';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end
else
begin
if (C ont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='Esta ecuación no tiene inversiones dobles que
cancelar';
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA6. Permite aplicar el

teorema X+1=1 del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B6Click(Sender: TObject);


begin
if (Ejercicio='X= -(A+B+ -C)+- A- BCD+ - AB -C D ' ) t h e n
if ((Cont_T=3) and (Ecuacion='X= - A- BC(1+D)+ - AB-C D ' ) ) t h e n
begin
ContB:=ContB+1;
327

Cuatro.Visible:=True;
Ecuacion:='X=- A- BC+ - AB -CD';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a el
t é r m i n o - A- BC(1+D ) ' ;
end
else
if ((Cont_T=6) and (Ecuacion='X=- A( -BC(1+D)+B- CD)')) then
begin
ContB:=ContB+1;
Siete.Visible:=True;
Ecuacion:='X=- A( -B C + B-C D ) ' ;
Siete.Font.Color:=clWhite;
Siete.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluar SA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a el
t é r m i n o - BC(1+D)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='ElTeorema 6 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X= -(A+B+ -C+- D+E)+- A- B-C -E + A B C D-E+ABC+- A-BCD- E')
then
if ((Cont_T=3) and (Ecuacion='X= - A- B- E(CD+-C)+ABC(D- E+1)+ - A-
BCD- E ' ) ) t h e n
begin
C on t B : = C o n t B + 1 ;
Cuatro.Visible:=True;
Ecuacion:='X=- A-B -E(CD+ -C)+ABC+- A- BCD- E ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a el
término ABC(D -E + 1 ) ' ;
e nd
else
if ((Cont_T=7) and (Ecuacion='X= - A-B -E (-C+D(1+C))+ABC')) then
begin
ContB:=ContB+1;
Ocho.Visible:=True;
328

Ecuacion:='X= - A-B -E( -C + D ( 1 ) ) + A B C ' ;


Cont_T:=Cont_T+1;
Ocho.Text:=Ecuacion;
Panel3.Visible:=True;
Me mo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a el
término 1 con C';
end
else
if ((Cont_T=5) and (Ecuacion='X= - A-B- E( -C + D ) + A B C ( D- E+1)')) then
begin
ContB:=ContB+1;
Seis.Visible:=True;
Ecuacion:='X= - A- B- E( -C+D ) + A B C ' ;
Seis.Font.Color:=clWhite;
Seis.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a el
término ABC(D -E + 1 ) ' ;
Label29.Visible:= T r u e ;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
i f ((Cont_T=4) and (Ecuacion='X= - A-B -E(CD+- C)+ABC(D- E+1)'))
then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A-B -E(CD+ -C ) + AB C ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a
el término ABC(D- E+1)';
end
else
if ((Cont_T=1) and (Ecuacion='X= - (A+B+- C+-D + E ) +
- A-B -E (- C+CD)+ABC(D -E + 1 ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -(A+B+ -C+ -D+E)+ - A-B- E( -C+CD)+ABC';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
M e m o1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a
el término ABC(D -E + 1 ) ' ;
end
else
329

if ((Cont_T=2) and (Ecuacion='X= - (A+B+- C+-D + E ) +


- A-B -E (- C+D)+ABC(D -E + 1 ) ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= -(A+B+ -C+ -D+E)+- A- B- E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a
e l término ABC(D -E + 1 ) ' ;
end
else
if ((Cont_T=4) and (Ecuacion='X=- A- BCD- E+ - A- B- E( -C+D)+
ABC(D -E+1)')) then
begin
ContB:=ContB+1;
Cinco.Visible:=True;
Ecuacion:='X=- A- BCD- E+- A- B- E( -C + D ) + AB C ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6 a
el término ABC(D- E+1)';
end
else
if ((Cont_T=2) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= - A-B --C -- D-E +- A-B -E (-C + C D ) + A B C ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6
a el término ABC(D -E + 1 ) ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- A- B- -C- -D- E+ - A- B- E( -
C+D)+ABC(D- E+1)')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X= - A- B- -C --D -E+ - A-B- E( -C+D)+ABC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 6
a el término ABC(D -E + 1 ) ' ;
end
330

else
if ((Cont_T=3) and (Ecuacion='X=- A- BCD- E+ - A- B- E( -
C+CD)+ABC(D -E+1)')) then
begin
ContB:=ContB+1;
Cuatro.Vis i b l e : = T r u e ;
Ecuacion:='X=- A- BCD- E+- A- B- E( -C+CD)+ABC';
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema
6 a el término ABC(D- E+1)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 6 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 6 no es aplicable en este caso';
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA13. Permite aplicar el

teorema (W+X)(Y+Z)=WY+XY+WZ+XZ del álgebra booleana en la

evaluación s o b re simplificación algebraica, una vez lo ha

seleccionado el usuario.

procedure TFEvaluarSA.B13BClick(Sender: TObject);


begin
i f ( E j e r c i c i o = ' X = (- A+B)(A+B+C) -D') then
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
331

Ecuacion:='X=( - AA+- AB+ - AC+AB+BB+BC)-D';


Cont_T:=Cont_T+1;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 13B a
e l t é r m i n o (- A+B) con (A+B+C ) ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=( - A + B ) ( A-D+B -D+C -D ) ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=- AA- D+- AB -D+- AC- D+AB-D+BB -D+BC-D';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 13B a
los términos ( - A + B ) c o n ( A-D+B -D+C -D ) ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13B no es aplicable en este caso';
NError:=NError+1;
end
els e
if (Ejercicio='X=(B+ -C ) (- B + C ) +- (- A+B+ -C ) ' ) t h e n
if (Cont_T=0) then
begin
ContB:=ContB+1;
OculL;
LEcuacion.Visible:=True;
LEcuacion.Text:=Ejercicio;
Uno.Visible:=True;
Ecuacion:='X=- BB+BC+- B-C +-C C +- (- A+B+ -C)';
Cont_T:=C o n t _ T + 1 ;
Uno.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 13B a
el término (B+ -C ) c o n (- B+C)';
end
else
i f ( ( C o n t _ T = 2 ) a n d ( E c u a c i o n = ' X = ( B +-C)( -B + C ) + A-B C ' ) ) t h e n
begin
ContB :=ContB+1;
Tres.Visible:=True;
Ecuacion:='X= -B B + B C +-B -C+ -C C + A- B C ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
332

Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 13B a


el término (B+ -C ) c o n (- B+C)';
end
else
if ((Cont_T=1) and (Ecuacion='X=(B+ -C ) (- B+C)+- - A-B- -C ' ) ) t h e n
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X= -BB+BC+ -B -C+- CC+ -- A-B --C ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible : = T r u e ;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 13B a
el término (B+ -C ) c o n (- B+C)';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13B no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 13B no es aplicable en este caso';
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA4. Permite aplicar el

t e o r e m a X -X =0 del á l g ebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B4Click(Sender: TObject);


begin
i f ( E j e r c i c i o = ' X = (- A+B)(A+B+C) -D') then
if ((Cont_T=2) and (Ecuacion='X= - AA-D+ - AB-D+ - AC -D+AB -D+B B-D+BC -
D')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- AB -D+ - AC -D+AB- D+BB -D+BC- D ' ;
Cont_T:=Cont_T+1;
333

Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a el
térm ino - AA- D ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- AA-D +- AB- D+- AC- D+AB -D + B-D+BC -
D')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- AB- D+- AC- D+AB-D + B-D+BC -D ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
P a nel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a el
t é r m i n o - AA- D ' ;
end
else
if ((Cont_T=1) and (Ecuacion='X=( - AA+- AB+ - AC+AB+BB+BC)-D'))
then
begin
ContB:=ContB+1;
Dos.Visible:=True;
E c u a c i o n:='X=(- AB+ - AC+AB+BB+BC) -D';
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a el
t é r m i n o - AA';
end
else
if ((Cont_T=2) and (Ecuacion='X=(- AA+ - AB+- AC+ AB+B+BC) -D ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
E c u a c i o n : = ' X = (- AB+- AC+AB+B+BC)-D ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a el
t é r m i n o - AA';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 4 no es aplicable en este caso';
NError:=NError+1;
end
else
if (Ejercicio='X=(B+ -C ) (- B + C ) +- (- A+B+ -C ) ' ) t h e n
334

if ( ( C o n t _ T = 1 ) and (Ecuacion='X=-BB+BC+- B-C+ -CC+ -( - A+B+ -C)'))


then
begin
ContB:=ContB+1;
Dos.Visible:=True;
Ecuacion:='X=BC+ -B -C+ -( - A+B+-C ) ' ;
Cont_T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a los
t é r m i n o s - BB y -CC';
end
else
i f ( ( C o n t _ T = 3 ) a n d ( E c u a c i o n = ' X = B- B + B C +- B-C + C-C + A- BC')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=BC+ -B- C + A-BC';
Cont_T:=Cont_T+1;
C u a t r o .Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a
los términos B -B y C -C ' ;
end
else
if ((Cont_T=2) and (Ecuacion='X= -BB+BC+ -B -C+ -CC+ -- A-B -- C ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=BC+- B-C +- - A- B- -C ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a
los términos - BB y -C C ' ;
end
else
if ((Cont_T=3) and (Ecuacion='X=- BB+BC+ -B- C+-C C + A-BC')) then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=BC+ -B -C + A-B C ' ;
Cont_T:=Cont_T+1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a
los términos - BB y -C C ' ;
end
else
if ((Cont_T=5) and (Ecuacion='X=-BB+C(A+B)+ -B -C+- CC')) then
begin
335

ContB:=ContB+1;
Seis.Visible:=True;
E c u a c ion:='X=C(A+B)+- B-C';
Seis.Font.Color:=clWhite;
Seis.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a
los términos - BB y -C C ' ;
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
if ((Cont_T=4) and (Ecuacion='X= -B B + C ( B + A-B)+- B-C +-CC')) then
begin
ContB:=ContB+1;
Cinco.Visible:=T r u e ;
E c u a c i o n : = ' X = C ( B + A- B)+ -B -C ' ;
Cont_T:=Cont_T+1;
Cinco.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 4 a
los términos - BB y -C C ' ;
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 4 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 4 no es aplicabl e e n e s t e c a s o ' ;
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA3. Permite aplicar el

teorema X· X = X del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.


336

procedure TFEvaluarSA.B 3Click(Sender: TObject);


begin
i f ( E j e r c i c i o = ' X = (- A+B)(A+B+C) -D') then
i f ((Cont_T=3) and (Ecuacion='X=- AB- D+- AC- D+AB -D+BB -D + B C-D'))
then
begin
ContB:=ContB+1;
Cuatro.Visible:=True;
Ecuacion:='X=- AB -D+ - AC -D+AB- D+B -D + B C-D';
C o n t _ T : = C o n t _ T + 1;
Cuatro.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 3 a el
t é r m i n o B B-D';
end
else
i f ( ( C o n t _ T = 2 ) a n d ( E c u a c i o n = ' X = - AA- D+- AB- D+- AC- D+AB-D+BB -
D+BC- D ' ) ) t h e n
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=- AA- D+- AB -D+- AC- D+AB-D + B- D+BC -D ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 3 a el
t é r m i n o B B-D';
end
else
i f ( (C o n t _ T = 2 ) a n d ( E c u a c i o n = ' X = (- AB+ - AC+AB+BB+BC)-D')) then
begin
ContB:=ContB+1;
Tres.Visible:=True;
Ecuacion:='X=(- AB+ - AC+AB+B+BC) -D ' ;
Cont_T:=Cont_T+1;
Tres.Text:=Ecuacion;
Panel3.Visible:=True;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 3 a el
término BB';
end
else
i f ((Cont_T=1) and (Ecuacion='X=( - AA+- AB+ - AC+AB+BB+BC)-D'))
then
begin
ContB:=ContB+1;
Dos.Visible:=True;
E c u a c i o n : = ' X = (- AA+- AB+ - AC+AB+B+BC) -D ' ;
Cont _T:=Cont_T+1;
Dos.Text:=Ecuacion;
Panel3.Visible:=True;
337

Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 3 a el


término BB';
end
else
begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 4 no es aplicabl e e n e s t e c a s o ' ;
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 4 no es aplicable en este caso';
NError:=NError+1;
end;
end;

PROCEDIMIENTO EVALUAR_SIMPLIFICA2. Permite a plicar el

teorema X· 1=X del álgebra booleana en la evaluación sobre

simplificación algebraica, una vez lo ha seleccionado el usuario.

procedure TFEvaluarSA.B2Click(Sender: TObject);


begin
if (Ejercicio='X= -(A+B+ -C+- D+E)+- A- B-C -E + A B C D-E+ABC+- A-BCD- E')
then
if ((Cont_T=8) and (Ecuacion='X= - A- B- E( -C + D ( 1 ) ) + A B C ' ) ) t h e n
begin
ContB:=ContB+1;
Nueve.Visible:=True;
Ecuacion:='X=- A- B- E( -C+D)+ABC';
Nueve.Font.Color:=clWhite;
Nueve.Text:=Ecuacion;
Cont_T:=0;
DeshBot(FEvaluarSA);
Panel3.Vis i b l e : = T r u e ;
Memo1.Text:='Obtuvimos este resultado aplicando el Teorema 9 a el
término D(1)';
Label29.Visible:=True;
BRegresar.Visible:=True;
BRegresar.Enabled:=True;
end
else
338

begin
Panel4.Visible:=True;
Memo2.Text:='El Teorema 9 no es aplicable en este caso';
NError:=NError+1;
end
else
begin
if (Cont_T=0) then
MostL;
Panel4.Visible:=True;
Memo2.Text:='El Teorema 9 no es aplicable en este caso';
NError:=NError+1;
end;
end;

PROCEDIMIENTO ACTUALIZAR_SIMPLIFICACIÓN. Una vez el

usuario ha sido evaluado en la leccció simplificación algebraica

este procedimiento procede a actualizar sus datos en la base de

datos tablas de acuerdo a los resultados obtenidos.

procedure TFEvaluarSA.BRegresarClick(Sender: TObject);


var
PorcE,Punt,Desc,Puntaje,PuntE:Real;
NumEjer:integer;
begin
TError:=NError+ContB;
NombForm:='FEvaluarSA';
panel3.Visible:=false;
panel4.Visible:=false;
NumEjer:=FSimpAlg.Ejercicios_Propuestos.Fields[7].AsInteger;
EjerSiNo[NumEjer]:='1';
P u n t : = F S i m p Alg.Ejercicios_Propuestos.Fields[5].AsFloat;
PorcE:=(NError*100)/TError;
FSimpAlg.Ejercicios_Propuestos.Close;
Leccion_Simplificacion.open;
Leccion_Simplificacion.DisableControls;
Leccion_Simplificacion.SetKey;
Leccion_Simplificacion.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_Simplificacion.GotoKey;
if (Leccion_Simplificacion.GotoKey=True) then
begin//2
Leccion_Simplificacion.Edit;
if (PorcE<=40) then
339

begin//3
P u n t : = ( ( 1 0 0- ((NError*100)/(2*(Contm+1))))*Punt)/100;
if (Leccion_Simplificacion.Fields[3].AsInteger=0) then
begin
Puntaje:=Punt;

Leccion_Simplificacion.Fields[2].AsFloat:=Leccion_Simplificacion.Fields[
2].AsFloat+Punt;
end
else
begin
D e s c : = P u n t- (Punt*0.05);
Puntaje:=Desc;

Leccion_Simplificacion. Fields[2].AsFloat:=Leccion_Simplificacion.Fields[
2].AsFloat+Desc;
end;
Leccion_Simplificacion.Fields[4].AsString:=EjerSiNo;
Leccion_Simplificacion.Post;
Leccion_Simplificacion.EnableControls;
Leccion_Simplificacion.Close;
Estudiantes.Open ;
Estudiantes.DisableControls;
Estudiantes.Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin//4
Estudiantes.Edit;
if (niv<4)then
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger+1;
Estudiantes.fields[3].Asfloat:=Estudiantes.fields[3].Asfloat+Punt;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
NEstr:=Estudiantes.fields[5].AsInteger;
if (Estrell as>Estudiantes.fields[5].AsInteger) then
begin
Estudiantes.fields[5].AsInteger:=Estrellas;
Panel3.Visible:=True;
FEstrella.Show;
end;
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;//4
NumEquiv: = 0 ;
FFelicit.Memo2.Text:=FormatFloat('0.00',Puntaje);
FFelicit.Show;
FEvaluarSA.Hide;
end//3
else
340

begin
PuntE:=(Leccion_Simplificacion.Fields[2].AsFloat)*0.1;

Leccion_Simplificacion.Fields[2].AsFloat:=Leccion_Simplificacion.Fields[
2 ] . AsFloat-PuntE;
Leccion_Simplificacion.Fields[5].AsString:=EjerSiNo;
Leccion_Simplificacion.Post;
Leccion_Simplificacion.EnableControls;
Leccion_Simplificacion.Close;
Estudiantes.Open;
Estudiantes.DisableControls;
Estudiantes.Setkey;
Estudiantes.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (estudiantes.gotokey=true) then
begin
Estudiantes.Edit;
if (niv>1)then
Estudiantes.fields[6].AsInteger:=Estudiantes.fields[6].AsInteger- 1 ;
E s t u d i a n t e s .fields[3].Asfloat:=Estudiantes.fields[3].Asfloat- PuntE;
PunT:=((Estudiantes.fields[3].AsFloat)/20);
Estrellas:=Trunc(PunT);
Estudiantes.fields[5].AsInteger:=Estrellas;
Estudiantes.Post;
Estudiantes.EnableControls;
Estudiantes.Close;
end;
// FEvaluarSA.Hide;
NumEquiv:=NumEquiv+1;
FEquivoc.Memo6.Text:=FormatFloat('0.00',PuntE);
FEquivoc.Show;
FEvaluarSA.Hide;
end;
end;
end;

LECCION APLICACIONES DEL ÁLGEBRA BOOLEANA.

P R O C E D I M I E N T O I N I C I A R _ A P L I C A C I O N E S . Cuando un us u a r i o

visita la lección Aplicaciones del Álgebra Booleana, actualiza los

datos de éste en las tablas Estudiantes Lección_Simplificación.

procedure TForm7.BAplicacClick(Sender: TObject);


begin
341

form7.hide;
Estudiantes.Open;
Estudiantes.SetKey;
Estudiant es.FieldByName('Cod_Est').AsString:=Codigo1;
Estudiantes.GotoKey;
if (Estudiantes.GotoKey=True) then
begin
Estudiantes.Edit;
Estudiantes.Fields[4].AsString:='Aplicaciones del Algebra Booleana';
Estudiantes.Post;
Estudiantes.EnableControls;
Es t u d i a n t e s . C l o s e ;
end;
Leccion_Aplicaciones.Open;
Leccion_Aplicaciones.SetKey;
Leccion_Aplicaciones.FieldByName('Cod_Est').AsString:=Codigo1;
Leccion_Aplicaciones.GotoKey;
if (Leccion_Aplicaciones.GotoKey=True) then
begin
Leccion_Aplicaciones.Edit;

Leccion_Aplicaciones.Fields[1].AsInteger:=Leccion_Aplicaciones.Fields[
1].AsInteger+1;
Leccion_Aplicaciones.Post;
Leccion_Aplicaciones.EnableControls;
Leccion_Aplicaciones.Close;
end
else
begin
Leccion_Aplicaciones.DisableControls;
Leccion_Aplicaciones.Last;
Leccion_Aplicaciones.Insert;
Leccion_Aplicaciones.Edit;
Leccion_Aplicaciones.Fields[0].AsString:=Codigo1;
Leccion_Aplicaciones.Fields[1].AsInteger:=1;
Leccion_Aplicaciones.Fields[2].AsFloat:=0;
Leccion_Aplicaciones .Fields[3].AsInteger:=0;

Leccion_Aplicaciones.Fields[4].AsString:='0000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000';

Leccion_Aplicaciones.Fields[5].AsString:='0000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000';

Leccion_Aplicaciones.Fields[6].AsString:='0000000000000000000000000
342

000000000000000000000000000000000000000000000000000000000000
0000000 00000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000';
Leccion_Aplicaciones.post;
Leccion_Aplicaciones.EnableControls;
L e c c i o n _ A p l i c a c iones.Close;
end;
FAplicac.Show;
end;
4 . ARBOL DE DIRECTORIOS

La carpeta del programa fuente está en el CD, para acceder a ella

se ubica desde el explorador de windows en la unidad de CD;

s e l e c c i o n a l a c a r p e t a M r B o o l e é s t a c o n t i e n e l a c a r p e t a con el

nombre ProgramaFuente, desde esa ubicación puede copiar: el

código fuente del instructor en la carpeta instructor o el programa

fuente del programa Mr_BooleConsultaayAdicion diseñado para

alimentar la base de Datos Tablas.

El siguiente arbol se mue stra la carpeta Instaladores de Mr Boole,

es aquí donde está el archivo parala instalación del programa.


344
345

MANUAL DE USUARIO

1. REQUERIMIENTOS

Para la instalación y ejecución optima de este programa se requiere

u n e q u i p o c o m p a t i b l e co n W i n d o w s c o n u n a m e m o r i a R A M m í n i m a

de 16 MB. Un procesador de 133 Mhz o más, Mouse, impresora,

u n i d a d d e C D - ROM, espacio en disco para su ejecución de 200 Mb.

o más y tarjeta de sonido y videos.

1.1 PAQUETES REQUERIDOS

• Windows 95/98

• Delphi 3.0

• Corel Draw

• Ilustrador Cómico

• Photo Paint
346

• Gif Animator

• Office 2000

• Internet Explorer
2 . PROCESO DE INSTALACIÓN

2.1 INSTALACION

P a r a i n s t a l a r e l p r o g r a m a s e i n t r o d u c e e l C D - ROM en la unidad de

C D , d e s d e e l e x p l o r a d o r a c c e d a a l a u n i d a d d e C D , e scoja

sucesivamente las siguientes carpetas.

0 MrBoole

0 Instaladores

0 Instructor

2.2 QUITAR INSTALACION

La eliminación del programa se puede realizar desde la opción

agregar o quitar programas de Window, para llegar a esta opción se

hace desde el acceso dire cto de pantalla Mi PC, luego se hace

click a la opción Panel de Control y por último la opción agregar o


348

quitar programas. Aparecerá una pantalla en la cual se muestra una

lista de todos los programas instalados en el PC, de esta lista se

selecciona el nombre de Mr Boole, hacemos click sobre el botón

agregar o quitar. El sistema se encarga de eliminar el programa

completamente.

2.3 EJECUTAR PROGRAMA

Para la ejecución del programa se puede hacer desde la opción

In i c i o d e s u P C , e n l a l i s t a d e p r o g r a m a s b u s q ue el lugar donde se

instala MrBoole y haga click sobre esta opción, se despliega otro

menú seleccione Instructor, finalmente elija entre el programa Mr

Boole o la Ayuda de éste.

Otra forma de ejecutar el programa es desde el explorador

seleccionando las siguientes carpetas.

0 Mr Boole

0 Instructor

0 Mr Boole o Ayuda
349

3. MANEJO DEL PROGRAMA

3.1 ICONOS MAS USUALES.

A c e p t a r . Da por terminada las acciones que se estén

solicitando en la pantalla .

Regresar. Volver a el paso o pantalla anterior.

Continuar. Avanzar al siguiente paso o pantalla.

Salir. Permite salir del software.

I n i c i a r R e d u c c i ó n . Realizar la primera reducción a partir

de la tabla de agrupamiento base.

C r e a r T a b l a . C r e a l a s i g u i e n t e t a b l a d e r e d u c c i ó n.

Terminar Reducción. Crea la ecuación simplificada.


350

3.2 MENU PRINCIPAL. Usted puede acceder a las siguientes

opciones desde el Menú Principal (Figura 1):

• Ejercicios: Puede consultar una serie de ejercicios Resueltos

de la lección que usted esté visitando o optar por ser

evaluado con los ejercicios Propuestos de la lección.

• Lecciones: E n c u a l q u i e r i n s t a n t e p u e d e s d e s p l a z a r t e a u n a

de las lecciones de Mr Boole, estas son: Historia,

Simplificación Algebraica, Mapas de Karnaugh, Teoría Básica,

Simplificación de Quine McCluskey.

• Ayuda: Al seleccionar esta opción puedes obtener

i n f o r m a c i ó n A c e r c a d e ( F i g u r a 2 ) generalidades del software y

a un C o n t e n i d o q u e i n t e g r a u n a s e r i e d e í t e m e s p e c í f i c o s .

• R e t o r n a r : T e p e r m i t e a b a n d o n a r a M r B o o l e e n c u a l q uier

instante.
351

Figura 2. Acerca de.

3.3 COMPLETAR TABLAS DE VERDAD.

Cuando en una lección o en una evaluación se solicita al estudiante

completar o llenar una tabla de verdad como lo muestra la Figura 2,

la tabla se llena utilizando los botones 0 y 1 que aparecen en la

pantalla, el llenado de la tabla se realiza fila por fila de arriba hacia

abajo.
352

Figura 3. Completar Tablas de verdad.

3.4 FORMACION DE ECUACIONES BOOLEANA.

Al usuario se le solicita formar una ecuación booleana ya sea en la

fo r m a m i n t e r m s o m a x t e r m s a p a r t i r d e u n a t a b l a d e v e r d a d , e l

usuario debe ubicar el cursor en la casilla blanca que aparece en la

parte inferior de la pantalla y digitar la fila de la cual va a sacar el

t e r m i n o q u e v a a f o r m a r y d a r c l i c k e n e l b o t ó n A c e p t a r, al instante

a p a r e c e n l o s b o t o n e s A , B , C , -B ,- C ,-D , a l d a r c l i c s o b r e e l l o s s e

comienza a formar la ecuación booleana.


353

Figura 4. Formación de Ecuaciones Booleanas.

3.5 CREACION TABLA DE AGRUPAMIENTO BASE.

E n l a l e c c i ó n S i m p l i f i c a c i ó n d e Q u i n e M c C l u s k e y al usuario se le

invita a crear la tabla de Agrupamiento debe realizar los siguientes

pasos:
354

Figura 5. Numero de Términos

1 . Ubicar el cursor en la casilla blanca de la parte superior, digitar

el número de términos que tiene la ecuación que se va a red ucir

y haces click en el botón Aceptar.

2 . Seleccionar las variables que vas a utilizar.

3 . Para crear la primera columna de la tabla de agrupamiento base

debe utilizar los botones de las variables y sus negaciones que

a p a r e c e n e n l a p a r t e i n f e r i o r d e l a p a n t alla, cada vez que

termines una casilla haces click en el botón Aceptar.


355

4 . Para la segunda columna utiliza los botones 0’ y 1, al terminar

cada casilla haces click en el botón Aceptar.

5 . La tercera columna ubica el cursor en la casilla blanca digita el

número según las instrucciones que se dan en la lección y haces

click en el botón Aceptar.

6 . Para crear la tercera columna ubica el cursor en la casilla blanca

digita el número según las instrucciones que se dan en la

l e c c i ó n y h a c e s c l i c k e n e l b o t ó n A c e p ta r .

3.6 SIMPLIFICACION ALGEBRAICA. Tanto en la lección como en

la evaluación de Simplificación Algebraica, se le solicita al usuario

simplificar una ecuación Algebraica utilizando los botones que

tienen los teoremas del Álgebra Booleana ubicados en la parte

derecha de la pantalla como lo indica la figura 6.


356

Figura 6. Simplificación Algebraica.

3.7 ELABORACION DE UN CIRCUITO DIGITAL POR EL USUARIO.

En la lección circuitos digitales el usuario tiene la oportunidad de

crear un circuito digital y pe dirle al software didáctico que le

muestre la salida o ecuación booleana que representa este circuito.

En la figura 6 es la pantalla en la que se trabaja para esto. Los

pasos a seguir para el diseño del circuito son los siguientes.


357

Figura 7. Elaboració n de un Circuito Lógico

1 . En la parte superior de la pantalla observa la barra contiene

todas las compuertas que puedes utilizar, pasa el mouse

sobre ellas y un pequeño mensaje te indica que clase de

c o m p u e r t a e s . S e l e c c i o n a l a q u e d e s e e s d a n d o c l i c s o b r e e lla,

se crea una igual en la parte superior izquierda de la pantalla

y desde ahí tu puedes arrastrarla con el mouse hasta el lugar


358

del lienzo donde desees que se ubique. En el ejemplo se

arrastró la compuerta not. Figura 7.

2 . E n l a p a r t e d e r e c h a d e l a p a n t a lla tienes una tabla con

Entradas/Compuertas en donde están todas las entradas que

puedes utilizar para cada una de las compuertas que has

seleccionado, en la parte superior de la tabla tienes un botón

para seleccionar la compuerta de la tabla a la que le vas

asignar las entradas. Cuando seleccionas la compuerta se

ilumina la que está en el lienzo. En el ejemplo se seleccionó

la compuerta not. Figura 7. De igual forma selecciona en la

tabla la entrada para la compuerta, en el ejemplo se

seleccionó la entrada B para la compuerta not que de igual

forma se iluminó.

3 . Un mensaje color gris permite elegir a que posición de la

entrada quieres unir la compuerta, digitas el número elegido

en la casilla y das clic en el botón Aceptar. Figura 7.

4 . E l n ú m e r o d e e n t r a da s d e u n a c o m p u e r t a l o p u e d e s c a m b i a r

una sola vez dando clic derecho sobre la compuerta,

seleccionas en el menú el numero de entradas que deseas

que tenga la compuerta.


359

5 . Realizas los pasos 1,2 y 3 sucesivamente hasta terminar de

crear tu circuito.

6. En la barra seleccionas el botón “Finalizar la

elaboración del circuito y calcular la salida de este”. Figura

7.
360

También podría gustarte