Այս հոդվածը bc ինտերպրետատորի մասին է։  Այլ գործածությունների համար այցելեք BC (այլ կիրառումներ)։

**bc** (**b**asic **c**alculator), C-անման ծրագրավորման լեզվի ինտերակտիվ ինտերպրետատոր, որը թույլ է տալիս հաշվարկներ կատարել ցանկացած ճշտությամբ։ Այն հաճախ UNIX-անման օպերացիոն համակարգերի հրամանի տողերում օգտագործվում է որպես հաշվիչ։

Հրամանի շարայուսությունը
------------------------

```
 bc [ -hlwsqv ] [long-options] [  file … ]

 -l : կանչում է մաթեմատիկական ֆունկցիաների ստանդարտ գրադարանը
 -w : արտածում է bc-ի Posix ընդլայնումների վերաբերյալ նախազգուշացումներ
 -s : օգտագործում է Posix bc լեզուն
 -q : չի արտածում bc-ի սովորական ողջույնի տեքստը
 -v : արտածում է պրոցեսորի տարբերակի համարը և ավարտում է ծրագիրը
 -h : կանչում է bc-ի տեղեկանքը

```

Օպերատորներն ու բանալի բառերը
-----------------------------

`bc`–ի օպերատորների մեծամասնությունը (բացի `^`–ից) կատարում են նույն գործողությունները, ինչ C լեզվում։

```
+,-,*,/ ։ հումարում, հանում, բազմապատկում, բաժանում
% ։ մնացորդի որոշում
^ ։ աստիճանի բարձրացում
sqrt(i) ։ քառակուսի արմատ i թվից
<, >, <=, >=, !=, == ։ համեմատություն
= ։ վերագրում
++, -- ։ ինկերմենտ, դիսկրեմենտ
+=, -=, *=, /=, ^=, %= ։ գումարմամբ, հանմամբ, բազմապատկմամբ, բաժանմամբ, աստիճանի բարձրացմամն, մացորդի որոշմամբ վերագրում
scale = i ։ հաշվարկների ճշտության կարգավորում, i–ն ստորակետից հետո գրառվող թվանշանների քանակն է
ibase = i ։ հաշվարկման համակարգի հիմքի կարգավորում, որտեղ i-ն հանդիսանում է բազիս (2 <= i <= 16)
obase = i ։ հաշվարկման համակարգի հիմքի կարգավորում ելքային տվյալների համար
last ։ վերջին հաշվված արժեքի արտածում
```

```
if(E)[S1…] else [S2…] ։ պայմանի օպերատոր, եթե E-ն ճիշտ է, ուրեմն կատարվում է S1-ը, եթե ոչ՝ S2-ը
while(E)[S…] ։ ցիկլի օպերատոր, կատարում է S օպերատորները, քանի դեռ E-ն ճիշտ է
for(E1;E2;E3)[S…] ։ ցիկլի օպերատոր
break ։ դադարեցնում է for և while ցիկլների կատարում
continue ։ ավարտում է ցիկլի ընթացիկ իտերացիան՝ անցնելով հաջորդին
halt ։ ավարտում է bc-ի աշխատանքը
return ։ ֆունկցիայից դուրս գալու ժամանակ վերադարձնում է 0
return i ։ ֆունկցիայից դուրս գալու ժամանակ վերադարձնում է i փոփոխականի արժեքը
define a(b) ։ որոշում է սիմվոլիկ անվանում, հաստատում կամ ֆունկցիա
print <список> ։ արտածում
```

Մաթեմատիկական գրադարանի ֆունկցիաները
------------------------------------

Անհրաժեշտության դեպքում հաշվիչին կարելի է միացնել մաթեմատիկական գրադարանը։ Դրա համար հրամանի տողում պետք է նշել `-l` բանալին։

* s(i) ։ i անկյան սինուս, որտեղ i-ն արտահայտվում է ռադիաններով
* c(i) ։ i անկյանկոսինուս, որտեղ i-ն արտահայտվում է ռադիաններով
* a(i) ։ i թվի արքտանգենս, վերադարձնում է անկյունը ռադիաններով
* e(i) ։ էքսպոնենտա
* l(i) ։ i-ի բնական լոգարիթմ
* j(n, x) ։ Բեսելի ֆունկցիա

Օգտագործման օրինակներ
---------------------

```
 $ bc -lq
 for(i=0;i<5;i++) e(i) 
 1.00000000000000000000
 2.71828182845904523536
 7.38905609893065022723
 20.08553692318766774092
 54.59815003314423907811

```

```
 $ bc -lq
 scale = 10
 for(i=5;i<10;i++) j(i,1)
 .0002497577
 .0000209383
 .0000015023
 .0000000942
 .0000000052

```

```
 $ bc -lq
 if ((2+2)==4)print "2+2 = 4" else "2+2 !=4 "
 2+2 = 4
 if ((2+2)==5)print "2+2 = 5" else "2+2 != 5 "
 2+2 != 5

```

```
 $ echo 75*125 | bc
 9375

```

Պի թվի որոշումը՝

```
 $ bc -lq
 scale=100
 4*a(1)
 3.141592653589793238462643383279502884197169399375105820974944592307\
 8164062862089986280348253421170676

```

Արտաքին հղումներ
----------------

* The Open Group կայքում bc-ի մասնագիրը UNIX-ի միասնական մասնագրերում(անգլ.)
* GNU bc-ի համար man-ի տեղեկանքի էջը(անգլ.)