الثلاثاء، 19 أكتوبر 2010

(5) جمل الشرط في الجافا سكربت



بسم الله الرحمن الرحيم..


السلام عليكم رحمة الله وبركاتهـ


بعد انقطاع عن هذهـ الدروس عدت اليوم لاستكمالها اسأل الله ان ينفع بها....



اليوم بيكون درسنا عن جمل الشرط في الجافا سكربت...


نبدأ بسم الله...



جمل الشرط : قد نحتاج أثناء كتابتنا للبرنامج أن نضع جملة شرط أو أكثر به فبناتج جملة الشرط نستطیع أن نتحقق من
المطابقة أو عدمها.. إذا هي مقارنة بین قیمتین قد یتطابقوا وعندها یكون الجواب True أي صحیح أو قد
لا یتطابقوا وعندها یكون الجواب False اى خاطئ
لنتعرف إذا على جمل الشرط وأنواعها :
١- الدالة الشرطیة     if
في هذه الدالة نقوم بالتأكد من الشرط فإذا تحقق یتم الدخول الى داخل الدالة وبعد الإنتهاء من أوامرها ینتقل الى تنفیذ الاوامر التي تقع خارجها وإذا لم یتحقق سوف یتم الانتقال مباشرة الى تنفیذ الاوامر التى تقع خارج الدالة . صیغتها:


if (الشرط)
{ اذاتحقق - نفذ الامر الذى بداخل الدالة }
 أوامر خارج الدالة
لنأخذ مثالا كاملا ونرى كیف :


<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var pass_2="okman"; 
var pass_user; 
pass_user = window.prompt(" ;("كلمة السر","ادخل كلمة السر 
if (pass_2 == pass_user)
{ document.write (" ; (" أهلا بك }
</script> 
</head> 
<body>
</body>
</html>


شرح المثال

فى هذا المثال قمنا بتعريف متغير (pass_2)ووضعنا بداخله قيمة (okman)ثم قمنا بتعریف متغیر ( pass_user )
ولم نضع بداخله قیمة على اساس ان المستخدم اي الزائر هو الذي سوف یضع القیمة وهنا سوف تخرج نافذة لتخبر المستخدم ان یدخل كلمة السر
وعندها یضع المستخدم الكلمة وبالتالي سوف تخزن هذه القیمة بداخل المتغیر( pass_user )
وبعد ذلك ندخل بداخل جملة الشرط وهي ال( if )وهنا سوف یقارن بین قیمة المتغیر(pass_2) المخزنه مسبقا وبین قیمة المتغیر (pass_user)
الذى حدد قيمته المستخدم ، اذ جملة ( if ( pass_2==pass_user تعنى هل قيمة المتغير pass_2 تساوى قيمة المتغير pass_user
هنا اذا كانت الاجابه نعم عندها سوف یطبع له جملة أهلا بك واذا كانت لا اي غیر متساویتین اي ان كلمة السر الذي ادخلها المستخدم لیست متطابقة
مع كلمة السر المخزنه مسبقا ... عندها لن یطبع شيء .. وفي هذا المثال افترضنا انه ادخل كلمة السر
صحیحه" اقصد هنا في صورة المثال" ..

 

٢- الدالة الشرطیة : ( if / else )
في هذه الدالة الشرطیة نقوم بالنأكد من الشرط وفي هذه الحالة سیكون لنا حالتین :
الاولى :
تحقق الشرط وبالتالي الدخول الى داخل الدالة لتنفیذ الاوامر التى بداخلها ثم الانتقال الى تنفیذ الاوامر التى تقع خارجها .
الثانیة :
وتنفیذ مابداخلها ثم الانتقال الى تنفیذ الاوامر التى تقع ( else ) عدم تحقق الشرط وبالتالي الانتقال الى جملة خارجها .

صیغتها :


 If (الشرط)

{
إذا تحقق نفذ مابداخلها
}
else
{
نفذ هذا الامر إذا لم یتحقق الشرط
}
تنفیذ الاوامر الخارجیة
لنأخذ مثالا كاملا ونرى كیف ..؟
مثال :
 <html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var pass_2="okman";
var pass_user;
pass_user = window.prompt(" ;("ادخل كلمة السر"،"كلمةالسر
if (pass_2 ==pass_user )
{
document.write (" ; ( " أهلا بك
}
else
{
document.write (" ; (" كلمة السر غیر صحیحة
}
document.write (" ; (" في عالم البرمجة
</script>
</head>
<body></body> 
</html>   

في هذا المثال قمنا بتعریف متغیر (pass_2) ووضعنا بداخله قيمة (okman) ثم قمنا بتعريق متغير (pass_user)
ولم نضع بداخله قيمة على اساس ان المستخدم اى الزائر هو الذى سوف يضع القيمة وهنا سوف تخرج نافذة لتخبر المستخدم ان يدخل كلمة السر
وعندها يضع المستخدم الكلمة وبالتالى سوف تخزن هذه القيمة بداخل المتغير (pass_user) وبعد ذلك ندخل بداخل جملة الشرط وهى الـ if
وهنا سوف يقارن بين قيمة المتغير pass_2 المخزنة سابقا وبين قيمة المتغير pass_user الذى حدد قيمت المستخدم
اذ الجملة if(pass__2==pass_user) d تعنى هل قيمة المتغير pass_2 تساوى قيمة pass_user
اذا كانت الاجابة نعم فسوف یطبع له جملة أهلا بك
واذا كانت لا اي غیر متساوین اي ان كلمة السر الذي ادخلها المستخدم لیس مطابقة لكلمة السر المخزنة سابقا .. عندها سوف يطبع الجملة التى فى else
وهى كلمة السر غير صحيحة .. وبعد ان یطابق ویرى اذا كانت صحیح ام لا لیحدد اي جملة یطبع سوف یخرج من دالة ال if
إلى تنفيذ الجملة الخارجية اي التي خارج الدالة والتي لیس لها علاقة بماذا كانت المطابقة لا ام نعم وبتالي طباعة .. عالم البرمجة ..
اذا هنا إما ان تكون الكلمة المدخله صحیحه وعندها سوف یطبع جملة اهلا بك ثم یطبع جملة عالم البرمجه
او ان تكون الكلمة المدخله خطأ وعندها یطبع كلمة السر غیر صحیحه ثم یطبع عالم البرمجه ..
وفي هذا المثال افترضنا انه ادخل كلمة السر صح " اقصد هنا في صورة المثال "..
  
معلومات مهمه عن الداله if 
قد يستخدم المبرمج شرط بداخل شرط وتسمى هذه الحاله (nested if ) فلا يزعجك ذلك فلكل منّا اسلوبه الخاص في وصف الأمور كما أنه قد يتحتم علينا أوقات أن نستخدم شرط بداخل شرط..
 
مثال
 <html dir="rtl">
<head><title> الجافا سكربت </title>
<script type ="text/javascript">
var name1 ="sami";
var name2 ="mahmoud";
if (name1 =="sami")
{ if (name2 =="mahmoud")
document.write (" ; ( "أهلا بك
}
document.write (" ; ( " في عالم البرمجة
</script>
</head>
<body></body>
</html>


في هذا المثال أضطرننا أن نستخدم شرط بداخل شرط وهذا الأسلوب یسمى ( الأسلوب الهرمي اذا جاز التعبیر ) فهنا وضعنا شرطین بداخل بعض ... لماذا ؟
لنفرض أن لدینا عدة أشخاص جمیعهم الإسم الأول سامي ولكن إسم الأب أي الإسم الثاني یختلف إذا هنا یجب
أن نتحقق من الإسمین الأول والثاني إذا الخطوات التى نتبعها كما یلي : نحضر جمیع الأشخاصالذین إسمهم الأول ( سامي ) وهذا مافعلناه بالشرط الأول .
If ( name1 == " mahmoud" ); 
فإذا كان الشرط قد تحقق أي أن أسم المستخدم ( محمود ) سوف یدخل الى الدالة ومن ثم سوف یجد شرطا آخر
یسأله عن أسمه الثاني أي أسم الأب :
If ( name1 == " abdo " ); 
فإذا تحقق سوف ینفذ الامر الذي بداخل هذه الدالة . ومن ثم ینفذ الاوامر التي خارج الدالتین تماما .
لو لاحظت أنه في حالة عدم تحقق أي من الشرطین السابقتین سوف یخرج لتنفیذ ما بخارج الدالتین .
الدالة الشرطیة : ( switch )
عندما یكون لدینا عدة خیارات ونكون نرید أن نخرج بواحد منهم وهو الذي نریده أما ماهو الذي نریده من بین
الخیارات والذي سوف نخرج به سوف یحدده المتغیر الذي سوف ندخله والذي سوف یتفق مع واحدة من هذه
الخیارات ویحققه .. أي هنا وكأننا نستخدم الجملة الشرطیة ( if )
ویأتي أستخدام الدالة ( switch) لیسهل العمل بشكل كبیر وسوف نرى ذلك :
<html dir="rtl">
<head><title> الجافا سكربت </title>
<script type = "text/javascript">
var country ;
country=window.prompt( " 0" ," أدخل الدولة لتعرف عاصمتها ");
switch ( country ) {
case " : " فلسطین
document.writeln("<h عاصمتها القدس الشریف < 3 </h3>") ;
break ;
case " : " العراق
document.writeln("<h عاصمتها بغداد < 3 </h3>") ;
break;
case " : " السودان
document.writeln("<h عاصمتها الخرطوم < 3 </h3>") ;
break ;
case " : " الوطن العربي
document.writeln("<h من المحیط الى الخلیج < 3 </h3>") ;
break ;
default :
document.writeln("<h الدولة التي أدخلتها لیست من ضمن الخیارات المتاحة < 3 </h3>") ;
}
</script>
</head>
<body></body>
</html> 
فى حالة ادخال دولة ليست ضمن الدول المذكورة فى case 
لنحلل المثال سویا فبه نعرف مابهم علینا :
في البدایة عرفنا المتغیر ( country ) وأسندناه الى جملة ( window.prompet ) لكي یدخله المستخدم
بنفسه من لوحة المفاتیح أي انه سوف یدخل أسم دولة معینة ... وهنا سوف نأتي الى وضع المتغیر في دالة ( switch ) كالتالى
 
switch ( country ) 
ثم نضع الخیارات التي نریدها وسوف یقارن المتغیر الذي أدخلنا قیمته بما هو موجود بجانب كلمة Case
 
case  : " السودان " 
وفي حالة مطابقته لأي واحدة من الخیارات التي وضعناها سوف ینفذ الجمل التي جاءت ضمن ال case
الذي توافق معه وبالتالي طباعة الجملة والخروج من دالة switch ولهذا نضع بنهایة كل case كلمة break لیتوقف

لاننا هنا نرید أن نخرج بقیمة واحدة وهي احدى الخیارات التي وضعناها " جرب أن لا تضع ( break ) وأنظر ماذا سیحدث فبالتجربة یحدد المفهوم " .
ولاحظ أننا وضعنا في النهایة الدالة وقبل اغلاقها ( default ) وهنا نعني أنه في حالة أن المستخدم أدخل
قیمة للمتغیر وكانت لیست ضمن ال case سوف یخرج المستخدم بالجملة والامر الذي سوف نضعه بعد ( default )
ثم ننهي الدالة بوضع النهایة ( } ) فما رأیك عزیزي المتدرب أن نأخذ المثال وكأننا مستخدمون وننفذه الان على غیر ما تم ادخاله في الصور السابقة من دولة فلسطین


نفرض خرجت نافذة prompt وأدخلنا الدولة العراق مثلا فهنا سوف یأتي البرنامج ویأخذ كلمة العراق
والتي هي اسندت الى المتغیر ویضعها في دالة switch
 
switch ( country )  
 فیدخل بداخل دالة switch فيأتى إلى case الأول والتى هى :
case  : " فلسطين "  
فیجد أن كلمة العراق لاتتطابق كلمة فلسطین إذا لیس هذا هو الخیار . فینتقل الى ال case التى تليها
فیجد أن المتغیر به كلمة العراق یطابق هذا ال case
أي ( العراق = العراق ) فینفذ الجملة التي بداخل case وهى
document.writeLn( "<h عاصمتها بغداد < 3 </h3> ") ;   

وبالتالي طباعة الجملة التالیة : " عاصمتها بغداد "
وبعد جملة الطباعة هذه یأتي أمرbreak أي توقف وبالتالي الخروج من دالة switch

وأیضا لو فرضنا أن شخص أدخل أي دولة غیر موجودة ضمن الخیارات لتكن الاردن أو السعودیة أو الكويت أو الإمارات
یطبع هنا الجملة التي ضمن الامر default أى :
document.writeln( "<h الدولة التي أدخلتها لیست من ضمن الخیارات المتاحة < 3 </h3> ") ; 
الذي أرید ان أوصله لك في النهایة هو شئ واحد وهي أننا ندخل المتغیر في جملة ( switch ) للمقارنة
مع الخیارات الموجودة بداخلها وعند مطابقة المتغیر مع احدى الخیارات أي النتیجة true سوف ینفذ
الجملة المتعلقة بهذه المطابقة مع العلم أن واحدة فقط من هذه الخیارات تعطي true والباقى false

وعندما یكون كل الخیارات لیست مطابقه سوف ینفذ ما بداخل default اي ان جمیع ال case غير مطابقة false
اذا یاتي عمل ال default



والسلااام عليكم ورحمة الله....

ليست هناك تعليقات:

إرسال تعليق