fbpx
Wikipedia

bc (lenguaje de programación)

bc es un lenguaje de programación de cálculo numérico con precisión arbitraria, con una sintaxis similar a la del lenguaje de programación C.

El lenguaje y su intérprete son una herramienta estandarizada de los sistemas UNIX.

El intérprete de bc puede ser usado de forma interactiva, escribiendo expresiones como (1 + 3) * 2 que son evaluadas y su valor escrito en la salida estándar (8 en el ejemplo anterior).

Hay actualmente dos dialectos principales: el rigurosamente definido POSIX bc y un descendiente directo suyo, GNU bc, que incorpora numerosas extensiones.

bc permite la definición de funciones matemáticas. Además las implementaciones de bc incorporan una biblioteca matemática con funciones predefinidas (y estandarizadas) tales como coseno o función de Bessel.

También posee estructuras que permiten la programación estructurada tales como bucles o decisiones condicionales.

Historia

bc apareció por primera vez en la versión 6 de Unix en 1975 y fue escrito por Robert Morris y Lorinda Cherry de Bell Labs. bc fue precedido por dc, una calculadora de precisión arbitraria anterior escrita por los mismos autores. dc podía realizar cálculos de precisión arbitraria, pero su sintaxis de notación polaca inversa (RPN), muy apreciada por muchos para evaluar fórmulas algebraicas, resultó inconveniente para sus usuarios al expresar el control de flujo y, por lo tanto, bc se escribió como una interfaz para dc. bc era un compilador muy simple (un solo archivo fuente yacc con unos pocos cientos de líneas), que convertía la nueva sintaxis bc, similar a C, en la notación postfija de dc y canalizaba los resultados a través de dc.

En 1991, POSIX definió y estandarizó rigurosamente bc. Tres implementaciones de este estándar sobreviven hoy: la primera es la implementación tradicional de Unix, un front-end para dc, que sobrevive en los sistemas Unix y Plan 9. El segundo es el software libre GNU bc, lanzado por primera vez en 1991 por Philip A. Nelson. La implementación de GNU tiene numerosas extensiones más allá del estándar POSIX y ya no es un front-end para dc (es un intérprete de código de bytes). El tercero es una reimplementación de OpenBSD en 2003.

Ejemplos

Cálculos simples

bc 5+2*3 ^D 

Algo un poco más complejo:

bc b=1 for (a=5;a>1;a--) b=b*a ^D 

Funciones parte entera y exponencial

A continuación se presentarán dos funciones, i y p. La función i devuelve la parte entera de cualquier número; y la función p (que se apoya en la anterior función) calcula:

 

permitiendo que y sea cualquier número (no solamente un entero).

/* Una función que devuelve la parte entera de x */ 
 define i((x)) { auto s s = scale scale = 0 x /= 1 /* redondea x */ scale = s return (x) } 
/* x^y == e^(y*log(x)) */ 
 define p(x,y) { if (y == i(y)) { return (x ^ y) } return ( e( y * l(x) ) ) } 

Cálculo de π con 10000 dígitos

Calculate pi usando la función incorporada arcotangente, a():

$ bc -lq scale=10000 4*a(1) # The atan of 1 is 45 degrees, which is pi/4 in radians.  # This may take several minutes to calculate. 

Función en C traducida

Debido a que la sintaxis de bc es similar a la de C, las funciones numéricas escritas en C a menudo se pueden traducir a bc con bastante facilidad. Por ejemplo, el siguiente código C para la distribución normal acumulativa:

double Phi(double x) { long double s=x,t=0,b=x,q=x*x,i=1; while(s!=t) s=(t=s)+(b*=q/(i+=2)); return .5+s*exp(-.5*q-.91893853320467274178L); } 

Con algunos cambios necesarios para adaptarse a la sintaxis diferente de bc, y teniendo en cuenta que la constante "0.9189 ..." es en realidad log (2 * PI) / 2, esto se puede traducir al siguiente código GNU bc:

define phi(x) { auto s,t,b,q,i,const s=x; t=0; b=x; q=x*x; i=1 while(s!=t) s=(t=s)+(b*=q/(i+=2)) const=0.5*l(8*a(1)) # 0.91893... return .5+s*e(-.5*q-const) } 

Usando bc en scripts de shell

bc se puede utilizar de forma no interactiva Esto es útil dentro de script de shells. Por ejemplo:

$ resultado=$(echo "scale=2; 5 * 7 /3;" | bc) $ echo $resultado 11.66 

Por el contrario, tenga en cuenta que el shell bash solo realiza aritmética de enteros. Por ejemplo:

$ resultado=$((5 * 7 /3)) $ echo $resultado 11 

También se puede utilizar el Here document (en bash, ksh, csh):

$ bc -l <<< "5*7/3" 11.66666666666666666666 

Como en el caso anterior, pero con dos decimales:

$ bc -l <<< "scale=2; 5*7/3" 11.66 
  •   Datos: Q300897

Referencias

  • bc: arbitrary-precision arithmetic language – Comandos y utilidades Referencia, Single Unix Specification, Issue 7 de The Open Group
  • GNU bc manual page
  • bc(1) – Comandos generales en el manual de Plan 9 from Bell Labs (en inglés)
  • 7th Edition Unix bc manual page
  • A comp.compilers article on the design and implementation of C-bc
  • 6th Edition Unix bc source code, the first release of bc, from May 1975, compiling bc syntax into dc syntax
  • bc source code

Enlaces externos

  •   Wikilibros alberga un libro o manual sobre Commands.
  • Dittmer, I. 1993. Error in Unix commands dc and bc for multiple-precision-arithmetic. SIGNUM Newsl. 28, 2 (Apr. 1993), 8–11.
  • GNU bc (and an alpha version) from the Free Software Foundation
  • from GnuWin32
  • - A Graphical User Interface to bc
    • - contains functions of trigonometry, exponential functions, functions of number theory and some mathematical constants
    • - contains particle masses, basic constants, such as speed of light in the vacuum and the gravitational constant

lenguaje, programación, lenguaje, programación, cálculo, numérico, precisión, arbitraria, sintaxis, similar, lenguaje, programación, lenguaje, intérprete, herramienta, estandarizada, sistemas, unix, intérprete, puede, usado, forma, interactiva, escribiendo, ex. bc es un lenguaje de programacion de calculo numerico con precision arbitraria con una sintaxis similar a la del lenguaje de programacion C El lenguaje y su interprete son una herramienta estandarizada de los sistemas UNIX El interprete de bc puede ser usado de forma interactiva escribiendo expresiones como 1 3 2 que son evaluadas y su valor escrito en la salida estandar 8 en el ejemplo anterior Hay actualmente dos dialectos principales el rigurosamente definido POSIX bc y un descendiente directo suyo GNU bc que incorpora numerosas extensiones bc permite la definicion de funciones matematicas Ademas las implementaciones de bc incorporan una biblioteca matematica con funciones predefinidas y estandarizadas tales como coseno o funcion de Bessel Tambien posee estructuras que permiten la programacion estructurada tales como bucles o decisiones condicionales Indice 1 Historia 2 Ejemplos 2 1 Calculos simples 2 2 Funciones parte entera y exponencial 2 3 Calculo de p con 10000 digitos 2 4 Funcion en C traducida 3 Usando bc en scripts de shell 4 Referencias 5 Enlaces externosHistoria Editarbc aparecio por primera vez en la version 6 de Unix en 1975 y fue escrito por Robert Morris y Lorinda Cherry de Bell Labs bc fue precedido por dc una calculadora de precision arbitraria anterior escrita por los mismos autores dc podia realizar calculos de precision arbitraria pero su sintaxis de notacion polaca inversa RPN muy apreciada por muchos para evaluar formulas algebraicas resulto inconveniente para sus usuarios al expresar el control de flujo y por lo tanto bc se escribio como una interfaz para dc bc era un compilador muy simple un solo archivo fuente yacc con unos pocos cientos de lineas que convertia la nueva sintaxis bc similar a C en la notacion postfija de dc y canalizaba los resultados a traves de dc En 1991 POSIX definio y estandarizo rigurosamente bc Tres implementaciones de este estandar sobreviven hoy la primera es la implementacion tradicional de Unix un front end para dc que sobrevive en los sistemas Unix y Plan 9 El segundo es el software libre GNU bc lanzado por primera vez en 1991 por Philip A Nelson La implementacion de GNU tiene numerosas extensiones mas alla del estandar POSIX y ya no es un front end para dc es un interprete de codigo de bytes El tercero es una reimplementacion de OpenBSD en 2003 Ejemplos EditarCalculos simples Editar bc 5 2 3 D Algo un poco mas complejo bc b 1 for a 5 a gt 1 a b b a D Funciones parte entera y exponencial Editar A continuacion se presentaran dos funciones i y p La funcion i devuelve la parte entera de cualquier numero y la funcion p que se apoya en la anterior funcion calcula p x y x y displaystyle p x y x y permitiendo que y sea cualquier numero no solamente un entero Una funcion que devuelve la parte entera de x define i x auto s s scale scale 0 x 1 redondea x scale s return x x y e y log x define p x y if y i y return x y return e y l x Calculo de p con 10000 digitos Editar Calculate pi usando la funcion incorporada arcotangente a bc lq scale 10000 4 a 1 The atan of 1 is 45 degrees which is pi 4 in radians This may take several minutes to calculate Funcion en C traducida Editar Debido a que la sintaxis de bc es similar a la de C las funciones numericas escritas en C a menudo se pueden traducir a bc con bastante facilidad Por ejemplo el siguiente codigo C para la distribucion normal acumulativa double Phi double x long double s x t 0 b x q x x i 1 while s t s t s b q i 2 return 5 s exp 5 q 91893853320467274178L Con algunos cambios necesarios para adaptarse a la sintaxis diferente de bc y teniendo en cuenta que la constante 0 9189 es en realidad log 2 PI 2 esto se puede traducir al siguiente codigo GNU bc define phi x auto s t b q i const s x t 0 b x q x x i 1 while s t s t s b q i 2 const 0 5 l 8 a 1 0 91893 return 5 s e 5 q const Usando bc en scripts de shell Editarbc se puede utilizar de forma no interactiva Esto es util dentro de script de shells Por ejemplo resultado echo scale 2 5 7 3 bc echo resultado 11 66 Por el contrario tenga en cuenta que el shell bash solo realiza aritmetica de enteros Por ejemplo resultado 5 7 3 echo resultado 11 Tambien se puede utilizar el Here document en bash ksh csh bc l lt lt lt 5 7 3 11 66666666666666666666 Como en el caso anterior pero con dos decimales bc l lt lt lt scale 2 5 7 3 11 66 Datos Q300897Referencias Editarbc arbitrary precision arithmetic language Comandos y utilidades Referencia Single Unix Specification Issue 7 de The Open Group GNU bc manual page POSIX bc manual page bc 1 Comandos generales en el manual de Plan 9 from Bell Labs en ingles 7th Edition Unix bc manual page A comp compilers article on the design and implementation of C bc 6th Edition Unix bc source code the first release of bc from May 1975 compiling bc syntax into dc syntax bc source codeEnlaces externos Editar Wikilibros alberga un libro o manual sobre Commands Dittmer I 1993 Error in Unix commands dc and bc for multiple precision arithmetic SIGNUM Newsl 28 2 Apr 1993 8 11 Collection of useful GNU bc functions GNU bc and an alpha version from the Free Software Foundation bc for Windows from GnuWin32 X bc A Graphical User Interface to bc extensions bc contains functions of trigonometry exponential functions functions of number theory and some mathematical constants scientific constants bc contains particle masses basic constants such as speed of light in the vacuum and the gravitational constantObtenido de https es wikipedia org w index php title Bc lenguaje de programacion amp oldid 134256493, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos