bc
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Реализации и версии (свернуть все | развернуть все):
bc (от bench calculator или basic calculator) — язык вычислений произвольной точности с C-подобным синтаксисом.
Часто используется в Unix-системах в качестве калькулятора с интерфейсом командной строки.
Элементы синтаксиса:
Комментарий до конца строки | # |
---|---|
Комментарии, которые не могут быть вложенными | /* ... */ |
Регистрозависимость | да (только нижний регистр) |
Регулярное выражение идентификатора переменной | [a-z][_a-z0-9]* |
Присваивание значения переменной | = |
Объявление переменной | нет |
Объявление переменной с присваиванием значения | variable = value |
Группировка выражений | ( ... ) |
Блок | { ... } |
Равенство | == |
Неравенство | != |
Сравнение | < > <= >= |
Определение функции | define f(p1, p2, ...) ... |
Вызов функции | f(a, b, ...) |
Вызов функции без параметров | f() |
Если - то | if (condition) ... |
Если - то - иначе | if (condition) ... else ... |
Бесконечный цикл | while (1) ... |
Цикл с предусловием | while (condition) ... |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | for (i = 1; i <= 10; i++) ... |
Цикл for - next для диапазона целых чисел с декрементом на 1 | for (i = 10; i > 0; i--) ... |
Примеры:
Факториал:
Пример для версий GNU bc 1.06Используется рекурсивное определение факториала.
#! /usr/bin/env bc
define factorial(n) {
if (n == 0) return(1);
return(n * factorial(n - 1));
}
for (n = 0; n <= 16; n++) {
print n; "! = "; factorial(n);
}
quit
Hello, World!:
Пример для версий GNU bc 1.06print "Hello, World!\n";
Числа Фибоначчи:
Пример для версий GNU bc 1.06Используется рекурсивное определение чисел Фибоначчи.
define fibonacci(n) {
if (n <= 2) return(1);
return(fibonacci(n-1)+fibonacci(n-2));
}
for (n = 1; n <= 16; n++) {
print fibonacci(n); ", "
}
print "..."
quit
Числа Фибоначчи:
Пример для версий GNU bc 1.06Используется формула Бине. Следует отметить, что bc — калькулятор произвольной точности, поэтому выводить числа приходится с округлением до целого. Для этого устанавливается точность 0 знаков после десятичной точки, и x округляется вручную (встроенной функции округления в bc нет).
for (n = 1; n <= 16; n++) {
scale = 10
x = (((1 + sqrt(5)) * .5) ^ n - ((1 - sqrt(5)) * .5) ^ n) / sqrt(5)
scale = 0
print (x+0.5)/1; ", "
}
print "..."
Комментарии
]]>blog comments powered by Disqus
]]>