dc(1)

الاسم
dc - آلة حاسبة ذات دقة اعتباطية

موجز
dc [-V] [--version] [-h] [--help]
   [-e scriptexpression] [--expression=scriptexpression]
   [-f scriptfile] [--file=scriptfile]
   [file ...]

الوصف

dc هي آلة حاسبة مكتبية عكسية-بولندية تدعم العمليات الحسابية بدقة غير محدودة. كما تسمح لك بتعريف واستدعاء وحدات ماكرو. عادةً يقرأ dc من المدخل القياسي؛ إذا أعطيت له أي وسائط أوامر، فهي أسماء ملفات، ويقرأ dc وينفذ محتويات الملفات قبل القراءة من المدخل القياسي. كل المخرجات العادية تكون إلى المخرج القياسي؛ كل مخرجات الأخطاء تكون إلى الخطأ القياسي.

آلة حاسبة عكسية-بولندية تخزن الأرقام على مكدس. إدخال رقم يدفعه إلى المكدس. العمليات الحسابية تسحب الوسائط من المكدس وتدفع النتائج.

لإدخال رقم في dc، اكتب الأرقام 0 إلى 9 و A إلى F لتمثيل القيم من صفر إلى خمسة عشر، (بغض النظر عن أساس الإدخال الحالي)، واختياريًا بما في ذلك نقطة أساس واحدة. الترميز الأسي غير مدعوم. لإدخال رقم سالب، ابدأ الرقم بـ “_”. لا يمكن استخدام “-” لهذا، لأنه عامل ثنائي للطرح بدلاً من ذلك. لإدخال رقمين متتاليين، افصل بينهما بمسافات أو أسطر جديدة. هذه ليس لها معنى كأوامر.

الخيارات
يمكن استدعاء dc مع خيارات سطر الأوامر التالية:

-V

--version
    اطبع إصدار dc الذي يعمل وإشعار حقوق النشر، ثم اخرج.

-h

--help
    اطبع رسالة استخدام تلخص بإيجاز خيارات سطر الأوامر هذه وعنوان الإبلاغ عن الأخطاء، ثم اخرج.

-e script

--expression=script
    أضف الأوامر في script إلى مجموعة الأوامر التي ستُشغّل أثناء معالجة الإدخال.

-f script-file

--file=script-file
    أضف الأوامر الموجودة في الملف script-file إلى مجموعة الأوامر التي ستُشغّل أثناء معالجة الإدخال.

--max-recursion=depth
    حدد التكرار إلى عمق أقصاه depth. (مفيد بشكل رئيسي لتصحيح الأخطاء.)

إذا بقيت أي معاملات سطر أوامر بعد معالجة ما سبق، تُفسّر هذه المعاملات كأسماء ملفات إدخال لتُعالج. اسم الملف - يشير إلى تيار الإدخال القياسي. سيُعالج الإدخال القياسي إذا لم تُحدد ملفات سكريبت أو تعبيرات.

أوامر الطباعة

p   اطبع القيمة في أعلى المكدس، دون تغيير المكدس. يُطبع سطر جديد بعد القيمة.

n   اطبع القيمة في أعلى المكدس، اسحبها، ولا تطبع سطرًا جديدًا بعدها.

P   اسحب القيمة من أعلى المكدس. إذا كانت سلسلة، تُطبع ببساطة بدون سطر جديد زائد. وإلا فهي رقم، ويُطبع الجزء الصحيح من قيمتها المطلقة كتيار بايت "أساس (UCHAR_MAX+1)". بافتراض أن (UCHAR_MAX+1) هو 256 (كما هو الحال في معظم الآلات ذات البايتات 8-بت)، يمكن للتسلسل KSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx] dsxxsx0sqLqsxLxLK+k أيضًا تحقيق هذه الوظيفة. (كثير من تعقيد كود dc الأصلي أعلاه يرجع إلى ~ حساب الأحرف بالعكس، والرغبة في ضمان عودة جميع السجلات إلى حالاتها الأصلية.)

f   اطبع المحتويات الكاملة للمكدس دون تغيير أي شيء. هذا أمر جيد للاستخدام إذا كنت تائهاً أو تريد معرفة تأثير أمر ما.

الحساب

+   يسحب قيمتين من المكدس، يجمعهما، ويدفع النتيجة. دقة النتيجة تُحدد فقط بقيم الوسائط، وتكون كافية لتكون دقيقة.

