Está en la página 1de 37

UniversidadNacionalAutnoma

deMxico
FacultaddeIngeniera

Tarea2

Programaquedespliegadosmensyresuelve
circuitoselctricosydigitales


PueblaMartnezMarthaIsabel

Grupo:1

Tcnicasdeprogramacin

Fechadeentrega:23/02/2016












Objetivo
RealizarunprogramaenVisualStudioquedespliegadosmens,asuvezresuelvacircuitos
elctricosydigitales,elaborarsudiagramadeflujoydesarrollarloenMathcad.

Software
VisualStudio2015
DFD
PTCMathcadPrime3.1

Datos
Circuitoselctricos:
Tenemos:
Uncircuitodedosresistencias
Uncircuitodedosinductores
Uncircuitodedoscapacitores
Circuitosdigitales:
TenemosunpuertalgicadigitalAND
TenemosunpuertalgicadigitalNAND
TenemosunpuertalgicadigitalOR
TenemosunpuertalgicadigitalNOR
TenemosunpuertalgicadigitalNOT
TenemosunpuertalgicadigitalXOR
Undemultiplexor1a4
TodosserigenporellgebradeBoole.

Memoriadeclculo
a) Circuitoselctricos

1) Clculoderesistenciasenparalelo
R1*R2
R
eq=
(R +R )
1 2


2) Clculoderesistenciasenserie
R =R
eq +R
1 2

Inductancias:
1) Clculodeinductoresenparalelo
L1*L2
Leq=
(L1+L2)

2) Clculoderesistenciasenserie
L
eq=L
1+L
2
Capacitores:
1) Clculodeinductoresenserie
C1*C2
C
eq=
(C +C )
1 2

2) Clculoderesistenciasenparalelo
C
eq=C
1+C
2

b)CircuitosDigitales

PuertalgicadigitalAND:


PuertalgicadigitalNAND:

PuertalgicadigitalOR:


PuertalgicadigitalNOR:


PuertalgicadigitalNOT:


PuertalgicadigitalXOR:

Demultiplexor1a4

Algoritmo,pseudocdigoyeldiagramadeflujos
Algoritmo:
Men
inicio
ciclomientrassalirseafalso
Imprimir:menprincipal
1Elctricos
2Digitales
3salir
caso1
ciclomientrasregresaramenprincipalseafalso
limpiarpantalla
Imprimir:menElctricos
a) R
b) L
c) C
d) regresaramenprincipal
Casoa
limpiarpantalla
llamaraFuncinResistencia
Casob
Limpiarpantalla
llamarFuncinInductor
Casoc
Limpiarpantalla
llamaraFuncinCapacitor
Default
regresaramenprincipal
Caso2
ciclomientrasregresaramenprincipalseafalso
limpiarpantalla
Imprimir:menElctricos
a) AND
b) NAND
c) OR
d) NOR
e) NOT
f) XOR
g) regresaramenprincipal
Casoa
limpiarpantalla
llamaraFuncinAND
Casob
Limpiarpantalla
llamarFuncinNAND
Casoc
Limpiarpantalla
llamaraFuncinOR
Casod
Limpiarpantalla
llamaraFuncinNOR
Casoe
Limpiarpantalla
llamaraFuncinNOT
Casof
Limpiarpantalla
llamaraFuncinXNOT
Casog
Limpiarpantalla
llamaraFuncinEJE
Default
Regresaramenprincipal
Fin
Subfunciones
Resistencias
inicio
LeerR1,R2
siR1yR2<0
R1*1YR2*1
Sicircuitoenserie
formulaserie
Sicircuitoenparalelo
frmulaparalelo
fin
Inductor
inicio
LeerL1,L2
siL1yL2<0
L1*1YL2*1
Sicircuitoenserie
formulaserie
Sicircuitoenparalelo
frmulaparalelo
fin

Capacitor
inicio
LeerC1,C2
siC1yC2<0
C1*1YC2*1
Sicircuitoenserie
formulaserie
Sicircuitoenparalelo
frmulaparalelo
fin
AND
inicio
LeerAyB
SiAyB<0yAyB>1
Slonmerosbinarios
X=A*B
SiX=1oX=0
ImprimirX
SiXdiferentede1o0
imprimirError
Fin
NAND
inicio
LeerAyB
SiAyB<0yAyB>1
Slonmerosbinarios
X=A*B
SiA*B=0
X=1
SiA*B=1
X=0
SiX=1oX=0
ImprimirX
SiXdiferentede1o0
imprimirError
Fin

OR
inicio
LeerAyB
SiAyB<0yAyB>1
Slonmerosbinarios
X=A+B
SiA+B=0
SinoX=1
SiX=1oX=0
ImprimirX
SiXdiferentede1o0
imprimirError
Fin
NOR
inicio
LeerAyB
SiAyB<0yAyB>1
Slonmerosbinarios
X=A+B
SiA+B=0
X=1
sinoA+B=1
SiX=1oX=0
ImprimirX
SiXdiferentede1o0
imprimirError
Fin
NOT
inicio
LeerA
Si1<A<0
Slonmerosbinarios
X=A
SiA=1
X=0
siA=0
X=1
ImprimirX
SiXdiferentede1o0
imprimirError
Fin

XOR
inicio
LeerAyB
SiAyB<0yAyB>1
Slonmerosbinarios
SiA=B
X=0
sinoX=1
ImprimirX
SiXdiferentede1o0
imprimirError
Fin
Ejemplo
inicio
LeerA,B,C
SiSiA,ByC<0yA,ByC>1
Slonmerosbinarios
F3=A*B*C
F2=A*B*C
F1=A*B*C
D=A+B
F0=D*C
SiB=0
B=1
F2=A*C
sinoB=0
B=A*B*C
SiA=1
F1=A*D*C
sinoA=0
F1=A*B*C
SiD=0
D=1
F0=D*C
sinoD=1
F0=D*C
ImprimirF3,F2,F1,F0
Fin

DiagramadeFlujo:
ProgramaMen


SubProgramas:
RESISTENCIAS

INDUCTORES

CAPACITORES

AND

NAND

OR

NOR

NOT

XOR

EJEMPLO



Pseudocdigo:
usingSystem
usingSystem.Collections.Generic
usingSystem.Linq
usingSystem.Text
usingSystem.Threading.Tasks

