InglesPransesEspanyol

Ad


OnWorks favicon

bc - Online sa Cloud

Patakbuhin ang bc sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command bc na maaaring patakbuhin sa OnWorks free hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


bc - Isang arbitrary na precision calculator na wika

SINTAX


bc [ -hlwsqv ] [mahabang-opsyon] [ file ... ]

DESCRIPTION


bc ay isang wikang sumusuporta sa mga arbitraryong numero ng katumpakan na may interactive na pagpapatupad ng
mga pahayag. Mayroong ilang mga pagkakatulad sa syntax sa C programming language. A
Ang karaniwang library ng matematika ay magagamit sa pamamagitan ng opsyon sa command line. Kung hihilingin, ang math library
ay tinukoy bago iproseso ang anumang mga file. bc nagsisimula sa pagproseso ng code mula sa lahat ng mga file
nakalista sa command line sa nakalistang order. Matapos maproseso ang lahat ng mga file, bc
bumabasa mula sa karaniwang input. Ang lahat ng code ay isinasagawa habang binabasa ito. (Kung ang isang file ay naglalaman ng a
utos na ihinto ang processor, bc ay hindi kailanman magbabasa mula sa karaniwang input.)

Ang bersyong ito ng bc naglalaman ng ilang extension na higit sa tradisyonal bc mga pagpapatupad at
ang POSIX draft standard. Ang mga opsyon sa command line ay maaaring maging sanhi ng pag-print ng mga extension na ito ng a
babala o tatanggihan. Inilalarawan ng dokumentong ito ang wikang tinatanggap nito
processor. Ang mga extension ay makikilala bilang ganoon.

Opsyon
-h, --tulong
I-print ang paggamit at lumabas.

-i, --interactive
Puwersa ang interactive na mode.

-l, --mathlib
Tukuyin ang karaniwang library ng matematika.

-w, --babala
Magbigay ng mga babala para sa mga extension sa POSIX bc.

-s, --pamantayan
Iproseso nang eksakto ang POSIX bc wika.

-q, --tahimik
Huwag i-print ang normal na GNU bc welcome.

-v, --bersyon
I-print ang numero ng bersyon at copyright at huminto.

NUMERO
Ang pinakapangunahing elemento sa bc ay ang numero. Ang mga numero ay arbitraryong mga numero ng katumpakan.
Ang katumpakan na ito ay parehong nasa integer na bahagi at ang fractional na bahagi. Ang lahat ng mga numero ay
kinakatawan sa loob sa decimal at lahat ng pagtutuos ay ginagawa sa decimal. (Ang bersyon na ito
truncates resulta mula sa divide and multiply operations.) Mayroong dalawang katangian ng
mga numero, ang haba at sukat. Ang haba ay ang kabuuang bilang ng makabuluhang decimal
mga digit sa isang numero at ang sukat ay ang kabuuang bilang ng mga decimal na digit pagkatapos ng decimal
punto. Halimbawa:
Ang .000001 ay may haba na 6 at sukat na 6.
Ang 1935.000 ay may haba na 7 at sukat na 3.

MGA VARIABLE
Ang mga numero ay nakaimbak sa dalawang uri ng mga variable, mga simpleng variable at array. Parehong simple
pinangalanan ang mga variable at array variable. Ang mga pangalan ay nagsisimula sa isang titik na sinusundan ng anumang numero
ng mga titik, digit at underscore. Ang lahat ng mga titik ay dapat na maliit na titik. (Buong alpha-numeric
ang mga pangalan ay isang extension. Sa POSIX bc ang lahat ng pangalan ay iisang maliit na titik.) Ang uri
of variable ay malinaw sa pamamagitan ng konteksto dahil ang lahat ng array variable na pangalan ay susundan ng
mga bracket ([]).

Mayroong apat na espesyal na variable, sukatan, ibase, obase, at huli. sukatan tumutukoy kung paano ang ilan
Ang mga operasyon ay gumagamit ng mga digit pagkatapos ng decimal point. Ang default na halaga ng sukatan ay 0. base mula sa
at boss tukuyin ang base ng conversion para sa mga numero ng input at output. Ang default para sa pareho
Ang input at output ay base 10. huli (isang extension) ay isang variable na may halaga ng
huling na-print na numero. Ang mga ito ay tatalakayin nang mas detalyado kung naaangkop. Lahat ng
ang mga variable na ito ay maaaring may mga value na itinalaga sa kanila pati na rin ang ginagamit sa mga expression.

KOMENTARYO
Mga komento sa bc magsimula sa mga karakter /* at nagtatapos sa mga tauhan */. Ang mga komento ay maaaring
magsimula kahit saan at lumabas bilang isang puwang sa input. (Nagdudulot ito ng mga komento sa
limitahan ang iba pang mga input item. Halimbawa, hindi makikita ang isang komento sa gitna ng a
variable na pangalan.) Kasama sa mga komento ang anumang mga bagong linya (katapusan ng linya) sa pagitan ng simula at pagtatapos
ng komento.

Upang suportahan ang paggamit ng mga script para sa bc, isang linyang komento ang naidagdag bilang isang
extension. Magsisimula ang isang komento sa isang linya sa a # karakter at magpapatuloy sa susunod na dulo ng
Ang linya. Ang dulo ng line character ay hindi bahagi ng komento at normal na pinoproseso.

MGA PAGPAPAHAYAG
Ang mga numero ay manipulahin ng mga expression at pahayag. Dahil ang wika ay
idinisenyo upang maging interactive, ang mga pahayag at expression ay isinasagawa sa lalong madaling panahon.
Walang "pangunahing" programa. Sa halip, ang code ay isinasagawa habang ito ay nakatagpo. (Mga Pag-andar,
tinalakay nang detalyado sa ibang pagkakataon, ay tinukoy kapag nakatagpo.)

Ang isang simpleng expression ay pare-pareho lamang. bc kino-convert ang mga constant sa panloob na decimal
mga numero gamit ang kasalukuyang input base, na tinukoy ng variable base mula sa. (May isang
exception in functions.) Ang mga legal na halaga ng base mula sa ay 2 hanggang 16. Pagtatalaga ng halaga
sa labas ng saklaw na ito sa base mula sa ay magreresulta sa isang halaga ng 2 o 16. Maaaring maglaman ang mga numero ng input
ang mga karakter 0–9 at A–F. (Tandaan: Dapat ay mga malalaking titik ang mga ito. Ang mga maliliit na titik ay nagbabago
mga pangalan.) Ang mga solong digit na numero ay palaging may halaga ng digit anuman ang halaga
of base mula sa. (ibig sabihin, A = 10.) Para sa mga multi-digit na numero, bc binabago ang lahat ng input digit na mas malaki o
katumbas ng ibase sa halaga ng base mula sa-1. Ginagawa nito ang numero FFF laging pinakamalaki 3
digit na numero ng input base.

Ang mga buong expression ay katulad ng maraming iba pang mataas na antas ng mga wika. Since isa lang naman
uri ng numero, walang mga panuntunan para sa mga uri ng paghahalo. Sa halip, may mga tuntunin sa
sukat ng mga pagpapahayag. Ang bawat ekspresyon ay may sukat. Ito ay hango sa sukat ng
orihinal na mga numero, ang operasyon na ginawa at sa maraming mga kaso, ang halaga ng variable
sukatan. Mga legal na halaga ng variable sukatan ay 0 hanggang sa pinakamataas na bilang na kinakatawan ng isang C
integer

Sa mga sumusunod na paglalarawan ng mga legal na expression, ang "expr" ay tumutukoy sa isang kumpletong expression
at ang "var" ay tumutukoy sa isang simple o isang array variable. Ang isang simpleng variable ay a
pangalan
at ang isang array variable ay tinukoy bilang
pangalan[ipahayag]
Maliban kung partikular na binanggit ang sukat ng resulta ay ang pinakamataas na sukat ng
mga ekspresyong kasangkot.

- expr Ang resulta ay ang negation ng expression.

++ var Ang variable ay dinadagdagan ng isa at ang bagong halaga ay ang resulta ng
pagpapahayag.

-- var Ang variable ay binabawasan ng isa at ang bagong halaga ay ang resulta ng
pagpapahayag.

ay ++
Ang resulta ng expression ay ang halaga ng variable at pagkatapos ay ang variable ay
dinagdagan ng isa.

var -- Ang resulta ng expression ay ang halaga ng variable at pagkatapos ay ang variable ay
nabawasan ng isa.

expr + expr
Ang resulta ng expression ay ang kabuuan ng dalawang expression.

expr - expr
Ang resulta ng expression ay ang pagkakaiba ng dalawang expression.

expr * expr
Ang resulta ng expression ay produkto ng dalawang expression.

expr / expr
Ang resulta ng expression ay ang quotient ng dalawang expression. Ang sukat ng
ang resulta ay ang halaga ng variable sukatan.

expr % expr
Ang resulta ng expression ay ang "natitira" at ito ay nakalkula sa mga sumusunod
paraan. Upang kalkulahin ang a%b, ang unang a/b ay kinakalkula sa sukatan mga digit. Ginagamit ang resultang iyon
upang kalkulahin ang a-(a/b)*b sa sukat ng maximum na sukatan+scale(b) at scale(a).
If sukatan ay nakatakda sa zero at ang parehong mga expression ay integer ang expression na ito ay ang
integer remaining function.

expr ^ expr
Ang resulta ng expression ay ang halaga ng unang itinaas sa pangalawa. Ang
ang pangalawang expression ay dapat na isang integer. (Kung ang pangalawang expression ay hindi isang integer,
isang babala ay nabuo at ang expression ay pinutol upang makakuha ng isang integer na halaga.)
Ang sukat ng resulta ay sukatan kung ang exponent ay negatibo. Kung ang exponent ay
positibo ang sukat ng resulta ay ang pinakamababa sa sukat ng una
expression na di-time ang halaga ng exponent at ang maximum ng sukatan at ang sukat
ng unang pagpapahayag. (hal. scale(a^b) = min(scale(a)*b, max( sukatan,
scale(a))).) Dapat tandaan na palaging ibabalik ng expr^0 ang halaga ng 1.

( expr )
Binabago nito ang karaniwang precedence upang pilitin ang pagsusuri ng expression.

var = expr
Ang variable ay itinalaga ang halaga ng expression.

var = expr
Ito ay katumbas ng "var = var expr" na may pagbubukod na ang "var" na bahagi
ay sinusuri ng isang beses lamang. Maaari itong gumawa ng pagkakaiba kung ang "var" ay isang array.

Ang mga relational expression ay isang espesyal na uri ng pagpapahayag na palaging sinusuri sa 0 o 1, 0
kung mali ang ugnayan at 1 kung tama ang ugnayan. Maaaring lumitaw ang mga ito sa anumang legal
pagpapahayag. (Ang POSIX bc ay nangangailangan na ang mga relational na expression ay ginagamit lamang sa kung, habang,
at para sa mga pahayag at na isang relational test lamang ang maaaring gawin sa kanila.) Ang relational
ang mga operator ay

expr1 < expr2
Ang resulta ay 1 kung ang expr1 ay mas mababa sa expr2.

expr1 <= expr2
Ang resulta ay 1 kung ang expr1 ay mas mababa sa o katumbas ng expr2.

expr1 > expr2
Ang resulta ay 1 kung ang expr1 ay mahigpit na mas malaki kaysa sa expr2.

expr1 >= expr2
Ang resulta ay 1 kung ang expr1 ay mas malaki kaysa o katumbas ng expr2.

expr1 == expr2
Ang resulta ay 1 kung ang expr1 ay katumbas ng expr2.

expr1 != expr2
Ang resulta ay 1 kung ang expr1 ay hindi katumbas ng expr2.

Ang mga pagpapatakbo ng Boolean ay ligal din. (POSIX bc WALANG boolean operations). Ang
resulta ng lahat ng boolean operations ay 0 at 1 (para sa false at true) gaya ng relational
mga ekspresyon. Ang mga boolean operator ay:

!expr Ang resulta ay 1 kung expr ay 0.

expr && expr
Ang resulta ay 1 kung ang parehong mga expression ay hindi zero.

expr || expr
Ang resulta ay 1 kung ang alinmang expression ay hindi zero.

Ang precedence ng expression ay ang mga sumusunod: (pinakamababa hanggang pinakamataas)
|| operator, naiwang nag-uugnay
&& operator, naiwang nag-uugnay
! operator, hindi nauugnay
Relational operator, naiwang associative
Assignment operator, right associative
+ at - mga operator, naiwang nag-uugnay
*, / at % na mga operator, iniwan ang associative
^ operator, right associative
unary - operator, nonassociative
++ at -- operator, hindi nauugnay

Ang precedence na ito ay pinili upang ang POSIX compliant bc tatakbo nang tama ang mga programa. Ito
ay magiging sanhi ng paggamit ng relational at lohikal na mga operator na magkaroon ng ilang hindi pangkaraniwang pag-uugali
kapag ginamit sa mga expression ng pagtatalaga. Isaalang-alang ang expression:
a = 3 < 5

Karamihan sa mga programmer ng C ay ipagpalagay na ito ay magtatalaga ng resulta ng "3 < 5" (ang halaga 1) sa
ang variable na "a". Ano ang ginagawa nito sa bc ay italaga ang halaga 3 sa variable na "a" at pagkatapos
ihambing ang 3 hanggang 5. Pinakamainam na gumamit ng panaklong kapag gumagamit ng relational at logical operator
kasama ang mga operator ng pagtatalaga.

Mayroong ilang higit pang mga espesyal na expression na ibinigay sa bc. Ang mga ito ay may kinalaman sa
mga function na tinukoy ng gumagamit at mga karaniwang function. Lumilitaw silang lahat bilang "pangalan(parameter)".
Tingnan ang seksyon sa mga function para sa mga function na tinukoy ng user. Ang mga karaniwang pag-andar ay:

haba ( expression )
Ang halaga ng function na haba ay ang bilang ng mga makabuluhang digit sa
pagpapahayag.

basahin ( )
Ang read function (isang extension) ay magbabasa ng numero mula sa karaniwang input,
hindi alintana kung saan nangyayari ang function. Mag-ingat, maaari itong magdulot ng mga problema sa
paghahalo ng data at programa sa karaniwang input. Ang pinakamahusay na paggamit para sa function na ito
ay nasa isang naunang nakasulat na programa na nangangailangan ng input mula sa user, ngunit hindi kailanman pinapayagan
code ng programa upang maging input mula sa gumagamit. Ang halaga ng read function ay ang
numerong binasa mula sa karaniwang input gamit ang kasalukuyang halaga ng variable base mula sa
para sa conversion base.

sukat (expression)
Ang halaga ng scale function ay ang bilang ng mga digit pagkatapos ng decimal point in
ang ekspresyon

sqrt ( expression )
Ang halaga ng sqrt function ay ang square root ng expression. Kung ang
negatibo ang expression, nabuo ang isang error sa run time.

Mga pahayag
Ang mga pahayag (tulad ng karamihan sa mga wikang algebraic) ay nagbibigay ng pagkakasunud-sunod ng pagpapahayag
pagsusuri. Sa bc ang mga pahayag ay isinasagawa "sa lalong madaling panahon." Ang pagpapatupad ay nangyayari kapag
isang bagong linya sa nakatagpo at mayroong isa o higit pang kumpletong mga pahayag. Dahil dito
agarang pagpapatupad, ang mga bagong linya ay napakahalaga sa bc. Sa katunayan, parehong semicolon at a
newline ay ginagamit bilang mga separator ng pahayag. Ang hindi wastong pagkakalagay ng bagong linya ay magdudulot ng a
error sa syntax. Dahil ang mga bagong linya ay mga separator ng pahayag, posibleng magtago ng bagong linya
sa pamamagitan ng paggamit ng backslash character. Ang pagkakasunod-sunod "\ ", saan lalabas ba ang bagong linya
sa bc bilang whitespace sa halip na isang bagong linya. Ang listahan ng pahayag ay isang serye ng mga pahayag
pinaghihiwalay ng mga semicolon at bagong linya. Ang sumusunod ay isang listahan ng bc mga pahayag at kung ano
ginagawa nila: (Ang mga bagay na nakapaloob sa mga bracket ([]) ay mga opsyonal na bahagi ng pahayag.)

pagpapahayag
Ang pahayag na ito ay gumagawa ng isa sa dalawang bagay. Kung ang expression ay nagsisimula sa "
...", ito ay itinuturing na isang pahayag ng takdang-aralin. Kung ang
Ang expression ay hindi isang pahayag ng pagtatalaga, ang expression ay sinusuri at naka-print
sa output. Matapos mai-print ang numero, isang bagong linya ang ipi-print. Halimbawa,
Ang "a=1" ay isang statement ng pagtatalaga at ang "(a=1)" ay isang expression na may naka-embed
takdang-aralin. Ang lahat ng mga numero na naka-print ay naka-print sa base na tinukoy ng
nagbabago boss. Ang mga legal na halaga para sa boss ay 2 hanggang BC_BASE_MAX. (Tingnan ang
LIMITAS ng seksyon.) Para sa mga base 2 hanggang 16, ang karaniwang paraan ng pagsulat ng mga numero ay
ginamit. Para sa mga base na higit sa 16, bc gumagamit ng multi-character digit na paraan ng
pag-print ng mga numero kung saan ang bawat mas mataas na base digit ay naka-print bilang base 10 na numero.
Ang mga multi-character na digit ay pinaghihiwalay ng mga puwang. Ang bawat digit ay naglalaman ng numero
ng mga character na kinakailangan upang kumatawan sa base sampung halaga ng "obase-1". Dahil mga numero
ay may di-makatwirang katumpakan, ang ilang mga numero ay maaaring hindi napi-print sa isang output
linya. Ang mahahabang numerong ito ay hahatiin sa mga linya gamit ang "\" bilang huli
karakter sa isang linya. Ang maximum na bilang ng mga character na naka-print sa bawat linya ay 70. Dahil
sa interactive na katangian ng bc, ang pag-print ng numero ay nagdudulot ng side effect ng
pagtatalaga ng naka-print na halaga sa espesyal na variable huli. Ito ay nagpapahintulot sa gumagamit na
bawiin ang huling halaga na na-print nang hindi kinakailangang muling i-type ang expression na naka-print
ang numero. Nagtatalaga sa huli ay legal at o-overwrite ang huling naka-print na halaga
kasama ang nakatalagang halaga. Ang bagong itinalagang halaga ay mananatili hanggang sa susunod
numero ay naka-print o ibang halaga ay itinalaga sa huli. (Ang ilang mga pag-install ay maaaring
payagan ang paggamit ng isang solong tuldok (.) na hindi bahagi ng isang numero bilang isang maikling kamay
notasyon para sa para sa huli.)

string Ang string ay naka-print sa output. Nagsisimula ang mga string sa isang double quote character
at naglalaman ng lahat ng mga character hanggang sa susunod na double quote character. Lahat ng character
ay literal na kinuha, kabilang ang anumang bagong linya. Walang bagong linyang character ang napi-print pagkatapos
ang tali.

i-print listahan
Ang print statement (isang extension) ay nagbibigay ng isa pang paraan ng output. Ang listahan"
ay isang listahan ng mga string at expression na pinaghihiwalay ng mga kuwit. Ang bawat string o
expression ay naka-print sa pagkakasunud-sunod ng listahan. Walang napi-print na pagtatapos ng bagong linya.
Ang mga expression ay sinusuri at ang kanilang halaga ay naka-print at itinalaga sa variable
huli. Ang mga string sa print statement ay naka-print sa output at maaaring naglalaman
mga espesyal na karakter. Ang mga espesyal na character ay nagsisimula sa backslash na character (\).
Ang mga espesyal na karakter na kinikilala ng bc ay "a" (alerto o bell), "b" (backspace),
"f" (form feed), "n" (newline), "r" (carriage return), "q" (double quote), "t"
(tab), at "\" (backslash). Anumang ibang karakter na sumusunod sa backslash ay magiging
hindi pinansin

{ statement_list }
Ito ang tambalang pahayag. Nagbibigay-daan ito sa maramihang mga pahayag na mapangkat
magkasama para sa pagpapatupad.

if ( expression ) pahayag1 [iba pahayag2]
Ang if statement ay sinusuri ang expression at nagsasagawa ng statement1 o statement2
depende sa halaga ng expression. Kung ang expression ay hindi zero,
statement1 ay naisakatuparan. Kung ang statement2 ay naroroon at ang halaga ng expression
ay 0, pagkatapos ay ipapatupad ang statement2. (Ang ibang sugnay ay isang extension.)

habang ( pagpapahayag ) pahayag
Ang habang pahayag ay isasagawa ang pahayag habang ang expression ay hindi zero.
Sinusuri nito ang expression bago ang bawat pagpapatupad ng pahayag. Pagwawakas
ng loop ay sanhi ng isang zero expression value o ang pagpapatupad ng break
pahayag.

para ( [expression1] ; [expression2] ; [expression3] ) na pahayag
Ang para sa pahayag ay kumokontrol sa paulit-ulit na pagpapatupad ng pahayag. Expression1 ay
nasuri bago ang loop. Ang Expression2 ay sinusuri bago ang bawat pagpapatupad ng
pahayag. Kung ito ay hindi zero, ang pahayag ay sinusuri. Kung ito ay zero, ang loop
ay tinapos na. Pagkatapos ng bawat pagpapatupad ng pahayag, ang expression3 ay sinusuri
bago ang muling pagsusuri ng pagpapahayag2. Kung nawawala ang expression1 o expression3,
walang sinusuri sa puntong susuriin sila. Kung ang expression2 ay
nawawala, ito ay kapareho ng pagpapalit ng value 1 para sa expression2. (Ang opsyonal
Ang mga expression ay isang extension. POSIX bc nangangailangan ng lahat ng tatlong expression.) Ang
sumusunod ay katumbas na code para sa para sa pahayag:
pagpapahayag1;
habang (expression2) {
pahayag;
pagpapahayag3;
}

masira Ang pahayag na ito ay nagdudulot ng sapilitang paglabas ng pinakahuling kalakip na habang pahayag o
para sa pahayag.

magpatuloy
Ang continue statement (isang extension) ay nagiging sanhi ng pinakakamakailang kalakip para sa
pahayag upang simulan ang susunod na pag-ulit.

ano ba Ang pahayag na huminto (isang extension) ay isang naisakatuparan na pahayag na nagiging sanhi ng bc
processor na huminto lamang kapag ito ay naisakatuparan. Halimbawa, "kung (0 == 1) huminto" ay
hindi sanhi bc upang wakasan dahil ang paghinto ay hindi naisakatuparan.

pagbabalik Ibalik ang halaga 0 mula sa isang function. (Tingnan ang seksyon sa mga function.)

pagbabalik (ekspresyon)
Ibalik ang halaga ng expression mula sa isang function. (Tingnan ang seksyon sa
functions.) Bilang extension, hindi kailangan ang parenthesis.

PSEUDO Mga pahayag
Ang mga pahayag na ito ay hindi mga pahayag sa tradisyonal na kahulugan. Hindi sila pinapatay
mga pahayag. Ang kanilang pag-andar ay ginaganap sa "compile" na oras.

mga limitasyon I-print ang mga lokal na limitasyon na ipinapatupad ng lokal na bersyon ng bc. Ito ay isang extension.

umalis Kapag binasa ang quit statement, ang bc ang processor ay winakasan, anuman ang
kung saan matatagpuan ang pahayag ng pagtigil. Halimbawa, "kung (0 == 1) quit" ay magiging sanhi bc
upang wakasan.

garantiya
Mag-print ng mas mahabang warranty notice. Ito ay isang extension.

Mga function
Ang mga function ay nagbibigay ng isang paraan ng pagtukoy ng isang computation na maaaring isagawa sa ibang pagkakataon.
Mga function sa bc palaging kalkulahin ang isang halaga at ibalik ito sa tumatawag. Mga kahulugan ng function
ay "dynamic" sa kahulugan na ang isang function ay hindi natukoy hanggang sa isang kahulugan ay nakatagpo
sa input. Ang kahulugang iyon ay gagamitin hanggang sa isa pang function ng kahulugan para sa pareho
pangalan ay nakatagpo. Papalitan ng bagong kahulugan ang mas lumang kahulugan. Isang function
ay tinukoy bilang mga sumusunod:
magtakda pangalan ( parameter ) { bagong linya
auto_list statement_list }
Ang isang function na tawag ay isang pagpapahayag lamang ng form na "pangalan(parameter)".

Ang mga parameter ay mga numero o array (isang extension). Sa kahulugan ng function, zero o higit pa
ang mga parameter ay tinutukoy sa pamamagitan ng paglilista ng kanilang mga pangalan na pinaghihiwalay ng mga kuwit. Ang lahat ng mga parameter ay
tawag sa pamamagitan ng mga parameter ng halaga. Ang mga array ay tinukoy sa kahulugan ng parameter ng
notasyon "pangalan[]". Sa function call, ang mga aktwal na parameter ay buong expression para sa
mga parameter ng numero. Ang parehong notasyon ay ginagamit para sa pagpasa ng mga array gaya ng para sa pagtukoy ng array
mga parameter. Ang pinangalanang array ay ipinasa ng halaga sa function. Dahil function
ang mga kahulugan ay dynamic, ang mga numero at uri ng parameter ay sinusuri kapag ang isang function ay
tinawag. Ang anumang hindi pagkakatugma sa bilang o mga uri ng mga parameter ay magdudulot ng error sa runtime. A
Ang runtime error ay magaganap din para sa tawag sa isang hindi natukoy na function.

Ang auto_list ay isang opsyonal na listahan ng mga variable na para sa "lokal" na paggamit. Ang syntax ng
ang auto list (kung naroroon) ay "kotse pangalan, ... ;". (Ang semicolon ay opsyonal.) Bawat isa pangalan
ay ang pangalan ng isang auto variable. Maaaring tukuyin ang mga array sa pamamagitan ng paggamit ng parehong notasyon bilang
ginagamit sa mga parameter. Ang mga variable na ito ay itinulak ang kanilang mga halaga sa isang stack sa simula ng
ang function. Ang mga variable ay pinasimulan sa zero at ginagamit sa buong
pagpapatupad ng function. Sa paglabas ng function, ang mga variable na ito ay na-pop upang ang
ang orihinal na halaga (sa oras ng function na tawag) ng mga variable na ito ay naibalik. Ang
ang mga parameter ay talagang mga auto variable na pinasimulan sa isang value na ibinigay sa
function na tawag. Ang mga awtomatikong variable ay iba kaysa sa tradisyonal na mga lokal na variable dahil kung
Tinatawag ng function A ang function B, maaaring ma-access ng B ang mga auto variable ng function A sa pamamagitan lamang ng paggamit ng
parehong pangalan, maliban kung tinawag sila ng function B na mga auto variable. Dahil sa ang katunayan na ang auto
ang mga variable at parameter ay itinutulak sa isang stack, bc sumusuporta sa mga recursive function.

Ang function body ay isang listahan ng bc mga pahayag. Muli, ang mga pahayag ay pinaghihiwalay ng
semicolon o bagong linya. Ang mga return statement ay nagdudulot ng pagwawakas ng isang function at ang
pagbabalik ng isang halaga. Mayroong dalawang bersyon ng return statement. Ang unang anyo,
"pagbabalik", ibinabalik ang halaga 0 sa expression ng pagtawag. Ang pangalawang anyo, "pagbabalik (
pagpapahayag )", kinakalkula ang halaga ng expression at ibinabalik ang halagang iyon sa pagtawag
pagpapahayag. May ipinahiwatig na"pagbabalik (0)" sa dulo ng bawat function. Nagbibigay-daan ito sa a
function upang wakasan at ibalik ang 0 nang walang tahasang return statement.

Binabago din ng mga function ang paggamit ng variable base mula sa. Lahat ng mga constant sa function body
ay mako-convert gamit ang halaga ng base mula sa sa oras ng function na tawag. Mga pagbabago ng
base mula sa ay hindi papansinin sa panahon ng pagpapatupad ng function maliban sa pamantayan
tungkulin basahin, na palaging gagamit ng kasalukuyang halaga ng base mula sa para sa conversion ng mga numero.

Ilang extension ang naidagdag sa mga function. Una, ang format ng kahulugan ay may
medyo relaxed. Ang pamantayan ay nangangailangan ng pambungad na brace ay nasa parehong linya ng
magtakda keyword at lahat ng iba pang bahagi ay dapat nasa mga sumusunod na linya. Ang bersyon na ito ng bc habilin
payagan ang anumang bilang ng mga bagong linya bago at pagkatapos ng pambungad na brace ng function. Para sa
halimbawa, ang mga sumusunod na kahulugan ay legal.
tukuyin ang d (n) { return (2*n); }
tukuyin ang d (n)
{ bumalik (2*n); }

Maaaring tukuyin ang mga function bilang walang bisa. Ang isang void function ay hindi nagbabalik ng halaga at sa gayon ay maaaring hindi
ginagamit sa anumang lugar na nangangailangan ng halaga. Ang isang void function ay hindi gumagawa ng anumang output kapag
tinatawag sa pamamagitan ng kanyang sarili sa isang input line. Ang pangunahing salita walang bisa ay inilalagay sa pagitan ng susing salita
magtakda at ang pangalan ng function. Halimbawa, isaalang-alang ang sumusunod na sesyon.
tukuyin ang py (y) { print "--->", y, "<---", "\n"; }
tukuyin ang void px (x) { print "--->", x, "<---", "\n"; }
py(1)
--->1<---
0
px(1)
--->1<---
Dahil sa py ay hindi isang void function, ang tawag ng py(1) nagpi-print ng nais na output at pagkatapos
nagpi-print ng pangalawang linya na ang halaga ng function. Dahil ang halaga ng isang function
na hindi binibigyan ng tahasang return statement ay zero, ang zero ay naka-print. Para sa px(1),
walang zero ang naka-print dahil ang function ay isang void function.

Gayundin, idinagdag ang tawag ayon sa variable para sa mga array. Upang magdeklara ng isang tawag sa pamamagitan ng variable array, ang
ang deklarasyon ng array parameter sa kahulugan ng function ay mukhang "*pangalan[]". Ang
Ang tawag sa function ay nananatiling pareho ng tawag ayon sa mga array ng halaga.

MATH LIBRARY
If bc ay tinatawag na may -l opsyon, ang isang math library ay paunang na-load at ang default na sukat ay
itakda sa 20. Kakalkulahin ng mga math function ang kanilang mga resulta sa iskala na itinakda sa oras
ng kanilang tawag. Tinutukoy ng math library ang mga sumusunod na function:

s (x) Ang sine ng x, x ay nasa radians.

c (x) Ang cosine ng x, x ay nasa radians.

sa (x) Ang arctangent ng x, arctangent ay nagbabalik ng mga radian.

l (x) Ang natural na logarithm ng x.

atx) Ang exponential function ng pagtaas ng e sa halagang x.

j (n,x)
Ang Bessel function ng integer order n ng x.

HALIMBAWA
In / Bin / SH, ang sumusunod ay magtatalaga ng halaga ng "pi" sa variable ng shell pi.
pi=$(echo "scale=10; 4*a(1)" | bc -l)

Ang sumusunod ay ang kahulugan ng exponential function na ginagamit sa math library.
Ang function na ito ay nakasulat sa POSIX bc.
sukat = 20

/* Gumagamit ng katotohanan na e^x = (e^(x/2))^2
Kapag ang x ay sapat na maliit, ginagamit namin ang serye:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/

tukuyin ang e(x) {
auto a, d, e, f, i, m, v, z

/* Suriin ang tanda ng x. */
kung (x<0) {
m=1
x = -x
}

/* Precondition x. */
z = sukat;
sukat = 4 + z + .44*x;
habang (x > 1) {
f += 1;
x /= 2;
}

/* Simulan ang mga variable. */
v = 1+x
a = x
d = 1

para sa (i=2; 1; i++) {
e = (a *= x) / (d *= i)
kung (e == 0) {
kung (f>0) habang (f--) v = v*v;
sukat = z
kung (m) bumalik (1/v);
bumalik (v/1);
}
v += e
}
}

Ang sumusunod ay code na gumagamit ng mga pinahabang tampok ng bc upang ipatupad ang isang simpleng programa
para sa pagkalkula ng mga balanse sa checkbook. Ang program na ito ay pinakamahusay na nakatago sa isang file upang ito ay maging
ginamit nang maraming beses nang hindi kinakailangang muling i-type ito sa bawat paggamit.
sukat=2
print "\nSuriin ang programa ng aklat!\n"
print " Tandaan, ang mga deposito ay mga negatibong transaksyon.\n"
print " Lumabas sa pamamagitan ng isang 0 na transaksyon.\n\n"

i-print ang "Initial na balanse?"; bal = basahin()
bal /= 1
i-print ang "\n"
habang (1) {
"kasalukuyang balanse = "; bal
"transaksyon?"; trans = basahin()
kung (trans == 0) break;
bal -= trans
bal /= 1
}
umalis

Ang sumusunod ay ang kahulugan ng recursive factorial function.
tukuyin ang f (x) {
kung (x <= 1) bumalik (1);
bumalik (f(x-1) * x);
}

BASAHIN ANG LINYA AT LIBEDIT Opsyon
GNU bc maaaring i-compile (sa pamamagitan ng opsyon sa pag-configure) para magamit ang GNU Basahin ang linya input editor
library o ang BSD libedit aklatan. Ito ay nagbibigay-daan sa gumagamit na gawin ang pag-edit ng mga linya bago
pagpapadala sa kanila sa bc. Nagbibigay-daan din ito para sa isang kasaysayan ng mga nakaraang linyang na-type. Kapag ganito
ang pagpipilian ay pinili, bc ay may isa pang espesyal na variable. Ang espesyal na variable na ito, kasaysayan is
ang bilang ng mga linya ng kasaysayan na napanatili. Para sa Basahin ang linya, ang halaga ng -1 ay nangangahulugan na ang isang
ang walang limitasyong bilang ng mga linya ng kasaysayan ay pinananatili. Pagtatakda ng halaga ng kasaysayan sa isang
nililimitahan ng positibong numero ang bilang ng mga linya ng kasaysayan sa numerong ibinigay. Ang halaga ng 0
hindi pinapagana ang tampok na kasaysayan. Ang default na halaga ay 100. Para sa higit pang impormasyon, basahin ang
mga manwal ng gumagamit para sa GNU Basahin ang linya, kasaysayan at BSD libedit mga aklatan. Hindi maaaring paganahin ng isa
kapwa Basahin ang linya at libedit sa parehong oras.

Mga pagkakaiba-iba
Ang bersyong ito ng bc ay ipinatupad mula sa draft ng POSIX P1003.2/D11 at naglalaman ng ilan
mga pagkakaiba at extension na nauugnay sa draft at tradisyonal na pagpapatupad. Ito ay
hindi ipinatupad sa tradisyonal na paraan gamit dcNa (1). Ang bersyon na ito ay isang proseso
na nag-parse at nagpapatakbo ng isang byte code na pagsasalin ng programa. May "undocumented"
opsyon (-c) na nagiging sanhi ng programa na i-output ang byte code sa karaniwang output sa halip
ng pagpapatakbo nito. Pangunahing ginamit ito para sa pag-debug ng parser at paghahanda ng matematika
library.

Ang isang pangunahing pinagmumulan ng mga pagkakaiba ay ang mga extension, kung saan ang isang tampok ay pinalawak upang magdagdag ng higit pa
functionality at mga karagdagan, kung saan idinaragdag ang mga bagong feature. Ang sumusunod ay ang listahan ng
mga pagkakaiba at extension.

kapaligiran ng LANG
Ang bersyon na ito ay hindi umaayon sa pamantayan ng POSIX sa pagproseso ng LANG
environment variable at lahat ng environment variable na nagsisimula sa LC_.

mga pangalang Tradisyonal at POSIX bc may iisang titik na mga pangalan para sa mga function, variable at
mga array. Na-extend ang mga ito upang maging mga multi-character na pangalan na nagsisimula sa a
titik at maaaring naglalaman ng mga titik, numero at karakter na may salungguhit.

String
Hindi pinapayagan ang mga string na maglaman ng mga NUL na character. Sinasabi ng POSIX na ang lahat ng mga character ay dapat
isama sa mga string.

huling POSIX bc walang isang huli variable. Ilang pagpapatupad ng bc gamitin ang panahon
(.) sa parehong paraan.

paghahambing
POSIX bc nagbibigay-daan lamang sa paghahambing sa pahayag na kung, sa pahayag habang, at sa
ikalawang pagpapahayag ng para sa pahayag. Gayundin, isang relational operation lamang ang
pinapayagan sa bawat isa sa mga pahayag na iyon.

kung pahayag, ibang sugnay
POSIX bc ay walang ibang sugnay.

para sa pahayag
POSIX bc nangangailangan ng lahat ng mga expression na naroroon sa para sa pahayag.

&&, ||, !
POSIX bc ay walang mga lohikal na operator.

function na basahin
POSIX bc ay walang function na basahin.

nakalimbag na pahayag
POSIX bc ay walang print statement.

ipagpatuloy ang pahayag
POSIX bc walang continue statement.

pahayag sa pagbabalik
POSIX bc nangangailangan ng mga panaklong sa paligid ng return expression.

mga parameter ng array
POSIX bc ay hindi (kasalukuyang) sumusuporta sa mga parameter ng array nang buo. Ang POSIX grammar
nagbibigay-daan para sa mga array sa mga kahulugan ng function, ngunit hindi nagbibigay ng paraan upang tukuyin
isang array bilang isang aktwal na parameter. (Ito ay malamang na isang oversight sa
gramatika.) Tradisyunal na pagpapatupad ng bc mayroon lamang tawag sa pamamagitan ng hanay ng halaga
parameter.

format ng function
POSIX bc nangangailangan ng pambungad na brace sa parehong linya ng magtakda susing salita at ang
kotse pahayag sa susunod na linya.

=+, =-, =*, =/, =%, =^
POSIX bc ay hindi nangangailangan ng mga "lumang istilo" na mga operator ng pagtatalaga na tukuyin.
Maaaring payagan ng bersyong ito ang mga "old style" na mga takdang-aralin na ito. Gamitin ang pahayag ng mga limitasyon sa
tingnan kung sinusuportahan sila ng naka-install na bersyon. Kung sinusuportahan nito ang "lumang istilo"
mga operator ng pagtatalaga, ang pahayag na "a =- 1" ay bababa a ng 1 sa halip na
pagtatakda ng a sa halaga -1.

mga puwang sa mga numero
Iba pang mga pagpapatupad ng bc payagan ang mga puwang sa mga numero. Halimbawa, gagawin ng "x=1 3".
italaga ang halaga 13 sa variable na x. Ang parehong pahayag ay magdudulot ng syntax
error sa bersyong ito ng bc.

mga pagkakamali at pagpapatupad
Ang pagpapatupad na ito ay nag-iiba mula sa iba pang mga pagpapatupad sa mga tuntunin ng magiging code
naisakatuparan kapag natagpuan ang syntax at iba pang mga error sa programa. Kung may syntax error
ay matatagpuan sa isang kahulugan ng function, sinusubukan ng pagbawi ng error na hanapin ang simula ng a
pahayag at patuloy na i-parse ang function. Kapag may nakitang error sa syntax sa
function, ang function ay hindi matatawag at magiging undefined. Mga error sa syntax
sa interactive na execution code ay magpapawalang-bisa sa kasalukuyang execution block. Ang
execution block ay winakasan sa pamamagitan ng dulo ng linya na lalabas pagkatapos ng kumpleto
pagkakasunod-sunod ng mga pahayag. Halimbawa,
a = 1
b = 2
ay may dalawang execution block at
{a = 1
b = 2 }
ay may isang execution block. Ang anumang error sa runtime ay magwawakas sa pagpapatupad ng kasalukuyang
bloke ng pagpapatupad. Ang babala ng runtime ay hindi magwawakas sa kasalukuyang execution block.

Mga agwat
Sa panahon ng isang interactive na session, ang signal ng SIGINT (karaniwang nabuo ng control-
C character mula sa terminal) ay magiging sanhi ng pagpapatupad ng kasalukuyang execution block
maabala. Magpapakita ito ng error na "runtime" na nagsasaad kung aling function ang dating
nagambala. Matapos malinis ang lahat ng mga istraktura ng runtime, magkakaroon ng mensahe
naka-print upang ipaalam sa gumagamit iyon bc ay handa na para sa higit pang input. Lahat ng naunang tinukoy
ang mga function ay nananatiling tinukoy at ang halaga ng lahat ng hindi awtomatikong variable ay ang halaga sa
ang punto ng pagkagambala. Ang lahat ng mga auto variable at mga parameter ng function ay tinanggal
sa panahon ng proseso ng paglilinis. Sa panahon ng hindi interactive na session, ang SIGINT signal
wawakasan ang buong pagtakbo ng bc.

BAWAL
Ang mga sumusunod ay ang kasalukuyang mga limitasyon para dito bc processor. Ang ilan sa kanila ay maaaring
ay binago ng isang pag-install. Gamitin ang pahayag ng mga limitasyon upang makita ang mga aktwal na halaga.

BC_BASE_MAX
Ang maximum na base ng output ay kasalukuyang nakatakda sa 999. Ang maximum na base ng input ay 16.

BC_DIM_MAX
Ito ay kasalukuyang isang arbitrary na limitasyon ng 65535 bilang ipinamahagi. Ang iyong pag-install
maaaring iba.

BC_SCALE_MAX
Ang bilang ng mga digit pagkatapos ng decimal point ay limitado sa INT_MAX digit. Gayundin,
ang bilang ng mga digit bago ang decimal point ay limitado sa INT_MAX digit.

BC_STRING_MAX
Ang limitasyon sa bilang ng mga character sa isang string ay INT_MAX character.

tagapagpatawad
Ang halaga ng exponent sa pagpapatakbo ng pagtaas (^) ay limitado sa LONG_MAX.

variable na pangalan
Ang kasalukuyang limitasyon sa bilang ng mga natatanging pangalan ay 32767 para sa bawat isa sa simple
mga variable, array at function.

Kapaligiran MGA VARIABLE


Ang mga sumusunod na variable ng kapaligiran ay pinoproseso ng bc:

POSIXLY_CORRECT
Ito ay pareho sa -s pagpipilian.

BC_ENV_ARGS
Ito ay isa pang mekanismo upang makakuha ng mga argumento bc. Ang format ay pareho sa
mga argumento ng command line. Ang mga argumentong ito ay unang pinoproseso, kaya ang anumang mga file ay nakalista
sa kapaligiran ang mga argumento ay pinoproseso bago ang anumang command line argument file.
Nagbibigay-daan ito sa user na mag-set up ng "standard" na mga opsyon at mga file na ipoproseso sa
bawat panawagan ng bc. Ang mga file sa mga variable ng kapaligiran ay karaniwang
naglalaman ng mga kahulugan ng function para sa mga function na gustong tukuyin ng user sa bawat oras bc is
tumakbo.

BC_LINE_LENGTH
Ito ay dapat na isang integer na tumutukoy sa bilang ng mga character sa isang linya ng output para sa
numero. Kabilang dito ang backslash at newline na mga character para sa mahabang numero. Bilang
isang extension, hindi pinapagana ng halaga ng zero ang feature na multi-line. Anumang ibang halaga
ng variable na ito na mas mababa sa 3 ay nagtatakda ng haba ng linya sa 70.

DIAGNOSTICS


Kung ang anumang file sa command line ay hindi mabuksan, bc ay mag-uulat na ang file ay
hindi magagamit at wakasan. Gayundin, mayroong compile at run time diagnostics na dapat
maging maliwanag.

Gamitin ang bc online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    Clover EFI bootloader
    Clover EFI bootloader
    Lumipat ang proyekto sa
    https://github.com/CloverHackyColor/CloverBootloader..
    Mga Tampok: I-boot ang macOS, Windows, at Linux
    sa UEFI o legacy mode sa Mac o PC na may
    UE...
    I-download ang Clover EFI bootloader
  • 2
    unitedrpms
    unitedrpms
    Samahan kami sa Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Paganahin ang URPMS repository sa iyong
    sistema -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    I-download ang unitedrpms
  • 3
    Palakasin ang Mga Aklatan ng C++
    Palakasin ang Mga Aklatan ng C++
    Nagbibigay ang Boost ng libreng portable
    peer-reviewed na mga aklatan ng C++. Ang
    ang diin ay sa mga portable na aklatan na
    gumana nang maayos sa C++ Standard Library.
    Tingnan ang http://www.bo...
    I-download ang Boost C++ Libraries
  • 4
    VirtualGL
    VirtualGL
    Ang VirtualGL ay nagre-redirect ng mga 3D na utos mula sa a
    Unix/Linux OpenGL application papunta sa a
    server-side GPU at kino-convert ang
    nag-render ng mga 3D na larawan sa isang video stream
    kung saan ...
    I-download ang VirtualGL
  • 5
    libusb
    libusb
    Library upang paganahin ang espasyo ng gumagamit
    mga programa ng aplikasyon upang makipag-usap
    Mga USB device. Audience: Mga Developer, End
    Mga user/Desktop. Wika ng Programming: C.
    Mga kategorya...
    I-download ang libusb
  • 6
    SWIG
    SWIG
    Ang SWIG ay isang software development tool
    na nag-uugnay sa mga programang nakasulat sa C at
    C++ na may iba't ibang mataas na antas
    mga programming language. Ang SWIG ay ginagamit kasama ng
    iba...
    I-download ang SWIG
  • Marami pa »

Linux command

Ad