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:
Stats:
views:6
posted:2/3/2013
language:
pages:8
Description: book prigram and adsens and borsah