موسوعة المبرمجون المسلمون موسوعة علمية ثقافية
تهتم بالحاسوب و البرمجة و الانترنت و الأسرة و المجتمع و العلوم و الفتاوى
الإسلامية
الشروط وحلقات التكرار : الشروط وحلقات التكرار . else
. elseif . switch . while
. for - do while .
الكـاتب : [ OneTo9
]
بسم
الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ،
سيتم التطرق في هذا الدرس بمشيئة الله الى ما يلي :
- عبـاراة
الـ if . - عبـاراة الـ else . - عبـاراة الـ
elseif . - عبـاراة الـ switch . - حلقة التكرار
while . - حلقة التكرار for . - حلقة التكرار
do while .
- عبـاراة الـ if : استخدام الـ
if في كتابة السكربات شي أساسي ، وكما في لغات البرمجة الأخرى
فإن الـ PHP تتبع نفس الاسلوب في كتابة الـ if ، فيمكن تحديد
شرط معين مقترن بالـ if وبالتالي اذا كان الشرط صحيحاً ( true )
فسيتم تنفيذ الاسطر المحددة ، وبتفصيل أكثر يجب وضع الشرط بين قوسين (
) ، ووضع الاسطر المطلوب تنفيذها بين العلامـات { } ، مع ملاحظة
أنه يمكن التخلي عن العلامات { } في حال وجود سطر واحد فقط
.
فلنفترض وجود نموذج بريدي ( Mail Fourm ) ، يحتوي على الإسم
والبريد والرسالة ، ونرغب في معرفة ما اذا كان المرسل قد ملأ جميع
الحقول وبالتالي إرسـال الرسـالة ، او انه لم بفعل ذلك وبالتالي عرض
رسـالة ( فضلاً قم بتعبئة البيـانات كاملة ) ، لعمل ذلك نحتاج معرفة
أسمـاء المتغيرات في النموذج ، ولذلك فلنفترض أن المتغيرات كالتالي
: ( الإسم name$ ) ، ( البريد email$ ) ، ( الرسـالة
later$ ) ، ولعمل الشرط الأول ( اذا كان الإسم لم يُدخل فلن يتم
ارسـال الرسـالة ) :
Code ..
<? if ( $name
== ""
) echo "فضلاً قم بتعبئة البيـانات كاملة "; ?>
والمعنى أنه إذا كان المتغير
name$ لا يحتوي على أي قيمة ( أي فراغ ) فسيتم تنفيذ السطر التالي
وطبـاعة الجملة ، مع ملاحظة أن المطلوب تنفيذه هم سطر واحد فقط ولذلك
لم نستخدم { } ، بل في حالة وجود أكثر من سطر يجب استخدامها
كالتالي :
- عبـاراة الـ else
: هذه العبـارة تتيح امكانية وجود اجراء ثاني لعدم تحقق الشرط ، ففي
مثالنا السابق كان الاجراء طباعة الجملة اذا تحقق الشرط ، ولكن في حالة
عدم تحقق الشرط فلن يكون هناك اجراء لتنفيذه ، بل ان الاجراء سيتم
تنفيذه اذا تحقق الشرط ومن ثم سيتم اكمال بقية الاسطر ، وفي حالة مثل
هذه الحالة يتم استخدام الـ else لوضع اجراء آخر في حالة عدم
تحقق الشرط ، وبالمثال يتضح المقال :
في هذا المثال سيتم طباعة
الجملة (فضلاً قم بتعبئة البيـانات كاملة ) اذا تحقق الشرط أن المتغير
name$ لا يحتوي على أي قيمة ، وسيتم طباعة الجملة (تم ارسـال الرسـالة
، شكرا لك ) في حالة عدم تحقق الشرط ، أي في حالة وجود قيمة في المتغير
name$ ، مع ملاحظة أن هذا المثال يحتوي على شرطين وليس شرط واحد ،
فالظاهر هو شرط واحد ( "" == name$ ) ولكن العبـارة else تعتبر شرطاً
بحد ذاتها ولو لم يكن هذا الشرط مكتوباً ، وكما هو واضح فمعنى هذا
الشرط هو ( إذا كان غير ذلك ) فقم بطباعة الجملة .
يمكن أن
يكون الشرح غير واضح تماماً ، ولكن أهمية فهم الطريقة ستتضح في الأسطر
القليلة القادمة .
- عبـاراة الـ elseif : في
العبارة السابقة ذكرنا أنه يوجد شرطين واجرائين ، أحد هذين الشرطين غير
مكتوب بل هو مفهوم من ادراج العبـارة else ، وفي حالات كثيرة لا
يكفينا مجرد شرطين واجرائين لاتمام بعض السكربات المعقدة ، فلذلك يمكن
نستخدم العبـارة elseif مع الـ if لعمل مثل هذه السكربات
، فلو افترضنا أن لدينا عداد لزوار الموقع ونريد اظاهر العداد بحيث يتم
قراءته بشكل جيد ، اي بمعني اخر اذا كان عدد الزوار ( 1 ) فسيتم طباعة
الجملة ( عدد الزوار : زائر واحد فقط ) واذا كان ( 2 ) فسيتم طباعة
الجملة ( عدد الزوار : زائرين ) ... وقس على ذلك ، فعندما يكون عدد
الزوار ( 1 ) فسيتم عرض الجملة الأولى فقط وعندما يكون عدد الزوار ( 2
) فسيتم عرض الجملة الثانية فقط ، وهكذا لبقية الشروط .
بافتراض
أن المتغير ( counter$ ) هو عداد الزوار ، فالمثال التالي يبين ما تم
شرحه سابقاً :
الشرط : العداد يساوي 1 الإجراء : طبـاعة (
عدد الزوار : زائر واحد فقط ) الشرط : العداد يساوي 2 الإجراء
: طبـاعة ( عدد الزوار : زائرين ) الشرط : العداد أكبر أو يساوي 3 و
اصغر أو يسـاوي 10 الإجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار
) الشرط : العداد لا يحقق أي من الشروط الإجراء : طبـاعة ( عدد
الزوار : ( العداد ) زائر )
ملاحظة بسيطة فقط ، وهي على العلامة
&& التي تعني ( و ) ، وهي من علامات الجمع بين جملتين ، فيجب
أن تكون الجملتين صحيحتين لتحقق الشرط .
- عبـاراة الـ
switch : هذه العبـارة قريبة جداً من العبـارة if ،
ولكن يمكن استخدام اكثر من شرطرين باسلوب أخر ، غير انه يجب اسناد قيمة
معينة للـ case وهي هنا بمثابة الشرط ، لكي يتم تنفيذ الاجراء المحدد
لذلك الشرط أو الـ case ، وفي النهاية الأمر يعود الى المصمم وايهما
يفضل ، وكما في المثال السابق يمكن كتابة مثال بالـ switch بنفس
الطريقة ، والمشكلة الوحيدة هي كما قلنا أنه يجب اسناد قيمة معينة لكل
case وبالتالي فإن الشرط الثالث من المثال السابق يجب تفريقه لكل قيمة
من ( 3 الى 10 ) ، وهذه العميلة مجهدة لانه يجب كتابة سطر لكل قيمة كما
يلي :
القيمة : 3 الـ case : 3 الاجراء : طبـاعة ( عدد
الزوار : ( العداد ) زوار ) القيمة : 4 الـ case : 4 الاجراء
: طبـاعة ( عدد الزوار : ( العداد ) زوار ) القيمة : 5 الـ case
: 5 الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار
) ......... الخ ...
وفي المثال التالي ساتغاضى عن الشرط
الثالث بكامله ، واذكر بقية الشروط والحالات لمجرد فهم طريقة عمل هذه
العبـارة :
Code ..
<? switch ($counter) {
case "1"; echo " عدد
الزوار : زائر واحد فقط ";
break; case "2"; echo " عدد
الزوار : زائرين "; break;
default; echo "عدد الزوار :
$counter زائر"; break; }
?>
استخدمنا في هذه المثال بعض
الجمل وتعني ما يلي : Switch وتكتب في البداية مع ادراج اسم
المتغير الذي سيتم عمل الشروط عليه . Case أي في حالة ( ....
) ويكتب بجانبها الشرط . Break وتعني ايقاف العملية والخروج
من الشرط بعد تنفيذ أحد الإجراءات . Default وهي تقابل
العبـارة else أي بمعنى أنها لأي حالة لم يتم ذكرها في الشروط
.
- حلقة التكرار while : وهي ابسط حلقات التكرار
على الأطلاق ، بحيث تاخذ شرط واحد فقط وتبني على تنفيذ ما بين علامات
الشروط { } ، والفرق الوحيد بينها وبين الـ if هو انها
ستقوم بتنفيذ الاجراءات طالما كان الشرط صحيحاً ، وهذا يعني احتمال
تنفيذ الإجراء أكثر من مرة ، وهذ الدالة مفيدة في ادراج الحقول من
الجدوال وغيرها من الاستخدامات ، بحيث لو افترضنا وجود جدول معين في
قاعد بيانات ونريد ادراجه في صفحة PHP ، فسيكون من اهم خيارات
الاستخدام هذه الدالة ، وباذن الله سيتم التطرق لقواعد البيانات في
الدروس القادمة ، وفي الوقت الحالي ساذكر مثال بسيط على هذه الدالة
لفهم طريقة استخدامها :
Code ..
<? $total
= 10; while (
$total <= 50 ) { echo "العدد أقل من 50<br>"; $total
+=10; }
?>
بتفكير بسيط يمكن معرفة أن
الجملة ( العدد أقل من 50 ) سيتم طباعتها 5 مرات ، لان حلقة التكرار
while قامت بتنفيذ الاجراء طالما أن الشرط صحيح ، وفي المرة
الأولى كان المتغير ( total$ ) يساوي ( 10 ) والشرط صحيح لان الـ (
total$ ) فعلاً اصغر أو يساوي الـ ( 50 ) ، فتم تنفيذ ما بين علامات
الشرط ، ومن ذلك زيادة متغير المجموع ( total$ ) بقيمة ( 10 ) ومن ثم
الرجوع والمقارنة من جديد ، وفي هذه الحالة صار المتغير ( total$ )
يساوي ( 20 ) وأيضـاً الشرط صحيح وبالتالي الدخول مرة أخرى وتنفيذ
الأجراء .... وهكذا حتى يتم الوصول الى أن قيمة الـ ( total$ ) يساوي (
50 ) وبالتالي الشرط صحيح ، ومن ثم تصبح قيمة الـ ( total$ ) تساوي (
60 ) وفي هذه الحالة يتم ايقاف تنفيذ الاجراءات لأن الشرط غير صحيح
.
- حلقة التكرار for : يوجد طريقة أسهل للتعامل
مع المثال السابق ، فاستخدام حلقة التكرار while كانت القيمة
الابتدائية للمتغير ( total$ ) في سطر ، والشرط في سطر والزيـادة على
المتغير في سطر أخر ، وبالتالي زيارة في عدد الأسطر عن ما يمكن
استخدامه مع حلقة التكرار for ، فالمثـال التالي يبين طريقة
أخرى لاستخدام مثـال الـ while بطريقة أسهل :
Code ..
<? for ( $total
= 10; $total
<=50; $total +=10 ) { echo
"العدد أقل من
50<br>"; }
?>
وللتوضيح فان تركيب الـ
for هو على الشكل التالي :
Code ..
for ( القيمة الأفتراضية; الشـرط; مقدار الزيـادة;
) { الإجراء المطلوب
تنفيذه }
- حلقة التكرار do
while : وهي نسخة أخرى من الـ while والفرق الوحيد
بينهما أن التأكد من الشرط وصحته من عدمها يتم بعد تنفيذ الاجراء وليس
قبله كما في الـ while وكمثال عليها :
Code ..
<? $total
= 10; do {
echo "العدد أقل من
50<br>"; $total +=10; } while (
$total <= 50 ); ?>
وفي نهاية الدرس اتمنى
الفائدة للجميع ، وأُذكر أن باب النقاش وطرح الاسئلة مفتوح باضافة
التعليقات على الدروس ، لتعم الفائدة للجميع ..
يمكنك أن تجد الدرس على
http://www.phpvillage.com/p.php?page=0&idp=44