Docstoc

07

Document Sample
07 Powered By Docstoc
					                                  ‫ترتيب الكود البرمجي‬
‫في الدروس السابقة أساسيات من أساسيات البرمجة واعطينا مثال عن الروتين في الحياا اليممياة وهام‬
‫أن تقمم بعمل شي أكثر من مر في الحيا اليممية مثل شرب الشاي أو شرب القهام وييار كلا ر نرسانا‬
    ‫اليمم يتكلم عن ترتيب الكمن ويتكلم تقريباا عان فساف فكاره الاروتين الياممي فأفا فاي اياتا تكارر بعا‬
                                                                                 ‫األعمال بشكل روتيني‬
   ‫وقد تكمن ملل الروتين فأاضرت شي يساعدك على التخسيف من هذا الاروتين ... فماث عناد اساتخدام‬
‫لبرفامج ‪ MS Word‬قد تكمن ملل من تنسيق عد فصمص بطريقة معينة فأف عند كل تقمم بصناعة ماكرو‬
                                   ‫يقمم بسعل العمل الذي كن تسعله في عد خطمات بخطم وااد فقط !!‬

‫ولنقل أف في ايات اليممية وفي يمم إجاز وقررت أن تقمم بعمل تنظياف شاامل (ياا إلهاي عليا يسايل‬
  ‫أطباق الصحمن وتنظيف األثاث وتنظيف األرضيه وترتيب المكتبة وترتيب يرفة النمم و ... و ... الا ) عناد كلا‬
‫فإف تبحث عن طريقة عملية لكي يتم افجاز هذه المهماة فاي أسار وقا فتقامم بتقسايم هاذه المهماة‬
‫الكبير على عده أقسام (التنظيف رالترتياب ر السسايل ر.....) ثام تقامم باساتدعاط أطسالا وفلاذات اكباانك‬
‫وتقسم على كل واخد منهم مهمة بسيطة يستطيع القيام بها .. هذا التقسيم يسمي في عاالم البرمجاة‬
                                                                             ‫بالا‪( function‬نالة أو وظيسة )‬

                                                                                              ‫‪Function‬‬
‫الدالة هي جزط من كمن البرفامج يتم تعريسه عن طريق المبارمج لياتم تنسياذ شاي معاين بماساطتها ر تقامم‬
‫الدالة بأخذ قيم وتسمي (‪ arguments‬معطيات ) كمدخ ت رر ثم تقمم بعمل بع التعدي ت على هاذه‬
‫المدخ ت وتقمم بإخراج قيمة أخري في أكثر األايان تقمم الدالاة بأخاذ القايم ووضاعها فاي متسيارات أخاري‬
‫تسمي بالا(‪ )parameters‬لكي يتم اجاراط العملياات عليهاا ناخال الدالاة وهاذه المتسيارات عتعمال خاارج‬
‫الدالة أي أفها متسيرات خاصه بالدالة فقط ! ...في نروسنا الساابقه قمناا باساتخدام نوال عدياده مثال نوال‬
‫فرز المصسمفات ونوال ايجان فم البيافات رررر هذه المر سنقمم ببناط نوالنا الخاصة بناا رر ومان صانعنا فقامم‬
                 ‫باعطاطها المعلممات والبيافات وهي تقمم باجراط العمليات عليها ومن ثم اخراج الحلمل ...‬

                                                                               ‫تعريف واستدعاء الدوال‬
‫لكي تقمم بتعريف نالة فإف تقمم بكتاباة الكلماة ‪ function‬متبمعاة باسام الدالاة والباارمترات اعزماة والتاي‬
                        ‫سيتم اجراط العمليات عليها بين قمسين ومن ثم تقمم بكتابة الكمن اعزم وسط { و }‬

                                                                                       ‫الصيسه :‬
