De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários