bc
Перейти до навігації
Перейти до пошуку
bc (basic calculator) — інтерактивний інтерпретатор Сі-подібної мови, що може виконувати обчислення із довільною заданою точністю. Часто використовується як калькулятор командного рядка у UNIX-подібних операційних системах. Традиційна реалізація bc була оболонкою до калькулятора dc, що виконував обчислення у польському інверсному записі. Вона виконувала перетворення з інфіксного запису в інверсний польський[1]. Сучасна версія GNU bc [Архівовано 24 квітня 2011 у Wayback Machine.] є окремою програмою.
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
- ↑ [[https://web.archive.org/web/20131118082034/http://catb.org/~esr/writings/taoup/html/ch07s02.html Архівовано 18 листопада 2013 у Wayback Machine.] Taxonomy of Unix IPC Methods
- Специфікація bc в об'єднаній специфікації UNIX [Архівовано 10 серпня 2010 у Wayback Machine.](англ.)
- Сторінка man для GNU bc [Архівовано 3 липня 2013 у Wayback Machine.](англ.)