الدرس السادس: الدوال (دورة الـ php)
05-09-2009, 05:11 PM
بعد انقطاع نعود بإذن الله لمواصلة الدروس
وصلنا بفضل الله إلى لدرس السادس الذي نشرع فيه على بركة الله<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
اليوم سنتكلم عن الدوال،<o:p></o:p>
<o:p></o:p>
؟؟؟؟<o:p></o:p>
<o:p></o:p>
لا تقلق لا دخل للرياضيات هنا، كالعادة سأشرح بمثال لتجنب الملل من النظري.<o:p></o:p>
<o:p></o:p>
فلنستعمل الخيال قليلا، لنفرض مثلا أنني أستاذ، و أحتاج لحساب معدل تلميذ ما إنطلاقا من علامت إمتحاناته الثلاثة.<o:p></o:p>
واضح أنني سأفعل ما يلي:وصلنا بفضل الله إلى لدرس السادس الذي نشرع فيه على بركة الله<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
اليوم سنتكلم عن الدوال،<o:p></o:p>
<o:p></o:p>
؟؟؟؟<o:p></o:p>
<o:p></o:p>
لا تقلق لا دخل للرياضيات هنا، كالعادة سأشرح بمثال لتجنب الملل من النظري.<o:p></o:p>
<o:p></o:p>
فلنستعمل الخيال قليلا، لنفرض مثلا أنني أستاذ، و أحتاج لحساب معدل تلميذ ما إنطلاقا من علامت إمتحاناته الثلاثة.<o:p></o:p>
كود PHP:
[RIGHT]<?php
$exam1=12.5;$exam2=16;$exam3=14;
$moyenne=($exam1+$exam2+$exam3)/3;
ehco $moyenne;
?>[/RIGHT]
سيكون الأمر في غاية السهولة لو توقف عند هذا الحد.<o:p></o:p>
لكن تخيلوا أن لدي 30 تلميذ، هل سأعيد تلك الأوامر 30 مرة ؟؟ أمر متعب.<o:p></o:p>
لحسن حظنا أن PHP فكر فينا و منحنا خاصية الدوال التي تقوم بالأوامر مكاننا.<o:p></o:p>
الدالة هي مجموعة من الأوامر نقوم بتعريفها في حالتها العامة، ثم نقوم بطلبها في كل مرة نحتاجها و هي توفر علينا الكتابة الكثيرة.<o:p></o:p>
إليكم لامثال:<o:p></o:p>
لكن تخيلوا أن لدي 30 تلميذ، هل سأعيد تلك الأوامر 30 مرة ؟؟ أمر متعب.<o:p></o:p>
لحسن حظنا أن PHP فكر فينا و منحنا خاصية الدوال التي تقوم بالأوامر مكاننا.<o:p></o:p>
الدالة هي مجموعة من الأوامر نقوم بتعريفها في حالتها العامة، ثم نقوم بطلبها في كل مرة نحتاجها و هي توفر علينا الكتابة الكثيرة.<o:p></o:p>
إليكم لامثال:<o:p></o:p>
كود PHP:
[RIGHT]<?php
function moyenne($exam1,$exam2,$exam3)
{
$calc=($exam1+$exam2+$exam3)/3;
return $calc;
}
echo moyenne(12.5,16,14) ."<br/>";
echo moyenne(15,8,11.5) ."<br/>";
echo moyenne(13,20,20) ."<br/>";
?>[/RIGHT]
ببساطة، نضع مجموعة من الأوامر في ما يسمى بـ "الدالة"، و نعطيها اسما.<o:p></o:p>
ثم كلما احتجنا تلك المجموعة من الأوامر نطلبها بسطر واحد، و نتفادى تكرارها مرارا.<o:p></o:p>
<o:p> </o:p>
كي ننشئ دالة ما نبدا بتهيئة PHP كي نعلمه ماذا سنفعل، فنكتب function ثم فراغ ثم ندخل اسم الدالة، مثلا moyenne ثم بين قوسين نضع مجموعة المتغيرات التي تكون بمثابة المعطيات لتستعملها الدالة في الحساب.<o:p></o:p>
نضع الأوامر بين حاضنتين { } لتحديد مجال الدالة.<o:p></o:p>
و في الأخير نحدد القيمة التي تخرج بها الدالة (القيمة التي ترجعها لنا) فنكتب return ثم فراغ ثم القيمة التي نريد إرجاعها .<o:p></o:p>
أي نحن نعطي الدالة مجموعة من المعطيات، فتقوم بالعمليات و ترجع لنا النتيجة.<o:p></o:p>
مثلا: نعطيها العلامات ترجع لنا المعدل<o:p></o:p>
نعطيها الأسعار فترجع لنا قيمة الدفع<o:p></o:p>
نعطيها قطر دائرة فترجع لنا مساحتها<o:p></o:p>
نعطيها عوامل معادلة من الدرجة الثانية فترجع لنا الحلول<o:p></o:p>
..................<o:p></o:p>
و نستطيع عمل أي شيء بها.<o:p></o:p>
في بعض الأحيان، لا نكون بحاجة لحفظ النتائج، بل نقوم مباشرة بكتابتها على الصفحة فلا نحتاج للأمر return و سنرى ذلك في التمرين التطبيقي.<o:p></o:p>
<o:p> </o:p>
التمرين:<o:p></o:p>
سنقوم بإنشاء صفحة PHP تقوم بحل المعادلات من الدرجة الثانية باستعمال دالة نقوم نحن بإنشائها.<o:p></o:p>
<o:p> </o:p>
التحليل:<o:p></o:p>
المعادلة من الدرجة الثانية تكتب من الشكل: aX²+bX+c=0<o:p></o:p>
ما يهمنا من المعطيات هنا هو الثوابت a b c<o:p></o:p>
نعلم أنه إذا كان a=0 فالمعادلة تصبح من الدرجة الأولى حلها: X=-c/b (بشرط أن b لا يساوي 0)<o:p></o:p>
أما في حالة a لا يساوي 0 نقوم بحساب المميز Delta=b²-4ac<o:p></o:p>
فإذا كان Delta سالب: لا تكون للمعادلة حلول حقيقية<o:p></o:p>
و إلا فالحلان هما: X=(-b+(-) √Delta)/2a<o:p></o:p>
<o:p> </o:p>
هكذا ببساطة سنقوم بترجمة هذا إلى PHP<o:p></o:p>
<o:p> </o:p>
الحل:<o:p></o:p>
ثم كلما احتجنا تلك المجموعة من الأوامر نطلبها بسطر واحد، و نتفادى تكرارها مرارا.<o:p></o:p>
<o:p> </o:p>
كي ننشئ دالة ما نبدا بتهيئة PHP كي نعلمه ماذا سنفعل، فنكتب function ثم فراغ ثم ندخل اسم الدالة، مثلا moyenne ثم بين قوسين نضع مجموعة المتغيرات التي تكون بمثابة المعطيات لتستعملها الدالة في الحساب.<o:p></o:p>
نضع الأوامر بين حاضنتين { } لتحديد مجال الدالة.<o:p></o:p>
و في الأخير نحدد القيمة التي تخرج بها الدالة (القيمة التي ترجعها لنا) فنكتب return ثم فراغ ثم القيمة التي نريد إرجاعها .<o:p></o:p>
أي نحن نعطي الدالة مجموعة من المعطيات، فتقوم بالعمليات و ترجع لنا النتيجة.<o:p></o:p>
مثلا: نعطيها العلامات ترجع لنا المعدل<o:p></o:p>
نعطيها الأسعار فترجع لنا قيمة الدفع<o:p></o:p>
نعطيها قطر دائرة فترجع لنا مساحتها<o:p></o:p>
نعطيها عوامل معادلة من الدرجة الثانية فترجع لنا الحلول<o:p></o:p>
..................<o:p></o:p>
و نستطيع عمل أي شيء بها.<o:p></o:p>
في بعض الأحيان، لا نكون بحاجة لحفظ النتائج، بل نقوم مباشرة بكتابتها على الصفحة فلا نحتاج للأمر return و سنرى ذلك في التمرين التطبيقي.<o:p></o:p>
<o:p> </o:p>
التمرين:<o:p></o:p>
سنقوم بإنشاء صفحة PHP تقوم بحل المعادلات من الدرجة الثانية باستعمال دالة نقوم نحن بإنشائها.<o:p></o:p>
<o:p> </o:p>
التحليل:<o:p></o:p>
المعادلة من الدرجة الثانية تكتب من الشكل: aX²+bX+c=0<o:p></o:p>
ما يهمنا من المعطيات هنا هو الثوابت a b c<o:p></o:p>
نعلم أنه إذا كان a=0 فالمعادلة تصبح من الدرجة الأولى حلها: X=-c/b (بشرط أن b لا يساوي 0)<o:p></o:p>
أما في حالة a لا يساوي 0 نقوم بحساب المميز Delta=b²-4ac<o:p></o:p>
فإذا كان Delta سالب: لا تكون للمعادلة حلول حقيقية<o:p></o:p>
و إلا فالحلان هما: X=(-b+(-) √Delta)/2a<o:p></o:p>
<o:p> </o:p>
هكذا ببساطة سنقوم بترجمة هذا إلى PHP<o:p></o:p>
<o:p> </o:p>
الحل:<o:p></o:p>
كود PHP:
[RIGHT]<?php
function solve($a,$b,$c)
{
if(a==0)
{
echo "La Solution: X=".-c/b;
}
else
{
$Delta=b*b-4*a*c;
if ($Delta<0)
{
echo "pas de solution réel";
}
else
{
echo "les deux solutions sont: X1=".(-b-sqrt(Delta))/(2*a);
echo " et X2=".(-b+sqrt(Delta))/(2*a);
}
}
}
echo "<br/>Pour l'equation: X² + X - 6 = 0<br/>";
solve(1,1,-6);
echo "<br/><br/>Pour l'equation: X² + 2X + 1 = 0<br/>";
solve(1,2,1);
echo "<br/><br/>Pour l'equation: 2X - 4 = 0<br/>";
solve(0,2,-4);
echo "<br/><br/>Pour l'equation: 8X² + 2X + 14 = 0<br/>";
solve(8,2,14);
?>[/RIGHT]
يمكنكم الآن تعديل الكود ليحسب الحلول المركبة <o:p></o:p>
أترك لكم المحاولة، و يكون الناتج كما يلي:<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
أترك لكم المحاولة، و يكون الناتج كما يلي:<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>