-   يسحب قيمتين، يطرح القيمة الأولى المسحوبة من القيمة الثانية المسحوبة، ويدفع النتيجة.

*   يسحب قيمتين، يضربهما، ويدفع النتيجة. عدد الأرقام الكسرية في النتيجة يعتمد على قيمة الدقة الحالية وعدد الأرقام الكسرية في الوسيطين.

/   يسحب قيمتين، يقسم القيمة الثانية المسحوبة على القيمة الأولى المسحوبة، ويدفع النتيجة. عدد الأرقام الكسرية يُحدد بقيمة الدقة.

%   يسحب قيمتين، يحسب باقي القسمة التي سينفذها الأمر /، ويدفع ذلك. القيمة المحسوبة هي نفسها المحسوبة بالتسلسل Sd dld/ Ld*-.

~   يسحب قيمتين، يقسم القيمة الثانية المسحوبة على القيمة الأولى المسحوبة. يُدفع خارج القسمة أولاً، ثم يُدفع الباقي. عدد الأرقام الكسرية المستخدمة في القسمة يُحدد بقيمة الدقة. (التسلسل SdSn lnld/ LnLd% يمكنه أيضًا تحقيق هذه الوظيفة، مع فحص أخطاء مختلف قليلاً.)

^   يسحب قيمتين ويرفع إلى أس، باستخدام القيمة الأولى المسحوبة كأس والقيمة الثانية المسحوبة كأساس. الجزء الكسري من الأس يُتجاهل. قيمة الدقة تحدد عدد الأرقام الكسرية في النتيجة.

|   يسحب ثلاث قيم ويحسب رفعًا معياريًا إلى أس. القيمة الأولى المسحوبة تُستخدم كمعامل اختزال؛ يجب أن تكون هذه القيمة عددًا غير صفري، ويُفضل أن تكون عددًا صحيحًا. القيمة الثانية المسحوبة تُستخدم كأس؛ يجب أن تكون هذه القيمة عددًا غير سالب، وأي جزء كسري من هذا الأس سيُتجاهل. القيمة الثالثة المسحوبة هي الأساس الذي يُرفع إلى أس، ويجب أن يكون عددًا صحيحًا. للأعداد الصحيحة الصغيرة، هذا يشبه التسلسل Sm^Lm%، ولكن، على عكس ^، هذا الأمر سيعمل مع أسس كبيرة بشكل تعسفي.

v   يسحب قيمة واحدة، يحسب جذرها التربيعي، ويدفع ذلك. يُستخدم الحد الأقصى لقيمة الدقة ودقة الوسيطة لتحديد عدد الأرقام الكسرية في النتيجة.

معظم العمليات الحسابية تتأثر بـ “قيمة الدقة”، والتي يمكنك تعيينها بالأمر k. قيمة الدقة المبدئية هي صفر، مما يعني أن جميع العمليات الحسابية باستثناء الجمع والطرح تنتج نتائج صحيحة.

التحكم في المكدس

c   يمسح المكدس، مما يجعله فارغًا.

d   يضاعف القيمة في أعلى المكدس، دافعًا نسخة أخرى منها. وبالتالي، “4d*p” يحسب 4 تربيع ويطبعها.

r   يعكس ترتيب (يبدل) القيمتين العلويتين في المكدس. (يمكن أيضًا تحقيق ذلك بالتسلسل SaSbLaLb.)

R   يسحب أعلى المكدس كعدد صحيح n. يدور دوريًا العناصر n العليا في المكدس المحدث. إذا كان n موجبًا، فإن اتجاه التدوير سيجعل العنصر الأعلى هو الثاني من الأعلى؛ إذا كان n سالبًا، فإن التدوير سيجعل العنصر الأعلى هو العنصر n من الأعلى. إذا كان عمق المكدس أقل من n، فإن المكدس بأكمله يُدار (في الاتجاه المناسب)، دون الإبلاغ عن أي خطأ.

المسجلات

dc يوفر على الأقل 256 سجل ذاكرة، كل منها يُسمى بحرف واحد. يمكنك تخزين رقم أو سلسلة في سجل واسترجاعها لاحقًا.

sr  اسحب القيمة من أعلى المكدس وخزنها في السجل r.

lr  انسخ القيمة في السجل r وادفعها إلى المكدس. تُسترجَع القيمة 0 إذا كان السجل غير مهيأ. هذا لا يغير محتويات r.

