Você está na página 1de 6

%Autor:Jose Luis Cardenas

%Programa:Programa Compuertas Logicas

close all
clc

p1=[0; 0; 0; 0; 1; 1; 1; 1]; %Definimos vectores de entrada de las compuertas


q1=[0; 0; 1; 1; 0; 0; 1; 1]; %Para operaciones con 3 variables
z=[0; 1; 0; 1; 0; 1; 0; 1]; %8 Combinaciones

p2=[0; 0; 0; 0; 0; 0; 0; 0; 1; 1; 1; 1; 1; 1; 1; 1];
q2=[0; 0; 0; 0; 1; 1; 1; 1; 0; 0; 0; 0; 1; 1; 1; 1];%Para operaciones con 4 variables
r=[0; 0; 1; 1; 0; 0; 1; 1; 0; 0; 1; 1; 0; 0; 1; 1]; %16 Combinaciones
s=[0; 1; 0; 1; 0; 1; 0; 1; 0; 1; 0; 1; 0; 1; 0; 1];

dom1=[0,1,2,3,4,5,6,7,8]; %Dominios para el tren de pulsos con 8 pulsos


dom2=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; %Dominios para el tren de pulsos con 16
pulsos

inicio=true;%Definimos la variable inicio que se encarga de controlar las repeticiones


while inicio==true

clc
close all

%Menú de inicio

disp('Programa para ver la tabla de la verdad y tren de pulsos para una estructura
booleana');
disp ('Seleccione la estructura de la expresión booleana que quiere visualizar');
disp ('1: (p operador q) operador z');
disp ('2: p operador(q operador z)');
disp ('3: (p operador q)operador(r operador s)');
disp ('4: ((p operador q)operador r) operador s');
disp ('5: p operador (q operador r) operador s');

opc=input(' ');%Lectura de opcion

clc %Borrar consola para no ver más el menú


disp (' ')
%Switch segun la estructura escogida
switch opc
case 1
disp ('Seleccione la compuesta a usar en la expresión booleana'); %Elección
de la compuerta
disp ('1: AND');
disp ('2: OR');
disp ('3: XOR');
comp=input(' ');

switch comp

case 1

A=p1&q1;
B=A&z;

disp(' ');
disp('Tabla de verdad para la estructura (p AND q) AND z ');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','pANDq','pANDq_ANDz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p AND q) AND z ');%damos un nombre a la
grafica

case 2

A=p1|q1;
B=A|z;

disp(' ');
disp('Tabla de verdad para la estructura (p OR q) OR z ');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','pORq','pORq_ORz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p OR q) OR z ');%damos un nombre a la grafica

case 3

A=xor(p1,q1);
B=xor(A,z);

disp(' ');
disp('Tabla de verdad para la estructura (p XOR q) XOR z ');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','pXORq','pXORq_XORz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p XOR q) XOR z ');%damos un nombre a la
grafica

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de
ingresos no validos mostramos un mensaje
end

case 2
disp ('Seleccione la compuesta a usar en la expresión booleana'); %Elección
de la compuerta
disp ('1: AND');
disp ('2: OR');
disp ('3: XOR');
comp=input(' ');

switch comp
case 1

A=q1&z;
B=p1&A;

disp(' ');
disp('Tabla de verdad para la estructura p AND (q AND z)');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','qANDz','pAND_qANDz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p AND (q AND z) ');%damos un nombre a la
grafica

case 2

A=q1|z;
B=p1|A;

disp(' ');
disp('Tabla de verdad para la estructura p OR (q OR z)');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','qORz','pOR_qORz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p OR (q OR z) ');%damos un nombre a la grafica

case 3

A=xor(q1,z);
B=xor(p1,A);

disp(' ');
disp('Tabla de verdad para la estructura p XOR (q XOR z)');
TablaVerdad=table
(p1,q1,z,A,B,'VariableNames',{'p','q','z','qXORz','pXOR_qXORz'});
disp (TablaVerdad)

B(9)=0;
stairs(dom1,B,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p XOR (q XOR z) ');%damos un nombre a la
grafica

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de
ingresos no validos mostramos un mensaje
end

case 3
disp ('Seleccione la compuesta a usar en la expresión booleana'); %Elección
de la compuerta
disp ('1: AND');
disp ('2: OR');
disp ('3: XOR');
comp=input(' ');

switch comp
case 1

A=p2&q2;
B=r&s;
C=A&B;

disp(' ');
disp('Tabla de verdad para la estructura (p AND q)AND(r AND s))');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pANDq','rANDs','pANDq_AND_rANDs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p AND q)AND(r AND s) ');%damos un nombre a la
grafica

