AC/DC

Publié le par Peck

Cet article est maintenant sur http://linux-attitude.fr/post/AC/DC

Niveau
:
Résumé : bc -l ; dc

Oups BC/DC.

Bc et dc sont des calculatrices en ligne de commande disponibles un peu partout. Ils vous permettrons de faire un peu mieux que ce que propose le shell avec $(())

$ echo $((142857*2))
>285714

bc

bc est une calculatrice standard qui ne fait que les nombres entiers par défaut. Utilisez l'option -l pour des calculs en virgule flottante. (Utilisez ctrl-d pour terminer vos commandes)

$ bc -l
142857*3
>428571

Bc supporte les variables
a=142857
a*4
>571428

Dont last
5291*27
>142857
last*5
>714285

Bc permet aussi les conversions de base grâce aux variables ibase et obase les bases d'affichage d'entrée et de sortie. Ex convertir de l'hexadécimal en décimal :
ibase=16
FF
>255

Côté fonctions mathématiques, bc supporte le cosinus c(0.1), le sinus s(0.1), le logarithme l(0.1) ...

Et en lisant le manuel de bc(1) vous découvrirez qu'il contient un vrai langage de programmation.

Et pour les codeurs le pipe fonctionne
$ echo "142857*6" | bc
>857142

dc

dc est une calculatrice en notation polonaise inversée, RPN pour les intimes. Cela rappellera de bons souvenirs aux possesseurs de calculatrice HP.

L'intérêt de cette notation (outre le fait de vous retourner le cerveau et d'optimiser le nombre de touches tapées) est qu'elle simplifie la programmation de calculs.

Pour ceux qui ne la connaissent pas, un rapide point. Il s'agit d'une pile (au sens informatique) et toutes les opérations agissent sur cette pile. Un nombre s'empile, une opération comme * dépile les 2 nombre du dessus et rempile le résultat.

Un petit exemple
$ dc
142857
7
*
p
>999999


L'espace pouvant remplacer le retour à la ligne. On peut aussi abréger les commandes en une seule ligne :
$ dc
142 857+p
>999


Outre les opérations mathématiques de base, dc supporte les quelques commandes suivantes :
  • p : print
  • P : pop
  • n : print sans newline & pop
  • f : affiche toute la pile (utile pour debug)
  • c : clear
  • d : duplique l'entrée du haut (dup)
  • r : echange les 2 entrées du haut (swap)

# ^2
$ echo "142857d*p" | dc
>20408122449
$ echo "20408 122449+p" | dc
>142857


Attention, par défaut dc ne fait que des calculs sur les nombres entiers. Pour utiliser des nombres à virgule, il faut utiliser la commande k
$ dc
1 3/p
0
3k
1 3/p
>.333

dc supporte aussi la notion de variable (à une lettre ou un chiffre uniquement) avec les commandes s et l.
123sa
456la*
p
>56088


Dc supporte aussi des piles supplémentaires avec L et R ainsi qu'un certain support des chaînes de caractères.


Voila, un tour rapide, maintenant à vous de calculer l'orbite géostationnaire tous seuls comme des grands.

Publié dans admin

Pour être informé des derniers articles, inscrivez vous :

Commenter cet article