Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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