XCALC(1) X Version 11 XCALC(1)

xcalc - ماشین‌حساب علمی برای سامانه پنجره X

xcalc [-stipple] [-rpn] [-toolkitoption...]
xcalc -version
xcalc -help

xcalc یک ابزارک رومیزی ماشین‌حساب علمی است که می‌تواند عملکرد یک TI-30 یا یک HP-10C را شبیه‌سازی کند.

xcalc تمامی گزینه‌های خط فرمان استاندارد جعبه‌ابزار (toolkit) را به همراه این گزینه‌های اضافی می‌پذیرد:

این گزینه مشخص می‌کند که پس‌زمینه ماشین‌حساب باید با استفاده از ترام‌بندی (stipple) رنگ‌های پیش‌زمینه و پس‌زمینه ترسیم شود. این قابلیت در نمایشگرهای تک‌رنگ (monochrome) ظاهر برنامه را بهبود می‌بخشد.
این گزینه مشخص می‌کند که باید از نشانه‌گذاری معکوس لهستانی (Reverse Polish Notation) استفاده شود. در این حالت، ماشین‌حساب شبیه به HP-10C به نظر رسیده و رفتار خواهد کرد. بدون این پرچم، دستگاه یک TI-30 را شبیه‌سازی می‌کند.
این گزینه مشخص می‌کند که xcalc باید پیام راهنمای نحوه استفاده را چاپ کرده و خارج شود.
این گزینه مشخص می‌کند که xcalc باید نسخه خود را چاپ کرده و خارج شود.

استفاده از اشاره‌گر: عملیات را می‌توان با دکمه ۱ اشاره‌گر (کلیک چپ) یا در برخی موارد با صفحه‌کلید انجام داد. بسیاری از عملیات‌های رایج ماشین‌حساب دارای کلیدهای میانبر صفحه‌کلید هستند. برای خروج، دکمه ۳ اشاره‌گر (کلیک راست) را روی کلید AC ماشین‌حساب TI، یا کلید ON ماشین‌حساب HP فشار دهید.

استفاده از کلیدهای ماشین‌حساب (حالت TI): کلیدهای عددی، کلید +/- و کلیدهای +، -، *، / و = همگی دقیقاً همان کاری را انجام می‌دهند که انتظار دارید. باید توجه داشت که عملگرها از قواعد استاندارد اولویت ریاضی پیروی می‌کنند. بنابراین، وارد کردن «3+4*5=» نتیجه «23» را در پی خواهد داشت، نه «35». از پرانتزها می‌توان برای نادیده گرفتن این اولویت استفاده کرد. برای مثال، «(1+2+3)*(4+5+6)=» منجر به «6*15=90» می‌شود.

کل عدد نمایش‌داده‌شده در صفحه ماشین‌حساب را می‌توان انتخاب کرد تا نتیجه یک محاسبه در متن چسبانده (paste) شود.

رویه‌های کنش (action procedures) مرتبط با هر تابع در زیر آورده شده است. این موارد در صورتی که به تعریف یک ماشین‌حساب سفارشی علاقه‌مند باشید مفید هستند. کنش استفاده‌شده برای تمام کلیدهای ارقام digit(n) است، که در آن n رقم متناظر (0..9) می‌باشد.

1/x
عدد موجود در صفحه نمایش را با معکوس آن جایگزین می‌کند. رویه کنش متناظر reciprocal() است.
عدد موجود در صفحه نمایش را به توان دو می‌رساند. رویه کنش متناظر square() است.
ریشه دوم (جذر) عدد موجود در صفحه نمایش را محاسبه می‌کند. رویه کنش متناظر squareRoot() است.
هنگامی که یک بار فشرده شود، عدد موجود در صفحه نمایش را بدون پاک کردن وضعیت ماشین پاک می‌کند. این قابلیت به شما اجازه می‌دهد در صورت بروز اشتباه، عدد را مجدداً وارد کنید. فشردن دوباره آن، وضعیت را نیز پاک می‌کند. رویه کنش متناظر برای حالت TI، clear() است.
صفحه نمایش، وضعیت و حافظه را پاک می‌کند. فشردن آن با دکمه سوم اشاره‌گر ماشین‌حساب را خاموش می‌کند، به این معنی که از برنامه خارج می‌شود. رویه کنش برای پاک کردن وضعیت off()؛ و برای خروج quit() است.
تابع معکوس‌سازی. برای جزئیات به هر یک از کلیدهای توابع مراجعه کنید. رویه کنش متناظر inverse() است.
سینوس عدد موجود در صفحه نمایش را با توجه به حالت فعلی DRG (توضیحات DRG را در زیر ببینید) محاسبه می‌کند. در صورت معکوس شدن، آرک‌سینوس را محاسبه می‌کند. رویه کنش متناظر sine() است.
کسینوس، یا در صورت معکوس شدن آرک‌کسینوس را محاسبه می‌کند. رویه کنش متناظر cosine() است.
تانژانت، یا در صورت معکوس شدن آرک‌تانژانت را محاسبه می‌کند. رویه کنش متناظر tangent() است.
حالت DRG را تغییر می‌دهد، همان‌طور که با 'DEG'، 'RAD' یا 'GRAD' در پایین صفحه نمایش «کریستال مایع» ماشین‌حساب نشان داده می‌شود. در حالت 'DEG'، اعداد موجود در صفحه نمایش بر حسب درجه در نظر گرفته می‌شوند. در حالت 'RAD' اعداد بر حسب رادیان، و در حالت 'GRAD' اعداد بر حسب گرادیان هستند. در صورت معکوس شدن، کلید DRG امکان تبدیل درجه به رادیان به گرادیان و برعکس را فراهم می‌کند. مثال: ماشین‌حساب را در حالت 'DEG' قرار داده و «45 INV DRG» را وارد کنید. اکنون صفحه نمایش باید عددی در حدود «.785398» را نشان دهد که همان تبدیل ۴۵ درجه به رادیان است. رویه کنش متناظر degree() است.
ثابت «e» (2.7182818...). رویه کنش متناظر e() است.
برای وارد کردن اعداد نمایی استفاده می‌شود. برای مثال، جهت به دست آوردن «-2.3E-4» باید «2 . 3 +/- EE 4 +/-» را وارد کنید. رویه کنش متناظر scientific() است.
لگاریتم (در مبنای ۱۰) عدد موجود در صفحه نمایش را محاسبه می‌کند. در صورت معکوس شدن، «10.0» را به توان عدد موجود در صفحه نمایش می‌رساند. برای مثال، وارد کردن «3 INV log» باید به نتیجه «1000» منجر شود. رویه کنش متناظر logarithm() است.
لگاریتم (در مبنای e) عدد موجود در صفحه نمایش را محاسبه می‌کند. در صورت معکوس شدن، «e» را به توان عدد موجود در صفحه نمایش می‌رساند. برای مثال، وارد کردن «e ln» باید به نتیجه «1» منجر شود. رویه کنش متناظر naturalLog() است.
عدد سمت چپ را به توان عدد سمت راست می‌رساند. برای مثال «2 y^x 3 =» منجر به «8» می‌شود که همان 2^3 است. برای مثالی دیگر، «(1+2+3) y^x (1+2) =» برابر با «6 y^x 3» و حاصل آن «216» است. رویه کنش متناظر power() است.
یک عمل نقیض بیتی (bitwise not) را انجام می‌دهد. رویه کنش متناظر not() است..TP 10 and یک «و»ی بیتی (bitwise and) انجام می‌دهد. روال کنش متناظر and() است.
یک «یا»ی بیتی (bitwise or) انجام می‌دهد. روال کنش متناظر or() است.
یک «یای انحصاری» بیتی (bitwise xor) انجام می‌دهد. روال کنش متناظر xor() است.
عدد نمایش داده‌شده در صفحه را به یک عدد صحیح برش می‌دهد (قطع می‌کند). روال کنش متناظر trunc() است.
ثابت «پی» (pi). (3.1415927....) روال کنش متناظر pi() است.
فاکتوریل عدد نمایش داده‌شده در صفحه را محاسبه می‌کند. عدد نمایش داده‌شده باید یک عدد صحیح در بازهٔ ۰ تا ۵۰۰ باشد، هرچند بسته به کتابخانهٔ ریاضیاتی شما، ممکن است بسیار پیش از آن سرریز کند. روال کنش متناظر factorial() است.
(
پرانتز باز (چپ). روال کنش متناظر برای ماشین‌حساب‌های TI، leftParen() است.
)
پرانتز بسته (راست). روال کنش متناظر برای ماشین‌حساب‌های TI، rightParen() است.
مبنای عدد را بر اساس آنچه با 'DEC'، 'HEX' یا 'OCT' در پایین نمایشگر ماشین‌حساب مشخص شده، تغییر می‌دهد. در حالت 'DEC'، اعدادِ نمایش داده‌شده ده‌دهی (مبنای ۱۰) فرض می‌شوند. در حالت 'HEX'، اعداد در مبنای شانزده (هگزادسیمال)، و در حالت 'OCT'، اعداد در مبنای هشت (اکتال) هستند. روال کنش متناظر base() است.
یک شیفت محاسباتی بیتی به چپ انجام می‌دهد. برای مثال، وارد کردن «1 shl 2» باید حاصل «4» داشته باشد. روال کنش متناظر shl() است.
یک شیفت محاسباتی بیتی به راست انجام می‌دهد. برای مثال، وارد کردن «8 shr 1» باید حاصل «4» داشته باشد. روال کنش متناظر shr() است.
عملیات پیمانه (modulo) را انجام می‌دهد که باقی‌ماندهٔ تقسیم عدد اول بر دوم را محاسبه می‌کند. برای مثال، وارد کردن «14 mod 8» باید حاصل «6» داشته باشد. روال کنش متناظر mod() است.
/
تقسیم. روال کنش متناظر divide() است.
*
ضرب. روال کنش متناظر multiply() است.
-
تفریق. روال کنش متناظر subtract() است.
+
جمع. روال کنش متناظر add() است.
=
انجام محاسبات. روال کنش اختصاصی TI، equal() است.
عدد نمایش داده‌شده در صفحه را در مکان حافظه رونوشت می‌کند. روال کنش متناظر store() است.
عدد را از مکان حافظه به نمایشگر رونوشت می‌کند. روال کنش متناظر recall() است.
عدد نمایش داده‌شده در صفحه را به عدد موجود در مکان حافظه اضافه می‌کند. روال کنش متناظر sum() است.
عدد نمایش داده‌شده در صفحه را با عدد موجود در مکان حافظه جابه‌جا می‌کند. روال کنش متناظر برای ماشین‌حساب TI، exchange() است.
+/-
منفی کردن؛ تغییر علامت. روال کنش متناظر negate() است.
.
نقطهٔ اعشار. روال کنش متناظر decimal() است.

استفاده از کلیدهای ماشین‌حساب (حالت RPN): کلیدهای اعداد، CHS (تغییر علامت)، +، -، *، /، و کلیدهای ENTR همگی دقیقاً همان کاری را انجام می‌دهند که انتظار دارید. بسیاری از کلیدهای باقی‌مانده مشابه حالت TI هستند. تفاوت‌ها در ادامه با جزئیات آمده است. روال کنش برای کلید ENTR، enter() است.

<-
این یک کلید backspace است که در صورت بروز اشتباه هنگام وارد کردن یک عدد می‌تواند استفاده شود. این کلید ارقام را از صفحه پاک می‌کند. (بخش BUGS را ببینید). کلید backspace معکوس، ثبات X را پاک خواهد کرد. روال کنش متناظر back() است.
صفحهٔ نمایش، وضعیت و حافظه را پاک می‌کند. فشردن آن با دکمهٔ سوم اشاره‌گر، ماشین‌حساب را خاموش می‌کند، به این معنا که از برنامه خارج می‌شود. برای پاک کردن وضعیت، روال کنش off است؛ برای خروج، quit().
عملکرد کلیدهای تابعی را معکوس می‌کند. این کلید معادل کلید f در یک ماشین‌حساب HP است، اما xcalc چندین برچسب را روی هر کلید نمایش نمی‌دهد. برای جزئیات به هریک از کلیدهای تابعی مراجعه کنید.
10^x
«10.0» را به توان عدد بالای پشته می‌رساند. هنگامی که معکوس شود، لگاریتم (مبنای ۱۰) عدد روی صفحه را محاسبه می‌کند. روال کنش متناظر tenpower() است.
«e» را به توان عدد بالای پشته می‌رساند. هنگامی که معکوس شود، لگاریتم (مبنای e) عدد روی صفحه را محاسبه می‌کند. روال کنش epower() است.
عدد بالای پشته را در یک مکان حافظه رونوشت می‌کند. ۱۰ مکان حافظه وجود دارد. حافظهٔ مورد نظر با فشردن یک کلید رقمی پس از این کلید مشخص می‌شود.
عدد را از مکان حافظهٔ مشخص‌شده به درون پشته می‌فرستد.
عدد بالای پشته را به عدد موجود در مکان حافظهٔ مشخص‌شده اضافه می‌کند.
اعداد دو موقعیت بالای پشته، یعنی ثبات‌های X و Y را جابه‌جا می‌کند. روال کنش متناظر XexchangeY() است.
پشته را به سمت پایین می‌چرخاند. هنگامی که معکوس شود، پشته را به سمت بالا می‌چرخاند. روال کنش متناظر roll() است.
این کلیدها برای توابع برنامه‌نویسی در HP-10C استفاده می‌شدند. عملکرد آن‌ها در xcalc بازسازی نشده است.

در نهایت، دو روال کنش دیگر نیز وجود دارد: bell() که زنگ را به صدا درمی‌آورد؛ و selection() که یک عملیات برش روی کل عدد در نمایشگر «کریستال مایع» ماشین‌حساب انجام می‌دهد..SH "شتاب‌دهنده‌ها (ACCELERATORS)" شتاب‌دهنده‌ها میان‌برهایی برای وارد کردن دستورها هستند. xcalc چند شتاب‌دهندهٔ نمونه برای صفحه‌کلید ارائه می‌دهد؛ همچنین کاربران می‌توانند شتاب‌دهنده‌ها را شخصی‌سازی کنند. شتاب‌دهنده‌های صفحه‌کلید عددی ارائه‌شده توسط xcalc باید به‌طور شهودی مطابق انتظار باشند. شتاب‌دهنده‌های تعریف‌شده توسط xcalc روی صفحه‌کلید اصلی در ادامه آورده شده‌اند:

کلید TI کلید HP شتاب‌دهنده صفحه‌کلید تابع TI تابع HP
SQRT SQRT r squareRoot() squareRoot()
AC ON space clear() clear()
AC <- Delete clear() back()
AC <- Backspace clear() back()
AC <- Control-H clear() back()
AC Clear clear()
AC ON q quit() quit()
AC ON Control-C quit() quit()
INV i i inverse() inverse()
sin s s sine() sine()
cos c c cosine() cosine()
tan t t tangent() tangent()
DRG DRG d degree() degree()
e e e()
ln ln l naturalLog() naturalLog()
y^x y^x ^ power() power()
PI PI p pi() pi()
x! x! ! factorial() factorial()
( ( leftParen()
) ) rightParen()
/ / / divide() divide()
* * * multiply() multiply()
- - - subtract() subtract()
+ + + add() add()
= = equal()
0..9 0..9 0..9 digit() digit()
. . . decimal() decimal()
+/- CHS n negate() negate()
x:y x XexchangeY()
ENTR Return enter()
ENTR Linefeed enter()

نام کلاس برنامه XCalc است.

xcalc دارای یک فایل بسیار بزرگ از پیش‌فرض‌های برنامه (application defaults) است که موقعیت، برچسب و عملکرد هر کلید روی ماشین‌حساب را مشخص می‌کند. این فایل همچنین نگاشت‌هایی (translations) را برای استفاده به‌عنوان شتاب‌دهنده‌های صفحه‌کلید تعیین می‌کند. از آنجا که این منابع در کد منبع مشخص نشده‌اند، می‌توانید با نوشتن یک فایل پیش‌فرض‌های اختصاصی برای برنامه و با استفاده از منابع ویجت‌های Command و Form در Athena، اندازه و مکان دکمه‌ها، برچسب هر دکمه و عملکرد هر یک از آن‌ها را مشخص کرده و یک ماشین‌حساب شخصی‌سازی‌شده ایجاد کنید.

رنگ‌های پیش‌زمینه و پس‌زمینهٔ هر کلید ماشین‌حساب را می‌توان به‌صورت جداگانه مشخص کرد. برای ماشین‌حساب TI، یک نمونه پیکربندی کلاسیک منابع رنگ می‌تواند به این صورت باشد:

XCalc.ti.Command.background:	gray50
XCalc.ti.Command.foreground:	white

برای هر یک از دکمه‌های 20، 25، 30، 35 و 40 مشخص کنید:

XCalc.ti.button20.background:	black
XCalc.ti.button20.foreground:	white

برای هر یک از دکمه‌های 22، 23، 24، 27، 28، 29، 32، 33، 34، 37، 38 و 39:

XCalc.ti.button22.background:	white
XCalc.ti.button22.foreground:	black
برای مشخص کردن منابع، دانستن سلسله‌مراتب ویجت‌هایی که xcalc را تشکیل می‌دهند مفید است. در نمادگذاری زیر، تورفتگی نشان‌دهنده ساختار سلسله‌مراتبی است. ابتدا نام کلاس ویجت آورده شده و به دنبال آن نام نمونه ویجت آمده است.
XCalc xcalc
        Form  ti  یا  hp    (نام به حالت بستگی دارد)
                Form  bevel
                        Form  screen
                                Label  M
                                Toggle  LCD
                                Label  INV
                                Label  DEG
                                Label  RAD
                                Label  GRAD
                                Label  P
                Command  button1
                Command  button2
                Command  button3
و به همین ترتیب، ...
                Command  button38
                Command  button39
                Command  button40

rpn (کلاس Rpn)
مشخص می‌کند که باید از حالت rpn استفاده شود. پیش‌فرض، حالت TI است.
stipple (کلاس Stipple)
مشخص می‌کند که پس‌زمینه باید مشبک (stippled) باشد. پیش‌فرض برای نمایشگرهای تک‌رنگ “on” و برای نمایشگرهای رنگی “off” است.
نام نمادی که برای نمایش اشاره‌گر استفاده می‌شود. پیش‌فرض “hand2” است.

اگر می‌خواهید xcalc از رنگ‌های TI خود استفاده کند، عبارت زیر را در بخش #ifdef COLOR از فایلی که با xrdb می‌خوانید قرار دهید:

*customization: -color

این کار باعث می‌شود xcalc رنگ‌ها را از فایل سفارشی‌سازی رنگ app-defaults دریافت کند: /usr/share/X11/app-defaults/XCalc-color.

X(7), xrdb(1), مجموعه ویجت‌های Athena

حالت HP به طور کامل اشکال‌زدایی نشده است. به ویژه، پشته (stack) پس از بروز خطاها به درستی مدیریت نمی‌شود.

John Bradley، دانشگاه پنسیلوانیا
Mark Rosenstein، پروژه Athena در MIT
Donna Converse، کنسرسیوم MIT X

2023-02-05 xcalc 1.1.3