الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]تعقيب على كتاب elixir

بدأه المبرمج الصغير_EGY في 28 يوليو 2013 · 2 رد · 490 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

"قد ترى ان هناك الكثير من التشابه بين else/if والجملة switch الا ان هناك بعض الفوارق البسيطة التى قد تكون مؤثرة فى بعض الاحيان :

1- فى حالة مطابقة احدى الحالات مع المتغير المراد اختباره فان الحالة نسفها لاتعتير خيار من الخيارات بل تعتبر نقطة بداية لتنفيذ العبارة switch وبالنسبه لelse/if فان الامر يعتبر خيارات وليس نقطة بداية.

2-فى حالة تنفيذ احدى الحالات فإن البرنامج لا يخرج من الجملة switch بل يستمر يستمر فى التنفيذ والبحث عن حالات متشابه وحالة وجودها يقوم بتنفييذها. "

 

 

 هذا مقتبس من كتاب elixir ولدى تعقيب عليه ان الحالات لهم نفس المعنى لكن هناك خطأ فى الحالة الثانية انه لا يبحث عن حالة متشابها لان المترجم يمنع ذللك بل انه ينفذ كل الاوامر بعد الحالة المطابقة فى حالة عدم وجود break

banner9.gif

#2

انظر معي هذا الكود:

int i = 10;

switch(i)
{
case 2:
case 4:
case 6:
   i = 0;
   break;
case 3:
case 5:
case 7:
case 10:
   i = 1;
   break;

default:
   i = -1;
}
// whatever

الكود السابق يطابق الكود التالي فى أسلوب التنفيذ:

int i = 10;

if (i == 2) goto group1;
if (i == 4) goto group1;
if (i == 6) goto group1;

if (i == 3) goto group2;
if (i == 5) goto group2;
if (i == 7) goto group2;
if (i ==10) goto group2;

goto group_default;

group1:
   i = 0;
   goto finished;

group2:
   i = 1;
   goto finished;

group_default:
   i = -1;

finished:
// whatever

من الكود السابق تعرف لماذا لا يتم وضع break داخل default.

 

تخيل عدم وجود goto finished فى نهاية كود group1، ماذا تعتقد انه سيحدث؟ ايضا ماذا سيحدث إذا لما تضع break بعد كود case 6؟

 

الكود بإستخدام goto مشابه كثيرا للكود الناتج بالأسمبلي لجملة switch.

 

 

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة C++er في 28 يوليو 2013 في 18:35

مدونتي: C++ Tips and Tricks

#3

يعنى انت تقول :

"انه اذا يختبر كل الحالات واذا تطابقة حالة ينفذها ان وجد break خرج من switch وان لم يجدها ينفذ باقى الحالات ......شكراً للك اخى"

banner9.gif

مواضيع مشابهة