Um Número Elevado a Outro em Pascal

Nem todas as linguagens de programação direto como elevar um número a outro.
Quase todas as dicas que tenho postado em Pascal elas tem mais de matemática do que propriamente programação, mas isso não é uma preferência minhas, mas de vários professores que por sua vez são formados em matemática.
Lembrando um pouco de matemática:
2 elevado ao cubo = 2.2.2 = 8
Nessa dicas nós temos duas soluções:
1. Processo de multiplicação sucessiva
Program Elevador1;
Uses Crt;
var
i, j, k, r : Integer;
Begin
ClrScr;
Write ('Entre com um numero: ');
ReadLn (j);
Write ('Entre com a exponenciacao: ');
ReadLn (k);
r := 1;
for i := 1 to k do
r := r * j;
WriteLn (' O numero ',j:4,' elevado a ',k:4,' = ',r:8);
ReadLn;
End.
Nessa primeira solução nós multiplicamos o número J por K vezes.
Você poderá fazer o número J negativo, mas não o número K.
2. Processo de exponenciação e logaritmo
Da matemática nós precisamos fazer X elevado a Y:
XY
Aplicando o logaritmo neperiano:
ln (XY)
Pela regra do logaritmo:
Y.ln (X)
Como aplicamos logaritmo neperiano para voltar precisamos da exponêncial:
exp (Y.ln(X))
Transformando em Pascal:
exp (Y*ln(X))
Program Elevado2;
Uses Crt;
var
i, j : Integer;
r : Real;
Begin
ClrScr;
Write ('Entre com um numero: ');
ReadLn (i);
Write ('Entre com a exponenciacao: ');
ReadLn (j);
// Verifica se I ' positivo
if i > 0 then
r := exp(j*ln(i))
else
begin
i := i * (-1);
r := exp(j*ln(i));
// Verifica se J ' PAR
if (j mod 2)<>0 then r := r * (-1);
end;
WriteLn (' O numero ',i:4,' elevado a ',j:4,' = ',r:8:2);
ReadLn;
end.
Ainda há outras restrições nesse segundo programa e vou deixar um desafio antes da solução definitiva, mas para efeito de programas para os vossos professores essa segunda solução pode resolver 80% de um valor elevado a outro.





