case 2

A=p2|q2; %Operamos los parentesis


B=r|s;
C=A|B; %Operamos los resultados de los parentesis

disp(' ');
disp('Tabla de verdad para la estructura (p OR q)OR(r OR s))');
%Mostramos información acerca de la tabla que se va a mostrar
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pORq','rORs','pORq_OR_rORs'}); %Generamos
tablas con titulos para cada columna
disp (TablaVerdad) %Mostramos la tabla

C(17)=0; %Agregamos un digito más al vector para poder visualizar el


ultimo pulso completo.
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p OR q)OR(r OR s) ');%damos un nombre a la
grafica

case 3

A=xor(p2,q2); %Operamos los parentesis


B=xor(r,s);
C=xor(A,B); %Operamos los resultados de los parentesis

disp(' ');
disp('Tabla de verdad para la estructura (p XOR q)XOR(r XOR s))');
%Mostramos información acerca de la tabla que se va a mostrar
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pXORq','rXORs','pXORq_OR_rXORs'});
%Generamos tablas con titulos para cada columna
disp (TablaVerdad) %Mostramos la tabla

C(17)=0; %Agregamos un digito más al vector para poder visualizar el


ultimo pulso completo.
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos (p XOR q)XOR(r XOR s) ');%damos un nombre a la
grafica

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de
ingresos no validos mostramos un mensaje
end

case 4
disp ('Seleccione la compuesta a usar en la expresión booleana'); %Elección
de la compuerta
disp ('1: AND');
disp ('2: OR');
disp ('3: XOR');
comp=input(' ');

switch comp
case 1

A=p2&q2;
B=A&r;
C=B&s;

disp(' ');
disp('Tabla de verdad para la estructura ((p AND q)AND r)AND s');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pANDq','pANDq_ANDr','pANDq_ANDr_ANDs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos ((p AND q)AND r)AND s ');%damos un nombre a la
grafica

case 2

A=p2|q2;
B=A|r;
C=B|s;

disp(' ');
disp('Tabla de verdad para la estructura ((p OR q)OR r)OR s');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pORq','pORq_ORr','pORq_ORr_ORs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos ((p OR q)OR r)OR s');%damos un nombre a la
grafica

case 3

A=xor(p2,q2);
B=xor(A,r);
C=xor(B,s);

disp(' ');
disp('Tabla de verdad para la estructura ((p XOR q)XOR r)XOR s');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','pXORq','pXORq_XORr','pXORq_XORr_XORs'});
disp (TablaVerdad)
C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos ((p XOR q)XOR r)XOR s');%damos un nombre a la
grafica

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de
ingresos no validos mostramos un mensaje
end

case 5
disp ('Seleccione la compuesta a usar en la expresión booleana'); %Elección
de la compuerta
disp ('1: AND');
disp ('2: OR');
disp ('3: XOR');
comp=input(' ');

switch comp
case 1

A=r&s;
B=q2&A;
C=p2&B;

disp(' ');
disp('Tabla de verdad para la estructura p AND(q AND(r AND s)');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','rANDs','qAND_rANDs','pAND_qAND_rANDs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p AND(q AND(r AND s) ');%damos un nombre a la
grafica

case 2

A=r|s;
B=q2|A;
C=p2|B;

disp(' ');
disp('Tabla de verdad para la estructura p OR(q OR(r OR s)');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','rORs','qOR_rORs','pOR_qOR_rORs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p OR(q OR(r OR s) ');%damos un nombre a la
grafica

case 3

A=xor(r,s);
B=xor(q2,A);
C=xor(p2,B);

disp(' ');
disp('Tabla de verdad para la estructura p XOR(q XOR(r XOR s)');
TablaVerdad=table
(p2,q2,r,s,A,B,C,'VariableNames',{'p','q','r','s','rXORs','qXOR_rXORs','pXOR_qXOR_rXORs'});
disp (TablaVerdad)

C(17)=0;
stairs(dom2,C,'g','LineWidth',2);%Tren de Pulsos Resultado
title('Tren de Pulsos p XOR(q XOR(r XOR s) ');%damos un nombre a la
grafica

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de
ingresos no validos mostramos un mensaje
end

otherwise
disp('Opción invalida, intentelo de nuevo');%para los casos de ingresos no
validos mostramos un mensaje
end

%funcion de control de repeticion de programa


disp('¿Quiere ver otra estructura?')
disp ('1:Si');
disp ('2:No');
rep=input(' '); %Leer Comando para repetir el programa
if rep==1
inicio=true;

else
inicio=false;
end

end

Você também pode gostar