مشاهدة النسخة كاملة : الوضيفة switch في FlashMx


البرنس_زاهر
03 Oct 2002, 10:48 PM
تسيط الضوء على الوظيفة العالمية switch
حيث تعتبر هذه الوظيفة احد الحلقات التكرارية التي تضع لها اكثر من شرط ووضع اوامر لكل شرط من الشروط تتحقق بتحقق الشرط
وإليكم تفصيل لهذه الدالة .


اسلوب الدالة

switch (المتغير) {
case الاحتمال الاول :
الاوامر التي تنفذ عند حصول الاحتمال الاول;
case الاحتمال الثاني :
الاوامر التي تنفذ عند حصول الاحتمال الثاني;
case الاحتمال الثالث :
الاوامر التي تنفذ عند حصول الاحتمال الثالث;
}

وكما نلاحظ هنا انها مثل الدالة الشرطية if حيث تأخذ نفس المجرى .

وهذا مثال
-------------
i = 2;
switch (i) {
case 2 :
trace("no.2");
break;
case 4 :
trace("no.4");
break;
case 6 :
trace("no.6");
break;
}
-------------
الان انتبه معي لنشرح الكود خطوة بخطوة .
اولا حددنا متغير باسم i ووضعنا له القيمة 2
ثم وضعنا لدالة switch ووضعنا المتغير i حيث هو الذي سوف يدخل في قيم الشروط التاليه ..
ثم قلنا
case 2
هنا كاننا قلنا إذا كان قيمة I = 2
لاحظ ان المتغير وضعناها في البداية في الدالة switch ثم وضعنا الامر الخاص بالدالة وهو case ووضعنا له القيمة 2
ليكون الشرط إذا كان قيمة I تساوي الرقم 2

ثم وضعنا امر المسج وقلنا اظهر النص "no.2" وباستطاعتنا وضع اكثر من امر إذا تحقق الشرط وهو i=2 .
لكن يجب وضع الامر break; ليوقف هذه الحلقه ولا يذهب للذي بعده .

وهكذا بالنسبه للرقم 4 و 6


الان ضع بدل القيمة i=2 ضعها i=4 ستلاحظ عند تشغيل العرض ظهور مسج يوجد به no.4 .
للللللللللكن إذا حذفنا الامر break من الجميع ماذا سوف يحدث
يحدث انه عندما يتحقق شرط ما فهو يحقق الاوامر لكن يحقق باقي اوامر الشروط الباقية .

فعندما نضع قيمة i = 2 وحذف الامر break اي :
-------------
i = 2;
switch (i) {
case 2 :
trace("no.2");
case 4 :
trace("no.4");
case 6 :
trace("no.6");
}
-------------
ستلاحظ انه يظهر النص هذا
no.2
no.4
no.6
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
والسلام عليكم ورحمة الله وبركاته اتمنى لكم التوفيق
اخوكم / زاهر

tamimi
04 Oct 2002, 09:27 AM
هلا أخوي البرنس - زاهر طيب عندي سؤال ما الفرق بينها وبين if ؟؟؟ هل هذي تستخدم في بعض الاشياء والاخرى في اشياء اخرى ام انهما نفس الشيء ؟؟؟
:)

الشهاب الحارق
06 Oct 2002, 04:51 AM
السلام عليكم

