انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

bcposix - آنلاین در ابر

bcposix را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور bcposix است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


bc - زبان حسابی با دقت دلخواه

خلاصه


bc [-l] [پرونده...]

شرح


La bc ابزار باید یک ماشین حساب دقیق دلخواه را پیاده سازی کند. باید ورودی از
هر فایل داده شده، سپس از ورودی استاندارد بخوانید. اگر ورودی استاندارد و استاندارد
خروجی به bc به یک ترمینال، فراخوانی متصل می شوند bc محسوب می شود
تعاملی، باعث ایجاد محدودیت های رفتاری می شود که در بخش های زیر توضیح داده شده است.

OPTIONS


La bc ابزار باید با حجم تعاریف پایه POSIX.1-2008 مطابقت داشته باشد، بخش 12.2,
سودمندی نحو دستورالعمل.

گزینه زیر باید پشتیبانی شود:

-l (حرف ell.) توابع ریاضی را تعریف کنید و مقداردهی اولیه کنید مقیاس در عوض به 20 رسید
از صفر پیش فرض؛ بخش توضیحات گسترده را ببینید.

عملگرها


عملوند زیر باید پشتیبانی شود:

پرونده نام مسیر یک فایل متنی حاوی bc بیانیه های برنامه گذشته از همه اینها پروندهداشته باشید
خوانده شده، bc باید ورودی استاندارد را بخواند.

STDIN


به بخش فایل های ورودی مراجعه کنید.

INPUT فایل ها


فایل های ورودی باید فایل های متنی حاوی دنباله ای از نظرات، عبارات و
تعاریف تابعی که باید هنگام خواندن اجرا شوند.

محیط زیست متغیرها


متغیرهای محیطی زیر باید بر اجرای آن تأثیر بگذارند bc:

زبان یک مقدار پیش فرض برای متغیرهای بین المللی سازی که تنظیم نشده اند یا
خالی. (به جلد تعاریف پایه POSIX.1-2008 مراجعه کنید، بخش 8.2,
بین المللی کردن متغیر برای تقدم بین المللی شدن
متغیرهایی که برای تعیین مقادیر دسته‌های محلی استفاده می‌شوند.)

LC_ALL اگر روی یک مقدار رشته ای غیر خالی تنظیم شده است، مقادیر بقیه را لغو کنید
متغیرهای بین المللی سازی

LC_CTYPE محلی را برای تفسیر توالی بایت های داده متنی تعیین کنید
به عنوان کاراکتر (به عنوان مثال، تک بایت در مقابل کاراکترهای چند بایتی در
آرگومان ها و فایل های ورودی).

LC_MESSAGES
محلی را که باید برای تأثیرگذاری بر قالب و محتویات استفاده شود، تعیین کنید
پیام های تشخیصی با خطای استاندارد نوشته شده است.

nlspath تعیین محل کاتالوگ پیام برای پردازش LC_MESSAGES.

نامتقارن رویدادها


پیش فرض

با توجه به


خروجی bc ابزار باید توسط برنامه خوانده شده کنترل شود و از صفر تشکیل شود
یا خطوط بیشتری حاوی مقدار تمام عبارات اجرا شده بدون تخصیص. را
ریشه و دقت خروجی باید توسط مقادیر کنترل شود چاق و مقیاس
متغیرها؛ بخش توضیحات گسترده را ببینید.

STDERR


خطای استاندارد باید فقط برای پیام های تشخیصی استفاده شود.

OUTPUT فایل ها


ندارد.

تمدید شده شرح


دستور زبان
دستور زبان در این بخش و قراردادهای لغوی در بخش بعدی باید
با هم نحو برای را توصیف کنید bc برنامه ها. قراردادهای کلی برای این سبک از
گرامر در شرح داده شده است بخش 1.3, دستور زبان کنوانسیون. یک برنامه معتبر می تواند باشد
به عنوان نماد غیر پایانی نشان داده می شود برنامه در گرامر این نحو رسمی باید
بر شرح نحو متن تقدم داشته باشد.

٪ نشانه EOF خط جدید STRING نامه عدد

%توکن MUL_OP
/* '*'، '/'، '%' */

% رمز ASSIGN_OP
/* '='، '+='، '−='، '*='، '/='، '%='، '^=' */

% نشانه REL_OP
/* '=='، '<='، '>='، '!='، '<'، '>' */

% رمز INCR_DECR
/* '++'، '−−' */

%token طول خروج از وقفه را تعریف کنید
/* 'تعریف'، 'شکستن'، 'ترک'، 'طول' */

%token Return For If while Sqrt
/* 'return', 'for', 'if', 'while', 'sqrt' */

%token Scale Ibase Obase Auto
/* 'scale'، 'base'، 'base'، 'auto' */

%شروع برنامه

%%

برنامه : EOF
| برنامه input_item
;

input_item : semicolon_list NEWLINE
| عملکرد
;

semicolon_list : /* خالی */
| بیانیه
| semicolon_list ';' بیانیه
| semicolon_list ';'
;

statement_list : /* خالی */
| بیانیه
| statement_list NEWLINE
| statement_list بیانیه NEWLINE
| statement_list ';'
| statement_list ';' بیانیه
;

بیانیه: بیان
| STRING
| زنگ تفريح
| ترک
| برگشت
| برگرداندن '(' return_expression ')'
| برای '(' عبارت ';'
relational_expression ';'
عبارت ")"
| اگر عبارت '(' relation_expression ')'
| در حالی که عبارت '(' relation_expression ')'
| '{' statement_list '}'
;

تابع : تعریف LETTER '(' opt_parameter_list ')'
'{' NEWLINE opt_auto_define_list
statement_list "}"
;

opt_parameter_list : /* خالی */
| parameter_list
;

parameter_list : LETTER
| define_list ',' LETTER
;

opt_auto_define_list : /* خالی */
| auto define_list NEWLINE
| auto define_list ';'
;

define_list : LETTER
| حرف '[' ']'
| define_list ',' LETTER
| define_list ',' LETTER '[' ']'
;

opt_argument_list : /* خالی */
| آرگومان_لیست
;

argument_list: عبارت
| حرف '[' ']' ',' argument_list
;

relational_expression: عبارت
| عبارت REL_OP
;

return_expression : /* خالی */
| اصطلاح
;

بیان : named_expression
| عدد
| '(' اصطلاح ')'
| حرف "("opt_argument_list")"
| عبارت '−'
| عبارت "+" عبارت
| عبارت «−».
| عبارت MUL_OP
| عبارت '^' عبارت
| INCR_DECR named_expression
| named_expression INCR_DECR
| عبارت named_expression ASSIGN_OP
| طول '(' عبارت ')'
| Sqrt '(' عبارت ')'
| مقیاس "(" عبارت ")"
;

named_expression : LETTER
| حرف '[' عبارت ']'
| مقیاس
| ایباس
| چاق
;

واژگانی کنوانسیون in bc
قراردادهای واژگانی برای bc برنامه ها، با توجه به دستور زبان قبلی، باید باشد
به شرح زیر است:

1. به جز موارد ذکر شده، bc باید طولانی ترین شروع نشانه یا جداکننده ممکن را تشخیص دهد
در یک نقطه معین

2. یک نظر باید شامل هر کاراکتری باشد که با دو کاراکتر مجاور شروع می شود
"/*" و با وقوع بعدی دو شخصیت مجاور خاتمه می یابد "*/".
نظرات هیچ تأثیری جز محدود کردن نشانه های لغوی ندارند.

3 به عنوان نشانه شناخته می شود خط جدید.

4. نشانه STRING باید یک ثابت رشته ای را نشان دهد. باید از هر کاراکتری تشکیل شود
با کاراکتر دو نقل قول شروع می شود ("") و با یک اتفاق دیگر خاتمه می یابد
از شخصیت دو نقل قول. مقدار رشته توالی همه است
کاراکترها بین دو کاراکتر نقل قول دوگانه، اما شامل آنها نمی شود. همه شخصیت ها
باید به معنای واقعی کلمه از ورودی گرفته شود، و هیچ راهی برای تعیین رشته وجود ندارد
حاوی یک کاراکتر نقل قول دوگانه طول مقدار هر رشته باید باشد
محدود به {BC_STRING_MAX} بایت است.

5. الف هیچ اثری ندارد مگر به عنوان یک نویسه معمولی اگر در داخل الف ظاهر شود
STRING نشانه، یا برای تحدید یک نشانه لغوی غیر از STRING.

6. ترکیب الف شخصیت بلافاصله به دنبال آن a باید
هیچ تأثیری جز تحدید نشانه های لغوی با استثنائات زیر ندارند:

* باید به عنوان دنباله شخصیت تفسیر شود "\ " in STRING نشانه ها

* باید به عنوان بخشی از چند خط نادیده گرفته شود عدد نشانه

7. نشانه عدد باید یک ثابت عددی را نشان دهد. باید توسط
دستور زبان زیر:

عدد : عدد صحیح
| "." عدد صحیح
| عدد صحیح "."
| عدد صحیح "." عدد صحیح
;

عدد صحیح: رقمی
| رقم صحیح
;

رقم : 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
| 8 | 9 | A | ب | ج | D | E | اف
;

8. مقدار a عدد نشانه باید به عنوان یک عدد در پایه مشخص شده توسط تفسیر شود
ارزش ثبت داخلی پایه از (در زیر توضیح داده شده است). هر کدام از رقمی
کاراکترها باید از 0 تا 15 به ترتیب فهرست شده در اینجا ارزش داشته باشند
کاراکتر باید نقطه ریشه را نشان دهد. رفتار تعریف نشده است اگر
ارقام بزرگتر یا مساوی با مقدار پایه از در توکن ظاهر شود. با این حال، توجه داشته باشید
استثنا برای مقادیر تک رقمی که به آنها اختصاص داده می شود پایه از و چاق خود، در
عملیات in bc.

9. کلمات کلیدی زیر باید به عنوان نشانه شناسایی شوند:

خودکار پایه از طول برگشت در حین
شکستن if چاق مقیاس
تعريف كردن برای ترک sqrt

10. هر یک از کاراکترهای زیر که در هر جایی به جز در یک کلمه کلیدی وجود دارد باید باشد
به عنوان نشانه شناخته می شود نامه:

a b c d e f g h i j k l m n o p q r s t u v w x y z

11. دنباله های تک شخصیتی و دو شخصیتی زیر باید به عنوان
رمز ASSIGN_OP:

= += −= *= /= %= ^=

12. اگر یک '=' کاراکتر، به عنوان آغاز نشانه، با a دنبال می شود '-' شخصیت با
بدون مرز میانجی، رفتار تعریف نشده است.

13. تک نویسه های زیر به عنوان نشانه شناخته می شوند MUL_OP:

* / %

14. دنباله های تک شخصیتی و دو شخصیتی زیر باید به عنوان
رمز REL_OP:

== <= >= != < >

15. دنباله های دو کاراکتری زیر باید به عنوان نشانه شناخته شوند INCR_DECR:

++ ---

16. کاراکترهای تکی زیر باید به عنوان نشانه هایی که نام آن ها هستند شناسایی شوند
شخصیت:

( ) , + - ; [ ] ^ { }

17. نشانه EOF هنگامی که به پایان ورودی رسید، برگردانده می شود.

عملیات in bc
سه نوع شناسه وجود دارد: شناسه های معمولی، شناسه های آرایه و
شناسه های تابع هر سه نوع از حروف کوچک تک تشکیل شده است. آرایه
پس از شناسه ها باید براکت های مربعی ("[]"). زیرنویس آرایه مورد نیاز است
به جز در آرگومان یا لیست خودکار. آرایه ها تک بعدی هستند و می توانند تا
{BC_DIM_MAX} عنصر. نمایه سازی باید از صفر شروع شود بنابراین یک آرایه از 0 تا ایندکس می شود
{BC_DIM_MAX}-1. زیرنویس ها باید به اعداد صحیح کوتاه شوند. برنامه باید تضمین کند
که شناسه‌های تابع با پرانتز دنبال می‌شوند و احتمالاً آرگومان‌هایی را در بر می‌گیرند. در
سه نوع شناسه با هم تضاد ندارند.

جدول زیر قوانین تقدم و تداعی همه را خلاصه می کند
اپراتورها اپراتورهای یک خط دارای اولویت یکسانی خواهند بود. ردیف ها به ترتیب هستند
کاهش تقدم

جدول: اپراتورها in bc

┌──────────────────-
اپراتورمشارکت
├─────────────────────-
│++، −− │ N/A │
│unary - │ N/A │
│^ │ از راست به چپ │
│*، /، % │ از چپ به راست │
│+، باینری - │ از چپ به راست │
│=، +=، −=، *=، /=، %=، ^= │ از راست به چپ │
│==، <=، >=، !=، <، > │ هیچ │
└──────────────────-
هر عبارت یا عبارت نامگذاری شده دارای یک است مقیاس، که تعداد ارقام اعشاری است
که باید به عنوان بخش کسری عبارت حفظ شود.

تحت عنوان اصطلاحات مکان هایی هستند که مقادیر ذخیره می شوند. عبارات نامگذاری شده باید معتبر باشند
سمت چپ یک تکلیف مقدار یک عبارت نامگذاری شده باید مقدار ذخیره شده باشد
در مکان نامگذاری شده شناسه های ساده و عناصر آرایه عباراتی نامگذاری شده اند. آنها دارند
مقدار اولیه صفر و مقیاس اولیه صفر.

ثبت های داخلی مقیاس, پایه ازو چاق همگی عبارات نامگذاری شده هستند. مقیاس یک
عبارت متشکل از نام یکی از این رجیسترها باید صفر باشد. مقادیر اختصاص داده شده
به هر یک از این ثبات ها به اعداد صحیح کوتاه می شوند. در مقیاس ثبت باید حاوی الف باشد
مقدار جهانی مورد استفاده در محاسبه مقیاس عبارات (همانطور که در زیر توضیح داده شده است). ارزش
ثبت نام مقیاس به 0 ≤ محدود شده است مقیاس ≤ {BC_SCALE_MAX} و باید یک مقدار پیش فرض داشته باشد
از صفر در پایه از و چاق ثبات ها ریشه شماره ورودی و خروجی هستند،
به ترتیب. ارزش پایه از محدود به:

2 پایه از 16

ارزش چاق محدود به:

2 چاق {BC_BASE_MAX}

زمانی که هر دو پایه از or چاق تک تخصیص داده شده است رقمی مقدار از لیست در واژگانی
کنوانسیون in bc، مقدار باید به صورت هگزادسیمال در نظر گرفته شود. (مثلا، پایه از= مجموعه های A
به پایه ده، بدون توجه به جریان پایه از ارزش.) در غیر این صورت، رفتار تعریف نشده است
وقتی ارقام بزرگتر یا مساوی با مقدار پایه از در ورودی ظاهر می شود. هر دو پایه از
و چاق باید مقادیر اولیه 10 داشته باشد.

محاسبات داخلی باید بدون توجه به ورودی و به صورت اعشاری انجام شود
پایه های خروجی، به تعداد مشخص شده ارقام اعشاری. هنگامی که یک نتیجه دقیق نیست
به دست آمده (مثلا مقیاس=0; 3.2/1), نتیجه باید کوتاه شود.

برای تمام مقادیر چاق مشخص شده توسط این جلد از POSIX.1-2008، bc باید عددی را تولید کند
مقادیر را با انجام هر یک از مراحل زیر به ترتیب انجام دهید:

1. اگر مقدار کمتر از صفر باشد، a ('-') کاراکتر باید خروجی شود.

2. بسته به مقدار عددی یکی از موارد زیر خروجی است:

* اگر قدر مطلق مقدار عددی بزرگتر یا مساوی یک باشد،
بخش صحیح مقدار باید به صورت یک سری ارقام متناسب با آن خروجی شود
چاق (همانطور که در زیر توضیح داده شد)، ابتدا مهمترین رقم. مهم ترین
رقم غیر صفر باید در مرحله بعدی خروجی داده شود و به دنبال آن هر عدد به ترتیب کمتر خواهد بود
رقم قابل توجه

* اگر قدر مطلق مقدار عددی کوچکتر از یک اما بزرگتر از
صفر و مقیاس مقدار عددی بزرگتر از صفر است، نامشخص است
آیا کاراکتر 0 خروجی است.

* اگر مقدار عددی صفر باشد، کاراکتر 0 باید خروجی شود.

3. اگر مقیاس مقدار بزرگتر از صفر باشد و مقدار عددی آن صفر نباشد، یک
کاراکتر باید خروجی شود و به دنبال آن یک سری ارقام متناسب با
چاق (همانطور که در زیر توضیح داده شد) که نشان دهنده مهم ترین بخش کسری است
بخشی از ارزش اگر s نشان دهنده مقیاس مقدار خروجی، تعداد
رقم خروجی باید باشد s if چاق 10 است، کمتر یا مساوی است s if چاق بزرگتر است
از 10 یا بزرگتر یا مساوی s if چاق کمتر از 10 است. برای چاق ارزش
به غیر از 10، این باید تعداد ارقام مورد نیاز برای نشان دادن دقت باشد
10s.

