next up previous index
Következő: 15.10.14 ELTÉRÉSEK Fel: 15.10 bc(1) Előző: 15.10.12 MATEMATIKAI KÖNYVTÁR   Index

15.10.13 PÉLDÁK

A/bin/sh-ban a következő utasítás visszaadja a ,,pi'' értékét a pi környezeti változóban.
pi=$(echo "scale=10; 4*a(1)" | bc -l)
Az itt következő példában a matematikai könyvtárban található hatványfüggvény definícióját mutatjuk be. A függvény POSIX bc nyelven íródott.
scale = 20
/* Kihasználja a következő tényt: e^x = (e^(x/2))^2.
Mikor az x elég kicsi, a következő sort használjuk:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/
define e(x) {
auto a, d, e, f, i, m, v, z
/* Ellenőrzi az x előjelét. */
if (x<0) {
m=1
x=-x
}
/* Előfeltétel. */
z=scale;
scale = 4 + z + .44*x;
while (x > 1) {
f+=1;
x/=2;
}
/* Inicializálja a változókat. */
v=1+x
a=x
d=1
for (i=2; 1; i++) {
e=(a*=x)/(d*=i)
if (e == 0) {
if (f>0) while (f--) v=v*v;
scale = z
if (m) return (1/v);
return (v/1);
}
v+=e
}
}

A következő kód a bc kiterjesztett szolgáltatásait használja, egy egyszerű csekkfüzet egyenleg kiszámolására. Legjobb, ha ezt a programot fájl-ba lementjük, hogy többször is használhassuk anélkül, hogy újra be kelljen gépelni.

scale=2
print ,,\nCsekkfüzet program!\n''
print ,, Emlékeztető, a letétek negatív tranzakciók.\n''
print ,, Kilépés 0 összegű tranzakció bevitelével.\n\n''
print ,,Kezdeti egyenleg? ''; bal = read()
bal /= 1
print ,,\n''
while (1) {
,,jelenlegi egyenleg = ''; bal
,,tranzakció? ''; trans = read()
if (trans == 0) break;
bal -= trans
bal /= 1
}
quit

A következő függvény a faktoriális rekurzív definíciója.

define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}




1999-09-17