حمل المثال (http://shihaab.topcities.com/switch2.zip)


شكراً أخي البرنس على هذا الدرس الطيب

لدي مداخلة بسيطة إنشاء الله

وهي رد على سؤال أخي الغالي التميمي

الفرق بينها وبين أداة الشرط if هو أن هذه الحلقة

ذات شرط محكم الشرط المحكم هو أن تتوافق نوع القيمة مع الكمية

فمثلاً القيمة 1 من نوع رقم و القيمة 2 من نوع رقم

لو قلنا بهذه الطريقة if 1===2 لكان الجواب false

والسبب أن كمية الرقم 1 ليست ككمية الرقم 2

هذه المقارنة تسمى strict equality والتي يمثلها في فلاش هذا المعامل ===

أضرب لك مثال أخر لو قارنا هذا الرقم 1 بالرقم واحد ولكن بين علامتي

التنصيص '1' فالجواب سيكون غير متساويان والسبب الأن ليست

الكمية لآن الكم كلهما واحد ولكن السبب الآن هو النوعية فهذا رقم

والأخر يعتبر نص كون علامتي التنصيص التي حوله

شاهد هذا المثال

width = 250 height = 100

هذه هي النصوص البرمجية فيه

[php]
on(press){
switch (Number(num)){
case '1' :
display = "number is 1";
break;
case 2 :
display = "number is 2";
break;
default :
display = "unknown data type";
}
}
[php/]


بما أن نص الإدخال بشكل عام هو ذات طابع نصي

لذلك وضعت في الحلقة أن المتغير المراد الإختبار عليه لابد كشرط

أن يكون رقم بهذا النص Number num

لدي نص إدخال اسمه num وضعته في الشرط حتى

يعطي صورة أكثر وضوحً ستلاحظ أذا أدخلت الرقم واحد

سيكون الناتج unknown data type اي نوع القيمة غير معروفة

والسبب أن القيمة المدخل رقمية بينما القضية الأول نصية في هذا الشرط

إذا أعتبرنا أن case تمثل القضية الأولى لهذه الحلقة وهي switch

كذلك لو فرضنا أنك وضعت هذه القيمة '1' في نص الإدخال num

فإن الناتج سيان والسبب الآن هو أن الكم لا يتطابق مع الشرط

فأنت أدخلت ثلاثة قيم مقابل قيمة واحدة للأختبار

هذا باعتبار أن المكان المدخل فيه هو نص ديناميكي وليست الوظيفة العالمية trace

width = 550 height = 100

هذا المثال يقوم على أختبرا القيمة المدخلة على شرط أن تكون

نصية وتكون ذات قيمة محددة في الشرط

لو أدخلت القيمة n على سبيل المثال

فهذه قيمة نصية كذلك كمية القيمة هي نفسها في القضية الأول

شاهد النصوص البرمجية لهذا المثال

[php]
on(press)

{
switch (letter){

case "n" :
dis = myData[0] + myData[1];
break;

case "r":
dis = myData[0] + myData[2];
break;

case "k":
dis = myData[0] + myData[3];
break;

default :
dis = "data unabled to be Recognized";
}
}
[php/]


بما أن كما ذكرنا أن نص الإدخال هو ذو قيمة نصية اصلاً

فالشرط يقول هل القيمة المدخلة في المتغير أو لنقل النص الديناميكي

هي قيمة نصية أم رقمية فالحرف n قيمة نصية الأمر الثاني هل

وهذا مهم جداً هل الكمية هي نفسها يقصد بها الحرف n ككمية ليس

كالحرف N فهما مختلفان

بمعنى أخر أن الكم لابد أن يكونا متساويان لنقل في الشكل أو الوزن

ما إلى أخره من مسميات

في النهاية نذكر أن الحلقة switch تستخدم

إذا كنت تريد أن يكون الشرط أكثر إحكامً بحيث يتساوي المقارنً بالمقارنِ

في الكم والنوع

ملاحظ بالنسبة للمصفوفات والعناصر

فهي تقارن بالمرجعية و تسمى Reference المرجعية عبارة

عن عنوان يتكون من أرقام يكون في الذاكرة تتشارك فيه المصفوفات عن طريق

ما يمسى بالمؤشر pointer وهذا أن أحد المصفوفات تؤشر على

قيمة مصفوفة أخرى حتى يستطيع كل منهما أن يقوم بالتغير في نفس القيمة

وهذا أمر أخر ليس مكانه هنا حتى لا نتشعب عن صلب الموضوع

هذا والله أعلى و أعلم

السلام عليكم

tamimi
06 Oct 2002, 03:10 PM
السلام عليكم
هلا أخوي الشهاب الحارق مشكور على التوضيح اخوي :)

المسافر
07 Oct 2002, 01:27 AM
مشكووووورين اخواني الاعزاء
اخوي البرنس على الدرس المفيد
واخوي تميمي على السؤال الذكي
واخوي واستاذي الشهاب الحارق على هذه المداخلة المفيدة
بالتوفيق
والسلام

الشهاب الحارق
07 Oct 2002, 01:32 PM
السلام عليكم

لا شكر على واجب أخوي تميمي و مسافر

و عساكم على القوة و البركة

السلام عليكم

فاشل بالفلاش
07 Oct 2002, 08:22 PM
هلا فيك اخوي البرنس_زاهر

جزاك الله الف خير على هذا الدرس

وتسلم يدينك على الشر ح

مشكور وما تقصر


والف شكر حبيبي الشهاب الحارق

على التوضيح

وتسلم يدينك


تحياتي

سوليدوس
29 Nov 2002, 12:38 AM
بسم الله الرحمن الرحيم

هلا أخوي البرنس زاهر ومشكور على الدرس المفيد جداً وان شاء الله يفهم الاعضاء الفرق بين الاداتين

أخوك/سوليدوس