BC to rozbudowany, uniksowy kalkulator dowolnej precyzji z lekko programistycznym podejściem do sprawy. Narzędzie to z pewnością przypadnie do gustu ludziom nie lubiącym “klikanych” kalkulatorów, a także miłośnikom pracy w konsoli czy programistą…
Początek pracy z kalkulatorem
(Kalkulator powinien być zainstalowany domyślnie w systemie, jeśli było by inaczej należy przeprowadzić standardową dla Twojej dystrybucji procedurę instalacji aplikacji…)
Praca w bc może odbywać się w 2 trybach:
- interaktywnym – pozwalającym na wpisywanie na bieżąco wyrażeń kalkulatora
- trybie przetwarzania zapisanego skryptu
Pracę w trybie interaktywnym rozpoczynamy wpisując w oknie terminala polecenie bc, w 2 z trybów podając po bc nazwę pliku/ów z skryptem/ami do wykonania. Chcąc uniknąć wypisywania powitania programu możemy dorzucić opcję -q. Innym niewątpliwie interesującym parametrem z którym można uruchomić program jest -l które definiuje parę funkcji matematycznych “na start”. Pracę z programem kończymy wpisują quit.
Wyrażenia
Wyrażenia podaje się w postaci znanej z lekcji matematyki, z uwagą że zamiast przecinka stosujemy kropkę przy podawaniu liczb niecałkowitych. Operatory których możemy używać w działaniach (wyrażeniach):
- +, -, *, / – po kolei: dodawanie, odejmowanie, mnożenie, dzielenie – z tym ostatnim trzeba uważać gdyż domyślną precyzją po przecinku jest 0. Należy zmienić wartość zmiennej scale ew. uruchomić program z parametrem -l.
- % – reszta z dzielenia dwóch wyrażeń np. 5 % 2 = 1, znów uwaga na scale
- ^ – podnieś x do potęgi y
Działania reprezentowania przez operatory wykonywane są w naturalnej kolejności matematycznej. Do ich zmiany, również jak w matematyce, służą nawiasy okrągłe (zagnieżdżone w sobie dowolną liczbę razy). Kilka przykładowych wyrażeń: 2 + 2, 3^6, (2 * 3)^2 / 2. Wynik wyrażenia jest wypisywany w następnej linii, pod wyrażeniem.
Co do wspomnianej zmiennej scale to w tej części artykułu napisze jedynie że jest to coś (dla nie wtajemniczonych w programowanie), co jest odpowiedzialne za precyzję obliczeń po przecinku. Standardowo zmienna ustawiona jest na wartość 0 co powoduje że wartość wyrażeń jest obcinana do części całkowitej, zmienić możemy to przypisując jej inną wartość poprzez np. wyrażenie o postaci: scale = 2; ew uruchamiając z barametrem -l. (Wartość ustawiana jest na 20).
Istnieją również pewne “wyrażenia specjalne”, będące w rzeczywistości funkcjami standardowymi. Używa się ich za pomocą schematu nazwa(argument). Argumentem jest różny w zależności funkcji. Oczywiście nic nie stoi na przeszkodzie aby funkcje te łączyć z operacjami wymienionymi wyżej. Poniżej kilka wybranych funkcji:
- sqrt(wyrażenie) – funkcja zwraca wartość pierwistka z wyrażenia np. sqrt(16) (zwróci 4…)
- scale(wyrażenie) - funkcja zwraca liczbę cyfr po przecinku wyrażenia podanego jako argument np. scale(0.02) wypisze 2
Poniższe funckje zdefiniowane są jedynie w przypadku uruchomienia programu z dodatkowym parametrem -l:
- s(wyrażenie) – funkcja zwraca sinus z konta o mierze równej wartość wyrażenia, miara jest liczona w radianach. Analogicznie do niej działają funkcję c, i a, zwracające cosinus i arcus tangens (w radianach) z wyrażenia.
- l(wyrażenie) – logarytm naturalny z wyrażenia
- e(wyrażenie) - liczba e do potęgi wyrażenie
Oczywiście to co tu pokazałem to tylko kropla możliwośći bc. Więcej, między innymi o używaniu i definiowaniu zmiennych oraz funkcji, w kolejnej części

Jak uzywać modulo?
nie moge nigdzie znaleźć
np. jak zaszyfrować liczbe używając RSA
Trzeba by było zaimplementować funkcję szyfrującą, co przyznam szczerze jest ciekawym wyzwaniem…
Co do modulo: 173 linijka man bc: