sexta-feira, 23 de março de 2007

Conversor de Binário para Decimal (Pascal)

Sim, Pascal! Há gente que se questiona: Ainda dão isso?

Pois é, esta linguagem do século passado e ultrapassada a nível de "novidades" ainda é utilizada no ensino para apresentar programação aos novos alunos e ambientá-los com bases de programação.

Eu, felizmente (ou infelizmente?) estou a dar Pascal em Bases de Programação e acho-o simples e bom para aprender a programar.

Este foi um trabalho de casa que foi pedido, mas penso que era para utilizar operações com strings, só que faço as coisas sempre por outro método e utilizei foi o método tradicional de converter de binário para decimal: 010 = 0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 = 2

O código é estranho, até usei uns ifs que não sei porquê, mas resolveram os problemas que tinha (caso o ultimo numero fosse 0 acrescentava um valor: 010 ficava 3, 0100 ficava 5, mas já 011 ficava 3 e 0101 ficava 5):

Program bin_dec;

function expoente(x,y:longint):longint;

var

z,n:longint;

begin

n := x;

for z := 2 to y do

n := n * x;

expoente := n;

end;

var

num, aux, multi, digito, valor, soma:longint;

exp:integer;

begin

write('Num (bin): ');

readln(num);

multi := 10;

aux := num;

exp := 0;

soma := 0;

while (aux <> 0) do

begin

digito := aux mod 10;

aux := aux div 10;

multi := multi * 10;

if (exp = 0) and (digito = 1) then

begin

soma := 1;

exp := 1;

end

else

begin

valor := expoente(2,exp);

exp := exp + 1;

soma := soma + digito * valor;

end;

end;

writeln(num,'(bin) = ',soma,'(dec)');

readln;

end.

4 comentários:

Anónimo disse...

Tu realmente....
excelente... :D

Anónimo disse...

Muito útil!

Anónimo disse...

retyrytryeryt

Unknown disse...

nao me ajudou