DECLARE SUB Componente(px%,py%,ang%,n%) DEFINT A-Z TYPE CompDef Comp AS INTEGER E AS DOUBLE r AS DOUBLE END TYPE DIM Clista(1 TO 7)AS CompDef TYPE PosDef x AS INTEGER y AS INTEGER ang AS INTEGER END TYPE DIM Posicao(1 TO 7)AS PosDef FOR idx=1 TO 7 READ Posicao(idx).x,Posicao(idx).y,Posicao(idx).ang NEXT SCREEN 2 WINDOW SCREEN(0,0)-(319,199) DO CLS FOR idx=1 TO 7 Componente Posicao(idx).x,Posicao(idx).y,Posicao(idx).ang,Clista(idx).Comp NEXT LOCATE 15,1:?"Opcoes: ?"1) Mudar componente ?"2) Calcular corrente ?"0) Sair ? a$=INPUT$(1) SELECT CASE a$ CASE "1 SCREEN 0 ?"A B C ?"ÚÄÄÄÄÂÄÄÄÄ¿ ?"³ ³ ³ ?"ÀÄÄÄÄÁÄÄÄÄÙ ?"F E D ?"Segmentos : ?"1) AB => ?"2) BC => ?"3) CD => ?"4) DE => ?"5) EF => ?"6) FA => ?"7) BE => DO FOR idx=1 TO 7 LOCATE 6+idx,9:?SPACE$(71); LOCATE 6+idx,9 SELECT CASE Clista(idx).Comp CASE 0:?"Nenhum componente CASE 1:?"Resistor de resistencia =";Clista(idx).r;"ê CASE 2:?"Gerador de f.e.m =";Clista(idx).E;"V e resistencia interna =";Clista(idx).r;"ê CASE 3:?"Receptor de f.c.e.m =";Clista(idx).E;"V e resistencia interna =";Clista(idx).r;"ê END SELECT NEXT FOR idx=14 TO 20:LOCATE idx,1:?SPACE$(80);:NEXT LOCATE 14,1 ? ?"Escolha um segmento (1 a 7,0 p/ sair) :"; DO op%=VAL(INPUT$(1)) LOOP UNTIL op%>-1 AND op%<8 ?op% IF op%=0 THEN EXIT DO ?"Selecione componente (0-Nenhum 1-Resistor 2-Gerador 3-Receptor):"; DO op2%=VAL(INPUT$(1)) LOOP UNTIL op2%>-1 AND op2%<4 ?op2% Clista(op%).Comp=op2% Clista(op%).E=0 Clista(op%).r=0 SELECT CASE op2% CASE 1 INPUT "Resistencia :",Clista(op%).r CASE 2 INPUT "F.e.m. :",Clista(op%).E INPUT "Resistencia interna:",Clista(op%).r CASE 3 INPUT "F.c.e.m. :",Clista(op%).E INPUT "Resistencia interna :",Clista(op%).r END SELECT LOOP SCREEN 2 WINDOW SCREEN(0,0)-(319,199) CASE "2 SCREEN 0 ?"Calculo de corrente eletrica ?"A B C ?"ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄ¿ ?"³ i1";CHR$(26);" ³ i2";CHR$(26);" ³ ?"³ i3³ i2³ ?"³i1 ³ ³ ?"³ i1 ³ i2 ³ ?"ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÙ ?"F E D ? a11=Clista(1).r+Clista(5).r+Clista(6).r:a12=a11+Clista(7).r:b1=Clista(1).E+Clista(7).E+Clista(5).E+Clista(6).E a21=Clista(2).r+Clista(3).r+Clista(4).r:a22=-Clista(7).r:b2=Clista(2).E+Clista(3).E+Clista(4).E-Clista(7).E Det=a11*a22-a12*a21 Det1=b1*a22-a12*b2 Det2=a11*b2-b1*a21 IF Det=0 THEN ?"Erro - Corrente nao pode ser calculada ELSE ?"i1 =";(Det1+Det2)/Det;"A ?"i2 =";Det1/Det;"A ?"i3 =";Det2/Det;"A ? END IF ?"Pressione alguma tecla para retornar a$=INPUT$(1) SCREEN 2 WINDOW SCREEN(0,0)-(319,199) CASE "0":EXIT DO END SELECT LOOP SCREEN 0 SYSTEM 'AB BC CD DE EF FA BE DATA 0,0,0,1,0,0,2,0,90,2,1,180,1,1,180,0,1,270,1,0,90 SUB Componente(px,py,ang,n) Scl!=80 Alfa#=ang*ATN(1)/45! SELECT CASE n CASE 0'nada LINE(Scl!*px+10,Scl!*py+10)-STEP(Scl!*COS(Alfa#),Scl!*SIN(Alfa#)) CASE 1'resistor x1=Scl!/3*COS(Alfa#) y1=Scl!/3*SIN(Alfa#) x2=2*x1 y2=2*y1 LINE(Scl!*px+10,Scl!*py+10)-STEP(x1,y1) IF x1=0 THEN FOR y=y1 TO y2 STEP SGN(y2-y1) LINE-(Scl!*px+10+2*SIN(y),Scl!*py+10+y) NEXT ELSEIF y1=0 THEN FOR x=x1 TO x2 STEP SGN(x2-x1) LINE-(Scl!*px+10+x,Scl!*py+10+2*SIN(x)) NEXT END IF LINE(Scl!*px+10+x2,Scl!*py+10+y2)-STEP(x1,y1) CASE 2'Gerador x1=Scl!/4*COS(Alfa#) y1=Scl!/4*SIN(Alfa#) LINE(Scl!*px+10,Scl!*py+10)-STEP(x1*.75,y1*.75) IF x1=0 THEN LINE STEP(-5,0)-STEP(10,0) PSET(Scl!*px+10+x1,Scl!*py+10+y1) LINE STEP(-10,0)-STEP(20,0) ELSE LINE STEP(0,-5)-STEP(0,10) PSET(Scl!*px+10+x1,Scl!*py+10+y1) LINE STEP(0,-10)-STEP(0,20) END IF x2=x1*2:y2=y1*2 x3=x1*3:y3=y1*3 PSET(Scl!*px+10+x2,Scl!*py+10+y2) IF x1=0 THEN FOR y=y2 TO y3 STEP SGN(y3-y2) LINE-(Scl!*px+10+2*SIN(y),Scl!*py+10+y) NEXT ELSEIF y1=0 THEN FOR x=x2 TO x3 STEP SGN(x3-x2) LINE-(Scl!*px+10+x,Scl!*py+10+2*SIN(x)) NEXT END IF LINE(Scl!*px+10+x1,Scl!*py+10+y1)-STEP(x1,y1) LINE STEP(x1,y1)-STEP(x1,y1) CASE 3'Receptor x1=Scl!/4*COS(Alfa#) y1=Scl!/4*SIN(Alfa#) LINE(Scl!*px+10,Scl!*py+10)-STEP(x1*.75,y1*.75) IF x1=0 THEN LINE STEP(-10,0)-STEP(20,0) PSET(Scl!*px+10+x1,Scl!*py+10+y1) LINE STEP(-5,0)-STEP(10,0) ELSE LINE STEP(0,-10)-STEP(0,20) PSET(Scl!*px+10+x1,Scl!*py+10+y1) LINE STEP(0,-5)-STEP(0,10) END IF x2=x1*2:y2=y1*2 x3=x1*3:y3=y1*3 PSET(Scl!*px+10+x2,Scl!*py+10+y2) IF x1=0 THEN FOR y=y2 TO y3 STEP SGN(y3-y2) LINE-(Scl!*px+10+2*SIN(y),Scl!*py+10+y) NEXT ELSEIF y1=0 THEN FOR x=x2 TO x3 STEP SGN(x3-x2) LINE-(Scl!*px+10+x,Scl!*py+10+2*SIN(x)) NEXT END IF LINE(Scl!*px+10+x1,Scl!*py+10+y1)-STEP(x1,y1) LINE STEP(x1,y1)-STEP(x1,y1) END SELECT END SUB