Você está na página 1de 4

Codigo fonte em linguagem URPL para calculadoras HP50G

Criao de matriz de Reduo de KRON

%%HP: T(0)A(D)F(.);
CLLCD
"Reduo de Kron
ENGENHARIA-IFG
ISEP 7Periodo" MSGBOX
-> matriz

@matriz SIZE LIST 2/ 1 - IDN 1 CON


@'RESULTADO' STO
matriz SIZE LIST 2/ 'tam' STO
1 'primeiravariavel' STO
1 'segundavariavel' STO
WHILE primeiravariavel tam <
REPEAT
segundavariavel tam 1 FOR i
matriz { } primeiravariavel + tam + GET
matriz { } tam + i + GET *
matriz { } tam + tam + GET / NEG
matriz { } primeiravariavel + i + GET +
matriz SWAP { } primeiravariavel + i + SWAP PUT
'matriz' STO
NEXT
primeiravariavel 1 + 'primeiravariavel' STO
END
matriz
{ } 1 + 1 +
{ } tam 1 - + tam 1 - + SUB
'primeiravariavel' PURGE
'segundavariavel' PURGE
'tam' PURGE
'primeiravariavel' PURGE
'segundavariavel' PURGE

Codigo fonte em linguagem URPL para calculadoras HP50G


Criao de matriz de Admitncia e Impedncia
%%HP: T(0)A(D)F(.);

"Digite a quantidade
de barras"
""
INPUT OBJ
'quantidadedebarras' STO
quantidadedebarras IDN 1 CON (0 0) * 'RESPOSTA' STO
RESPOSTA
5 'SAIR' STO
1 quantidadedebarras
FOR i
"Admitancia ligando
barra 0 a barra " i STR +
""
INPUT OBJ
RESPOSTA { } i + i + GET +
RESPOSTA { } i + i + 3 ROLL PUT 'RESPOSTA' STO
NEXT
WHILE SAIR 1 >
REPEAT
"ESCOLHA UMA OPO"
{
{ "ADD IMPEDANCIA" 1 }
{ "ADD ADMITANCIA" 2 }
{ "FINALIZAR" 3 }
}
1
CHOOSE
IF
THEN
EVAL
END
DUP
IF 1 ==
THEN
"ADICIONAR IMPEDNCIA"
{
"ORIGEM"
"DESTINO"
"VALOR"
}
{ 1 0 }
{ }
{ }
INFORM
IF
THEN
ELSE
END

AXL SWAP DROP


@COLETANDO DA MATRIZ RESPOSTA
@DUP ROW DROP SWAP 3 ROLL SWAP { } + +
@SWAP RESPOSTA 3 ROLL 3 ROLL DROP GET SWAP
@ROW DROP INV SWAP 3 ROLL SWAP { } + + SWAP
@3 ROLL + PUT
@'RESPOSTA' STO RESPOSTA
ROW DROP
INV 'Valor' STO 'FIM' STO 'Inicio' STO
RESPOSTA { } Inicio + FIM + GET Valor +
RESPOSTA SWAP { } Inicio + FIM + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } FIM + Inicio + GET Valor +
RESPOSTA SWAP { } FIM + Inicio + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } Inicio + Inicio + GET Valor +
RESPOSTA SWAP { } Inicio + Inicio + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } FIM + FIM + GET Valor +
RESPOSTA SWAP { } FIM + FIM + SWAP PUT
'RESPOSTA' STO
END
DUP
IF 2 ==
THEN
"ADICIONAR IMPEDNCIA"
{
"ORIGEM"
"DESTINO"
"VALOR"
}
{ 1 0 }
{ }
{ }
INFORM
IF
THEN
ELSE
END
AXL SWAP DROP
ROW DROP
'Valor' STO 'FIM' STO 'Inicio' STO
RESPOSTA { } Inicio + FIM + GET Valor +
RESPOSTA SWAP { } Inicio + FIM + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } FIM + Inicio + GET Valor +
RESPOSTA SWAP { } FIM + Inicio + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } Inicio + Inicio + GET Valor +
RESPOSTA SWAP { } Inicio + Inicio + SWAP PUT
'RESPOSTA' STO
RESPOSTA { } FIM + FIM + GET Valor +
RESPOSTA SWAP { } FIM + FIM + SWAP PUT
'RESPOSTA' STO
END
DUP

IF 3==
THEN
SWAP 'SAIR' 0 SWAP STO
END
END
SWAP DROP
@ADICIONAR OS SINAIS NEGATIVOS NOS TRIANGULOS
@SUPERIOR E INFERIOR DA MATRIZ
RESPOSTA 1 NEG * 'RESPOSTA' STO
1 RESPOSTA SIZE LIST 2/
FOR i
RESPOSTA { } i + i + GET NEG
RESPOSTA { } i + i + 3 ROLL PUT 'RESPOSTA' STO
NEXT
RESPOSTA
@APAGAR AS VARIAVEIS CRIADAS
DROP DROP RESPOSTA
'RESPOSTA' PURGE
'SAIR' PURGE
'quantidadedebarras' PURGE
'Inicio' PURGE
'FIM' PURGE
'Valor' PURGE