BC: A sua calculadora programável no Linux

Você já pensou em automatizar operações de cálculo? Em fazer um script onde você possa definir funções, constantes e outros? O bc pode ser a solução. Nesse tutorial, veremos como escrever programas simples com ele.

[ Hits: 124.869 ]

Por: Renan Birck Pinheiro em 21/05/2006 | Blog: http://renanbirck.blogspot.com


Construindo funções



Podemos definir algumas funções extras a partir da definição matemática:

define sin(x) {return s(x)}
define cos(x) {return c(x)}

tg x = sen x / cos x:
define tan(x) {return s(x)/c(x)}

log10 x (logaritmo na base 10 de x) = ln x / ln 10:
define l10(x) {return l(x)/l(10)}

Conversão entre radianos e graus:

d2r: graus para radianos
r2d: radianos para graus

pi = 3.14159265
define d2r(n) { return n * (pi/180); }
define r2d(n) { return n / (pi/180); }

Mas é chato ficar digitando essas definições toda vez que queremos usar o 'bc'.

Portanto, iremos criar um script que defina essas funções automaticamente.

Crie, usando seu editor de texto preferido (vi, emacs, Kwrite...) um arquivo com o seguinte:

#!/usr/bin/bc -l
#
# Nosso arquivo de definições
# Nós vamos entender o 'define' depois.


pi = 3.14159265
define ln(n) { return l(n); }
define log(n) { return ln(n)/ln(10); }
define log2(n) { return l(n)/l(2); }
define d2r(n) { return n * (pi/180); }
define r2d(n) { return n / (pi/180); }
define sin(x) { return s(d2r(x)); }
define cos(x) { return c(d2r(x)); }
define tan(x) { return sin(x)/cos(x); }

Salve ele como 'define.bc' no seu diretório HOME.

Mude os atributos dele, tal que ele seja executável:

$ chmod a+x define.bc

Agora, chame o arquivo:

$ ~/define.bc

Experimente usar os comandos:

cos(15)
.96592582636649385821
log2(2097152)
21.000000000000000021
...
quit

Note que ocorre um pequeno desvio nas casas decimais.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Conhecendo o bc (modo interativo)
   3. Conhecendo os comandos matemáticos do bc
   4. Construindo funções
   5. Curiosidade: números grandes
   6. O bc como uma linguagem de programação
   7. Conceitos para a criação de pequenos programas com o bc
   8. Alguns exemplos
   9. bc e shell scripts
Outros artigos deste autor

MySQL + Amarok: dupla poderosa

Utilizando o X-Deep32 para rodar programas Linux em máquina Windows

A tecla mágica SysRQ

SIMH: Recriando um pouco da história

Leitura recomendada

Jopen, não se preocupe mais em descobrir qual aplicativo usar

MultiCD - Diversas Distribuições no mesmo DVD/Pendrive

Instalando o VMWare no Slackware

GNU/Linux de Bolso como Ferramenta Anti-Vírus

Instalação e configuração do Openbox personalizado usando Arch Linux

  
Comentários
[1] Comentário enviado por fernandoiury em 21/05/2006 - 08:23h

Excelente, meus parabéns cara.. o artigo ficou ótimo!!
Nem imaginava que o bc era isso tudo!

abração, parabens mais uma vez e obrigado pela contribuição!

[2] Comentário enviado por leonardoamorim em 21/05/2006 - 12:29h

Parabéns, muito bom esse artigo.

[3] Comentário enviado por hlegius em 21/05/2006 - 12:31h

Ótimo! Artigo nota 10, cara!
Linguagenzinha poderosa hein ?! Excelente para aplicações matemáticas!

Obrigado pelo artigo, realmente ficou excelente!
Abraços!

[4] Comentário enviado por allanhc em 21/05/2006 - 12:45h

Muito bom artigo mesmo viu. Muito bem explicado. E o assunto realmente muito util.

Conhecia por alto mas nunca usava, agora vou criar um define.bc ao meu gosto e vou até usar-lo.

Parabéns
Abraços

[5] Comentário enviado por PCMasterPB em 21/05/2006 - 13:57h

Parabéns, o artigo mostra muitas curiosidades do bc. Vai ser bom como referência. Té mais. ;D

[6] Comentário enviado por Century_Child em 21/05/2006 - 19:33h

Uma coisinha que ficou de fora do artigo: vocês podem colocar, no .bashrc, uma linha tipo 'alias bc=~/defines.bc', para facilitar a vida de vocês.

[7] Comentário enviado por tenchi em 02/04/2007 - 10:01h

Kra, muito bom esse artigo.
Muito poderosa essa ferramenta. Eu já usava ela para coisas mais simples, inclusive coisas aprendidas neste artigo, mas só agora estou comentando.
Quanto à deficiencia da linguagem pela falta do goto, eh uma benção que a linguagem não tenha esse comando ...... ;-)

Excelente artigo, já está em favoritos.

[8] Comentário enviado por kabalido em 15/04/2008 - 12:52h

Ótimo artigo. Muito bom mesmo.
Valeu!

[9] Comentário enviado por Lael em 18/06/2008 - 17:39h

hasusausuahsu

[10] Comentário enviado por crimelordz em 30/10/2011 - 00:37h

Não posso definir este artigo de outra forma que não seja: MARAVILHOSO.

[11] Comentário enviado por removido em 27/12/2014 - 22:44h

Legal!Nem sabia que existia isso no ubuntu!

[12] Comentário enviado por karson em 14/06/2017 - 06:23h

Nossa, deu pra entender de uma vez , agora meu shell passou a ser mais útil


Contribuir com comentário