برای چاق مقادیر از 2 تا 16، ارقام معتبر اول هستند چاق از شخصیت های مجرد:

0 1 2 3 4 5 6 7 8 9 A B C D E F

که به ترتیب مقادیر صفر تا 15 را شامل می شوند.

برای پایه های بزرگتر از 16، هر رقم باید به صورت اعشاری چند رقمی جداگانه نوشته شود
عدد. قبل از هر رقم به جز مهم ترین رقم کسری باید a قرار گیرد
تنها . برای پایه های 17 تا 100 bc باید اعداد اعشاری دو رقمی بنویسد. برای
پایه های 101 تا 1000، رشته های اعشاری سه رقمی و غیره. به عنوان مثال، اعشار
عدد 1024 در پایه 25 به صورت زیر نوشته می شود:

01 15 24

و در پایه 125 به صورت زیر

008 024

اعداد بسیار بزرگ باید در خطوط با 70 کاراکتر در هر خط در POSIX تقسیم شوند
محل; سایر مناطق ممکن است در مرزهای کاراکترهای مختلف تقسیم شوند. خطوطی که هستند
ادامه با a به پایان می رسد .

فراخوانی تابع باید از نام تابع و به دنبال پرانتزهای حاوی a تشکیل شود
-فهرست جدا شده از عبارات، که آرگومان های تابع هستند. یک آرایه کامل
که به عنوان آرگومان ارسال می شود باید با نام آرایه و به دنبال آن مربع خالی مشخص شود
براکت ها همه آرگومان های تابع باید با مقدار ارسال شوند. در نتیجه تغییراتی در
پارامترهای رسمی هیچ تاثیری بر آرگومان های واقعی ندارند. اگر تابع
با اجرای a خاتمه می یابد برگشت بیانیه، مقدار تابع باید مقدار باشد
از عبارت در پرانتز از برگشت بیانیه یا در صورت خیر صفر خواهد بود
بیان ارائه شده است یا اگر وجود ندارد برگشت بیانیه.

نتیجه ی sqrt(بیان) باید جذر عبارت باشد. نتیجه
باید در کمترین رقم اعشار کوتاه شود. مقیاس نتیجه باید
مقیاس بیان یا مقدار باشد مقیاس، هر کدام بزرگتر باشد.

نتیجه ی طول(بیان) باید تعداد کل ارقام اعشاری مهم باشد
در بیان مقیاس نتیجه باید صفر باشد.

نتیجه ی مقیاس(بیان) باید مقیاس بیان باشد. مقیاس از
نتیجه صفر خواهد بود

یک ثابت عددی باید یک عبارت باشد. مقیاس باید تعداد ارقامی باشد که
از نقطه ریشه در ورودی که نشان دهنده ثابت است پیروی کنید، یا اگر نقطه پایه وجود نداشته باشد، صفر را دنبال کنید
ظاهر می شود.

تسلسل و توالی ( بیان ) باید عبارتی با همان مقدار و مقیاس باشد
بیان. از پرانتز می توان برای تغییر تقدم طبیعی استفاده کرد.

معناشناسی عملگرهای یونی و باینری به شرح زیر است:

-بیان
نتیجه باید منفی باشد بیان. مقیاس نتیجه باید
مقیاس باشد بیان.

عملگرهای افزایشی و کاهشی یکنواخت نباید مقیاس نامگذاری شده را تغییر دهند
بیانی که بر اساس آن عمل می کنند. مقیاس نتیجه باید مقیاس آن باشد
بیان نامگذاری شده

++با نام بیان
عبارت نامگذاری شده باید یک افزایش یابد. نتیجه باید مقدار باشد
عبارت نامگذاری شده پس از افزایش

---با نام بیان
عبارت نام‌گذاری شده باید با یک کاهش یابد. نتیجه باید مقدار باشد
عبارت نامگذاری شده پس از کاهش

با نام بیان++
عبارت نامگذاری شده باید یک افزایش یابد. نتیجه باید مقدار باشد
عبارت نامگذاری شده قبل از افزایش

با نام بیان---
عبارت نام‌گذاری شده باید با یک کاهش یابد. نتیجه باید مقدار باشد
عبارت نامگذاری شده قبل از کاهش

عملگر توان، ('^') باید از راست به چپ متصل شود.

بیان^بیان
نتیجه باید اولین باشد بیان به قدرت دومی ارتقا یافت
بیان. اگر عبارت دوم یک عدد صحیح نباشد، رفتار تعریف نشده است.
If a مقیاس عبارت چپ است و b قدر مطلق حق است
بیان، مقیاس نتیجه باید به صورت زیر باشد:

if b >= 0 دقیقه (a * b, حداکثر(مقیاس، آ)) if b < 0 مقیاس

عملگرهای ضربی ('*', '/', '%') باید از چپ به راست متصل شود.

بیان*بیان
نتیجه حاصل حاصلضرب دو عبارت خواهد بود. اگر a و b ترازو هستند
دو عبارت، سپس مقیاس نتیجه باید به صورت زیر باشد:

حداقل (a+b،max(مقیاس،a،b))

بیان/بیان
نتیجه باید ضریب این دو عبارت باشد. مقیاس نتیجه
ارزش خواهد بود مقیاس.

بیان%بیان
برای عبارات a و b, a%b باید معادل مراحل زیر ارزیابی شود:

1. محاسبه کنید a/b به مقیاس فعلی

2. از نتیجه برای محاسبه استفاده کنید:

a - (a / b) * b

مقیاس کردن:

حداکثر (مقیاس + مقیاس (ب)، مقیاس (الف))

مقیاس نتیجه باید به صورت زیر باشد:

حداکثر (مقیاس + مقیاس (ب)، مقیاس (الف))

چه زمانی مقیاس صفر است، '%' عملگر باقیمانده ریاضی است.

عملگرهای افزودنی ('+', '-') باید از چپ به راست متصل شود.

بیان+بیان
حاصل جمع دو عبارت خواهد بود. مقیاس نتیجه باید باشد
حداکثر مقیاس عبارات.

بیان-بیان
نتیجه باید تفاوت دو عبارت باشد. مقیاس نتیجه
باید حداکثر مقیاس عبارات باشد.

اپراتورهای تخصیص ('=', "+=", "−=", "*=", "/=", "%=", "^=") باید حق را به
ترک کرد.

با نام بیان=بیان
این عبارت باید به تخصیص مقدار عبارت سمت راست منجر شود
به عبارت نامگذاری شده در سمت چپ. مقیاس هر دو عبارت نامگذاری شده و
نتیجه باید مقیاس باشد بیان.

فرم های انتساب ترکیبی:

با نام بیان <اپراتور>= بیان

معادل با:

با نام بیان=با نام بیان <اپراتور> بیان

جز اینکه با نام بیان فقط یک بار ارزیابی می شود.

بر خلاف همه عملگرهای دیگر، عملگرهای رابطه ای ("<", '>', "<=", ">=", "==", "!=")
فقط به عنوان موضوع یک معتبر خواهد بود if, در حین، یا داخل a برای بیانیه.

بیان 1<بیان 2
اگر مقدار از بیان 1 به شدت کمتر از
ارزش بیان 2.

بیان 1>بیان 2
اگر مقدار از بیان 1 به شدت بزرگتر از
ارزش بیان 2.

بیان 1<=بیان 2
اگر مقدار از بیان 1 کمتر از یا مساوی با
ارزش بیان 2.

بیان 1>=بیان 2
اگر مقدار از بیان 1 بزرگتر یا مساوی با است
ارزش بیان 2.

بیان 1==بیان 2
اگر مقادیر از بیان 1 و بیان 2 برابر هستند

بیان 1!=بیان 2
اگر مقادیر از بیان 1 و بیان 2 نابرابر هستند

فقط دو کلاس ذخیره سازی وجود دارد bc: جهانی و اتوماتیک (محلی). فقط شناسه ها
که محلی برای یک تابع هستند باید با اعلان شوند خودکار فرمان استدلال به الف
تابع باید محلی برای تابع باشد. همه شناسه های دیگر جهانی فرض می شوند
و برای همه عملکردها در دسترس است. همه شناسه ها، سراسری و محلی، دارای مقادیر اولیه هستند
صفر شناسه های اعلام شده به صورت خودکار باید در هنگام ورود به تابع تخصیص داده شوند
پس از بازگشت از عملکرد آزاد شد. بنابراین آنها ارزش ها را بین خود حفظ نمی کنند
فراخوانی تابع آرایه های خودکار باید با نام آرایه و سپس مربع خالی مشخص شوند
براکت ها هنگام ورود به یک تابع، مقادیر قدیمی نام ها که به عنوان پارامتر ظاهر می شوند
و به عنوان متغیرهای خودکار باید روی یک پشته فشار داده شوند. تا زمانی که تابع برگردد،
ارجاع به این نامها فقط به مقادیر جدید اشاره دارد.

ارجاع به هر یک از این نام ها از توابع دیگری که از این تابع فراخوانی می شوند
همچنین به مقدار جدید رجوع کنید تا زمانی که یکی از آن توابع از همان نام برای محلی استفاده کند
متغیر.

وقتی یک دستور یک عبارت است، مگر اینکه عملگر اصلی یک انتساب باشد، اجرا می شود
عبارت باید مقدار عبارت را بنویسد و سپس a را بنویسد .

وقتی یک دستور یک رشته است، اجرای دستور باید مقدار the را بنویسد
رشته

اظهارات جدا شده توسط یا کاراکترها باید اجرا شوند
به صورت متوالی در یک فراخوان تعاملی از bc، هر بار a خوانده می شود که
تولید دستوری را برآورده می کند:

input_item : لیست_نقطه ویرگول خط جدید

لیست متوالی عبارات تشکیل دهنده لیست_نقطه ویرگول اجرا خواهد شد
فوراً و هر خروجی حاصل از آن اجرا باید بدون تأخیر نوشته شود
به دلیل بافر شدن

در if بیانیه (if(ارتباط) بیانیهبیانیه در صورتی اجرا می شود که
رابطه درست است

La در حین بیانیه (در حین(ارتباط) بیانیه) حلقه ای را پیاده سازی می کند که در آن ارتباط is
تست شده؛ هر بار ارتباط درست است، بیانیه اجرا خواهد شد و ارتباط
دوباره آزمایش شد. وقتی که ارتباط نادرست است، اجرا پس از آن از سر گرفته می شود بیانیه.

A برای بیانیه(برای(بیان; ارتباط; بیان) بیانیه) مانند:

بیان اول
در حین (ارتباط) {
بیانیه
آخرین بیان
}

برنامه باید اطمینان حاصل کند که هر سه عبارت وجود دارد.

La شکستن بیانیه باعث خاتمه الف می شود برای or در حین بیانیه.

La خودکار بیانیه (خودکار شناسه [,شناسه] ...) باعث ایجاد مقادیر
شناسه ها به پایین فشار داده شوند. شناسه ها می توانند شناسه های معمولی یا آرایه باشند
شناسه ها شناسه های آرایه باید با دنبال کردن نام آرایه به صورت خالی مشخص شوند
براکت. برنامه باید اطمینان حاصل کند که خودکار بیانیه اول است
بیانیه در تعریف تابع

A تعريف كردن بیانیه:

تعريف كردن نامه ( opt_parameter_list ) {
opt_auto_define_list
بیانیه_لیست
}

تابعی به نام تعریف می کند نامه. اگر تابعی به نام نامه قبلا تعریف شده بود،
تعريف كردن بیانیه جایگزین تعریف قبلی می شود. بیان:

نامه ( opt_argument_list )

باید تابع نامگذاری شده را فراخوانی کند نامه. رفتار تعریف نشده است اگر تعداد
آرگومان های موجود در فراخوانی با تعداد پارامترهای تعریف مطابقت ندارد.
توابع باید قبل از فراخوانی تعریف شوند. یک تابع باید در نظر گرفته شود
در بدن خود تعریف شده است، بنابراین تماس های بازگشتی معتبر هستند. مقادیر ثابت های عددی
در یک تابع باید در پایه مشخص شده توسط مقدار تفسیر شود پایه از
هنگام فراخوانی تابع ثبت نام کنید.

La برگشت بیانیه (برگشت و برگشت(بیان)) باعث ختم الف می شود
تابع، ظاهر شدن متغیرهای خودکار آن، و مشخصات نتیجه تابع.
فرم اول باید معادل باشد برگشت(0). ارزش و مقیاس نتیجه
برگردانده شده توسط تابع باید مقدار و مقیاس عبارت برگردانده شده باشد.

La ترک بیانیه (ترک) باید اجرای الف را متوقف کند bc برنامه در نقطه ای که
دستور در ورودی رخ می دهد، حتی اگر در یک تعریف تابع یا در یک رخ دهد if,
برای، یا در حین بیانیه.

توابع زیر زمانی تعریف می شوند که -l گزینه مشخص شده است:

s( بیان )
سینوس برهان بر حسب رادیان.

c( بیان )
کسینوس برهان بر حسب رادیان.

a( بیان )
مماس استدلال.

l( بیان )
لگاریتم طبیعی استدلال

e( بیان )
تابع نمایی آرگومان

j( بیان, بیان )
تابع بسل از ترتیب اعداد صحیح.

مقیاس نتیجه برگردانده شده توسط این توابع باید مقدار باشد مقیاس
در زمان فراخوانی تابع ثبت نام کنید. ارزش از مقیاس بعد از اینها ثبت نام کنید
عملکردهایی که اجرای خود را کامل کرده اند باید همان مقداری باشد که در هنگام فراخوانی داشت.
اگر هر یک از این توابع با یک آرگومان خارج از آن فراخوانی شود، رفتار تعریف نشده است
دامنه تابع ریاضی

خروج وضعیت


مقادیر خروجی زیر باید برگردانده شوند:

0 همه فایل های ورودی با موفقیت پردازش شدند.

نامشخص
یک خطا رخ داده است.

آثار OF خطاها


در صورت وجود پرونده عملوند مشخص شده است و فایل نامگذاری شده قابل دسترسی نیست، bc باید بنویسد
پیام تشخیصی به خطای استاندارد می رسد و بدون هیچ اقدام دیگری خاتمه می یابد.

در یک فراخوان تعاملی از bc، ابزار باید یک پیام خطا چاپ کند و بازیابی شود
به دنبال هر خطایی در ورودی در فراخوانی غیر تعاملی از bc، ورودی نامعتبر
باعث رفتار نامشخص می شود.

La پیروی بخش هستند آموزنده

کاربرد طریقه استفاده


متغیرهای خودکار در bc دقیقاً مانند C یا PL/1 کار نمی کند.

به دلایل تاریخی، وضعیت خروج از bc نمی توان برای نشان دادن اینکه الف
خطا رخ داده است بازگشت صفر پس از خطا امکان پذیر است. از این رو، bc باید
عمدتاً توسط کاربران تعاملی (که می توانند به پیام های خطا واکنش نشان دهند) یا توسط برنامه استفاده می شود
برنامه‌هایی که می‌توانند به‌نوعی پاسخ‌های برگشتی را به‌عنوان فاقد پیام‌های خطا تأیید کنند.

La bc ابزار همیشه از (".") کاراکتر برای نشان دادن یک نقطه ریشه،
صرف نظر از هر کاراکتر اعشاری مشخص شده به عنوان بخشی از محلی فعلی. که در
زبان هایی مانند C یا بیدار، کاراکتر در منبع برنامه استفاده می شود، بنابراین می تواند باشد
قابل حمل و بدون ابهام، در حالی که کاراکتر محلی خاص در ورودی و خروجی استفاده می شود.
زیرا هیچ تفاوتی بین منبع و ورودی در وجود ندارد bc، این ترتیب نمی شود
ممکن بودن. با استفاده از کاراکتر محلی خاص در bcورودی 's باعث ایجاد ابهامات می شود
به زبان؛ مثال زیر را در محلی با a در نظر بگیرید به عنوان
کاراکتر اعشاری:

تعريف كردن f(a,b) {
...
}
...

f(1,2,3،XNUMX،XNUMX)

به دلیل وجود چنین ابهاماتی، کاراکتر در ورودی استفاده می شود. داشتن ورودی دنبال کنید
قراردادهای مختلف از خروجی ممکن است در استفاده از خط لوله یا
استفاده تعاملی، بنابراین در خروجی نیز استفاده می شود.

مثال ها


در پوسته، شکل زیر تقریبی از ده رقم اول را اختصاص می‌دهد 'π' به
متغیر x:

x=$(printf "%s\n" مقیاس = 10. 104348/33215 ' | قبل از میلاد مسیح)

در زیر bc برنامه همان تقریبی را چاپ می کند 'π'، با یک برچسب، استاندارد
خروجی:

مقیاس = 10
"پی برابر است "
104348 / 33215

زیر تابعی را برای محاسبه مقدار تقریبی نمایی تعریف می کند
تابع (توجه داشته باشید که چنین تابعی از پیش تعریف شده است اگر -l گزینه مشخص شده است):

مقیاس = 20
تعريف كردن سابق){
خودکار a, b, c, i, s
a = 1
b = 1
s = 1
برای (i = 1; 1 == 1; i++){
a = تبر
b = b*i
c = A / B
if (c == 0) {
بازگشت(های)
}
s = s+c
}
}

شکل زیر مقادیر تقریبی تابع نمایی ده اول را چاپ می کند
اعداد صحیح:

برای (i = 1; i <= 10. ++ من) {
e(i)
}

منطقی


La bc ابزار از لحاظ تاریخی به عنوان یک پردازنده جلویی برای پیاده سازی شده است dc; dc نبود
به عنوان بخشی از این جلد POSIX.1-2008 انتخاب شده است زیرا bc تصور می شد بیشتر داشته باشد
رابط برنامه نویسی بصری پیاده سازی های فعلی که اجرا می شوند bc با استفاده از dc هستند
انتظار می رود مطابقت داشته باشد.

وضعیت خروج برای شرایط خطا به چند دلیل نامشخص مانده است:

* bc ابزار در هر دو موقعیت تعاملی و غیر تعاملی استفاده می شود. ناهمسان
کدهای خروج ممکن است برای این دو کاربرد مناسب باشند.

* مشخص نیست چه زمانی باید خروجی غیر صفر داده شود. تقسیم بر صفر، تعریف نشده
توابع، و خطاهای نحوی همه احتمالات هستند.

* مشخص نیست وضعیت خروج چه کاربردی دارد.

* در اجرای 4.3 BSD، System V و Ninth Edition، bc با هم کار می کند
با dc. dc ابزار والدین است، bc کودک است این کار برای تمیز انجام شد
خاتمه دادن bc if dc سقط شد

تصمیم به داشتن bc خروج پس از مواجهه با یک فایل ورودی غیر قابل دسترس بر اساس است
باور کنید که bc file1 file2 اغلب زمانی استفاده می شود که حداقل file1 حاوی داده/عملکرد
اعلامیه ها/اصلاحات. داشتن bc ادامه با فایل های پیش نیاز گم شده است
احتمالا مفید نیست هیچ مفهومی در بخش پیامدهای خطا وجود ندارد که bc
قبل از باز کردن هر یک از آنها، باید تمام فایل های آن را از نظر دسترسی بررسی کنید.

بحث های قابل توجهی در مورد مناسب بودن زبان پذیرفته شده وجود داشت bc.
چندین داور ترجیح دادند که زیرمجموعه ای خالص از زبان C یا برخی تغییرات را ببینند
برای سازگاری بیشتر زبان با C. در حالی که bc زبان چیزهای واضحی دارد
شباهت به C، هرگز ادعا نکرده است که با هیچ نسخه ای از C. An سازگار است
مفسر برای زیرمجموعه ای از C ممکن است یک ابزار بسیار ارزشمند باشد، و به طور بالقوه می تواند
ساخت bc منسوخ شده با این حال، چنین کاربردی در عمل تاریخی شناخته شده نیست، و چنین هم نبود
در محدوده این جلد از POSIX.1-2008 برای تعریف چنین زبان و ابزاری. اگر
و هنگامی که آنها تعریف می شوند، ممکن است مناسب باشد که آنها را در نسخه بعدی قرار دهیم
این استاندارد این گزینه جایگزین های زیر را به جای گذاشت:

1. هر زبان ماشین حسابی را از این جلد POSIX.1-2008 حذف کنید.

توافق توسعه دهندگان استاندارد این بود که یک ماشین حساب برنامه ای ساده
زبان هم برای اپلیکیشن ها و هم برای کاربران تعاملی بسیار مفید است. تنها
استدلال برای حذف هر ماشین حساب این بود که اگر و چه زمانی منسوخ می شد
یک سازگار با C پدیدار شد، یا اینکه عدم وجود آن باعث تشویق توسعه می شود
چنین یک سازگار با C. این استدلال‌ها به اندازه کافی نیازهای آن را برآورده نکردند
توسعه دهندگان برنامه فعلی

2. استانداردسازی تاریخی dc، احتمالاً با تغییرات جزئی.

اجماع توسعه دهندگان استاندارد این بود dc اساسا کمتر قابل استفاده است
زبان و این که مجازات بسیار شدیدی برای اجتناب از موضوع خواهد بود
شبیه بودن اما ناسازگار با C.

3. استانداردسازی تاریخی bc، احتمالاً با تغییرات جزئی.

این رویکرد اتخاذ شده بود. اکثر طرفداران تغییر زبان این کار را نمی کنند
تا زمانی که اکثر یا تمام ناسازگاری‌ها با C برطرف نشده باشند، رضایت دارند.
از آنجایی که بیشتر تغییراتی که مطلوب‌ترین آنها تلقی می‌شوند، تاریخ را شکسته‌اند
برنامه های کاربردی و نیاز به تغییرات قابل توجهی در پیاده سازی های تاریخی،
تقریبا هیچ تغییری انجام نشد یکی از اصلاحات مهمی که انجام شد این بود
جایگزینی تاریخی bc اپراتورهای واگذاری "=+"، و غیره، با
مدرن تر "+="، و غیره. نسخه های قدیمی تر به طور اساسی در نظر گرفته می شوند
به دلیل ابهام واژگانی در کاربردهایی مانند a=-1.

به منظور اجازه دادن به پیاده سازی ها برای مقابله با سازگاری با عقب، همانطور که می بینند
مناسب، رفتار این ساختار مبهم تعریف نشده بود. (حداقل سه
پیاده سازی ها قبلاً برای پشتیبانی از این تغییر شناخته شده اند، بنابراین درجه از
تغییر درگیر نباید عالی باشد.)

La '%' عملگر باقیمانده ریاضی وقتی است مقیاس صفر است. رفتار
این عملگر برای مقادیر دیگر مقیاس از پیاده سازی های تاریخی است bcو
علیرغم غیر شهودی بودن، به خاطر کاربردهای تاریخی حفظ شده است
طبیعت.

پیاده سازی های تاریخی اجازه تنظیم را می دهند پایه از و چاق به طیف وسیع تری از مقادیر.
این شامل مقادیر کمتر از 2 می شود که به اندازه کافی مفید تلقی نمی شدند
استاندارد کردن این پیاده سازی ها ورودی را به درستی برای مقادیر از تفسیر نمی کنند پایه از
که بزرگتر از 16 هستند. این به این دلیل است که ثابت های عددی به صورت نحوی شناسایی می شوند،
به جای واژگانی، همانطور که در این جلد از POSIX.1-2008 توضیح داده شده است. آنها ساخته شده اند
نشانه های واژگانی ارقام هگزادسیمال تک و شخصیت ها. از آنجا که
کاراکترهای بین نشانه ها در سطح نحوی قابل مشاهده نیستند، امکان پذیر نیست
"ارقام" چند رقمی استفاده شده در پایه های بالاتر را به درستی تشخیص دهید. توانایی
شناسایی ورودی در این پایه ها به اندازه کافی مفید تلقی نمی شد که نیاز به اصلاح آنها داشته باشد
پیاده سازی ها توجه داشته باشید که تشخیص ثابت های عددی در سطح نحوی است
مشکلی در انطباق با این حجم از POSIX.1-2008 نیست، زیرا تأثیری بر
رفتار برنامه های کاربردی مطابق (و صحیح bc برنامه ها). پیاده سازی های تاریخی
همچنین ورودی با تمام ارقام را بپذیرید '0'-'9' و 'A'-'F' بدون توجه به ارزش
پایه از; از آنجایی که ارقامی با مقدار بزرگتر یا مساوی پایه از واقعا مناسب نیستند،
رفتار زمانی که آنها ظاهر می شوند تعریف نشده است، به جز مورد رایج:

ibase=8;
/* روند in اکتال پایه. */
...
ibase=A
/* بازیابی دهدهی پایه. */

در برخی از پیاده‌سازی‌های تاریخی، اگر عبارتی که باید نوشته شود، یک مقدار اولیه باشد
عنصر آرایه، یک پیشرو و/یا حداکثر چهار کاراکتر 0 اصلی ممکن است خروجی شود
قبل از کاراکتر صفر این رفتار یک اشکال در نظر گرفته می شود. بعید است که هیچ
برنامه کاربردی که در حال حاضر مطابقت دارد به موارد زیر متکی است:

از دست 'b[3]' | bc

بازگشت 00000 به جای 0.

محاسبه دقیق تعداد ارقام کسری برای خروجی برای یک مقدار معین در یک پایه
غیر از 10 می تواند از نظر محاسباتی گران باشد. پیاده سازی های تاریخی از سریعتر استفاده می کنند
تقریب، و این مجاز است. توجه داشته باشید که الزامات فقط برای مقادیر از اعمال می شود
چاق که این حجم از POSIX.1-2008 به پیاده سازی هایی برای پشتیبانی نیاز دارد (به ویژه،
نه به پایه های 1، 0 یا منفی، اگر پیاده سازی آنها را به عنوان یک پسوند پشتیبانی کند).

پیاده سازی های تاریخی از bc اجازه نداد که پارامترهای آرایه به عنوان آخرین مورد ارسال شوند
پارامتر یک تابع پیاده سازی های جدید برای حذف این محدودیت تشویق می شوند
حتی اگر دستور زبان آن را الزامی نکرده باشد.

آینده جهت


ندارد.

از bcposix آنلاین با استفاده از خدمات onworks.net استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    لیباسب
    لیباسب
    کتابخانه برای فعال کردن فضای کاربر
    برنامه های کاربردی برای برقراری ارتباط
    دستگاه های USB مخاطب: توسعه دهندگان، پایان
    کاربران / دسکتاپ. زبان برنامه نویسی: C.
    دسته بندی ها...
    دانلود libusb
  • 2
    سوئیچ
    سوئیچ
    SWIG یک ابزار توسعه نرم افزار است
    که برنامه های نوشته شده به زبان C و را به هم متصل می کند
    C++ با انواع سطح بالا
    زبانهای برنامه نویسی. SWIG با استفاده می شود
    ناهمسان...
    SWIG را دانلود کنید
  • 3
    تم ووکامرس Nextjs React
    تم ووکامرس Nextjs React
    موضوع React WooCommerce، ساخته شده با
    Next JS، Webpack، Babel، Node و
    Express با استفاده از GraphQL و Apollo
    مشتری. فروشگاه ووکامرس در React(
    شامل: محصولات ...
    دانلود قالب WooCommerce Nextjs React
  • 4
    archlabs_repo
    archlabs_repo
    مخزن بسته برای ArchLabs این یک است
    برنامه ای که می توان آن را نیز واکشی کرد
    از جانب
    https://sourceforge.net/projects/archlabs-repo/.
    در OnWorks در...
    دانلود archlabs_repo
  • 5
    پروژه زفیر
    پروژه زفیر
    پروژه Zephyr یک نسل جدید است
    سیستم عامل بلادرنگ (RTOS) که
    از چندین سخت افزار پشتیبانی می کند
    معماری ها بر اساس الف است
    هسته با ردپای کوچک ...
    دانلود پروژه Zephyr
  • 6
    جواهرات
    جواهرات
    SCons یک ابزار ساخت نرم افزار است
    که جایگزینی برتر برای
    کلاسیک "ساخت" ابزار ساخت که
    همه ما می دانیم و دوست داریم. SCons است
    یک ...
    SCons را دانلود کنید
  • بیشتر "

دستورات لینوکس

Ad