على بركة الله نبدأ الدرس السابع
الفصل الأول :بدائيات لغة PHP
*التعابير الحلقية :Boucles-Loop
-الحلقة السهلة :Whileبعد ان عرفنا العبارات الشريطة وكيفية تحديد مسار برنامجنا , نأتي الان الى عبارات التكرار , فاذا كنتم قد تابعتم الدرس السابق وفهمتموه جيدا سيكون بامكانكم ابتلاع هذا الدرس بسهولة(وهضمه أيضا
) وكما يدل اسمها , فإننا نكرر شيء معين ونقوم بتكراره وتكراره, واستخدام هذه العبارة له فوائد عديده وكبيره وباختصار شديد فانها ربح للوقت لا غير, تخيل ان لديك كود معين وتلاحظ أنك تقوم بكتابة هذا الكود اكثر من مرة, لكي تصل الى هدف معين , فلماذا لا تختصر الوقت وتجعل الكود يقوم بتكرار نفسه الى حد معين تقوم انت بتحديده , الا يتعبر ذلك اسهل واوفر من ناحية الوقت والتنفيذ ؟ وأيضا الجهد الذي ستقوم بتوفيره لأكواد أخرى. ان ذلك لا يعني أن عبارة التكرار سهله او يمكن عملها في لحظات , عبارة التكرار يجب ان تفهم جيدا قبل كتابتها و التفكير في كيفية عملها والناتج الذي نريد الخروج به من عملها.
وهذا مايقع داخل تعابير التكرار بصفة عامة :
1-دائما العبارات أو أسطر الأكواد تنفذ في ترتيب,من الأعلى الى الأسفل (السهم الأحمر في الصورة)2-عند نهاية تنفيذ العبارات نعاود الكرة مرة أخرى (السهم الأخضر في الصورة)3-ونعاود تنفيذ العبارات من جديد (السهم الأحمر في الصورة)4-ونعود للعبارة الأولى (السهم الأخضر في الصورة)5-وهكذا..المشكلة الوحيدة في هذا الرسم هو أننا لن نتوقف مطلقا ,ستستمر العبارات في التنفيذ الى مالانهاية
!!
لهذا وجدت تعابير التكرار(While or For),حيث وجب تحديد شرط التوقف.اذا لم يتحقق الشرط بعد نستمر في تنفيد العبارات,أما اذا تحقق الشرط نخرج من عبارة التكرار (ouf !).
اليكم مثالا بسيط لأسخدام عبارة تكرار While :
كود PHP:
while ($continuer_boucle == "Yes")
{
// Do this code
}
?> العبارات التي ستكرر توجد بين العلامتين { و }.هنا لن ألقنكم أكثر فتدكروا أننا سنتعود على تواجد هاتين العلامتين في جميع الأكواد من هنا فصاعدا
.
لنأخذ بعض الامثلة على طريقة كتابة عبارة التكرار WHILE , تخيل أنك تريد طباعة الارقام من 1 الى 5 , كم سطر سيتطلب من كتابته ؟ افتح محرر الاكواد وقم بكتابة كود يطبع من الرقم واحد الى الرقم 5 وقم بعدد الاسطر التي قمت بكتابتها , لاحظ الكود التالي :
كود PHP:
print 1;
print "
";
print 2;
print "
";
print 3;
print "
";
print 4;
print "
";
print 5;
print "
";
?> لقد قمنا بكتابة 13 سطرا لكي نطبع من العدد 1 الى العدد 5 , تخيل لو اردنا الطباعة الى العدد 100 كم سطرا سيتطلب ذلك منا ؟ الا تظن ان ذلك سوف يتعبك بدنيا وعقليا
!! وهنا تأتي فائدة عبارة التكرار WHILE لكي تساعدنا على تسهيل كتابة الكود , قم بمسح الكود السابق وانساه للابد وقم بكتابة الكود التالي ولاحظ الفرق :
كود PHP:
$x=1;
while($x<=5)
{echo $x;
echo "
";
$x++;
}
?> كم سطرا قمنا بكتابته الان ؟ فقط 7 اسطر , فرق 5 أسطر عن الكود السابق , ألا يعتبر ذلك مفيدا لنا , واذا لم تقتنع حاول ان تقوم بكتابة الاعداد من 1 الى 100 من غير استخدام التكرار , ولكن مع التكرار الذي يمكنك فعله ان تقوم بتغير الشرط من اقل من او يساوي 5 الى اقل من أو يساوي 100 وسوف يأتيك ناتجك بنفس عدد الاسطر ال7 فقط
. اذا لم تقم بفهم كود التكرار سوف أقوم بشرحه لك لكي تضح الصورة. اقرا بتركيز من هنا , اولا : قمنا بتعيين متغير توجد به القيمة 1 واسمه x وبعد ذلك نقوم بكتابة دالة التكرار وشرطها ان يكون المتغير x اقل من او يساوي 5 , ثم نقوم بطباغة المتغير الموجود لدينا , ونطبع سطر جديد للترتيب , وأخيرا نقوم بزيادة المتغير بواحد ونرجع الى الاعلى لنرى هل الشرط صحيح ام لا , اذا كان صحيحا يقوم بفعل الطباعة مرة اخرى واذا لم يكن صحيحا يقوم بالخروج من البرنامج.
أمثلة تطبيقية :*المثال الأول :ماهو ناتج جمع الاعداد من 1 الى 100 ؟ الجواب هو الكود التالي :
كود PHP:
$x=1;
$total=0;
while($x<=100)
{$total=$total+$x;
$x++;
}
echo "الناتج هو :$total";
?> حاول أن تقوم بقراءة الكود وحاول أن تفهمه جيدا وسوف توضح لك الصورة
*المثال التاني :ماذا لو أردنا ان نجمع الاعداد الزوجيه لوحدها والاعداد الفرديه لوحدها ؟؟ فكر كيف سنقوم بذلك , بسيط جدا
قم بإستخدام العباره الشرطيه IF داخل عبارة التكرار WHILE لاحظ التعديل على الكود وسوف تعرف الطريقة :
كود PHP:
$x=1;
$total1=0;
$total2=0;
while($x<=100)
{
if ($x % 2==0)
{ $total1=$total1+$x;
$x++;
}
else
{ $total2=$total2+$x;
$x++;
}
}
echo "ناتج الزوجي :$total1";
echo "
";
echo "ناتج الفردي :$total2";
?> هل يوجد شيئ صعب في هذا الكود؟ لا اعتقد ذلك , لان كل ما نقوم بفعله منطقي جدا
ملاحظه: يمكن استخدام عبارة WHILE وداخلها WHILE وداخلها WHILE وداخلها IF وكل شي تريد واترك لك الباب مفتوح لكي تقوم بإستكشاف ما أعنيه من هذه الملاحظة
-الحلقة المتقدمة :Forهناك عبارة تكرار أخرى غير العبارة WHILE وهي العبارة FOR , وتستخدم دائما أكثر من العباره WHILE لأن ديناميكيتها أكبر من WHILE ولكن ناتج عمل الأثنين واحد , واذا عملت عبارة بالأولى يمكن عملها بالثانية والعكس , ولا يوجد ناتج تقوم بعمله في الاولى ولا تستطيع ان تقوم به في الثانية , والقرار في الاخير يرجع الى المبرمج , لنرى طريقة الكتابه وهي كالتالي :
كود PHP:
for (variable assignment; test expression; variable increment)
{
//do this code
}
?> مثال على العبارة, لنقم بالعد من 1 الى خمسة, مثلما فعلنا مع العبارة WHILE ونرى ماهي الاختلافات :
كود PHP:
for ($i= 1; $i <= 5; $i++)
{
echo $i;
echo "
";
}
?> ألاحظتم الفرق
؟ الفرق الاول في العبارة WHILE أننا نحدد المتغير في البداية , وزيادة المتغير داخل العبارة, أما في العبارة FOR فاننا نستطيع فعل ذلك كله بين القوسين التي يوجد بها الشروط , ونترك باقي العمل الى FOR , لا تنسى أن $i++ هي نفسها $i = $i + 1
وبعد هذا أدعوكم لأعادة صياغة المثالين التطبيقين السابقين على غرار عبارة التكرار FOR حتى تتأكدوا من فهمكم للدرس
الى هنا نصل الى نهاية الدرس السابع من دورتنا أتمنى أن يروقكم ولا تترددوا بطرح أي سؤال اذا كان هناك شيء غير مفهوم
الى اللقاء في الدرس القادم ان شاء الله