2011-05-07

bc - calcolatrice a linea di comando per Unix / Linux

bc è un programma presente in Unix dal 1975 e sviluppato da due programmatori dei Bell Labs, nella versione iniziale bc era un front-end al programma dc, ovvero ne semplificava l'utilizzo mettendo a disposizione una sintassi simile al linguaggio C.
Il progetto GNU ne ha realizzato una versione che non si basa più su dc ed implementa nuove funzioni.
bc essendo un calcolatore permette anche di eseguire semplici somme, sottrazioni, moltiplicazioni e divisioni, sembra strano ricorrere alla linea di comando per eseguire dei calcoli quando ormai, tutte le distribuzioni mettono a disposizione calcolatrici con interfaccia grafica che possono soddisfare le esigenze di calcolo che si presentano quotidianamente. Personalmente sono rimasto fedele a bc da quando il mio accesso ai sistemi Unix era limitato ai terminali a carattere.
I calcoli semplici sono di immediata formulazione, riporto un esempio di utilizzo di bc con esempi di semplici calcoli ( in grassetto i comandi digitati ):
$ bc
3*6
18
45+30
75
.+10
85 
scale=2
22/7
3.14

quit
$
Si può notare che bc non presenta un prompt e quello che viene digitato viene interpretato al momento in cui si preme INVIO ed il risultato viene mostrato nella riga seguente. se la sintassi è sbagliata o si verifica un altro tipo di errore viene indicato con il relativo messaggio; per uscire viene mostrato nell'esempio il comando quit ma un semplice <Ctrl>D è sufficiente per chiudere bc.
Sebbene esistano altri metodi per eseguire i calcoli con le moderne shell, può essere utilizzato bc per eseguire calcoli all'interno di script:
A=3
B=4
C=`echo $A+$B | bc`
echo $C
7
$
Veniamo a qualche utilizzo particolare, ad esempio per riutilizzare il risultato del calcolo precedente in un calcolo si può utilizzare il . ( punto ) come se fosse un operando come mostrato nella terza operazione dell'esempio.
Se si devono eseguire delle divisioni può essere utile impostare il numero massimo di cifre decimali, per fissare ad esempio a 2 il numero di cifre decimali si utilizza:
scale = 2
da questo momento i calcoli riporteranno solo 3 cifre decimali, salvo che gli operandi abbiano un numero maggiore di cifre, in quel caso il numero massimo di cifre verrà utilizzato come numero di cifre decimali da presentare nel risultato.
Si può cambiare anche la base de numeri, che normalmente è 10, ed esiste la base dei numeri forniti nelle operazioni da eseguire che è distinta dalla base con cui vengono espressi i risultati, i comandi per impostarle a 16 per i risultati e 8 per i numeri digitati sono:
obase=16
ibase=8
20
10
Da notare che il numero 20 ( espresso in ottale che in decimale corrisponde a 16 ) viene convertito in 10 ( che appunto i esadecimale corrisponde a 16 decimale ).
Va tenuto bene a mente che dal momento in cui di impartisce il comando per impostare la base di input ( ibase ) ogni numero digitato verrà interpretato con quella base, per questo motivo ho riportato nell'esempio prima l'impostazione di obase e poi quello di ibase, altrimenti per impostare obase come secondo comando avrei dovuto digitare obase=20 che in ottale corrisponde a 16 decimale.

Nessun commento:

Posta un commento