BC(1) BC(1)
НАЗВАНИЕ
bc - арифметический язык для вычислений с произвольной
точностью
СИНТАКСИС
bc [-c] [-l] [файл ...]
ОПИСАНИЕ
Bc - интерактивный процессор для C-подобного языка,
позволяющий оперировать числами неограниченной точнос-
ти. Ввод производится из указанных файлов, а затем со
стандартного ввода. На самом деле bc является препро-
цессором к команде dc(1), которая вызывается автомати-
чески, если только не указана опция -c.
Смысл опций:
-c Только компилировать. Результат направляется на
стандартный вывод.
-l Подключение математической библиотеки для операций
произвольной точности.
Ниже описывается синтаксис языка bc; L обозначает любую
из букв [a-z], E - выражение, S - оператор.
Комментарии
заключаются между /* и */.
Переменные
простая переменная: L
элемент массива: L [ E ]
слова ibase, obase, scale.
Другие операнды
числа произвольной длины, возможно со знаком и де-
сятичной точкой;
(E)
sqrt(E) корень квадратный;
length(E) количество значащих десятичных цифр;
scale(E) количество десятичных цифр в дробной
части;
L(E,...,E)
Операции
+ - * / % ^ (% - остаток, ^ - степень);
++ -- (префиксные и постфиксные, применяются к
переменным);
== <= >= != <>
= =+ =- =* =/ =% =^
Операторы
E
{S;...;S}
if (E) S
while (E) S
for (E; E; E) S
пустой_оператор
break
quit
Определения функций
define L (L,...,L) {
auto L,...,L
S;...;S
return (E)
}
Функции, определенные в математической (-l) библиотеке:
s(x) синус;
c(x) косинус;
e(x) экспонента;
l(x) натуральный логарифм;
a(x) арктангенс;
j(n,x) функция Бесселя.
Все аргументы функций передаются по значению.
Значение оператора, являющегося выражением, печатается,
если он не является оператором присваивания. Операторы
могут разделяться как точками с запятой, так и перево-
дами строк. Присваивание переменной scale определяет
точность выполнения операций. Присваивание переменным
ibase и obase определяет систему счисления для ввода и
вывода соответственно.
Одна и та же буква может быть одновременно использована
как имя простой переменной, имя массива и имя функции.
Все переменные являются глобальными. Автоматические пе-
ременные (описанные как auto) размещаются в стеке при
входе в функцию. При использовании массивов в качестве
аргументов функций или автоматических переменных за
именем массива должны следовать пустые квадратные скоб-
ки.
ПРИМЕР
Выдать корень квадратный из целых чисел от 1 до 10.
/* Определяется точность вычислений */
scale = 20
/* Определяется функция */
define r(a) {
auto x, y
y = a + 1
x = y + 1
while (y < x) {
x = y
y = 0.5 * (x + a / x)
}
return (x)
}
/* Вычисляется значение */
for ( i = 1; i <= 10; i++ ) r(i)
/* Выход */
quit
В качестве примеров можно использовать определения
стандартных функций, хранящиеся в файле /usr/lib/lib.b.
ФАЙЛЫ
/usr/lib/lib.b Библиотека математических функций.
/usr/bin/dc Встроенный калькулятор.
СМ. ТАКЖЕ
dc(1).
СЮРПРИЗЫ
Не обрабатываются логические операции && и ||.
Оператор for должен содержать все три выражения.
Оператор quit интерпретируется при вводе, а не при вы-
полнении.
|