namespaceTarea_2_men
{
classProgram
{
staticvoidMain(string[]args)
{

charall
charletra
charletra2
boolsalida=true

//MendeR,L,Cycompuertasdigitales
//Colordefondo
Console.BackgroundColor=ConsoleColor.White
Console.Clear()
while(salida==true)
{
Console.Clear()
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("\t\tUniversidadNacionalAutnomadeMxico")
Console.WriteLine("\t\t\tTcnicasdeProgramacin")
Console.WriteLine("\t\t\t\tTarea2")
//Basedemenu
Console.ForegroundColor=ConsoleColor.DarkBlue
Console.WriteLine("\tMenprincipal\n")
Console.ForegroundColor=ConsoleColor.Black
Console.WriteLine("1CircuitosElctricos")
Console.WriteLine("2CircuitosDigitales")
Console.WriteLine("3Salir")
Console.Write("Seleccioneunaopcin:")

all=Console.ReadKey().KeyChar
Console.ReadKey()
switch(all)
{

case'1':
{
boolfuera=true
while(fuera==true)
{
Console.Clear()
Console.ForegroundColor=ConsoleColor.Black
Console.WriteLine("\t\tCircuitosElctricos")
Console.WriteLine("a)CircuitoR")
Console.WriteLine("b)CircuitoL")
Console.WriteLine("c)CircuitoC")
Console.WriteLine("d)Menprincipal")
Console.Write("Seleccioneuntipodecircuito:")
letra=Console.ReadKey().KeyChar
Console.ReadKey()
switch(letra)
{
case'a':
{

Console.Clear()
Console.WriteLine("\nHaelegido:Resistencias")
//Funcinquellamaoperacinderesistencia
FR()
Console.ReadKey()
break
}
case'b':
{
Console.Clear()
Console.WriteLine("\nHaelegido:Inductores")
//FuncinquellamaoperacindeInductancia
FL()
Console.ReadKey()
break
}
case'c':
{
Console.Clear()
Console.WriteLine("\nHaelegido:Capacitores")
//FuncinquellamaoperacindeCapacitor
FC()
Console.ReadKey()
break
}
default:
{
fuera=false
break
}
}
}
break
}

case'2':
boolfuera2=true
while(fuera2==true)
{
Console.Clear()
Console.ForegroundColor=ConsoleColor.Black
Console.WriteLine("\tCircuitosDigitales")
Console.WriteLine("a)PuertaLgicaDigitalAND(AyB)")
Console.WriteLine("b)PuertaLgicaDigitalNAND(noAyB)")
Console.WriteLine("c)PuertaLgicaDigitalOR(AoB)")
Console.WriteLine("d)PuertaLgicaDigitalNOR(niA,niB,niambos)")
Console.WriteLine("e)PuertaLgicaDigitalNOT(noC)")
Console.WriteLine("f)PuertaLgicaDigitalXOR(AoB,perono
ambos")
Console.WriteLine("g)Ejemplo:Demultiplexor1a4")
Console.WriteLine("h)Regresoamenprincipal")
Console.Write("SeleccioneuntipodePuertaLgicaDigital:")
letra2=Console.ReadKey().KeyChar
Console.ReadKey()
switch(letra2)
{
case'a':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalAND(Ay
B)")
//FuncinquellamaoperacindePuertay
FY()
Console.ReadKey()
break
}
case'b':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalNAND
(noAyB)")
//FuncinquellamaoperacindePuertanoy
FNY()
Console.ReadKey()
break
}
case'c':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalOR(Ao
B)")
//FuncinquellamaoperacindePuertanoy
FOR()
Console.ReadKey()
break
}
case'd':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalNOR(ni
A,niB,niambos)")
//FuncinquellamaoperacindePuertanoy
FNOR()
Console.ReadKey()
break
}
case'e':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalNOT(no
C)")
//FuncinquellamaoperacindePuertanoy
FNOT()
Console.ReadKey()
break
}
case'f':
{
Console.Clear()
Console.WriteLine("\nHaelegido:PuertaLgicaDigitalXOR(Ao
B,peronoambos)")
//FuncinquellamaoperacindePuertanoy
FXOR()
Console.ReadKey()
break
}
case'g':
{
Console.Clear()
Console.WriteLine("\nHaelegido:Ejemplo")
//Funcinquellamaoperacindeejemplo1
FEJ()
Console.ReadKey()
break
}
default:
{

fuera2=false
break
}

}
}
break

default:
{
Console.Clear()
Console.WriteLine("Adis")
salida=false
break
}
}
Console.ReadKey()

}
}
//Resistencias
staticvoidFR()
{
Console.Write("IngreseValordeResistenciaR1:")
floatd=float.Parse(Console.ReadLine())
if(d<0)
{
Console.WriteLine("Tomaremoselvalordelaresistenciacomopositivo")
d=d*(1)
}
Console.Write("IngreseValordeResistenciaR2:")
floate=float.Parse(Console.ReadLine())
if(e<0)
{
Console.WriteLine("Tomaremoselvalordelaresistenciacomopositivo")
e=e*(1)
}
Console.WriteLine("Sielcircuitoestenseriepresiones,encasodeparalelo
presionep")
charTipo=char.Parse(Console.ReadLine())

if(Tipo=='s'||Tipo=='S')
{
floatR=d+e
Console.ForegroundColor=ConsoleColor.Blue
Console.WriteLine("Elresultadoderesistenciaequivalenteenseriees"+R)
}
else
{

floatR=(d*e)/(d+e)
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("Elresultadoderesistenciaequivalenteenparaleloes:"+R)
}
}
//Inductor
staticvoidFL()
{
Console.Write("IngreseValordeInductorL1:")
floatd=float.Parse(Console.ReadLine())
if(d<0)
{
Console.WriteLine("Tomaremoselvalordelinductorcomopositivo")
d=d*(1)
}
Console.Write("IngreseValordeInductorL2:")
floate=float.Parse(Console.ReadLine())
if(e<0)
{
Console.WriteLine("Tomaremoselvalordelinductorcomopositivo")
e=e*(1)
}
Console.WriteLine("Sielcircuitoestenseriepresiones,encasodeparalelo
presionep")
charTipo=char.Parse(Console.ReadLine())

if(Tipo=='s'||Tipo=='S')
{
floatR=d+e

Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("Elresultadodelinductorequivalenteenseriees"+R)
}
else
{
Console.ForegroundColor=ConsoleColor.Blue
floatR=(d*e)/(d+e)
Console.WriteLine("Elresultadodelinductorequivalenteenparaleloes:"+R)
}
}
//Capacitor
staticvoidFC()
{
Console.Write("IngreseValordelCapacitorC1:")
floatd=float.Parse(Console.ReadLine())
if(d<0)
{
Console.WriteLine("Tomaremoselvalordelcapacitorcomopositivo")
d=d*(1)
}
Console.Write("IngreseValordeCapacitorC2:")
floate=float.Parse(Console.ReadLine())
if(e<0)
{
Console.WriteLine("Tomaremoselvalordelcapacitorcomopositivo")
e=e*(1)
}
Console.WriteLine("Sielcircuitoestenseriepresiones,encasodeparalelo
precionep")
charTipo=char.Parse(Console.ReadLine())

if(Tipo=='p'||Tipo=='P')
{
floatR=d+e
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("Elresultadodelcapacitorequivalenteenseriees"+R)
}
else
{
Console.ForegroundColor=ConsoleColor.Blue
floatR=(d*e)/(d+e)
Console.WriteLine("Elresultadodelcapacitorequivalenteenparaleloes:"+R)
}
}
//AND
staticvoidFY()
{
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
if(A<0||A>1)
{

reg=true
}

Console.Write("IngreseValordeentradaB:\n")
floatB=float.Parse(Console.ReadLine())
if(B<0||B>1)
{

reg=true
}
floatX=A*B
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("Error,AyBsonnmeroSbinarios")
reg=true

}
}
//NAND
staticvoidFNY()
{
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
if(A<0||A>1)
{

reg=true
}

Console.Write("IngreseValordeentradaB:\n")
floatB=float.Parse(Console.ReadLine())
if(B<0||B>1)
{

reg=true
}
floatX=A*B
if(A*B==0)
{
X=1
}
if(A*B==1)
{
X=0
}
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("Error,AyBsonnmerosbinarios")
reg=true

}
}
//OR
staticvoidFOR()
{
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
Console.Write("IngreseValordeentradaB:\n")
floatB=float.Parse(Console.ReadLine())
if(B<0||B>1||A<0||A>1)
{
Console.WriteLine("Error,AyBsonnmerobinarios,vuelvaaintentar")
reg=true
}
else{
floatX=A+B
if(A==0||B==0||B==1||A==1)
{
if(A+B==0)
{
X=0
}
else
{
X=1
}
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("AyBsonnmerosbinarios")
reg=true
}

}
}
//NOR
staticvoidFNOR()
{
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
Console.Write("IngreseValordeentradaB:\n")
floatB=float.Parse(Console.ReadLine())
if(B<0||B>1||A<0||A>1)
{
Console.WriteLine("Error,AyBsonnmerobinarios,vuelvaaintentar")
reg=true
}
else{
floatX=A+B
if(A==0||B==0||B==1||A==1)
{
if(A+B==0)
{
X=1
}
else
{
X=0
}
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("AyBsonnmerosbinarios")
reg=true
}

}
}
//NOT
staticvoidFNOT()
{
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
if(A<0||A>1)
{
Console.WriteLine("Error,Aesunnmerobinario,vuelvaaintentar")
reg=true
}
else{
floatX=A
if(A==1)
{
X=0
}
if(A==0)
{
X=1
}
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("Aesunnmerobinario")
reg=true
}
}

}
}
//XOR
staticvoidFXOR()
{
floatX=0
boolreg=true
while(reg)
{

Console.Write("IngreseValordeentradaA:\n")
floatA=float.Parse(Console.ReadLine())
Console.Write("IngreseValordeentradaB:\n")
floatB=float.Parse(Console.ReadLine())
if(B<0||B>1||A<0||A>1)
{
Console.WriteLine("Error,AyBsonnmerobinarios,vuelvaaintentar")
reg=true
}
else{
if(A==0||B==0||B==1||A==1)
{
if(A==B)
{
X=0
}
else
{
X=1
}
if(X==0||X==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("X="+X)
reg=false
}
}
else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("AyBsonnmerosbinarios")
reg=true
}

}
}
//14
staticvoidFEJ()
{
boolreg=true
while(reg)
{
Console.Write("IngreseValordelaentradaS1:\n")
floatA=float.Parse(Console.ReadLine())
Console.WriteLine("IngreseValordelaentradaS0:")
floatB=float.Parse(Console.ReadLine())
Console.WriteLine("IngreseValordelaentradaI0:")
floatC=float.Parse(Console.ReadLine())
if(B<0||B>1||A<0||A>1||C<0||C>1)
{
Console.WriteLine("Error,A,ByCsonnmerosbinarios,vuelvaaintentar")
reg=true
}
else
{
floatF3=A*B*C
floatF2=A*B*C
floatF1=A*B*C
floatD=A+B
floatF0=D*C
if(A==0||B==0||B==1||A==1||C==0||C==1)
{
Console.WriteLine("Elvalordesalida,F3es:"+F3)
if(B==0)
{
B=1
F2=A*B*C
}
else
{
B=0
F2=A*B*C
}
if(A==0)
{
A=1
F1=A*D*C
}
else
{
A=0
F1=A*B*C
}
if(D==0)
{
D=1
F0=D*C
}
else
{
D=0
F0=D*C
}
if(F3==0||F3==1||F2==0||F2==1||F1==0||F1==1||F1==0||F1
==1)
{
Console.ForegroundColor=ConsoleColor.DarkRed
Console.WriteLine("F3="+F3)
Console.WriteLine("F2="+F2)
Console.WriteLine("F1="+F1)
Console.WriteLine("F0="+F0)
reg=false
}

else
{
Console.ForegroundColor=ConsoleColor.Cyan
Console.WriteLine("S0,S1,I0SONNMEROSBINARIOS")
reg=true
}

}
}
}
}
}

Resultadodeejerciciocomocomprobacin
DFD

VisualStudio

PTCMathcadPrime3.1

Conclusin

Podemosconcluirquesecumplieronlosobjetivosdelatarea,puessolucionamoselproblema
con los tres software, lo complicado para m enestecasofuecomoborrarla pantallayllegar
aliniciodenuevo,peroalfinallopudearreglar.
Al final logramos obtener un men que saliera y entrara a varios submens, los cuales
contienen diferentes operadores para dar resultado a un tipo de circuito, ya sea digital o
elctrico.
Como notamos en todos los casos llegamos asuscorrespondientesresultadosusandolostres
softwares,puesalusarlosmismosvaloresllegamosalamismasolucin.

Bibliografa
1. http://www.uhu.es/rafael.lopezahumada/descargas/tema3_fund_0405.pdf
2. https://en.wikipedia.org/wiki/Multiplexer

También podría gustarte