‫)‪Function functionname (parameters‬‬
‫{‬
‫‪function code‬‬
‫}‬
‫تقمم بكتابه اسم الدالة بدع من ‪ functionname‬ثم تقمم بتعريف المتحمعت أو المتسيرات ‪ parameters‬ومان‬
                  ‫ثم تقمم بكتابه الكمن الذي سمف يقمم بالمطلمب بين القمسين بدع من ‪function code‬‬

‫نعنا اآلن فقمم بكتابة نالة من إفشاطفا والتي تقمم بااجراط عملياة الجماع علاى متسيارين وسانقمم بتسامية‬
‫الدالة باسم ‪ sumnoraml‬وهم اسم من تأليسنا ويدل علاى وظيساة وهادف الدالاة ويمكان أن تقامم بتمساية‬
                                                ‫الدالة باي اسم تريده ولس مجيرا بكتابه اسم معين‬

‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫;‪return $a‬‬
‫}‬
‫>?‬

                   ‫فقمم في هذه الدالة بإجراط عملية إضافة 110 على المتسير أو القيمة التي يتم تمريرها .‬
                                                                                                     ‫‪Return‬‬
‫يجب أن فضعها في فهاية كل نالة ر فستخدم هذه الكلمة لكي فقمم بإع م الداله ان وظيستهاا افتها وايضاا‬
‫فستخدمها إكا كان لدينا أكثر من قيمة وفريد أن فقامم بإخباار الاا‪ PHP‬مااهي القيماة التاي سايتم اعتمانهاا‬
‫فسي مثالنا هذا أرنفا إخبار الا‪ PHP‬بأن يقمم بأخذ المتسير ‪ $a‬بافاه هام القيماة النهائياة ماع أفاه لام لام فضاع‬
                         ‫المتسير فسيتم اعتباره هم الناتج النهائي عفه عيمجد متسير اخر تم عليه أي عمليات‬

                                                            ‫الذي اقصده أفنا لم كتبنا الكمن بالشكل التالى :‬
‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫; ‪return‬‬
‫}‬
‫>?‬

‫فإفه عضرر من كل ألفه ع يمجد لدينا إع قيمة وااد لن يتم اعتمان قيمة ييرها ولكان لام افترضانا أفاه لادينا‬
                                                                        ‫أكثر من قيمة كما في المثال التالى :‬
‫?<‬
‫)‪Function sul($a,$b‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫;001*‪$b= $b‬‬
‫; ‪return $a‬‬
‫}‬
‫>?‬
                                           ‫هنا يجب تحديد أي المتسيرين سيكمن هم القيمة النهائيه للدالة .‬

                                                                         ‫شرح الداله (‪)sumnormal‬‬
               ‫تقمم الدالة التي صنعناها بأخذ قيمتين ومن ثم فإفها تقمم بزيانه العدن الذي يتم تمريره 110‬

              ‫باجراط أاد األمرين ‪ echo‬أو ‪. print‬‬   ‫ولكي فقمم بإخراج فتيجة الدالة فإفنا ببساطة فسطيع كل‬
                                                                                                 ‫مثال :‬
 ‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫; ‪return‬‬
‫}‬
‫;)005(‪echo sumnormal‬‬
‫>?‬
                                ‫لقد قمنا بتمرير رقم بدع من المتسير ويمكننا أيضا تمرير متسير بدع من الرقم‬
                                                                                                  ‫مثال :‬
‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫; ‪return‬‬
‫}‬
‫;001=‪$f‬‬
‫;)‪echo sumnormal($f‬‬
‫>?‬
‫عاظ أفنا استخدمنا متسير في الدالة (مما يثب ك منا فاي األعلاى أن للدالاة متسيارات خاصاة بهاا) ولايف‬
‫معني كل أفنا عفستطيع استخدام متسيرات بنسف اعسم المذكمر في الدالة فيمكننا مث كتابة فسف اسم‬
                                                            ‫المتسير بدون اصمل أي مشاكل كالتالى :‬
‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫; ‪return‬‬
‫}‬
‫;001=‪$a‬‬
‫;)‪echo sumnormal($a‬‬
‫>?‬
                                      ‫يمكننا أيضا استدعاط نالة بشكل عاني إكا كاف هي تقمم بالطباعة‬
                                                                                             ‫مثال :‬
‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫;‪print $a‬‬
‫; ‪return‬‬
‫}‬

‫;001=‪$a‬‬
‫;)‪sumnormal($a‬‬
‫>?‬

                                                                                           ‫‪print‬‬
‫يقمم األمر ‪ print‬بنسف عمل الدالة ‪ echo‬وعيمجد بينهما اخت ف سمى أن الدالة ‪ echo‬قديماة وهاي األصال‬
                             ‫أما الدالة ‪ print‬فقد تم إفشاؤها في 4‪ php‬وعيمجد أي فرق بينهما اط قا .‬
                                                                                            ‫مثال :‬
‫?<‬
‫;”اامد“ ‪Print‬‬
‫>?‬
                                                                      ‫ويمكننا بها إخراج فتيجة نالة‬
‫?<‬
‫)‪Function sumnormal($a‬‬
‫{‬
‫; 001 + ‪$a = $a‬‬
‫; ‪return‬‬
‫}‬
‫;001=‪$a‬‬

‫;)‪print sumnormal($a‬‬
‫>?‬
                                                                             ‫اين يتم وضع الداله ؟‬
                                        ‫يمكن وضع الدالة في أول الكمن أو في آخرها أي أفه عفرق بين :‬
‫?<‬
‫عاظ افنا قمنا بتعريف الداله اوع ثم استدعاطها//‬
‫)‪Function fares($d‬‬
‫{‬
‫;”‪print “alfareees@hotmail.com‬‬
‫}‬

‫; )‪fares($d‬‬
‫>?‬
                                                                                                  ‫وبين :‬
‫?<‬
‫عاظ افنا قمنا باستدعاط الداله اوع ثم تعريسها //‬
‫; )‪fares($d‬‬

‫)‪Function fares($d‬‬
‫{‬
‫;”‪print “alfareees@hotmail.com‬‬
‫}‬
‫>?‬
                                                       ‫أيضا عدم وضع متسيرات في الدالة كالتالى :‬    ‫يمكن‬
‫)( ‪Html_header‬‬
‫{‬
        ‫;”>‪Print “<html><head><title>alfareees</title></head‬‬
‫; ‪Return‬‬
‫}‬
‫هذه الدالة تقامم بكتاباة الطامر األول مان صاسحة ‪ html‬عااظ أفناا لام فقام بمضاع أي متسيارات او عمامال او‬
                                                                        ‫متحمعت (سمها كما شئ ) .‬

                                                                              ‫تمرير القيم الى الدالة‬
                                                                            ‫هناك فمعين من تمرير القيم‬

                                                  ‫0 - تمرير القيمه مباشره الى الداله (‪)passing by value‬‬
                                                  ‫وكل أن فضع القيمة مباشر بدون إنراجها في متسيرات .‬
                                                                                                 ‫مثال :‬
‫?<‬
‫)‪Function alfars ($f‬‬
‫{‬
‫;‪$f=$f+$f‬‬
‫; ‪return‬‬
‫}‬
‫;)001(‪echo alfars‬‬
 ‫>?‬
                                 ‫عاظ أفنا قمنا بإنراج القيمة مباشر للدالة من يير وضعها في متسيرات .‬
                                            ‫2 - تمرير القيمه عن طريق المرجع (‪)passing by reference‬‬
    ‫فقصد بهذا أفنا فقمم بمضع القمية في متسير أوع ثم فضع هذا المتسير في الدالة لكي يتم اجراط العمليات‬
                                                                                         ‫عليه مثال :‬
‫?<‬
‫)‪Function alfars ($f‬‬
‫{‬
‫;‪$f=$f+$f‬‬
‫; ‪return‬‬
‫}‬
‫;0001= ‪$r‬‬
‫;)‪echo alfars($r‬‬
 ‫>?‬

                                                                         ‫اعداد قيمة افتراضيه للدالة‬
                        ‫تستطيع أن تجعل الا4‪ PHP‬يقمم بإنراج قيمة إفتراضية عند عدم تمرير متسيرات إليه‬
                                                                                               ‫مثال :‬
‫?<‬
‫)04=‪Function alfars ($f‬‬
‫{‬
‫;‪$f=$f+$f‬‬
‫; ‪return‬‬
‫}‬
‫;)(‪echo alfars‬‬
‫>?‬
                                ‫إكا لم يتم إعطاط قيمة للدالة فإفها ستسترض أن القيمة هي 10 مباشر .‬
        ‫أما إكا تم تمرير قيمة أو متسير فإفه سيتم العمل بالقيمة التي تم تمريرها بدع من القيمة اإلفتراضية‬
                                                                                               ‫مثال :‬
‫?<‬
‫)04=‪Function alfars ($f‬‬
‫{‬
‫;‪$f=$f+$f‬‬
‫; ‪return‬‬
‫}‬
‫;)001(‪echo alfars‬‬
‫>?‬

                                                              ‫مدي المتغيرات (‪)variable scope‬‬
    ‫هناك متسيرات محلية (‪ )local‬ومتسيرات عامة (‪ )global‬ر فقصد بالمتسيرات المحلية التي تكمن في ناخل‬
                                          ‫الدالة وفقصد بالعامة التي تكمن في كمن الا‪ PHP‬بشكل عام‬
                                                                                             ‫مثال‬
‫?<‬
‫هذا متسير عام //‬
‫;”‪$r= “salem‬‬
‫)‪function ala($s‬‬
‫{‬
‫هذا متسير محلى//‬
‫;”‪$s = “progrramer‬‬
‫}‬
‫; ‪echo $r‬‬
‫;)‪ala($s‬‬
‫;‪echo $s‬‬
‫>?‬
                                                                                                  ‫مثال :‬
‫?<‬
‫هذا متسير عام //‬
‫;”‪$r= “salem‬‬
‫)‪function ala($s‬‬
‫{‬
‫هذا متسير محلى//‬
‫;”‪$s = “progrramer‬‬
‫}‬
‫; ‪echo $r‬‬
‫;01=‪$s‬‬
‫;‪echo $s‬‬
‫>?‬
‫في المثال األول استطعنا طباعة المتسير ‪ $r‬ولم فساطتع طباعاة المتسيار ‪ $s‬ألفاه محلاى (عياتم تنسياذه اع‬
‫ناخل الدالة ) وعندما فريد طباعته فإفناا يجاب أن فطباع فااتج الدالاة لكاي فحصال علياه (أي أفناا عفساتطيع‬
                                                                                   ‫طباعته بشكل مباشر )‬
                                                                                                   ‫مثال :‬
‫?<‬
‫هذا متسير عام //‬
‫;”‪$r = “salem‬‬
‫)‪function ala($s‬‬
‫{‬
‫هذا متسير محلى//‬
‫;”‪$s = “programmer‬‬
‫}‬
‫استطعنا طباعته بشكل مباشر//‬
‫; ‪echo $r‬‬
‫;)‪ala($s‬‬
‫يجب استخدام الداله لكي يتم طباعته //‬
‫;)‪echo ala($s‬‬
‫>?‬
‫عاظ أفنا اتي لم قمنا بعملية طباعة المتسير من فسف الدالة فالنااتج يكامن مختلاف ألن لكال متسيار عالماه‬
                                                                                               ‫الخاص به‬
            ‫لكي فقمم بجعل المتسير الذي بداخل الدالة متسيرا عاما فيمكننا كل بإادي الطريقيتن التاليتين :‬
                                                                                         ‫الطريقة األولى :‬
‫?<‬
‫)‪function ala($y‬‬
‫{‬
‫;”>‪echo $y. “<br‬‬
‫;‪global $s‬‬
‫;"‪$s = "programmer‬‬
‫; ‪return‬‬
‫}‬
‫;01= ‪$f‬‬
‫;)‪ala($f‬‬
‫;‪echo $s‬‬
‫>?‬
‫عاظ أفنا عندما استخدمنا ‪ global‬فاي ناخال الدالاة لكاي ياتم تعرياف أن المتسيار متسيار عاام وبعادما قمناا‬
‫باستخدام الدالة قام بطباعة المتسير المران طباعته ومن ثم بعد كل قام بتعريف متسير جديد (‪ )$s‬وهاذا‬
                           ‫المتسير متسير عام ألفنا وضعنا قبله الكلمة ‪ global‬فاستطعنا طباعته بكل سهمله .‬
 ‫ لتعريف المتسيرات العامة‬PHP ‫$ التي تستخدم في‬GLOBALS ‫الطريقة الثافيه : هي أن فستخدم المصسمفة‬
                                                                                        ‫أيضا‬
                                                                                      : ‫مثال‬
<?
function ala($y)
{
echo $y. “<br>”;
$GLOBALS[“s”] ;
$s = "programmer";
return ;
}
$f =10;
ala($f);
echo $s;
?>

                                                           )static variable( ‫المتغيرات المستقره‬
                                               ‫اقصد بالمتسيرات المستقر هي التي تكمن قيمتها ثابتة‬
                                                                                          : ‫مثال‬
<?
Function addfares($y)
{
$y;
$y=$y+1 ;
return $y;
}
echo addfares($y);
echo addfares($y);
echo addfares($y);
echo addfares($y);
?>

<?
Function addfares($y)
{
static $y;
$y=$y+1 ;
return $y;
}
echo addfares($y);
echo addfares($y);
echo addfares($y);
echo addfares($y);
?>
                        . ‫الدالة‬   ‫ فافه يحتسظ بقيمته اتي لم افته‬static ‫عاظ عندما عرفنا المتسير بأفه‬
                                                                                         ‫دوال متداخلة‬
                                    ‫يمكننا عمل تعشيش للدوال مثلما كنا فسعل مع بناط القرارات والتكرارات‬
                                                                                                ‫مثال :‬
‫?<‬
‫)‪Function sum($sa‬‬
‫{‬
   ‫;1-‪$sa=$sa‬‬
‫)‪function goadd ($r‬‬
‫{‬
       ‫;‪$r = $r+$r‬‬
‫;‪return $r‬‬
‫}‬
‫;)‪$sa= goadd ($sa‬‬
‫;‪return $sa‬‬
‫}‬
‫;)51( ‪echo sum‬‬
‫>?‬
                              ‫في مثالنا هذا لدينا نالتين الدالة األولى هي ‪ sum‬والدالة الثافية هي ‪goadd‬‬

‫وظيسة الدالة األولى هي أن تقمم باإلفقاص من العدن الذي يمرر إليهاا واااد ثام تقامم بتطبياق نالاة ناخلياة‬
‫فيها هي ‪ goadd‬تقمم بزيان العدن على فسسه .. ومن ثم قمناا بناداط الدالاة األولاى (ألفهاا هاي اعسااس‬
                                                            ‫التي يمجد به الدوال الداخلية ) وطباعة قيمتها .‬
                                                               ‫اشتمال الملفات )‪(include files‬‬
     ‫قد يكمن لدي في برفامج متسير متكرر في أكثر من صسحة أو رسالة خطأ معينة أو تريد إنرج فص كبير‬
                                                                         ‫الحجم في صسحات متعدن‬
  ‫هنا يمكن اشتمال ملسات في ناخل ملسات الا‪ . PHP‬هذه الملسات قد تحتمي على فصمص أو كمن ‪ html‬أو‬
                                                                                     ‫كمن ‪. PHP‬‬

                                                   ‫إن الصيسة التي تستخدمها عشتمال الملسات هي :‬
‫;)‪Include (filename‬‬

                                                                                             ‫مثال :‬

                                           ‫قم بستح ملف فصي واكتب فيه ماتشاط ثم ااسظه باسم ‪a.txt‬‬
                                           ‫قم بافشاط ملف ‪ php‬واكتب فيه ومن ثم ااسظه باسم ‪b.php‬‬
‫?<‬
‫;)”‪Include (“a.txt‬‬
‫>?‬
                                       ‫افقلهما الى مجلد السيرفر .. شسل ملف الا‪ b.php‬وافظر النتيجة .‬
‫عستخدام‬     ‫وعند إرانت‬   ‫يمكن أن تقمم بإفشاط ملف ‪ PHP‬وتحتسظ فيه بجميع الا‪ function‬المطلمبة لبرفامج‬
                                           ‫أي وااد منها تقمم فقط باشتمال الملف ومن ثم استدعاطها .‬

                                                                              ‫داله تلوين الكود‬
         ‫هل راي مماقع تقمم بتلمين الكمن بشكل مذهل مثل ممقع ‪ zend‬؟.... األمر بسيط كل ماعلي أوع‬
            ‫قم بمضع الكمن في ملف فصي وسمه باي اسم (مث ‪ ) file.txt‬وبعد كل قم باستخدام الدالة‬
                                                                                 ‫‪Show_source‬‬
                                                                                        ‫مثال :‬
‫?<‬
‫;)"‪show_source ("file.txt‬‬
‫>?‬

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:1/28/2013
language:
pages:9