OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

منطق

كما اكتشفنا في الفصل 27 ، فإن (()) يدعم الأمر المركب مجموعة متنوعة من عوامل المقارنة. هناك عدد قليل آخر يمكن استخدامه لتقييم المنطق. ستجد هنا لائحة كاملة:


الجدول 34-6: عوامل المقارنة


وصف المشغل

وصف المشغل

<= أصغر من أو يساوي


صورة

> = أكبر من أو يساوي


صورة

<أقل من


صورة

> أكبر من


صورة


صورة

== يساوي


صورة

! = لا يساوي


صورة

&& المنطقية AND


صورة

|| منطقي أو


صورة

إكسبر 1?إكسبر 2:إكسبر 3 عامل المقارنة (الثلاثي). إذا كان التعبير إكسبر 1

يقيّم على أنه غير صفري (صحيح حسابي) إذن إكسبر 2، آخر إكسبر 3.


صورة


عند استخدامها للعمليات المنطقية ، فإن التعبيرات تتبع قواعد المنطق الحسابي ؛ أي أن التعبيرات التي يتم تقييمها على أنها صفر تعتبر خاطئة ، بينما تعتبر التعبيرات غير الصفرية صحيحة. ال (()) يقوم الأمر المركب بتعيين النتائج في أكواد الخروج العادية للقذيفة:



[me @ linuxbox ~] $ إذا ((1)) ؛ ثم صدى "صحيح" ؛ صدى آخر "خطأ" ؛ فاي

صحيح

[me @ linuxbox ~] $ إذا ((0)) ؛ ثم صدى "صحيح" ؛ صدى آخر "خطأ" ؛ فاي

زائف

[me @ linuxbox ~] $ إذا ((1)) ؛ ثم صدى "صحيح" ؛ صدى آخر "خطأ" ؛ فاي

صحيح

[me @ linuxbox ~] $ إذا ((0)) ؛ ثم صدى "صحيح" ؛ صدى آخر "خطأ" ؛ فاي

زائف


أغرب العوامل المنطقية هي عامل ثلاثي. يقوم هذا المشغل (الذي تم تصميمه على غرار ذلك الموجود في لغة البرمجة C) بإجراء اختبار منطقي مستقل. يمكن استخدامه كنوع من بيان if / then / else. إنه يعمل على ثلاثة تعبيرات حسابية (لن تعمل السلاسل النصية) ، وإذا كان التعبير الأول صحيحًا (أو غير صفري) ، فسيتم تنفيذ العرض الثاني. خلاف ذلك ، يتم تنفيذ التعبير الثالث. يمكننا تجربة ذلك في سطر الأوامر:



[me @ linuxbox ~] $ و= 0 [me @ linuxbox ~] $ ((أ <1؟ ++ أ: - أ)) [me @ linuxbox ~] $ صدى $ أ

1

[me @ linuxbox ~] $ ((أ <1؟ ++ أ: - أ))

[me @ linuxbox ~] $ صدى $ أ

0

[me @ linuxbox ~] $ و= 0 [me @ linuxbox ~] $ ((أ <1؟ ++ أ: - أ)) [me @ linuxbox ~] $ صدى $ أ

1

[me @ linuxbox ~] $ ((أ <1؟ ++ أ: - أ))

[me @ linuxbox ~] $ صدى $ أ

0


هنا نرى عامل تشغيل ثلاثي يعمل. هذا المثال يطبق تبديل. في كل مرة يتم فيها تنفيذ العامل ، قيمة المتغير a ينتقل من صفر إلى واحد أو العكس.

يرجى ملاحظة أن أداء الواجب داخل التعبيرات ليس أمرًا سهلاً.


عندما حاولت ، سحق سيعلن خطأ:


[me @ linuxbox ~] $ و= 0

[me @ linuxbox ~] $ ((أ <1؟ أ + = 1: أ- = 1))

bash: ((: a <1؟ a + = 1: a- = 1: محاولة التعيين إلى غير متغير (رمز الخطأ هو "- = 1")

[me @ linuxbox ~] $ و= 0

[me @ linuxbox ~] $ ((أ <1؟ أ + = 1: أ- = 1))

bash: ((: a <1؟ a + = 1: a- = 1: محاولة التعيين إلى غير متغير (رمز الخطأ هو "- = 1")


يمكن التخفيف من هذه المشكلة من خلال إحاطة تعبير الواجب بأولياء الأمور:



[me @ linuxbox ~] $ ((أ <1؟ (أ + = 1) :( أ- = 1)))

[me @ linuxbox ~] $ ((أ <1؟ (أ + = 1) :( أ- = 1)))


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



#! / بن / باش

# arith-loop: انتهى البرنامج النصي لإثبات العمليات الحسابية = 0

و= 0

printf "a \ ta ** 2 \ ta ** 3 \ n" printf "= \ t ==== \ t ==== \ n"


حتى ((انتهى)) ؛ فعل ب = دولار ((أ ** 2))

ج = دولار ((أ ** 3))

printf "٪ d \ t٪ d \ t٪ d \ n" $ a $ b $ c ((a <10؟ ++ a: (finish = 1)))

فعل

#! / بن / باش

# arith-loop: انتهى البرنامج النصي لإثبات العمليات الحسابية = 0

و= 0

printf "a \ ta ** 2 \ ta ** 3 \ n" printf "= \ t ==== \ t ==== \ n"


حتى ((انتهى)) ؛ فعل ب = دولار ((أ ** 2))

ج = دولار ((أ ** 3))

printf "٪ d \ t٪ d \ t٪ d \ n" $ a $ b $ c ((a <10؟ ++ a: (finish = 1)))

فعل


في هذا البرنامج النصي ، نقوم بتنفيذ حلقة until استنادًا إلى قيمة ملف تم الانتهاء من عامل. في البداية ، يتم ضبط المتغير على صفر (خطأ حسابي) ونستمر في الحلقة حتى تصبح غير صفرية. داخل الحلقة ، نحسب المربع والمكعب لمتغير العداد

أ. في نهاية الحلقة ، يتم تقييم قيمة متغير العداد. إذا كان أقل من 10 (الحد الأقصى لعدد التكرارات) ، تتم زيادته بواحد ، وإلا يتم إعطاء المتغير النهائي قيمة واحد ، مما يجعل الإنهاء صحيحًا حسابيًا ، وبالتالي إنهاء الحلقة. يعطي تشغيل البرنامج النصي هذه النتيجة:


[me @ linuxbox ~] $ حلقة arith

[me @ linuxbox ~] $ حلقة arith


a

= 0

1

2

3

4

5

6

7

8

9

10

a

= 0

1

2

3

4

5

6

7

8

9

10


صورة

أ ** 2 أ ** 3

==== ====

أ ** 2 أ ** 3

==== ====

0

1

4

9

16

25

36

49

64

81

100

0

1

4

9

16

25

36

49

64

81

100

0

1

8

27

64

125

216

343

512

729

1000

0

1

8

27

64

125

216

343

512

729

1000

أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: