bc är en interaktiv kalkylator som arbetar med godtycklig precision (begränsas enbart av tillgängligt minne).
Inmatning kan hämtas från standard input (vanligen tangentbordet) eller läsas från filer.
Förutom de fyra vanliga räknesätten kan bc även beräkna potenser
och kvadratrötter. In- och utmatning kan göras i olika talbaser.
bc är även ett programmeringsspråk med C-liknande syntax:
Variabler (även indexerade), villkors- och upprepningssatser, egendefinierade
funktioner m m kan utnyttjas.
bc-program, liksom egendefinierade funktioner, kan sparas på
filer och läsas in vid behov. Dessa möjligheter är speciellt användbara när
mer omfattande beräkningar ska göras. För att t ex läsa in en fil som heter matte.bc, ger vi kommandot:
bc matte.bc
Om bc startas med alternativet -l (står för library):
bc -l
inläses ett fördefinierat matematiskt funktionsbibliotek (-l står för library) med sinus (s), cosinus (c), arcustangens (a), exponentialfunktionen (e), naturliga logaritmen (l) och Bessel-funktioner (j(n, x)).
bc avslutas med kommandot quit eller med filslutstecken (Ctrl-D)
Anmärkning: Med GNU:s bc-version (som brukar levereras med Linux) kan variabel- och funktionsnamn bestå av flera tecken (små bokstäver, understrykningstecken och siffror).
Användarinmatningen i exemplen visas i fetstil.
84+16-9 91 .*5 /* . betyder senaste resultat */ 455 ./9 50 /* OBS heltalsdivision har utförts */
Modulusoperator (heltalsrest vid division)
17%9 8 scale=2 /* Begär två decimaler */ 2/3 .66
2^64-1 18446744073709551615
scale=4 sqrt(3) 1.7320 scale=8 t=sqrt(500) /* Variabel och kvadradrot */ t 22.36067977 length(.) /* Antal siffror i sista resultat */ 10
ibase=2 1001 9 obase=1000 /* Oktal bas, här fungerar även obase=8 */ 1001 11 obase=10000 /* Hexadecimal bas (16) */ 1110 E ibase=1010 /* Decimal bas (10), här fungerar även ibase=A */ 65535 FFFF
En sats behöver enbart avslutas med semikolon (;) om det finns någon efterföljande sats på samma rad.
Observera att när en variabel, ett uttryck eller ett funktionsanrop står för sig självt utmatas dess aktuella värde. Med GNU-bc kan utmatning även göras med en print-sats, där det som ska skrivas ut anges som en lista med kommaseparerade uttryck och strängar.
a=6 if (a%2==0) "a är jämnt" else "a är udda" a är jämnt
i=10
while (i>=0) {
i
i-=2
}
10
8
6
4
2
0
5:ans multiplikationstabell
for (i=1; i<10; i++) {
print i , "*5=", i*5, "\n"
}
1*5=5
2*5=10
3*5=15
4*5=20
Bestämma heltalsdel av flyttal:
define heltalsdel(x) {
auto os
os = scale ; scale=0
x /= 1
scale = os /* Återställ gammal scale */
return (x)
}
heltalsdel(99.95)
99
Funktion för att beräkna största gemensamma delare
define gcd(m,n) {
auto r
while (n != 0) {
r=m%n
m=n
n=r
}
return (m)
}
gcd(3388,462)
154
Beräkna n-fakultet (n!)
auto anger att de följande variablerna är lokala
define fact(n) {
auto val, i
val=1
for (i=1; i <=n; ++i) val*=i
return (val)
}
fact(40)
30414093201713378043612608166064768844377641568960512000000000000
Om de matematiska standardfunktionerna laddats fungerar följande:
scale=30 e(10) 22026.465794806716516957900645284244 quit /* Avsluta bc */
Copyright © 2003 Martin Fahlgren
martin@1-1-7-46a.ghn.gbg.bostream.se