Category:Bc: Difference between revisions

m
dc / "basic calculator"
No edit summary
m (dc / "basic calculator")
 
(5 intermediate revisions by 3 users not shown)
Line 1:
{{language|bc}}{{stub}}
|exec=interpreted
|checking=static
|hopl id=1854
}}
 
'''bc''' ("basic calculator") is the standard calculator for [[Unix]] systems. <br>
'''bc''' is "''an arbitrary precision calculator language''" with syntax similar to the [[wp:C programming language|C programming language]]. See [[wp:Bc programming language|Bc programming language]] on Wikipedia.
bc boasts unlimited precision, to handle numbers with very many digits. <br>
With the bc language, you can write programs that perform numeric calculations
and print the results.
 
;See also :
* [[wp:Bc programming language|Bc programming language]] on Wikipedia
* [[:Category:Dc|dc]] - the unix '''d'''esktop '''c'''alculator.
 
bc has an interactive mode, which is convenient for brief calculations:
 
$ '''bc'''
'''2 + 3'''
5
'''2 ^ 200'''
1606938044258990275541962092341162602522202993782792835301376
'''i = -5'''
'''3 - i * 4'''
23
'''obase = 2'''
'''i'''
-101
'''ibase = 16'''
'''FE80'''
1111111010000000
 
Division and <tt>sqrt</tt> will not give an infinite number of digits. <br>
The special variable <tt>scale</tt> controls when to stop.
 
$ '''bc'''
'''65.9 / 3'''
21
'''scale = 6'''
'''65.9 / 3'''
21.966666
'''sqrt(2)'''
1.414213
'''scale = 60'''
'''sqrt(2)'''
1.414213562373095048801688724209698078569671875376948073176679
 
bc language resembles [[C|C language]]: bc has most of the same operators
and control structures ('if', 'while', 'for'). <br>
Expressions print themselves, unless they are assignments. <br>
The newline is a statement separator, like the semicolon.
 
bc has excellent numeric operations, but is a poor language.
The original bc, the "Bell Calculator" of Unix V7,
translated the program to [[dc]] and inherited the limitations of [[dc]].
 
* Names of variables, and custom functions, may have only one letter.
* There is no 'else' branch of an 'if' statement.
* Relational operators (== <= => != < >) only work in the condition of an 'if', 'while' or 'for' statement.
* There are no boolean operators (! && ||).
 
Some newer implementations, like [[GNU bc]] and [[OpenBSD bc]],
discard these silly limitations, but users can still feel their effects. <br>
OpenBSD says, "a = b < c is interpreted as "(a = b) < c, which is probably not what the programmer intended," and "!a < b is interpreted as !(a < b)".
 
bc can only print a string, and has no other string operations,
so bc cannot do tasks like [[reverse a string]]. <br>
bc has no way to read user input, except to go to interactive mode
after loading a program.
 
[[Category:Mathematical programming languages]]
[[Category:Utility]]
Anonymous user