Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Tudo o que você sempre quis saber sobre o comando bc mas ...

Colaboração: Fernando M. Roxo da Motta

Data de Publicação: 29 de Julho de 2003

O 'bc' (ver manual;)) é no final das contas uma linguagem de programação, junto com o pacote fonte tem uma série de exemplos de programas implementados nesta linguagem.

Mas e para uso imediato, sem precisar programação, que "guloseimas" a mais nós temos disponíveis? Segundo o manual:

         -l, --mathlib
                Define the standard math library.

Ahá !! Se usarmos o parâmetro "-l" vamos ter um conjunto extra de funcionalidade disponível :

  $ bc -l
  bc 1.06
  Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
  This is free software with ABSOLUTELY NO WARRANTY.
  For details type `warranty'. 
  # função seno
  s(30*3.14159265/180)
  .49999999948185797677
  
  # função cosseno
  c(60*3.14159265/180)
  .50000000103628404592
  
  #função arco-tangente
  pi=4*a(1)
  pi
  3.14159265358979323844
  
  # pi !!!  ;))
  # Mas eu quero mais dígitos
  scale=50
  pi=4*a(1)
  pi
  3.14159265358979323846264338327950288419716939937508
  
  # Mas eu quero lidar com dinheiro, que só tem duas casas decimais
  scale=2
  7/3
  2.33

As funções pré-definidas são :

         s (x)  The sine of x, x is in radians.
         c (x)  The cosine of x, x is in radians.
         a (x)  The arctangent of x, arctangent returns radians.
         l (x)  The natural logarithm of x.
         e (x)  The exponential function of raising e to the value x.
         j (n,x)
                The bessel function of integer order n of x.

Mas nada impede de se definir novas funções. Na página do manual tem exemplos bem claros, dentre eles a definição de uma função "e(x)".

Para simplificar a minha vida eu coloquei no meu '.profile' (use no '.bashrc' se você usa só o Bash no Linux) uma linha :

  alias bc='bc -l'

Desta forma quando eu chamo o 'bc' ele já carrega as funções por default.

Acabou ? Não, tem muito mais. Para o pessoal de TI que eventualmente precisa fazer conversões de base o 'bc' é uma excelente ferramenta :

  $ bc
  obase=16
  2003
  7D3
  
  #  Mas e para entrar com hexadecimal ?
  ibase=16
  # saida em binário
  obase=2
  7D3
  11111010011
  
  # Voltando para saída em base 10 ?
  obase=10
  7D3
  7D3
  
  # Ué ?!!  Não pedimos saída na base 10 ?  Não, como a entrada é base 16
  # "10" representa a própria base, portanto "16(decimal)".  Para ter a 
  # saída na base "10(decimal)" precisamos especificar na base de entrada
  # corrente
  obase=A
  7D3
  2003
  
  # Para voltar a entrada para base "10(decimal)" precisamos usar o mesmo
  # procedimento
  ibase=A
  2003
  2003

Como a base corrente é sempre representada como "10", qualquer que seja ela, usar "ibase=10" não altera nada.

Tem mais ? Tem, mas vou deixar para uma leitura da página do manual. ;))

Roxo

Veja a relação completa dos artigos de Fernando M. Roxo da Motta

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.03/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (629 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script


Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais