Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
UNIX жүйесінде кез келген дәлдікте арифметикалық тілді іске асыратын құрал.
UNIX utility which implements an arbitrary precision arithmetic language
bc, яғни "негізгі калькулятор", – C бағдарламалау тіліне ұқсас синтаксисі бар, кез келген дәлдіктегі есептеулерді жүзеге асыратын тіл. bc көбінесе математикалық скрипттерді жазуға немесе интерактивті математикалық орта ретінде қолданылады.
bc, for basic calculator, is "an arbitrary precision calculator language" with syntax similar to the C programming language. bc is typically used as either a mathematical scripting language or as an interactive mathematical shell.
Шолу
Интерактивті пайдалану үшін Unix командалық қабылдағышында bc командасын теріп, мысалы, математикалық өрнекті енгізіп, нәтижесі шығарылады. bc кез келген дәлдікпен жұмыс істей алады, бірақ ол әдепкі бойынша ондық нүктеден кейін нөл цифрді қолданады, сондықтан өрнегі нәтижесін береді (нәтижелер кесіледі, дөңгеленбейді). Бұл фактіні білмейтін жаңа bc пайдаланушыларын таң қалдыруы мүмкін. bc опциясы әдепкі масштабты (ондық нүктеден кейінгі цифрлар) 20-ға орнатады және тілге бірнеше қосымша математикалық функцияларды қосады.
A typical interactive usage is typing the command bc on a Unix command prompt and entering a mathematical expression, such as , whereupon will be output. While bc can work with arbitrary precision, it actually defaults to zero digits after the decimal point, so the expression yields (results are truncated, not rounded). This can surprise new bc users unaware of this fact. The option to bc sets the default scale (digits after the decimal point) to 20 and adds several additional mathematical functions to the language.
Тарих
bc алғаш рет 1975 жылы Unix жүйесінің 6-шы нұсқасында пайда болды. Ол Bell Labs қызметкері Лоринда Черри Роберт Моррис пен Черри жасаған кез келген дәлдікте есептеулерді жүзеге асыратын dc калькуляторына интерфейс ретінде жазылған. dc кері польшалық нотацияда берілген кез келген дәлдіктегі есептеулерді орындады. bc C тіліне ұқсас синтаксисті dc нотациясына түрлендіретін және нәтижелерді dc арқылы жіберетін қарапайым компилятор (бірнеше жүз жол кодтан тұратын жалғыз yacc бастапқы файлы) арқылы дәстүрлі бағдарламалау тілінің интерфейсін ұсынды. 1991 жылы POSIX bc-ді қатаң түрде анықтап, стандарттады. Осы стандарттың үш іске асырылуы бүгінгі күнге дейін сақталған: Біріншісі – Unix және Plan 9 жүйелерінде сақталған dc-ге интерфейс ретіндегі дәстүрлі Unix іске асырылуы. Екіншісі – 1991 жылы Филип А. Нельсон алғаш шығарған GNU bc еркін бағдарламалық құралы. GNU нұсқасы POSIX стандартынан асып түсетін көптеген кеңейтулерге ие және енді dc-ге интерфейс емес (ол байт-кодты түсіндіретін программа). Үшіншісі – 2003 жылы OpenBSD жүйесінде қайта іске асырылған нұсқа.
bc first appeared in Version 6 Unix in 1975. It was written by Lorinda Cherry of Bell Labs as a front end to dc, an arbitrary precision calculator written by Robert Morris and Cherry. dc performed arbitrary precision computations specified in reverse Polish notation. bc provided a conventional programming language interface to the same capability via a simple compiler (a single yacc source file comprising a few hundred lines of code), which converted a C like syntax into dc notation and piped the results through dc. In 1991, POSIX rigorously defined and standardized bc. Three implementations of this standard survive today: The first is the traditional Unix implementation, a front end to dc, which survives in Unix and Plan 9 systems. The second is the free software GNU bc, first released in 1991 by Philip A. Nelson. The GNU implementation has numerous extensions beyond the POSIX standard and is no longer a front end to dc (it is a bytecode interpreter). The third is a re implementation by OpenBSD in 2003.
POSIX bc
POSIX стандартталған bc тілі дәстүрлі түрде dc бағдарламалау тілінде, dc тілінің күрделі синтаксисінсіз оның мүмкіндіктеріне жоғары деңгейде қол жеткізу үшін бағдарлама ретінде жазылады. Осы форматта bc тілінде бір әріпті айнымалылар, массивтер және функциялар атаулары, сондай-ақ көптеген стандартты арифметикалық операторлар және C тілінен таныс басқару ағыны құрылымдары (if(шарт), while(шарт) және for(бастау;шарт;арттыру)) бар. C тілінен айырмашылығы, if шарттан кейін else болуы міндетті емес. Функциялар define кілт сөзін пайдаланып анықталады, ал олардан мәндер return кілт сөзінен кейін жақшада көрсетілген мән арқылы қайтарылады. auto кілт сөзі (C тілінде қосымша) функцияның жергілікті айнымалысын жариялау үшін қолданылады. Барлық сандар мен айнымалылардың мәні – кез келген дәлдіктегі сандар, олардың дәлдігі (ондық таңбалар саны) global scale айнымалысымен анықталады. Кіріс (интерактивті режимде), шығыс және бағдарлама тұрақтыларының сандық негізін ibase (кіріс негізі) және obase (шығыс негізі) атты резервтелген айнымалыларды орнату арқылы белгілеуге болады. Шығыс нәтиже есептеу нәтижесін айнымалыға жатқызбау арқылы жасалады. bc кодына C тіліндегі /* және */ (бастау және аяқтау) символдары арқылы түсіндірмелер қосуға болады.
The POSIX standardized bc language is traditionally written as a program in the dc programming language to provide a higher level of access to the features of the dc language without the complexities of dc's terse syntax. In this form, the bc language contains single letter variable, array and function names and most standard arithmetic operators, as well as the familiar control flow constructs (if(cond) , while(cond) and for(init;cond;inc) ) from C. Unlike C, an if clause may not be followed by an else. Functions are defined using a define keyword, and values are returned from them using a return followed by the return value in parentheses. The auto keyword (optional in C) is used to declare a variable as local to a function. All numbers and variable contents are arbitrary precision numbers whose precision (in decimal places) is determined by the global scale variable. The numeric base of input (in interactive mode), output and program constants may be specified by setting the reserved ibase (input base) and obase (output base) variables. Output is generated by deliberately not assigning the result of a calculation to a variable. Comments may be added to bc code by use of the C /* and */ (start and end comment) symbols.
Тіркелген функциялары
Квадрат түбірді есептеуге арналған sqrt функциясы POSIX bc-дегі жалғыз кіріктірілген математикалық функция болып табылады. Басқа функциялар сыртқы стандартты кітапханада қолжетімді. Оның аргументінің дәлдігін анықтау үшін масштаб (scale) функциясы (scale айнымалысымен бірге) және оның аргументіндегі маңызды ондық цифрлардың санын анықтау үшін ұзындық (length) функциясы да кіріктірілген.
The sqrt function for calculating square roots is POSIX bc's only built in mathematical function. Other functions are available in an external standard library. The scale function for determining the precision (as with the scale variable) of its argument and the length function for determining the number of significant decimal digits in its argument are also built in.
Стандартты кітапхана функциялары
bc-дің стандартты математикалық кітапханасы (l опциясымен анықталады) синус, косинус, арктангенс, табиғи логарифм, экспоненциалдық функция және екі параметрлі Бессел функциясы J-ді есептеуге арналған функцияларды қамтиды. Көптеген стандартты математикалық функцияларды (соның ішінде басқа кері тригонометриялық функцияларды) осылардың көмегімен құрастыруға болады. Көптеген басқа функциялардың нұсқаларын сыртқы сілтемелерде қараңыз. +bc стандартты кітапханасы bc командаларыФункция сипаттамалары(x) Синус x радиандағы бұрышты қабылдайдыc(x) Косинус x радиандағы бұрышты қабылдайдыa(x) Арктангенс радианмен қайтарадыl(x) Табиғи логарифмді қайтарадыe(x) Экспоненциалдық функция j(n,x) Бессел функциясы x-тің n-ші ретті Бессел функциясын қайтарады. l опциясы масштабты 20-ға өзгертеді, сондықтан модульдеу сияқты операциялар күтпеген нәтижелерді беруі мүмкін. Мысалы, bc l командасын жазып, содан кейін print 3%2 командасын орындасаңыз, 0 шығады. Ал егер bc l командасынан кейін scale=0 деп жазып, содан кейін print 3%2 командасын орындасаңыз, 1 шығады.
bc's standard math library (defined with the l option) contains functions for calculating sine, cosine, arctangent, natural logarithm, the exponential function and the two parameter Bessel function J. Most standard mathematical functions (including the other inverse trigonometric functions) can be constructed using these. See external links for implementations of many other functions. +The bc standard librarybc commandFunctionDescriptions(x)SineTakes x, an angle in radiansc(x)CosineTakes x, an angle in radiansa(x)ArctangentReturns radiansl(x)Natural logarithme(x)Exponential function j(n,x)Bessel functionReturns the order n Bessel function of x. The l option changes the scale to 20, so things such as modulo may work unexpectedly. For example, writing bc l and then the command print 3%2 outputs 0. But writing scale=0 after bc l and then the command print 3%2 will output 1.
9 б. з. б. жоспар
9 bc жоспары POSIX bc-мен толық сәйкес, бірақ қосымша басып шығару операторы бар.
Plan 9 bc is identical to POSIX bc but for an additional print statement.
GNU bc
GNU bc POSIX стандарты негізінде жасалған және көптеген жақсартуларды қамтиды. Ол POSIX стандартының dc негізіндегі іске асырылымдарынан толыққандай бөлек және C тілінде жазылған. Дегенмен, ол толық кері үйлесімді, себебі барлық POSIX bc бағдарламалары өзгеріссіз GNU bc бағдарламалары ретінде жұмыс істейді. GNU bc айнымалылары, массивтері және функция атаулары бірнеше таңбадан тұруы мүмкін, C тілінен қосымша операторлар енгізілген, сондай-ақ, егер шартынан кейін else жазылуы мүмкін. Нәтижелерді шығару есептеу нәтижесін өзгермеліге тікелей тағайындамау арқылы (POSIX әдісі) немесе қосылған басып шығару операторын пайдалану арқылы жүзеге асырылады. Сонымен қатар, read операторы есептеу барысында санды интерактивті түрде енгізуге мүмкіндік береді. C стиліндегі түсініктемелерге қоса, # таңбасынан кейін жаңа жолға дейінгі барлық нәрсе ескерілмейді. Соңғы есептеудің мәні әрқашан қосымша құрылған "last" айнымалысында сақталады.
GNU bc derives from the POSIX standard and includes many enhancements. It is entirely separate from dc based implementations of the POSIX standard and is instead written in C. Nevertheless, it is fully backwards compatible as all POSIX bc programs will run unmodified as GNU bc programs. GNU bc variables, arrays and function names may contain more than one character, some more operators have been included from C, and notably, an if clause may be followed by an else. Output is achieved either by deliberately not assigning a result of a calculation to a variable (the POSIX way) or by using the added print statement. Furthermore, a read statement allows the interactive input of a number into a running calculation. In addition to C style comments, a # character will cause everything after it until the next new line to be ignored. The value of the last calculation is always stored within the additional built in last variable.
Функциялар
GNU bc-де қолжетімді барлық функциялар POSIX стандартынан алынған. GNU таратылымында стандартты түрде қосымша функциялар көзделмеген.
All functions available in GNU bc are inherited from POSIX. No further functions are provided as standard with the GNU distribution.
Үлгі коды
bc ^ операторы оң жағында тек бүтін санмен белгіленген дәрежеге ғана мүмкіндік береді, сондықтан bc қолданушысы жасайтын алғашқы функциялардың бірі – қалқыма нүктелік көрсеткіші бар дәреже функциясы болуы мүмкін. Төмендегі екеуі де стандартты кітапхана қосылған деп есептейді:
Since the bc ^ operator only allows an integer power to its right, one of the first functions a bc user might write is a power function with a floating point exponent. Both of the below assume the standard library has been included: