Bc
Z Wikipedii
- Właściwy tytuł tego artykułu to bc. Z powodu ograniczeń technicznych tytuł tego artykułu jest nieprawidłowy.
bc to uniksowy kalkulator dowolnej precyzji (zarówno przed, jak i po przecinku). Umożliwia operowanie liczbami w dowolnych systemach liczbowych (wejście możliwe w systemie maksymalnie szesnastkowym, wyjście w dowolnie dużym), wykonywanie skryptów itd.
Pierwotnie program opierał się na programie dc, tłumacząc zapis infiksowy na postfiksowy (odwrotna notacja polska), jednak obecnie wersja GNU jest autonomicznym programem.
Składnia podobna do języka C.
Spis treści |
[edytuj] POSIX bc
Oprócz prostych poleceń (np. 2*(3+4)^4) POSIX bc obsługuje:
- if(warunek) - wyrażenia warunkowe
- while(warunek) - pętle typu while
- for(wartość początkowa; warunek; operacja zwiększenia) - pętle typu for
- define - tworzenie funkcji
- return - zwracanie wartości przez funkcję
- operatory:
+ - * / += -= *= /= ++ -- < > == != <= >= ( ) [ ] { } % %= ^ ^=
- sqrt - pierwiastek kwadratowy
- zmienne
[edytuj] GNU bc
GNU bc oferuje te same polecenia co POSIX bc oraz:
- read - zezwala na odczyt danych liczbowych z klawiatury
- operatory logiczne:
&& || !
- komentarze (wszystkie znaki w lini po # są ignorowane)
[edytuj] Przykłady użycia
- Obliczanie liczby π z dokładnością do 200 miejsc po przecinku.
$ bc -l scale=200 4*a(1)
- Wypisanie tabliczki mnożenia o rozmiarach 10x10.
for (i=1; i<=10; i++){ for (j=1; j<=10; j++) print i*j, "\t" print "\n" }
- Rekurencyjne zdefiniowanie funkcji silnia.
define silnia(n){ if (n <= 1) return 1; return n * silnia(n-1); }
[edytuj] Potęgowanie
- Potęgowanie w POSIX bc
/* Funkcja zwraca część całkowitą liczby */ define i(x) { auto s s = scale scale = 0 x /= 1 /* zaokrągla x z niedomiarem */ scale = s return (x) } /* Funkcja wykorzysuje fakt, iż x^y == e^(y*log(x)) */ define p(x,y) { if (y == i(y)) { return (x ^ y) } return ( e( y * l(x) ) ) }
- Potęgowanie w GNU bc
# Funkcja zwraca część całkowitą liczby define int(number) { auto oldscale oldscale = scale scale = 0 number /= 1 /* round number down */ scale = oldscale return number } # Funkcja wykorzysuje fakt, iż x^y == e^(y*log(x)) define power(number,exponent) { if (exponent == int(exponent)) { return number ^ exponent } else { return e( exponent * l(number) ) } }
[edytuj] Linki zewnętrzne
- [1] - Systemowy podręcznik do bc przetłumaczony na język polski
Zarządzanie plikami i systemem plików: | cat • cd • chmod • chown • chgrp • cp • du • df • file • fsck • ln • ls • lsof • mkdir • more • mount • mv • pwd • rcp • rm • rmdir • split • touch • tree | ||
Zarządzanie procesami | anacron • at • chroot • cron • crontab • htop • kill • killall • nice • ps • sleep • screen • time • timex • top • renice • wait • watch | ||
Zarządzanie użytkownikami/systemem | env • finger • id • locale • mesg • passwd • su • sudo • uname • uptime • w • wall • who • write | ||
Przetwarzanie tekstu | awk • cut • diff • ex • head • iconv • join • less • more • nkf • paste • sed • sort • tail • tr • uniq • wc • xargs • perl | ||
Programowanie shellowe | echo • expr • unset | Drukowanie | lp |
Komunikacja inetd • netstat • ping • rlogin • traceroute |
Wyszukiwanie find • grep • strings • whereis |
Różne banner • bc • cal • man • yes |