كل سجل يحتوي أيضًا على مكدسه الخاص. قيمة السجل الحالية هي أعلى مكدس السجل.

Sr  اسحب القيمة من أعلى المكدس (الرئيسي) وادفعها إلى مكدس السجل r. القيمة السابقة للسجل تصبح غير قابلة للوصول.

Lr  أخرج القيمة من أعلى مكدس السجل r وادفعها إلى المكدس الرئيسي. القيمة السابقة في مكدس السجل r، إن وجدت، أصبحت الآن متاحة عبر الأمر lr.

المعاملات

لدى dc ثلاث معاملات تتحكم في تشغيله: الدقة، وأساس الإدخال، وأساس الإخراج. تحدد الدقة عدد الأرقام الكسرية التي تُحتفظ بها في نتيجة معظم العمليات الحسابية. يتحكم أساس الإدخال في تفسير الأرقام المُدخلة؛ جميع الأرقام المُدخلة تستخدم هذا الأساس. يُستخدم أساس الإخراج لطباعة الأرقام.

أساس الإدخال وأساس الإخراج معاملتان منفصلتان؛ يمكنك جعلهما غير متساويين، وهو ما قد يكون مفيدًا أو مُربكًا. يجب أن يكون أساس الإدخال بين 2 و16 شاملاً. يجب أن يكون أساس الإخراج 2 على الأقل. يجب أن تكون الدقة صفرًا أو أكبر. تُقاس الدقة دائمًا بالأرقام العشرية، بغض النظر عن أساس الإدخال أو الإخراج الحالي.

i   يُخرج القيمة من أعلى المكدس ويستخدمها لتعيين أساس الإدخال.

o   يُخرج القيمة من أعلى المكدس ويستخدمها لتعيين أساس الإخراج.

k   يُخرج القيمة من أعلى المكدس ويستخدمها لتعيين الدقة.

I   يدفع أساس الإدخال الحالي إلى المكدس.

O   يدفع أساس الإخراج الحالي إلى المكدس.

K   يدفع الدقة الحالية إلى المكدس.

سلاسل نصية

لدى dc قدرة محدودة على العمل مع السلاسل النصية بالإضافة إلى الأرقام؛ الأشياء الوحيدة التي يمكنك فعلها بالسلاسل هي طباعتها وتنفيذها كوحدات ماكرو (مما يعني أن محتويات السلسلة تُعالج كأوامر dc). جميع السجلات والمكدس يمكنها حمل السلاسل، ويعرف dc دائمًا ما إذا كان أي كائن معين سلسلة أم رقمًا. بعض الأوامر مثل العمليات الحسابية تتطلب أرقامًا كوسائط وتطبع أخطاءً إذا أُعطيت سلاسل. أوامر أخرى يمكنها قبول رقم أو سلسلة؛ على سبيل المثال، الأمر p يمكنه قبول أي منهما ويطبع الكائن وفقًا لنوعه.

[أحرف]
    يُنشئ سلسلة تحتوي على أحرف (محصورة بين حرفي [ و] متوازنين)، ويدفعها إلى المكدس. على سبيل المثال، [foo]P يطبع الأحرف foo (بدون سطر جديد).

a   يُخرج العنصر العلوي من المكدس. إذا كان رقمًا، يُحوَّل البايت ذو الترتيب المنخفض من هذا الرقم إلى سلسلة ويُدفع إلى المكدس. وإلا كان العنصر العلوي سلسلة، ويُعاد دفع الحرف الأول من تلك السلسلة.

    ملاحظة: هذا الأمر قيد الإهمال؛ راجع dc.info للتفاصيل. إذا كنت تستخدم الأمر a وتعتقد أنه يجب أن يظل جزءًا من GNU dc، قدم تقرير خطأ يطلب الاحتفاظ به.

x   يُخرج قيمة من المكدس وينفذها كوحدة ماكرو. عادةً يجب أن تكون سلسلة؛ إذا كانت رقمًا، يُعاد دفعها ببساطة إلى المكدس. على سبيل المثال، [1p]x ينفذ وحدة الماكرو 1p التي تدفع 1 إلى المكدس وتطبع 1 في سطر منفصل.

تُخزن وحدات الماكرو غالبًا في السجلات؛ [1p]sa يخزن وحدة ماكرو لطباعة 1 في السجل a، وlax يستدعي هذه الوحدة.

