اسم
expr - تقييم تعبير
ملخص
EXPR ARG ? arg arg … ?
يسلسل ARG (يضيف مسافات فاصلة بينها) ، يقوم بتقييم النتيجة كتعبير Tcl ، ويعيد القيمة. المشغلات المسموح بها في تعبيرات Tcl هي مجموعة فرعية من المشغلين المسموح بها في تعبيرات C ، ولها نفس المعنى والأسبقية مثل مشغلي C المقابل. غالباً ما ينتج عن التعبيرات نتائج رقمية (عدد صحيح أو قيم الفاصلة العائمة). على سبيل المثال ، التعبير
expr 8.2 + 6
يقيّم إلى 14.2. تختلف تعبيرات Tcl عن تعبيرات C بالطريقة التي يتم بها تحديد المعاملات. أيضا ، تدعم تعبيرات Tcl المعاملات غير الرقمية ومقارنات السلاسل.
المعاملات
يتكون تعبير Tcl من مجموعة من المعاملات والمشغلين والأقواس. يمكن استخدام المسافة البيضاء بين المعاملات والمشغلين والأقواس ؛ يتم تجاهلها من خلال تعليمات التعبير. حيثما أمكن ، يتم تفسير المعاملات على أنها قيم عدد صحيح. قد يتم تحديد قيم عدد صحيح بالقيمة العشرية (الحالة العادية) ، في octal (إذا كان الحرف الأول للمعامل هو0) ، أو بالنظام الست عشري (إذا كانت أول حرفين من المعامل هي0X). إذا كان المعامل لا يحتوي على أحد التنسيقات الصحيحة المذكورة أعلاه ، فإنه يتم التعامل معه كرقم عائم إذا كان ذلك ممكنًا. قد يتم تحديد أرقام الفاصلة العائمة بأي من الطرق المقبولة بواسطة مترجم C متوافق مع ANSI (فيما عدا أنF, F, لوL لاحقات لن يسمح في معظم المنشآت). على سبيل المثال ، كل ما يلي هي أرقام الفاصلة العائمة صالحة: 2.1 ، 3. ، 6e4 ، 7.91e + 16. إذا لم يكن هناك تفسير رقمي ممكن ، فسيتم ترك المعامل كسلسلة (ويمكن تطبيق مجموعة محدودة فقط من المشغلين عليه).
قد يتم تحديد العمليات التجارية بأي من الطرق التالية:
1
كقيمة رقمية ، إما عدد صحيح أو عائم.
2
كمتغير TCL ، باستخدام معيار$ الرموز. سيتم استخدام قيمة المتغير كمعامل.
3
كسلسلة محاطة بعلامات اقتباس مزدوجة. يقوم المحلل اللغوي للتعبير بإجراء الاستبدال العكسي ، والمتغير ، واستبدال الأوامر على المعلومات بين علامات الاقتباس ، واستخدام القيمة الناتجة كمتحول
4
كسلسلة مغلقة في الأقواس. سيتم استخدام الأحرف بين القوس المفتوح وسندة الإغلاق المتطابقة كمتحول دون أية بدائل.
5
كقضية TCL محاطة بين قوسين. سيتم تنفيذ الأمر وسيتم استخدام نتيجته كمعامل.
6
كدالة رياضية لها حجج لها أي من الأشكال المذكورة أعلاه للمعاملات ، مثلالخطيئة ($ خ). انظر أدناه للحصول على قائمة الوظائف المحددة.
عندما تحدث بدائل أعلى (على سبيل المثال داخل سلاسل مقتبسة) ، يتم تنفيذها بواسطة تعليمات التعبير. ومع ذلك ، قد تم بالفعل تنفيذ طبقة إضافية من استبدال بواسطة محلل الأمر قبل أن يتم استدعاء معالج التعبير. كما هو موضح أدناه ، من الأفضل عادةً تضمين التعبيرات في الأقواس لمنع محلل الأمر من إجراء بدائل على المحتويات.
بالنسبة لبعض أمثلة التعبيرات البسيطة ، افترض المتغيرا لديه القيمة 3 والمتغيربيحتوي على القيمة 6. ثم يقوم الأمر الموجود على الجانب الأيسر من كل من الأسطر أدناه بإنتاج القيمة على الجانب الأيمن من الخط:
expr 3.1 + $ a6.1 expr 2 + "$ a. $ b" 5.6 expr 4 * llength "6 2" 8 expr {{word one} <"word $ a"} 0
العاملين
عوامل التشغيل الصالحة مدرجة أدناه ، مجمعة بتدريج ترتيب الأسبقية:
- + ~ !
Unary ناقص، unary plus، bit-wise NOT، منطقي NOT. لا يجوز تطبيق أي من هذه المعاملات على المعاملات المتسلسلة ، ويمكن تطبيق bit-wise NOT على الأعداد الصحيحة فقط.
* / %
اضرب ، قسّم ، الباقي. لا يمكن تطبيق أي من هذه المعاملات على المعاملات المتسلسلة ، ويمكن تطبيق الباقي على الأعداد الصحيحة فقط. سيكون الباقي دائما علامة نفس القاسم وقيمة مطلقة أصغر من المقسوم عليه.
+ -
جمع وطرح. صالح لأي معاملات رقمية.
<< >>
تحول اليسار واليمين. صالح للمعالجات الصحيحة فقط. دائمًا ما ينشر التبديل الصحيح بتة التسجيل.
< > <= >=
منطقية أقل ، أكبر ، أقل من أو تساوي ، وأكبر من أو تساوي. كل مشغل ينتج 1 إذا كان الشرط صحيح ، 0 خلاف ذلك. يمكن تطبيق هذه العوامل على السلاسل وكذلك المعاملات الرقمية ، وفي هذه الحالة يتم استخدام مقارنة السلسلة.
== !=
منطقية مساوية وغير متساوية. كل عامل ينتج نتيجة صفر / واحد. صالح لجميع أنواع المعاملات.
&
بت الحكمة و. صالح للمعالجات الصحيحة فقط.
^
Bit-wise الحصري أو. صالح للمعالجات الصحيحة فقط.
|
بت الحكمة أو. صالح للمعالجات الصحيحة فقط.
&&
منطقي و. ينتج نتيجة واحدة إذا كانت كلا المعاملات غير صفرية ، 0 خلاف ذلك. صالح للاستخدامات المنطقية و الرقمية (أعداد صحيحة أو عائمة) فقط.
||
منطقية أو. ينتج نتيجة 0 إذا كان كلا المعاملات صفرًا ، 1 خلاف ذلك. صالح للاستخدامات المنطقية و الرقمية (أعداد صحيحة أو عائمة) فقط.
س ? ذ : ض
If-then-else، as in C. If س يقيّم إلى غير الصفر ، ثم تكون النتيجة هي قيمة ذ . خلاف ذلك ، والنتيجة هي قيمة ض . ال س المعامل يجب أن يكون له قيمة رقمية.
انظر دليل C للحصول على مزيد من التفاصيل حول النتائج التي ينتجها كل مشغل. جميع مجموعة المشغلين الثنائيين من اليسار إلى اليمين في نفس مستوى الأسبقية. على سبيل المثال ، الأمر
expr 4 * 2 <7
إرجاع 0.
ال&&, ||و?: لدى المشغلين "تقييم كسول" ، تمامًا كما في C ، مما يعني أنه لا يتم تقييم المعاملات إذا لم تكن هناك حاجة لتحديد النتيجة. على سبيل المثال ، في الأمر
expr {$ v؟ أ: ب}
واحد فقط منا أوب سيتم تقييمها بالفعل ، اعتمادا على قيمة$ الخامس. لاحظ ، مع ذلك ، أن هذا صحيح فقط إذا كان التعبير بأكمله محاطًا بأقواس. خلاف ذلك ، سوف تقييم محلل TCL على حد سواءا وب قبل استدعاءEXPR أمر.
وظائف الرياضيات
يدعم Tcl الوظائف الحسابية التالية في التعبيرات:
عضلات المعدة ضرب بالعصاسجلالجذر التربيعي ACOS مزدوجLOG10srand آسين إكسبالأسرىأسمر ATAN أرضيةراندتان ATAN2 FMODمستدير - كروي سقف hypotخطيئة كوس الباحثسينه
عضلات المعدة( ARG )
لعرض القيمة المطلقة ARG . الارجنتين قد يكون إما عددًا صحيحًا أو نقطة عائمة ، ويتم إرجاع النتيجة في نفس النموذج.
ACOS ( ARG )
ترجع قوس جيب التمام ARG ، في النطاق 0 ، pi راديان. الارجنتين يجب أن يكون في النطاق -1،1.
آسين ( ARG )
يرجع جيب القوس ARG ، في النطاق -pi / 2، pi / 2 راديان. الارجنتين يجب أن يكون في النطاق -1،1.
ATAN ( ARG )
يرجع ظل القوس ARG ، في النطاق -pi / 2، pi / 2 راديان.
ATAN2 ( س ، ص )
يرجع ظل القوس ذ / س في النطاق -pi، pi راديان. س و ذ لا يمكن أن يكون كلاهما 0.
سقف( ARG )
يرجع أصغر قيمة عدد صحيح لا تقل عن ARG .
كوس ( ARG )
إرجاع جيب تمام ARG تقاس بالراديان.
ضرب بالعصا( ARG )
ترجع جيب التمام الزائد لـ ARG . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.
مزدوج( ARG )
إذا ARG هي قيمة عائمة ، ترجع ARG ، يحول خلاف ذلك ARG لتعويم وإرجاع القيمة المحولة.
إكسب ( ARG )
إرجاع الأسي من ARG ، كما هو محدد ** ARG . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.
أرضية( ARG )
يرجع أكبر قيمة تكاملية لا تزيد عن ARG .
FMOD ( س ، ص )
يرجع الباقي نقطة عائمة لتقسيم س بواسطة ذ . إذا ذ هو 0 ، يتم إرجاع الخطأ.
hypot ( س ، ص )
يحسب طول الوتر من المثلث القائم الزاوية ( س * س + ذ * ذ ).
الباحث ( ARG )
إذا ARG هي قيمة عددية ، ترجع ARG ، يحول خلاف ذلك ARG إلى عدد صحيح بواسطة اقتطاع وإرجاع القيمة المحولة.
سجل( ARG )
يرجع اللوغاريتم الطبيعي لـ ARG . الارجنتين يجب أن تكون قيمة إيجابية.
LOG10 ( ARG )
إرجاع اللوغاريتم الأساسي 10 لـ ARG . الارجنتين يجب أن تكون قيمة إيجابية.
الأسرى ( س ، ص )
يحسب قيمة س تربى على السلطة ذ . إذا س سلبي ذ يجب أن تكون قيمة صحيحة.
راند ()
إرجاع رقم نقطة عائمة من صفر إلى أقل من واحد أو ، من الناحية الرياضية ، النطاق 0،1. تأتي البذرة من الساعة الداخلية للجهاز أو قد يتم ضبطها يدويًا باستخدام وظيفة srand.
مستدير - كروي( ARG )
إذا ARG هي قيمة عددية ، ترجع ARG ، يحول خلاف ذلك ARG إلى عدد صحيح عن طريق تقريب وإرجاع القيمة المحولة.
الخطيئة ( ARG )
يرجع جيب ARG تقاس بالراديان.
سينه ( ARG )
يرجع الجيب الزائدي من ARG . إذا تسببت النتيجة في تجاوز ، يتم إرجاع خطأ.
الجذر التربيعي ( ARG )
يرجع الجذر التربيعي لـ ARG . الارجنتين يجب أن تكون غير سالبة.
srand ( ARG )
ال ARG ، والتي يجب أن تكون عددًا صحيحًا ، يتم استخدامها لإعادة تعيين البذور لمولد الأعداد العشوائي. إرجاع أول رقم عشوائي من تلك البذرة. كل مترجم لديه بذوره الخاص.
تان ( ARG )
يرجع ظل القمر ARG تقاس بالراديان.
تان ( ARG )
إرجاع المماس الزائدي لـ ARG .
بالإضافة إلى هذه الوظائف المحددة مسبقًا ، قد تحدد التطبيقات وظائف إضافية باستخدامTcl_CreateMathFunc().
أنواع ، تجاوز ، ودقة
تتم جميع الحسابات الداخلية التي تشمل الأعداد الصحيحة بنوع C طويل ، وتتم جميع الحسابات الداخلية التي تتضمن نقطة عائمة بالنوع C مزدوج . عند تحويل سلسلة إلى نقطة عائمة ، يتم الكشف عن الفائض الأسية وينتج خطأ Tcl. للتحويل إلى عدد صحيح من السلسلة ، يعتمد اكتشاف تجاوز السعة على سلوك بعض الإجراءات في مكتبة C المحلية ، لذا يجب اعتبارها غير موثوقة. في أي حال ، لا يتم بشكل عام الكشف عن الفائض أو التدفق الأدنى بشكل موثوق للنتائج الوسيطة. تم الكشف عن تجاوز الفوهة العائمة وتدفق أسفل إلى الدرجة التي تدعمها الأجهزة ، والتي عادة ما تكون موثوقة إلى حد ما.
يتم التحويل بين التمثيلات الداخلية لمعاملين صحيحين ، وعائمة عائمة ، وسلسلة تلقائيا عند الحاجة. بالنسبة للحسابات الحسابية ، يتم استخدام الأعداد الصحيحة حتى يتم إدخال رقم النقطة العائمة ، وبعد ذلك يتم استخدام النقطة العائمة. فمثلا،
expr 5/4
يعود 1 ، في حين
expr 5 / 4.0 expr 5 / (string length "abcd" + 0.0)
كلاهما العودة 1.25. يتم دائمًا إرجاع قيم الفاصلة العائمة باستخدام ``."أو"البريد بحيث لن تبدو كقيم صحيحة. فمثلا،
expr 20.0 / 5.0
عائدات4.0، ليس4.
عمليات السلسلة
يمكن استخدام قيم السلسلة كمعاملات لمشغلي المقارنة ، على الرغم من أن مقيم التعبير يحاول إجراء مقارنات على هيئة عدد صحيح أو نقطة عائمة عندما يمكن ذلك. إذا كان أحد معاملات المقارنة عبارة عن سلسلة وأخرى لها قيمة رقمية ، يتم تحويل المعامل العددي إلى سلسلة باستخدام C sprintf محدد التنسيق٪د للأعداد الصحيحة و٪ ز لقيم الفاصلة العائمة. على سبيل المثال ، الأوامر
expr {"0x03"> "2"} expr {"0y" <"0x12"}
كلا الإرجاع 1. يتم إجراء المقارنة الأولى باستخدام المقارنة الصحيحة ، ويتم القيام الثاني باستخدام مقارنة السلسلة بعد تحويل المعامل الثاني إلى السلسلة18. بسبب ميل Tcl لمعالجة القيم كأرقام كلما أمكن ذلك ، فإنه ليس من الجيد بشكل عام استخدام عوامل التشغيل مثل==عندما تريد حقاً مقارنة السلسلة وقد تكون قيم المعاملات تعسفية ؛ من الأفضل في هذه الحالات استخدامخيط الأمر بدلا من ذلك.
اعتبارات الأداء
إرفاق التعبيرات في الأقواس للحصول على أفضل سرعة ومتطلبات التخزين أصغر. هذا يسمح مترجم Tec bytecode لإنشاء رمز أفضل.
كما ذكر أعلاه ، يتم استبدال التعبيرات مرتين: مرة واحدة عن طريق محلل Tcl ومرة واحدة من قبل EXPR أمر. على سبيل المثال ، الأوامر
ضبط 3 set b {$ a + 2} expr $ b * 4
عودة 11 ، وليس مضاعف 4. وهذا لأن محلل Tcl سيحل أولاً$ a + 2 للمتغيربثمEXPR سوف الأمر تقييم التعبير$ a + 2 * 4.
معظم التعبيرات لا تتطلب جولة ثانية من البدائل. إما أن تكون محاطة بأقواس ، أو إذا لم تكن كذلك ، فإن بدائلها المتغيرة وأوامرها تؤدي إلى أرقام أو سلاسل لا تتطلب نفسها بدائل. ومع ذلك ، نظرًا لأن بعض التعبيرات غير المعروفة تحتاج إلى جولتين من الاستبدالات ، فيجب على برنامج التحويل البرمجي bytecode إصدار تعليمات إضافية للتعامل مع هذا الموقف. الرمز الأكثر تكلفة مطلوب للحصول على تعبيرات غير محدثة تحتوي على بدائل الأمر. يجب تنفيذ هذه التعبيرات عن طريق إنشاء شفرة جديدة في كل مرة يتم فيها تنفيذ التعبير.
الكلمات الدالة
الحساب ، منطقي ، مقارنة ، تعبير ، مقارنة ضبابية
مهم: استخدم ال رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام الأمر على جهاز الكمبيوتر الخاص بك.




