Get the code: learnbc.bc
/*This is a multi-
line comment.*/
# This is also a (one-line) comment! (in GNU bc).
/*1. Variables and control structures*/
num = 45 /*All variables save only doubles, and you cannot save
string constants directly.*/
num = 45; /*You can choose to add a semicolon after
every statement. This is optional.*/
/*Blocks are denoted using the {} operators(similar to C):*/
while(num < 50) {
num += 1 /*equivalent to num=num+1.
a = a op b is equivalent to a op= b.*/
}
/*And there are ++(increment) and --(decrement) operators.*/
/*There are 3 special variables:
scale: defines the scale of the double numbers.
ibase: defines the base of input.
obase: defines the base of output.*/
/*If clauses:*/
hour = read() /*Input a number*/
if(hour < 12) { /*Operators are exactly like C.*/
print "Good morning\n" /*"print" outputs strings or variables
separated by commas.*/
} else if(hour == 12) {
print "Hello\n"
/*Escaping sequences start with a \ in a string.
In order to make the escaping sequences clearer, here
is a simplified list of them that will work in bc:
\b: backspace
\c: carriage return
\n: newline
\t: tab
\\: backslash*/
} else {
print "Good afternoon\n"
}
/*Like C, only 0 is falsy.*/
num = 0
if(!num) {print "false\n"}
/*Unlike C, bc does not have the ?: operators. For example,
this block of code will cause an error:
a = (num) ? 1 : 0
However, you can simulate one:*/
a = (num) && (1) || (0) /*&& is and, || is or*/
/*For loops*/
num = 0
for(i = 1; i <= 100; i++) {/*Similar to the C for loop.*/
num += i
}
/*2.Functions and Arrays*/
define fac(n) { /*define a function using define.*/
if(n == 1 || n == 0) {
return 1 /*return a value*/
}
return n * fac(n - 1) /*recursion is possible*/
}
/*Closures and anonymous functions are impossible.*/
num = fac(4) /*24*/
/*This is an example of local variables:*/
define x(n) {
auto x
x = 1
return n + x
}
x(3) /*4*/
print x /*It turns out that x is not accessible out of the function.*/
/*Arrays are equivalent to the C array.*/
for(i = 0; i <= 3; i++) {
a[i] = 1
}
/*Access it like this:*/
print a[0], " ", a[1], " ", a[2], " ", a[3], "\n"
quit /*Add this line of code to make sure
that your program exits. This line of code is optional.*/
Enjoy this simple calculator! (Or this programming language, to be exact.)
This whole program is written in GNU bc. To run it, use bc learnbc.bc
.
Got a suggestion? A correction, perhaps? Open an Issue on the GitHub Repo, or make a pull request yourself!
Originally contributed by Btup, and updated by 2 contributors.