>r  يُخرج قيمتين من المكدس ويقارنهما بافتراض أنهما أرقام، وينفذ محتويات السجل r كوحدة ماكرو إذا كان العنصر العلوي الأصلي أكبر. وبالتالي، 1 2>a سيستدعي محتويات السجل a بينما 2 1>a لن يفعل.

!>r مشابه لكنه يستدعي وحدة الماكرو إذا كان العنصر العلوي الأصلي ليس أكبر من (أقل من أو يساوي) ما كان ثاني عنصر من الأعلى.

<r  مشابه لكنه يستدعي وحدة الماكرو إذا كان العنصر العلوي الأصلي أقل.

!<r مشابه لكنه يستدعي وحدة الماكرو إذا كان العنصر العلوي الأصلي ليس أقل من (أكبر من أو يساوي) ما كان ثاني عنصر من الأعلى.

=r  مشابه لكنه يستدعي الماكرو إذا كان الرقمان المسحوبان متساويين.

!=r مشابه لكنه يستدعي الماكرو إذا كان الرقمان المسحوبان غير متساويين.

?   يقرأ سطراً من الطرفية وينفذه. يسمح هذا الأمر للماكرو بطلب إدخال من المستخدم.

q   يخرج من ماكرو ومن الماكرو الذي استدعاه أيضًا. إذا استُدعي من المستوى الأعلى، أو من ماكرو استُدعي مباشرة من المستوى الأعلى، فإن الأمر q سيتسبب في خروج dc.

Q   يسحب قيمة من المكدس ويستخدمها كعدد لمستويات تنفيذ الماكرو التي سيتم الخروج منها. وبالتالي، 3Q يخرج ثلاثة مستويات. الأمر Q لن يتسبب أبداً في خروج dc.

استعلام الحالة

Z   يسحب قيمة من المكدس، ويحسب عدد الأرقام العشرية لها (أو عدد الأحرف، إذا كانت سلسلة) ويدفع ذلك العدد. عدد الأرقام لرقم لا يشمل أي أصفار بادئة، حتى لو ظهرت تلك الأصفار على يمين الفاصلة.

X   يسحب قيمة من المكدس، ويحسب عدد الأرقام الكسرية لها، ويدفع ذلك العدد. بالنسبة لسلسلة، القيمة المدفوعة هي 0.

z   يدفع عمق المكدس الحالي: عدد الكائنات على المكدس قبل تنفيذ الأمر z.

متفرقات

!   سيشغل باقي السطر كأمر نظام. لاحظ أن تحليل الأوامر !< و != و !> له الأولوية، لذا إذا أردت تشغيل أمر يبدأ بـ < أو = أو > فستحتاج إلى إضافة مسافة بعد !.

#   سيفسر باقي السطر كتعليق.

:r  سيسحب القيمتين العلويتين من المكدس. سيتم تخزين القيمة الثانية من الأعلى القديمة في المصفوفة r، مفهرسة بقيمة أعلى المكدس القديمة.

;r  يسحب أعلى المكدس ويستخدمه كمؤشر في المصفوفة r. ثم يتم دفع القيمة المحددة إلى المكدس.

لاحظ أن كل مثيل مكدس لمسجل يتكون من قيمته العددية البسيطة (سواء كانت رقماً أو سلسلة) ومصفوفة بنفس الاسم. وبالتالي 1 0:x 0Sx 2 0:x Lx 0;xp سيطبع 1، لأن 2 خُزنت عند الفهرس 0 في مثيل من المصفوفة x الذي سُحب لاحقًا، معيداً كشف المثيل من x الذي يحمل 1 عند الفهرس 0.

متغيرات البيئة

DC_LINE_LENGTH
    يحدد العمود الذي يتم عنده تقسيم المخرجات الرقمية؛ القيمة المبدئية هي 70. إذا ضُبطت على “0” فسيتم تعطيل تقسيم الأسطر وسيكون كل سطر مخرجات بطول اللازم لتمثيل الرقم.

DC_PROMPT
    يضبط موجه لاستخدامه عندما يتوقع dc إدخالاً تفاعلياً على stdin.

العلل

أرسل تقارير الأخطاء البريدية إلى bug-dc@gnu.org.

انظر أيضًا
التوثيق الأكثر اكتمالاً متاح في dc.info، والذي قد يكون (اعتماداً على تثبيتك المحلي) متاحاً باستدعاء “info dc”.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.