bc (basic calculator) — інтерактивний інтерпретатор Сі-подібної мови, що може виконувати обчислення із довільною заданою точністю. Часто використовується як калькулятор командного рядка у UNIX-подібних операційних системах. Традиційна реалізація bc була оболонкою до калькулятора dc, що виконував обчислення у польському інверсному записі. Вона виконувала перетворення з інфіксного запису в інверсний польський<ref> Taxonomy of Unix IPC Methods</ref>. Сучасна версія [http://www.gnu.org/software/bc/ GNU bc є окремою програмою.
Синтаксис bc [ -hlwsqv ] [long-options] [ file … ]
-l : викликає стандартну бібліотеку математичних функцій. -w : виводить попередження щодо Posix-розширень bc. -s : використовує мову Posix bc. -q : не виводить привітання bc. -v : вказує версію програми і завершує роботн. -h : викликає довідку
Оператори та ключові слова
Більшість операторів bc (окрім ^) повторюють аналогічні у мові Сі.
+,-,*,/ : додавання, віднімання, множення, ділення % : знаходження остачі від цілочисельного ділення ^ : піднесення до степеня sqrt(i) : видобування квадратного кореня від числа i <, >, <=, >=, !=, == : порівняння = : оператор присвоєння ++, -- : інкремент, декремент +=, -=, *=, /=, ^=, %= : обчислення з присвоєнням scale = i : встановлення точності обчислень, де i – кількість цифр після коми ibase = i : встановлення основи системи числення для вхідних даних, де i є базисом (2 <= i <= 16) obase = i : встановлення основи системи числення для вихідних даних, де i є базисом (2 <= i <= 16) last : виведення останнього обчисленого значення if(E)[S1…] else [S2…] : оператор вибору (якщо твердження E істинне, виконується S1, інакше — S2) while(E)[S…] : оператор циклу, що виконує S, доки твердження E істинне for(E1;E2;E3)[S…] : оператор циклу break : зупинка виконання циклу continue : завершення поточної ітерації циклу halt : завершує роботу bc return : повертає код 0 при виході з функцій return i : повертає код змінної i при виході з функції define a(b) : визначає символьне ім'я, іменовану константу чи функцію print <список> : вивід даних на екран
Функції математичної бібліотеки
За необхідності, можна використати бібліотеку математичних функції.
s(i) : синус i, де i вимірюється у радіанах c(i) : косинус i, де i вимірюється у радіанах a(i) : арктангенс, повертає радіани e(i) : експонента l(i) : натуральний логарифм i j(n, x) : функція Бесселя
Приклади використання $ bc -lq for(i=0;i<5;i++) e(i) 1.00000000000000000000 2.71828182845904523536 7.38905609893065022723 20.08553692318766774092 54.59815003314423907811
$ bc -lq scale = 10 for(i=5;i<10;i++) j(i,1) .0002497577 .0000209383 .0000015023 .0000000942 .0000000052
$ bc -lq if ((2+2)==4)print "2+2 = 4" else " 2+2 !=4 " 2+2 = 4 if ((2+2)==5)print "2+2 = 5" else "2+2 != 5 " 2+2 != 5
$ echo 75*125 | bc 9375
Обчислення Пі: $ bc -lq scale=100 4*a(1) 3.141592653589793238462643383279502884197169399375105820974944592307\ 8164062862089986280348253421170676
Примітки
Посилання Специфікація bc в об'єднаній специфікації UNIX Сторінка man для GNU bc