viernes, 22 de abril de 2011

Introduccion al interprete matemático BC

Bc es una calculadora en linea de comandos muy versatil. Aunque mirando la ayuda veo que es muy completa y por tanto compleja al principio, por lo que he decidido explicar como funciona paso a paso en varios tutoriales, y así voy aprendiendo poco a poco (a un buen maestro le basta con ir una lección por delante, así que a mi me haran falta dos o tres lecciones de ventaja, jejeje)

Antes de nada, explicar que lo quie aparece en azul es lo introducido en el interprete y lo que aparece en rojo es lo que muestra el interprete.



Empezando

Lo primero de todo es arrancar el interprete, para ello escribid en consola:

$ bc

Lo segundo es salir de allí sin ponerse nervioso. para ello escribid

quit

y pulsad intro. Volvereis al shell sin problema.

Si os habeis fijado, os salio al arrancar el bc un pequeño texto de copyright, yo suelo pasar de ello, pero si no quereis que os vuelva a salir porque os hinche la vena del cuello o lo que sea, escribid

$ bc -q

o

$ bc --quiet

Bien, para los que hayais entrado y salido, por favor, vuelvan a entrar en el bc, para los que no se han salido, esperen a los que hayan salido, jeje..

Operaciones Básicas

Vamos a hacer unas pocas cuentas. Lo primero es intuitivo, así que voy a poner unos ejemplos de unas cuentecillas que es como mejor se ve. Pulsad intro despues de introducir cada linea

1+2

3

3-1

2

25/5

5

4*3

12

4+5+12

21

12*3*6/4

54

Como veis los operadores básicos son los mismos que en todos los lados, aunque por si alguien se lia con las barras y asteriscos porque no está muy familiarizado con los ordenadores, decir que el simbolo de multiplicar es el asterisco (*) y el de dividir la barra inclinada (/)

Los parentesis aquí tambien indican preferencia de operacion, así que

4+5*2

14

es distinto de

(4+5)*2

18

Otras operaciones

Algunos operadores algo más confusos:

Potencias:

Para las potencias se usa el simbolo ^, donde la estructura es base^exponente.

4^2

16

Yo, personalmente hablando, si tengo que hacer cuadrados o cubos, prefiero expresarlo como multiplicaciones sucesivas, ya que para escribir el simbolo hay que pulsar <SHIFT>+^, y a continuacion hay que pulsar <ESPACIO>, cosa que con la cabeza que tengo siempre se me olvida así que en vez de escribir 4^3, escribo 4*4*4. Además de que en expresiones algo complejas hay que tener cuidado con los parentesis tanto para la base como para el exponente.

Módulo: Es el resto de una división entera. Se usa el simbolo del tanto por ciento (%)

17%3

2

El resultado de las expresion es 2, ya que es el resto de dividir 17 entre 3

Nevativo: Indica que el numero es negativo con el signo menos delante del dicho numero (como era de esperar)

-5

-5

Operadores comparativos y de lógica: Estos los veremos en la segunda parte.

Uso de decimales

Ahora vamos a hacer una prueba

1999/1000

1

lo esperado es que saliera como resultado 1.999, ¿no es así? Pero no le hemos dicho al interprete el grado de precisión de los decimales, así que toma por defecto el cero. ¿Aunque no use decimales por defecto, no sería más lógico que redondeara el resultado? Puede ser, pero si no le indicamos la precisión supone que no importa los decimales y los trunca en vez de redondearlos para evitar hacer más cuentas de lo normal.

Para cambiarle la precisión debo explicar antes una cosa: las variables.

Variables

Una variable permite almacenar un valor y modificarle a nuestro antojo. Lo mio no es explicar así que mejor lo vemos con ejemplos

Una variable se forma de un nombre y un valor. Dicho nombre debe empezar por una letra minuscula y puede contener letras, dígitos y el simbolo subrayado (_). Para crear una variable simplemente hay que asignar un valor a un nombre.

x=5

o una expresion

x=(2*6)-10

para ver el valor que contiene una variable solo hace falta escribir el nombre de la variable y pulsar <INTRO>:

x=15*3-8

x

37

La variable x contiene el valor 37

Para operar con ella simplemente se la introduce en la expresión.

x=12

5*x*x/6

120

Operaciones de variables

A las variables se las puede modificar con varias operaciones más:

Asignación: Es el hecho de darles un valor. Se usa el simbolo igual (=).

N_Avogadro=6023*(10^20)

Nota: Si no existe la variable, la creará.
pre-incremento / pre-decremento: Incrementa / decrementa el valor de la variable en una unidad antes de realizar cualquier operación con ella. Se representa por ++ (ó -- respectivamente) antes del nombre de la variable.

d=2

5*++d

15

Esto equivale a hacer:

d=d+1

5*d

post-incremento / post-decremento: Incrementa / decrementa el valor de la variable en una unidad despues de realizar cualquier operación con ella. Se representa por ++ (ó -- respectivamente)despues del nombre de la variable.

d=2

5*d++

10

Equivale a

5*d

d=d+1

Operaciones con asignación: Esto son operaciones que se actuan en una variable y cuyo resultado es almacenado en la misma variable sobreescribiendo el valor anterior.

x2=3

x2*=4

x2

12

x2*=4 equivale a:

x2=x2*4

Y por regla general

nombre_variable ?= expresion

equivale a

nombre_variable = nombre_variable ? expresion

Solo por curiosidad decir que bc puede almacenar hasta 32767 variables.

Variables predefinidas

bc tiene predefinidas varias variables cuyo valor se puede modificar. Su nombre y descripción detallo a continuacion:

scale : Almacena el numero de decimales de precisión. Por defecto vale 0.

ibase : Base numerica para los datos de entrada. Por defecto es 10 y como mucho se puede introducir datos en formato hexadecimal (ibase==16)

obase : Base numérica para los datos de salida. Al igual que ibase, el valor por defecto es 10 aunque el máximo es 999

last : Guarda el resultado de la última operación

Uso rápido

Es posible que sea una herramienta de cálculo suficientemente potente, pero ¿si solo quiero saber el resultado de una opercion tengo que hacer tanta movida?. ¿Tengo que meterme en el programa, escribir las cuentas, ver el resultado y salir?. ¿No hay un camino más rápido?

Si, lo hay. Usando tuberias (|) en el interprete de comandos.

$ echo "scale=2; 25*4.1" | bc

El punto y coma que se muestra dentro de la cadena del echo sirve para separar lineas de ordenes del interprete de bc. Así como está muestra el resultado por pantalla y vuelve al shell.

Otra forma es mediante el uso de ficheros, pero eso ya se verá más adelante.

Con esto ya teneis para empezar a hacer vuestros primeros cálculos.
Extraido de las páginas del manual de bc.

No hay comentarios:

Publicar un comentario