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: 130.183 ]

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


Alguns exemplos



Definição recursiva do fatorial:

#!/usr/bin/bc -l
define f (x) {
      if (x <= 1) return (1);
         return (f(x-1) * x);
      }

Solução da equação do 2o grau
(Como o bc força o retorno de apenas um valor por função, criamos 2 funções para retornar as 2 raízes da equação):

#!/usr/bin/bc -l

define delta(a,b,c) { return b^2 - 4*a*c }

define eq2grau(a,b,c) {
  auto d;
  d = delta(a,b,c);
  if (d<0) halt;
  if (d>=0) {
    return (-b + sqrt(d))/(2*a);
  }
}

define eq2grau2(a,b,c) {
  d = delta(a,b,c);
  if (d<0) halt;
  if (d==0) return eq2grau(a,b,c);
  if (d>0) {
    return (-b - sqrt(d))/(2*a);
  }
}

Programa que pede uma lista de valores e depois calcula a média:

#!/usr/bin/bc -l

contagem=0;
print "Digite valores, terminando a lista com zero. "
ultvalor = read()
while (ultvalor != 0) {
  ultvalor = read()
  dados += ultvalor
  contagem += 1
}
print "Foram digitados "
print contagem
print " dados. "
print " A média é de "
print dados/contagem
print " "
quit

Como pode ser notado, a sintaxe é muito parecida com a da linguagem C. Quem conhece C não terá dificuldade em operar o 'bc'.

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

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

SIMH: Recriando um pouco da história

A tecla mágica SysRQ

MySQL + Amarok: dupla poderosa

Leitura recomendada

Easter Eggs em Linux

Monitorando interface IPMI

Como fazer RAID 0 com mdadm no Debian

Windows XP virtualizado dentro do Linux com VMWare Converter

O que é GNU Social? Porquê usar?

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts