المساعد الشخصي الرقمي

عرض الإصدار الكامل : نفسك تبقى محترف php اتفضل اكبر دوره على مستوى المنتديات العربيه فقط مع شــقاوه


Sh2ee
01-07-2007, 04:04 AM
تعتبر لغة PHP من اقوى اللغات الحاليه واسرعها , وتعتبر المفضله عند كثير من المبرمجين لسهولتها وبساطه التعامل معها, في هذا الدرس سوف نتعلم المفاهيم الاساسيه عن هذه اللغه , ومظاهر قوتها وبعض توضيحات القاء الدروس لان هذا الدرس يعتبر البدايه والانطلاقه لنتعلم معاً


بسم الله الرحمن الرحيم

في هذا القسم سوف تتعلم لغة PHP بالكامل وسوف تشمل جميع ما تحتاجه لتعلم هذه اللغه



متطلبات قبل كل درس

نقاط توضيحيه واهداف الدرس

الدرس بالكامل

اسئله على الدرس

الدرس القادم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريد الموقع او بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ بتعلم لغة PHP :

معرفة شبه تامه بلغة HTML

الاخلاص في التعلم

عدم التوقف بعد الانتهاء التعلم وانما البحث عن الجديد ومحاولة التطوير الدائم للمهارات

توفر بعض مهارات اللغه الانجليزية وذلك لان بعض المصطلحات يصعب ترجمتها الى العربية , او معناها العربي لا يؤدي الغرض

نقاط توضيحيه عن دروس PHP :

لماذا تتعلم معنا ؟

ما مقدار الاستفاده من تعلم PHP معنا

ماهي لغة PHP ؟

قوة لغة PHP


--------------------------------------------------------------------------------

لماذا تتعلم معنا ؟

سوف تتعلم من هذه الدروس كيفية عمل برامج PHP من ابسطها الى اعقدها , مرورا من تعريف المتغيرات الى انشاء الدوال والكائنات البرمجيه وربطها مع بعضها البعض. يجب ان تكون لديك خبره في لغة HTML وقمت ببعض البرمجه من قبل ولا يعني ان تكون خبيرا جدا او قمت ببرمجة مواقع او قواعد بيانات. اما اذا كنت مبتدأ سوف تفيدك الدروس ولكن تحتاج الى كثير من التركيز والتطبيق المتواصل ووقت اطول.

مقدار الاستفاده من تعلم PHP معنا

تعلمك معنا سوف يتيح لك بناء مواقع حقيقه وممتازه وسوف نحاول ان نقوم بتغطية جميع ما يتعلق بهذه اللغه. اذا استخدمت لغة HTML من قبل فمن المؤكد انك لاحظت عدم ديناميكية الصفحات ولكن مع PHP سوف تلاحظ الفرق, وبعد الانتهاء من الدروس بالكامل سوف نقوم بعمل تطبيقات حقيقه يتم تقريرها لاحقا.

ماهي لغة PHP ؟

PHP عباره عن لغة تسمى ( Server Side ******ing ******** ) ونعني بذلك انها تترجم من جهة الخادم وليس من جهاز المستخدم. لنضرب مثالا واقعيا على ذلك , عند الدخول الى الدردشه يجب عليك ان تقوم بتحميل (( JAVA VM )) على جهازك لتتمكن من الدخول ولكن اذا قمت بزياره اي موقع يستخدم لغة PHP فلن يكون هناك حاجه لتنصيب او تحميل اي برامج مساعده. فما وراء الكواليس كله يحصل في الخادم (( Server )), صممت هذه اللغه خصيصا للمواقع. ومن ضمن صفحات HTML يمكنك ادراج لغة PHP بداخلها لكي تنفذ في كله مره قمت بزياره الصفحه.
بدأت لغة PHP بمجهود شخص واحد يسمى ( Rasmus Lerdorf ) في سنة 1994 ومرت بثلاث مراحل جذريه لنرى ماهي عليه الان, حتى انه في سنة 2002 كان عدد المواقع التي تستخدمها اكثر من 9000000 (( تسعة مليون )) موقع. PHP لغة برمجة متاحه للكل لتطويرها او العمل عليها وهذا ما يسمى ( Open Source ). قديما كان اختصار PHP هو ( Personal Home Page ) ولكن تغيرت الى الاسم الحالي ( Hypertext Processor ). النسخه الحاليه للغة PHP هي 5 وقد حصل بها تطور كبير وتغيرات جذريه كبيره واصبحت اقوى بكثير من ما هي عليه الان.
http://prog.arccn.net/images/php/l1e1.gif

( مثال 1 : لاحظ انك لا تحتاج الى مترجم PHP على جهازك الشخصي )


قوة لغة PHP :

سوف اقوم بذكر قوة لغة PHP على شكل نقاط وسوف نتكلم عن كل نقطه بالتفصيل

الاداء العالي

تعتبر اللغه جدا مميزه وفعاله , حتى مع دعمها بتقنيه ZEND اصبحت اقوى , بحيث يمكن ان تتحمل ملايين الاوامر في اليوم الواحد


دعمها لعدد كبير من قواعد البيانات

تدعم لغة PHP عدد كبير من قواعد البيانات منها MySQL و mSQL و Oracle و DBM و وغيرها الكثير


الدوال الداخليه او ( Built-In Library )

تحتوي اللغه على كثير من الدوال الجاهزه للاستخدام , ومسهله بطريقه كبيره , بحيث يمكن من سطرين برمجيين او ثلاث من انشاء صوره من غير استخدام اي برنامج تحرير رسومي


القيمه

اللغه مجانيه ولا يوجد اي مبلغ تقوم بدفعه لتحميلها ويمكنك تحميل اللغه من موقعها الرسمي http://www.php.net


التعلم

تعلم اللغه سهل وهو مبني على لغة PERL و C و JAVA فإذا انت تعرف احدها , فتأكد انك سوف تختصر كثير من الوقت للتعلم



--------------------------------------------------------------------------------


اسئله على الدرس :

ماهو الاسم القديم للغة PHP وماهو الاسم الحالي ؟

من هو مخترع هذه اللغه ؟

اذكر مظاهر قوة لغة PHP ؟

اذكر 4 من قواعد البيانات التي تدعمها لغة PHP ؟


الدرس القادم :

سوف نتعلم في الدرس القادم كيفة تنصيب خادم شخصي و لغة PHP و قواعد بيانات MySQL على جهازك وربطها مع بعضها البعض
*******************************************
تذكر عندما قلنا ان لغة PHP تحتاج الى مترجم لكي يقوم بمعرفة ما يقوم به الكود في الدرس الاول ؟ في هذه النقطه سوف تعرف كيف يتم تنصيب مترجم PHP , ولكن لا يستطيع مترجم PHP العمل بمفرده , لانه يحتاج الى خادم شخصي يكون به المترجم ليظهر المعلومات الى المتصفح , ولهذا سوف نقوم بتركيب Apache وهو يعتبر من افضل الخوادم الشخصيه الموجوده


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

تحميل لغة PHP وخادم شخصي وقواعد بيانات MySQL

تحميل محرر مناسب لكتابة البرامج بلغة PHP

اهداف الدرس:

تنصيب لغة PHP وسيرفر Apache و قواعد بيانات MySQL

أختيار محرر مناسب للكتابه

كتابة اول برنامج PHP

وسوم الكتابه في PHP

الطباعه للمتصفح في PHP

دمج PHP مع HTML

التعليقات


--------------------------------------------------------------------------------

تنصيب لغة PHP و الخادم الشخصي Apache و قاعدة البيانات MySQL:

هل تذكر عندما قلنا ان لغة PHP تحتاج الى مترجم لكي يقوم بمعرفة ما يقوم به الكود في الدرس الاول ؟ في هذه النقطه سوف تعرف كيف يتم تنصيب مترجم PHP , ولكن لا يستطيع مترجم PHP العمل بمفرده , لانه يحتاج الى خادم شخصي يكون به المترجم ليظهر المعلومات الى المتصفح , ولهذا سوف نقوم بتركيب Apache وهو يعتبر من افضل الخوادم الشخصيه الموجوده , لكي تقوم بإنهاء عناء تركيب هذه البرامج قامت مجموعه Appserv Network بعمل برنامج يقوم بتنصيب PHP و Apache و MySQL معاً , وحجم الملف صغير جدا مقارنة بتحميل كل برنامج على حده, لكن شرح تركيب هذا البرنامج هنا خارج عن نطاق موضوعنا ولذلك سوف تجد في مكتبة البرامج وصلة تحميل برنامج appserv و ايضا سوف تجد شرح خارجي لطريقة تركيب برنامج Appserv .



اختيار محرر مناسب لكتابة اكواد PHP :

يوجد كثير من البرامج لكتابة اكواد PHP ولكن لا اتحيز الى واحد منهم بشكل معين , انت كمبتدئ تحتاج الى ان تكتب الكود البرمجي بإستخدام احد هذه البرامج لانها تساعد على تتبع الاخطاء وترتيب الكود البرمجي وتلوينه , وهذا يساعد كثيرا في البرمجه , لمشاهدة هذه البرامج اذهب الى صفحة برامج تحرير لغة PHP .



كتابة اول برنامج PHP :

هل انت مستعد ؟ هل قمت بتنصيب برنامج AppServ واخترت محرر كتابة الاكواد المناسب من مكتبة البرامج ؟ اذن لنقم بكتابة اول برنامج PHP . قم بفتح محرر الاكواد وابدأ بإنشاء صفحه جديد وقم بكتابة الكود التالي :
http://prog.arccn.net/images/php/l2e1.gif
قم بحفظ البرنامج وقم بتسميته الى first.php في ملف www واذا كنت اخترت المكان الافتراضي لتنصيب AppServ سوف يكون مكان وضع الملف هنا C:/AppServ/www بعد ذلك اذهب الى متصفحك واكتب التالي http://localhost/first.php وسوف تشاهد التالي :
http://prog.arccn.net/images/php/l2e2.gif

مبارك لك , لقد قمت بكتابة اول برنامج PHP واصبح اسمك مبتدئ PHP او مبرمج مبتدئ للغة PHP

وسوم الكتابه في لغة PHP :

هناك كثير من وسوم الكتابه في لغة PHP , ونعني بوسوم الكتابه المكان الذي يكون يبدأ معه كتابة الكود والمكان الذي ينتهي معه , انظر الى الصوره الاولى في الاعلى وسوف تجد ان وسم بداية الكتابه هو
<?php
ونهاية الكتابه هو
?>
هل عرفت الان معنى وسوم الكتابه ؟
تلميح : (( وسوم = tags ))





فهمت النقطه الى الان ؟ اذن لنقم بتطبيق هذه الوسوم على برنامجنا الاول , لنرى كيف تعمل , ولكي تعرف ماهي افضل طريقه احببت في كتابة الوسوم :)



النمط الافتراضي :
http://prog.arccn.net/images/php/l2e1.gif
النمط القصير :
http://prog.arccn.net/images/php/l2e3.gif
نمط ****** :
http://prog.arccn.net/images/php/l2e4.gif
هل قمت بإختيار النمط المريح لك ؟ اذن انتهينا من الجزء الثاني من درس اليوم :) , هل انت مستعد و مندفع للمتابعه ؟ اذن سوف نبدأ النقطه ( الخامسه لهذا اليوم )



الطباعه للمتصفح في PHP:

اعتقد انك قمت بالتركيز في الشرح بالاعلى وقلت لنفسك ( انا اعرف كيف اطبع للمتصفح ) , نعم انت تعرف , نفسها كلمة print() هي للطباعة في المتصفح , ولكن ما هي print() , هذه الداله داخليه في PHP اي موجوده في المترجم وتستطيع استخدامها , نقوم في معظم الحالات بطباعة مخرجات الى المتصفح , قد تتسائل ماهو معنى كلمة داله ؟ اليس ذلك صحيح ؟ اذن داله تعني ( امر يقوم بفعل شي معرف مسبقا بداخله ) لم تعرف ما اعني ؟ لا تتعجل سوف تقوم بفهم هذا كله لاحقا وفي دروس متقدمه , ودائما المدخلات الى الدوال تكون بين الاقواس كما تشاهد في اول برنامج لك , في حالتنا بالاعلى قمنا بطباعة نص اليس ذلك صحيحا ؟ اذن يجب ان نضع النص بين علامتي التنصيص " نص معين " والا سوف يكون هناك خطأ , اذا ماذا لو اردنا ان نقوم بطباعة رقم ؟ الجواب هو ان نقوم بطباعته بدون علامتي التنصيص. ولا تنسى ان تقوم بإنهاء كل سطر في كودك البرمجي بعلامة ; ولا سوف يكون هناك خطأ , لمذا نحتاج هذه العلامه ؟ لكي نقول للمترجم ان هنا ينتهي طلب هذا الامر وقم بتنفيذه.



دمج PHP مع HTML:

الكود البرمجي الذي قمنا بكتابته في الاعلى , عباره عن PHP فقط ويسمونه باللغه الانقليزيه (( pure php )) == (( مجرد PHP )) ولكن لو اردنا ان نجعل معه بعض من اكواد ال HTML ؟ الجواب بسيط جدا , وهو ان نقوم بكتابة كود ال HTML قبل وبعد وسوم البدايه والنهايه في PHP , اليك مثال يوضح لك الصوره , لنقم بكتابة البرنامج بالاعلى بطريقه اخرى:
http://prog.arccn.net/images/php/l2e5.gif

لن اقوم بشرح كود ال HTML هنا , لاني اعتقد ان عندك خبره او معلومات سابقه عن HTML , اما اذا لم تعرف فالامر بسيط انظر الى مخرجات هذا الكود , ومخرجات الكود في المثال الاول (( بدون دمج مع لغة PHP )) وسوف تلاحظ الفرق. وتذكر انه يمكن اضافة العدد الذي تريد من هذه الاكواد , لا يوجد هناك عدد محدد , فقط اكمل الدرس هذا اليوم وقم بعمل صفحه خاصه بك بهذه الطريقه (( الدمج )) وسوف تشعر انك مبرمج حقيقي. هل انت مصر على معرفة معنى الكود ؟ اذن سوف اشرح لك بطريقه بسيطه , في هذا الكود لاحظ ان الجمله ظهرت بخط عريض وذلك لاستخدامنا لكود HTML الذي تلاحظه في المثال <b> و </b> ووضعنا بين هذا الكود سطر لغة PHP ليطبع الجمله , والناتج الجمله بخط عريض. هل تريد ان تعرف كيف يكتب هذا الكود بلغة HTML , اذن لاحظ التالي :
http://prog.arccn.net/images/php/l2e6.gif

اعتقد انه الان قد وضحت لك الصوره بالكامل :)



التعليــقات:

عندما تكتب كود برمجي كبير , او اسطر برمجيه كثيره سوف تكون لك سهله في البدايه وسوف تعرف عمل هذا الكود , لكن اترك العمل على الكود لمدة سنه , وارجع له مره ثانيه لتقوم ببعض التعديلات وبعض الاصلاحات ؟ هل تعتقد انك سوف تتذكر جميع الاكواد ؟ , اذن هذه هي التعليقات , تعبير او شرح بسيط عن الاكواد التي قمت بعملها وبمعنى اخر (( هي اسطر كتابيه تقوم بشرح اكواد معنيه ولا يقوم المترجم بترجمتها )) لنأخذ بعض انواع التعليقات وبعض الامثله على التعليقات وكيف يتم استعمالها :

سطر واحد :

// this is a comment

او

# this is a comment


عدة اسطر :

/*
this a comment
i am learning php
i love it
*/

لا داعي للقلق اذا لم تفهم هذه النقطه , مع الدرس القادمه سوف تعرف معنى استخدام التعليقات وفوائد استخدامها بشكل مفصل




--------------------------------------------------------------------------------



اسئـــله على الــدرس:

ماهو افضل وسم في رأيك يمكنك استخدامه في كتابة اكوادك ؟

لماذا تحتاج ان تقوم بإستخدام التعليقات ؟

قم بكتابة برنامج PHP يقوم بطباعة اسمك الاول بخط عريض في سطر واسم والدك في سطر اخر بخط مائل واسم عائلتك بخط عادي في سطر ثالث. (( يمكنك ان تجرب كتابة الارقام وتليون الاكواد )) تلميح : استخدم برنامج Front Page للمساعده ;)




الــدرس القــــادم:

في الدرس القادم سوف نقوم بشرح المتغيرات وانواعها بالتفصيل , لكي تعرف قوى لغة PHP ولتبدأ مسيرتك كمبرمج PHP محترف
******************************************
ما معنى متغير ؟ المتغير هو عباره عن مكان او محتوى تضع فيه قيمة , تخيل كأس يمكن ان يحتوي ماء او عصير اليس ذلك صحيحا ؟ نفس الشي ينطبق على المتغير هو مكان نحفظ به قيمة ( بيانات ) . اذن كيف نقوم بتعريف متغير ؟ وكيف نحدد قيم المتغير ؟! في لغة PHP نقوم بتعريف متغير عن طريق الرمز $ فمثلا لو قلنا اننا نريد ان نعرف متغيرا اسمه ( name ) ويحتوي على القيمه ( احمد ) فسوف نقوم بالتالي....


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

مراجعة الدرس الاول : اول برنامج PHP

اختيار محرر كتابة الاكواد المناسب

اهداف الدرس:

المتغيرات
انواع البيانات
الثوابت
المعاملات
ترتيب الاهميات

--------------------------------------------------------------------------------

المتغيرات :

ما معنى متغير ؟ المتغير هو عباره عن مكان او محتوى تضع فيه قيمة , تخيل كأس يمكن ان يحتوي ماء او عصير اليس ذلك صحيحا ؟ نفس الشي ينطبق على المتغير هو مكان نحفظ به قيمة ( بيانات ) . اذن كيف نقوم بتعريف متغير ؟ وكيف نحدد قيم المتغير ؟! في لغة PHP نقوم بتعريف متغير عن طريق الرمز $ فمثلا لو قلنا اننا نريد ان نعرف متغيرا اسمه ( name ) ويحتوي على القيمه ( احمد ) فسوف نقوم بالتالي:
$name = "احمد";

لكن يجب عليك الانتباه بأن اسماء المتغيرات في لغة PHP لها حدود, نعني بذلك انه يوجد اسماء واحرف غير مسموحه لتعريف المتغيرات, لنقوم بتسهيل الامر سنذكر المسموح منها وهو ( احرف ) و ( ارقام ) و ( _ ) فقط.
مثال على الاحرف : ( $name ) , مثال على الارقام : ( $223 ) , مثال على _ : ( $_name ) , ارأيت سهولة ذلك ؟ ولكن يفضل ان تكون الاسماء معبره لكي يسهل عليك كتابة البرنامج ويسهل على الغير فهم محتواه , فلو اردت ان تعرف متغير يحوي البريد الالكتروني فسوف يكون كالتالي ( $email ) او ( $user_email ) وليس من المنطقي ان يكون ( $2235 ) او ( $mobile ) على سبيل المثال. وتذكر ان يمكنك استخدام اي عدد من الحروف التي تريد , فهي ليست محدده

لو اردنا ان نقوم بتعريف متغير به القيمه 1 ومتغير اخر به القيمه 2 ماذا سوف نفعل ؟ سوف نقوم بتعريف المتغير الاول ( $number1 = 1; ) والمتغير الثاني ( $number2 = 2; ) , ماذا لو اردنا طباعته الى المتصفح , بكل بساطه نقوم بعمل التالي: ( print $number1; ) و ( print $number2; ) , لم تقتنع ؟ لم توضح الصوره ؟ مللت من الكلام ؟ لنقم بتسخين ايدينا قليلا وقم بفتح محرر الاكواد اليك وقم بكتابة الكود التالي :

http://prog.arccn.net/images/php/l3e1.gif
عند تنفيذ هذا الكود سوف يكون لدينا الناتج التالي :
http://prog.arccn.net/images/php/l3e2.gif
اذن في المتغير number1 قمنا بوضع القيمه 1 وفي المتغير number2 قمنا بوضع القيمه 2 ( بإستخدام العلامه = ) وقمنا بطباعة المتغيرات, فرأينا محتوى المتغيرات. اذن كأننا قلنا ( print 1; ) اليس كذلك ؟ لاحظ هنا ان السطور البرمجيه تنفذ سطرا سطرا , نعني بذلك اننا سنقوم بتنفيذ السطر رقم 3 ثم نقوم بتنفيذ السطر رقم 4. لكن قد تتسائل , فقط نستطيع ان نقوم بوضع قيم ؟ هل يمكن ان نضع متغير في متغير ؟ نعم يمكن ذلك بهذه الطريقه ( $number2 = $number1; ) ارأيت السهوله والبساطه في الموضوع ؟ وسوف يقوم بطباعة الرقم 1 . قلنا قبل قليل ان التنفيذ يكون سطرا سطرا اليس كذلك ؟ لنرى مثالا على ذلك , اكتب في محرر الاكواد التالي :
http://prog.arccn.net/images/php/l3e3.gif
قم بتجربة الملف ولاحظ الناتج , اذن لان الاوامر تنفذ سطرا سطرا لم يقم المترجم بطباعة القيمه 2 , لان اخر قيمة اسندت الى المتغير ( $number 2 ) هي قيمة المتغير ( $number1 ) , اعتقد ان الامر قد اتضح الان , لا تنسى ان اسماء المتغيرات حساسه لحالة الاحرف فالمتغير ( $number ) لا يساوي المتغير ( $Number ) .

انواع البيانات:

هل لاحظت في الامثله السابقه اننا قمنا بطباعة ارقام ونصوص, اليس كذلك ؟ ولكن ماهي انواع البيانات الي تأخذها المتغيرات وانواعها ؟ لدينا عدة انواع من المتغيرات الا وهي : ( نصوص = string ) , ( ارقام = integer ) , ( ارقام عشريه = Double ) , ( المتغير Boolean ) , ( مصفوفه = array ) , ( كائن = object ) , في بداية تعلمنا سوف نقوم بالتعرف على النصوص والارقم العشرية والمتغير Boolean , اما الاخري فسوف تكون في دروس متقدمه اخرى , لنأخذ امثله على هذه المتغيرات




لاحظ اننا عندما نريد طباعة نص يجب ان نقوم بوضعه بين علامتي التنصيص " " او ' ' اي واحد منهما تقوم بإختياره , ولكن اذا بدأت بواحد منهم يجب ان ينتهي النص بنفسه فلا يصح ان نقول ( "mohammad' ) ولكن الصحيح ( "mohammad" ) او ( 'mohammad' ) وضحت الصوره ؟
معلومه خارجيه : تسمى لغة PHP اللغه المسامحه ولذلك انك عند وضع القيمه داخل المتغير لا تحتاج ان تقوم بتحديد النوع , فإن المترجم يقوم بعرفة النوع من تلقاء نفسه , ماعليك فعله فقط ان تقوم بوضع علامة $ قبل اسم المتغير.

تخيل انك تريد معرفة نوع قيمة موجوده في متغير , ماذا يجب عليك ان تفعل , امر بسيط جدا وهو ان تقوم بإستخدام الداله gettype($var); وسوف تقوم هذه الداله بطباعة نوع المتغير الموجود لديك , لنأخذ امثله على ذلك , افتح محرر الاكواد وقم بكتابة التالي
http://prog.arccn.net/images/php/l3e4.gif
وسوف يكون الناتج كما يلي :
http://prog.arccn.net/images/php/l3e5.gif
****************************************
الدرس الثالث: المتغيرات , الثوابت و المعاملات

ما معنى متغير ؟ المتغير هو عباره عن مكان او محتوى تضع فيه قيمة , تخيل كأس يمكن ان يحتوي ماء او عصير اليس ذلك صحيحا ؟ نفس الشي ينطبق على المتغير هو مكان نحفظ به قيمة ( بيانات ) . اذن كيف نقوم بتعريف متغير ؟ وكيف نحدد قيم المتغير ؟! في لغة PHP نقوم بتعريف متغير عن طريق الرمز $ فمثلا لو قلنا اننا نريد ان نعرف متغيرا اسمه ( name ) ويحتوي على القيمه ( احمد ) فسوف نقوم بالتالي....


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريد الموقع او بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

مراجعة الدرس الاول : اول برنامج PHP

اختيار محرر كتابة الاكواد المناسب

اهداف الدرس:

المتغيرات
انواع البيانات
الثوابت
المعاملات
ترتيب الاهميات

--------------------------------------------------------------------------------

المتغيرات :

ما معنى متغير ؟ المتغير هو عباره عن مكان او محتوى تضع فيه قيمة , تخيل كأس يمكن ان يحتوي ماء او عصير اليس ذلك صحيحا ؟ نفس الشي ينطبق على المتغير هو مكان نحفظ به قيمة ( بيانات ) . اذن كيف نقوم بتعريف متغير ؟ وكيف نحدد قيم المتغير ؟! في لغة PHP نقوم بتعريف متغير عن طريق الرمز $ فمثلا لو قلنا اننا نريد ان نعرف متغيرا اسمه ( name ) ويحتوي على القيمه ( احمد ) فسوف نقوم بالتالي:
$name = "احمد";

لكن يجب عليك الانتباه بأن اسماء المتغيرات في لغة PHP لها حدود, نعني بذلك انه يوجد اسماء واحرف غير مسموحه لتعريف المتغيرات, لنقوم بتسهيل الامر سنذكر المسموح منها وهو ( احرف ) و ( ارقام ) و ( _ ) فقط.
مثال على الاحرف : ( $name ) , مثال على الارقام : ( $223 ) , مثال على _ : ( $_name ) , ارأيت سهولة ذلك ؟ ولكن يفضل ان تكون الاسماء معبره لكي يسهل عليك كتابة البرنامج ويسهل على الغير فهم محتواه , فلو اردت ان تعرف متغير يحوي البريد الالكتروني فسوف يكون كالتالي ( $email ) او ( $user_email ) وليس من المنطقي ان يكون ( $2235 ) او ( $mobile ) على سبيل المثال. وتذكر ان يمكنك استخدام اي عدد من الحروف التي تريد , فهي ليست محدده

لو اردنا ان نقوم بتعريف متغير به القيمه 1 ومتغير اخر به القيمه 2 ماذا سوف نفعل ؟ سوف نقوم بتعريف المتغير الاول ( $number1 = 1; ) والمتغير الثاني ( $number2 = 2; ) , ماذا لو اردنا طباعته الى المتصفح , بكل بساطه نقوم بعمل التالي: ( print $number1; ) و ( print $number2; ) , لم تقتنع ؟ لم توضح الصوره ؟ مللت من الكلام ؟ لنقم بتسخين ايدينا قليلا وقم بفتح محرر الاكواد اليك وقم بكتابة الكود التالي :



عند تنفيذ هذا الكود سوف يكون لدينا الناتج التالي :



اذن في المتغير number1 قمنا بوضع القيمه 1 وفي المتغير number2 قمنا بوضع القيمه 2 ( بإستخدام العلامه = ) وقمنا بطباعة المتغيرات, فرأينا محتوى المتغيرات. اذن كأننا قلنا ( print 1; ) اليس كذلك ؟ لاحظ هنا ان السطور البرمجيه تنفذ سطرا سطرا , نعني بذلك اننا سنقوم بتنفيذ السطر رقم 3 ثم نقوم بتنفيذ السطر رقم 4. لكن قد تتسائل , فقط نستطيع ان نقوم بوضع قيم ؟ هل يمكن ان نضع متغير في متغير ؟ نعم يمكن ذلك بهذه الطريقه ( $number2 = $number1; ) ارأيت السهوله والبساطه في الموضوع ؟ وسوف يقوم بطباعة الرقم 1 . قلنا قبل قليل ان التنفيذ يكون سطرا سطرا اليس كذلك ؟ لنرى مثالا على ذلك , اكتب في محرر الاكواد التالي :



قم بتجربة الملف ولاحظ الناتج , اذن لان الاوامر تنفذ سطرا سطرا لم يقم المترجم بطباعة القيمه 2 , لان اخر قيمة اسندت الى المتغير ( $number 2 ) هي قيمة المتغير ( $number1 ) , اعتقد ان الامر قد اتضح الان , لا تنسى ان اسماء المتغيرات حساسه لحالة الاحرف فالمتغير ( $number ) لا يساوي المتغير ( $Number ) .

انواع البيانات:

هل لاحظت في الامثله السابقه اننا قمنا بطباعة ارقام ونصوص, اليس كذلك ؟ ولكن ماهي انواع البيانات الي تأخذها المتغيرات وانواعها ؟ لدينا عدة انواع من المتغيرات الا وهي : ( نصوص = string ) , ( ارقام = integer ) , ( ارقام عشريه = Double ) , ( المتغير Boolean ) , ( مصفوفه = array ) , ( كائن = object ) , في بداية تعلمنا سوف نقوم بالتعرف على النصوص والارقم العشرية والمتغير Boolean , اما الاخري فسوف تكون في دروس متقدمه اخرى , لنأخذ امثله على هذه المتغيرات

مثال الاسم
"Mohammad" string
123 Integer
1.23 Double
True / False Boolean

لاحظ اننا عندما نريد طباعة نص يجب ان نقوم بوضعه بين علامتي التنصيص " " او ' ' اي واحد منهما تقوم بإختياره , ولكن اذا بدأت بواحد منهم يجب ان ينتهي النص بنفسه فلا يصح ان نقول ( "mohammad' ) ولكن الصحيح ( "mohammad" ) او ( 'mohammad' ) وضحت الصوره ؟
معلومه خارجيه : تسمى لغة PHP اللغه المسامحه ولذلك انك عند وضع القيمه داخل المتغير لا تحتاج ان تقوم بتحديد النوع , فإن المترجم يقوم بعرفة النوع من تلقاء نفسه , ماعليك فعله فقط ان تقوم بوضع علامة $ قبل اسم المتغير.

تخيل انك تريد معرفة نوع قيمة موجوده في متغير , ماذا يجب عليك ان تفعل , امر بسيط جدا وهو ان تقوم بإستخدام الداله gettype($var); وسوف تقوم هذه الداله بطباعة نوع المتغير الموجود لديك , لنأخذ امثله على ذلك , افتح محرر الاكواد وقم بكتابة التالي



وسوف يكون الناتج كما يلي :



لاحظ ان المتغير $test نوعه NULL وذلك لاننا لم نقم بتعيين اي قيمه له , ومعنى NULL هو فراغ او لا شيء

ماذا لو اردنا تغيير قيمة متغير من نوع الى اخر , من integer الى string فمالذي نفعله ؟ نقوم بإستخدام الداله settype($var , new type ) لكي تقوم بالعمل المطلوب , لنأخذ مثالا لتوضيح الصوره
http://prog.arccn.net/images/php/l3e6.gif
والناتج هو :
http://prog.arccn.net/images/php/l3e7.gif

والبقية نفس المنوال , فقط قم بوضع المتغير , ثم ضع النوع المراد التحويل اليه

هناك طريقة اخرى لتغيير نوع المتغير وتسمى ( Casting ) وهي بالطريقة التاليه :
http://prog.arccn.net/images/php/l3e8.gif
قم بكتابة الكود وسوف ترى ان النتيجه نفسها نتيجة عمل settype( $var , new type ) والاختلاف الوحيد ان طريقة ( Casting ) لا تقوم بتغيير نوع المتغير الاساسي او فعليا , ولكن تقوم بوضع نسخه من المتغير وتقوم بتغييرها الى النوع المراد , ولكن على عكس الاخرى فهي تقوم بتغير النوع فعليا

هناك شي اخر وهو لو اردنا جمع متغيرين مع بعضهما البعض في سطر واحد , فسوف نقوم بإستخدام ( . ) , لم توضح الصوره وانا متأكد , لنأخذ مثال يبين لنا المعنى , افتح محرر الاكواد مجددا وقم بكتابة التالي :
http://prog.arccn.net/images/php/l3e9.gif
والناتج هو التالي:
http://prog.arccn.net/images/php/l3e10.gif

الثوابــــت:

رأيت في السابق اننا نقوم بإنشاء متغيرات ونقوم بتغيير انواعها والكثير من الامور ولكن يوجد لدينا الثوابت , ماهي الثوابت ؟ من الاسم يمكنك ان تستنج انه متغير ثابت ولا يتغير ابدا مهما حصل , قد تتسائل لماذا نحتاج الى هذه النوع من المتغيرات , والاجابه هي , تخيل ان لدينا اسعار بعض من منتجاتنا , وهذه الاسعار ثابته ولا تتغير ؟ فسوف نقوم بوضعها في الثوابت بالطريقه التاليه define( 'var' , value ) هل وضحت الصوره ؟؟ لنأخذها بالعربيه define('اسم المتغير' , القيمه ) , هل عرفت الان الطريقة ؟ لنقم ببعض الامثله ,تخيل انه لدينا مطعم ونبيع الببسي بثلاث انواع , صغير وقيمته ريال واحد , وسط وقيمته ريالان , كبير وقيمته 3 ريالات , قم بكتابة التالي ,
http://prog.arccn.net/images/php/l3e11.gif
والناتج هو التالي :
http://prog.arccn.net/images/php/l3e12.gif
الفرق بين المتغيرات والثوابت , هي انه عندما نريد ان نقوم بطباعة الثابت او استخدامه لا نقوم بوضع علامة $ في الثابت ابدا , وايضا من الاسماء الممنوع استخدامها في متغيرات لغة PHP الثوابت المعرفة في نفس اللغه , وهي ثابته ولا تتغير ولمشاهدتها قم بكتابة التالي في محرر الاكواد
http://prog.arccn.net/images/php/l3e13.gif
وقم بتشغيل الملف وشاهد النتيجه :) . (( سوف تظهر لك صفحه يوجد بها اعدادات هذه اللغه , لا تهتم لها الان فقط انظر الى الثوابت Variables ))



المعامــلات:

لدينا ثلاث انواع من المعاملات في لغة PHP وهي المعاملات الحسابيه , معاملات المقارنه , المعاملات المنطقيه وسوف نتكلم عنها بالتفصيل

المعاملات الحسابيه

المعاملات الحسابيه الاعتياديه




معاملات حسابيه اخرى :





شيء مخيف اليس كذلك ؟ بالعكس انه سهل جدا , كأنك تقوم بتعلم الرياضيات للمرحله الاولى , لنقم بكتابة بعض الاكواد وسوف ترى كيفية سهولة الامر , افتح محر الاكواد ولنقم بعمل بعض من تمارين العمليات الحسابيه الاعتياديه :
http://prog.arccn.net/images/php/l3e14.gif

ارأيت سهولة الامر ؟ فقط عليك ان تقوم بذكر رموز العمليات وسوف يكون لديك الناتج , لنقم الان ببعض تمارين المعاملات الحسابيه الاخرى , قم بكتابة التالي :
http://prog.arccn.net/images/php/l3e15.gif

لاحظ اننا هنا قمنا بتغيير قمية محتوى المتغير الاساسية , وليس مؤقتا , قم بتجربة العمليات الاخرى , حتى ولو كانت هناك بعض الاخطاء , قم بالتكرار ومحاولة معرفة الخطأ وسوف تفهم جميع الاكواد السابقه.

سوف نقوم الان بذكر معاملات المقارنه والمعاملات المنطقيه ولكن لن نقوم بعمل اي تمارين عليها , وذلك لانها سوف تستعمل في الدرس القادم

معاملات المقارنـــــه :



المعاملات المنطقية :



قد تتسائل لماذا يوجد لكل نوع اثنان من الاشكال ؟ والجواب سوف يكون في القسم التالي وهو ترتيب الاهميات



ترتيب الاهميــــات:

عند استخدام المعاملات يقوم المترجم بالقراء من اليمين الى اليسار في الحالات العاديه وعند استخدام معامل واحد , ولكن تخيل لدينا اكثر من معامل في سطر برمجي واحد ؟ هنا يقوم المترجم بالاختيار حسب الاهميه , لنأخذ مثال على ذلك , تخيل ان لديك العمليه التاليه :

4 + 5 فماهو الناتج ؟؟؟ الناتج واضح وليس به اي غموض وهو 9
ولكن تخيل لو لديك العمليه التاليه 4 + 5 * 2 ؟؟؟ فما هو ناتج العمليه الحسابيه ؟ الجواب هو 14 , لان المترجم قرأ عملية الضرب اولا ثم عملية الجمع , ويمكن ان تقوم بإجبار المترجم على قراء عملية الجمع اولا بإستخدام الاقواس , مثال : ( 4 + 5 ) * 2 وسوف يكون الناتج 18 , في الجدول التالي سوف تقوم بمعرفة الاهميات وترتيبها وماهي المعاملات التي تنفذ قبل الاخرى ( من الاعلى الى الاسفل )



لا تتعجل بالحكم على ان اللغه صعبه , يمكن ان لا اكون قد وضحت فكرة الشرح بشكل جيد , او لم يكن القائي جيدا , ولكن اعدك في الدرس القادم انك سوف تعرف معنى هذه المتغيرات وكيفية استعاملها , ومع الدرس القادم , تبدأ به متعة لغة PHP




--------------------------------------------------------------------------------

اسئـــلة على الدرس :

اي من اسماء المتغيرات التاليه غير مسموح في لغة PHP :

$name

$22name65

$first name

$last-name

$______________ARCCN____________

2. ماهو ناتج العمليات التاليه :

4+5+6*(2*4)

2+9*8

3. قم بإنشاء متغير من نوع ( integer ) وقم بتحويله الى كل الانواع التي مرت عليك , مره بإستخدام الداله settype ومره بإستخدام ( Casting ) ولاحظ الفرق بينهما



الـــدرس الــقادم :

سوف نقوم في الدرس القادم بالتعلم على الشروط في لغة PHP بالتفصيل , انواعها وطريقة كتابتها , واستعمالها مع المعاملات المنطقيه و معاملات المقارنه
****************************************
تخيل ان لديك برنامج صغير , ولا تريد ان يتبع هذا الرنامج طريق واحد , نعني بذلك انه لدينا حالات في هذا البرنامج , وكل حاله لديها خواصها وتنفيذات معينه خاصه بها, لنضرب مثالا على ذلك لتسهيل الامر , لنرجع الى مثالنا الاول , تخيل ان لدينا بقاله صغيره, ولدينا انوع من العصيرات كل عصير له سعره المعين , وكل عصير لديه احجام مختلفه , هل نحتاج لان نضع كل عصير في برنامج ؟ وهل لو فعلنا ذلك سوف يعتبر الطريقة الامثل ؟ طبعا لا , لكن بمجرد عباره صغيره تسمى IF نستطيع فعل ذلك كله.....


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

مراجعة الدرس الثاني: المتغيرات والثوابت والمعاملات

اهداف الدرس:

الطباعه بالعباره ECHO
العباره الشرطيه IF
العباره الشرطيه ELSE
العباره الشرطيه ELSEIF
استخدامات العبارات الشرطيه مع المعاملات المنطقيه ومعاملات المقارنه

--------------------------------------------------------------------------------

الطباعه بالعباره ECHO :

يوجد شبيه للعباره print وهي العباره echo وتقوم بنفس عمل العباره print تماما ولكن لسهولة لغة PHP , فهي تمكنك من اختيار اي طريقة تريد الطباعة بها الى المتصفح , لاحظ الامثله التي سوف تأتي بعد قليل ولاحظ اننا استخدمنا العباره echo بدل من العباره print ولكن كل منهما يؤدي نفس الغرض ولا يوجد اي اختلاف ابدا

العباره الشرطيه IF :

تخيل ان لديك برنامج صغير , ولا تريد ان يتبع هذا الرنامج طريق واحد , نعني بذلك انه لدينا حالات في هذا البرنامج , وكل حاله لديها خواصها وتنفيذات معينه خاصه بها, لنضرب مثالا على ذلك لتسهيل الامر , لنرجع الى مثالنا الاول , تخيل ان لدينا بقاله صغيره, ولدينا انوع من العصيرات كل عصير له سعره المعين , وكل عصير لديه احجام مختلفه , هل نحتاج لان نضع كل عصير في برنامج ؟ وهل لو فعلنا ذلك سوف يعتبر الطريقة الامثل ؟ طبعا لا , لكن بمجرد عباره صغيره تسمى IF نستطيع فعل ذلك كله , ولكي تقوم بإستيعاب ذلك بشكل صحيح ارجو منك قراء موضوع المتغيرات والثوابت لكي توضح الصوره. العباره IF هي عباره شرطيه , اي اذا تحقق الشرط المعين افعل كذا وكذا , واذا لم يتحقق افعل كذا وكذا , هذا هو درس اليوم واتمنى لك فرصه سعيده. مهلا , بقي الكثير , وبقي من المتعه طريق طويل , اكيد انك سألت كيف اقوم بكتابة العباره الشرطية , طريقة كتابتها كالتالي
http://prog.arccn.net/images/php/l4e1.gif
مع الامثله سوف توضح الصوره , لنأخذ مثالا حيا على طريقة عمل هذه الداله الشرطيه , وسوف يصل اليك المعنى, تخيل ان لديك كما قلنا بقاله , ولديك منتجات غذائية وتريد ان تعرف هل اخذ المشتري ببسي ام لاو واذا اخذ المشتري ببسي سوف نعمل له تخفيض بمبلغ نصف ريال , هل انت مستعد؟ , افتح محرر الاكواد واكتب التالي :
http://prog.arccn.net/images/php/l4e2.gif

ارأيت السهوله ؟ لاحظ اننا استخدمنا عامل المقارنه ( == ) الذي تكلمنا عنه في الدرس السابق , هذا معناه هل الطرف الايمن يساوي الطرف الايسر ؟ لا تنسى انه يختلف تماما عن العلامه ( = ) لوحدها , فالعلامه ( = ) معناها تعيين او تعبئة متغير بالقيمه الفلانية , ولكن ( == ) يستخدم لمقارنة الاطراف لنأخذ مثالا بطريقة اخرى , تخيل ان نود ان نعمل تخفيض 10 ريال لكل مشتري قام بشراء بمبلغ اكثر من 100 ريال ؟ فسوف يكون الكود بالشكل التالي
http://prog.arccn.net/images/php/l4e3.gif
الى الان كل شي واضح ؟ اذن تخيل لو كان التخفيض على علبة الزيت و يكون اجمالي السعر 100 ريال ماذا سوف نفعل ؟ شاهد التالي
http://prog.arccn.net/images/php/l4e4.gif

هل وضحت الصوره كامله الان ؟ اعتقد ذلك :). لاحظ انه لو لم يتم تحقق الشرط فلن يتم عمل شي , ولو جربت تشغيل الكود فلن يكون هناك مخرج على الشاشه لو لم يتحقق الشرط


العباره الشرطيه ELSE :

انتهينا من مسألة IF الشرطية , ولكن كل اللي قمنا بفعله محدود اليس كذلك ؟ نستطيع فقط التحكم في شيء واحد :( , لكن لا تقلق يوجد لدينا العباره ELSE وتعني اذا تحقق هذا الشرط قم بعمل التالي , واذا لم يتحقق قم بعمل التالي , اليس ذلك صحيحا واحتماله كبير ؟ ولكن كيف يتم كتابته ؟ نفس الطريقة الاولى مع اضافة بعض الاسطر البرمجيه لاحظ طريقة الكتابه التاليه:
http://prog.arccn.net/images/php/l4e5.gif
لنقم بتعديل كودنا الاول , انقوم بإخراجه بطريقة افضل من الاولى , اكتب في محرر الاكواد التالي :
http://prog.arccn.net/images/php/l4e6.gif

لاحظ ان المشتري عندما كان خياره ببسي , اجرينا التخفيض وغير ذلك لا نعمل له اي تخفيض , ولاحظ اننا استعملنا معامل المقارنه (( =! )) ويعني انه في حالة عدم طلب هذا النوع قم بالتالي .


العباره الشرطيه ELSEIF :

لنرجع الى تخيالاتنا وهي التي تقوم بكل النتائج , لو اردنا ان نجعل التخفيض في اكثر من جهة , مثلا لو قام المشتري بأختيار ببسي فله تخيض بالقيمه الفلانيه , ولو اشترى ميرندا فله تخيض بالقيمه الفلانيه واذا قام بشراء سفن اب فله التخفيض الفلاني , هل يمكننا عمل ذلك ؟ نعم عن طريق العباره ELSEIF واختلافها عن ELSE انه في ELSEIF يمكنك تحديد شرط ولكن ELSE عامه ولا يوجد بها شروط , تكون كتابتها كالتالي
http://prog.arccn.net/images/php/l4e7.gif
قم بفتح محرر الاكواد واكتب التالي :
http://prog.arccn.net/images/php/l4e8.gif
نستطيع ان نقوم بإستخدام ELSEIF بشكل لا نهائي , يعتمد على استخدامنا وما يتطلبه , ولكن ELSE فقط نستطيع ان نقوم استخدامها مره واحده لانها عامه (( لاحظ في مثالنا قمنا بإستخدام ELSEIF مرتان )) و العباره ELSE مره واحد فقط .

ملاحظه: يمكن استخدام عبارة IF وداخلها IF وداخلها IF واترك لك الباب مفتوح لكي تقوم بإستكشاف ما اعنيه من هذه الملاحظه :) ( نفس الشيئ ينطبق على ELSEIF و ELSE )


--------------------------------------------------------------------------------

اسئـــلة على الدرس :

قم بتطوير بقالتنا الالكترونيه , بحيث انه اذا طلب المشتري مشروبات يكون له تخفيض معين على حسب المشروب الذي يقوم بشراءه ( ببسي , ميرندا , سفن اب ) , واذا قام بشراء غير ذلك فلا يوجد له تخفيض معين ( مساعده قم بإستخدام IF بداخلها IF وشروطها اللازمه )

Sh2ee
01-07-2007, 04:06 AM
ان عرفنا العبارات الشريطة وكيفية تحديد مسار برنامجنا , نأتي الان الى عبارات التكرار , وكما يدل اسمها , فإننا نكرر شيء معين ونقوم بتكراره وتكراره, واستخدام هذه العباره له فوائد عديده وكبيره , تخيل ان لديك كود معين وتلاحظ انك تقوم بكتابة هذا الكود اكثر من مره , لكي تصل الى هدف معين , فلماذا لا تختصر الوقت وتجعل الكود يقوم بتكرار نفسه الى حد معين تقوم انت بتحديده , الا يتعبر ذلك اسهل واوفر من ناحية الوقت والتنفيذ ؟ وايضا الجهد الذي ستقوم بتوفيره لاكواد اخرى. ان ذلك لا يعني ان عبارة التكرار سهله او يمكن عملها في لحظات , عبارة التكرار يجب ان تفهم جيدا قبل كتابتها و التفكير في كيفية عملها والناتج الذي نريد الخروج به من عملها...


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

لا يوجد

اهداف الدرس:

عبارة التكرار WHILE
مثال تطبيقي

--------------------------------------------------------------------------------

عبارة التكرار WHILE :

بعد ان عرفنا العبارات الشريطة وكيفية تحديد مسار برنامجنا , نأتي الان الى عبارات التكرار , وكما يدل اسمها , فإننا نكرر شيء معين ونقوم بتكراره وتكراره, واستخدام هذه العباره له فوائد عديده وكبيره , تخيل ان لديك كود معين وتلاحظ انك تقوم بكتابة هذا الكود اكثر من مره , لكي تصل الى هدف معين , فلماذا لا تختصر الوقت وتجعل الكود يقوم بتكرار نفسه الى حد معين تقوم انت بتحديده , الا يتعبر ذلك اسهل واوفر من ناحية الوقت والتنفيذ ؟ وايضا الجهد الذي ستقوم بتوفيره لاكواد اخرى. ان ذلك لا يعني ان عبارة التكرار سهله او يمكن عملها في لحظات , عبارة التكرار يجب ان تفهم جيدا قبل كتابتها و التفكير في كيفية عملها والناتج الذي نريد الخروج به من عملها. هل تريد مثلالا على ذلك لتوضيح الصوره ؟ تخيل في بقالتنا الالكترونيه المشتري يقوم بشراء اكثر من منتج , ولكي حسابها يجب ان نجمع جميع المنتجات مع بعضها البعض وحساب المبلغ الكلي اليس ذلك صحيحا ؟ سوف نقوم بحسابها بالطريقة التاليه ( المنتج الاول + المنتج الثاني + المنتج الثالث + المنتج الرابع ) سوف نقوم بجمع كل منتج واضافته الى المجموع الكلي لنحصل على الناتج الكلي , اليس ذلك صحيحا ؟ سوف نتعلم كيف استخدام عبارة التكرار هذه ونأخذ عليها امثله كافيه لكي تتضح لك الصوره . طريقة كتابة عبارة WHILE الشرطيه كالتالي
http://prog.arccn.net/images/php/l5e1.gif
لنأخذ بعض الامثله على طريقة كتابة عبارة التكرار WHILE , تخيل انك تريد طباعة الارقام من 1 الى 5 , كم سطر سيتطلب من كتابته ؟ افتح محرر الاكواد وقم بكتابة كود يطبع من الرقم واحد الى الرقم 5 وقم بعدد الاسطر التي قمت بكتابتها , لاحظ الكود التالي :
http://prog.arccn.net/images/php/l5e2.gif
لقد قمنا بكتابة 13 سطرا لكي نطبع من العدد 1 الى العدد 5 , تخيل لو اردنا الطباعه الى العدد 100 كم سطرا سيتطلب ذلك منا ؟ الا تظن ان ذلك سوف يتعبك بدنيا وعقليا !! وهنا تأتي فائدة عبارة التكرار WHILE لكي تساعدنا على تسهيل كتابة الكود , قم بمسح الكود السابق وانساه للابد وقم بكتابة الكود التالي ولاحظ الفرق :
http://prog.arccn.net/images/php/l5e3.gif
كم سطرا قمنا بكتابته الان ؟ من غير التعليقات فقط 7 اسطر , ومع التعليقات 8 اسطر , فرق 5 اسطر عن الكود السابق , الا يعتبر ذلك انجازا , واذا لم تقتنع حاول ان تقوم بكتابة الاعداد من 1 الى 100 من غير استخدام التكرار , ولكن مع التكرار الذي يمكنك فعله ان تقوم بتغير الشرط من اقل من او يساوي 5 الى اقل من يساوي 100 وسوف يأتيك ناتجك بنفس عدد الاسطر ال7 فقط. اذا لم تقم بفهم كود التكرار سوف اقوم بشرحه لك لكي تضح الصوره. اقرا بتركيز من هنا , اولا : قمنا بتعيين متغير توجد به القيمة 1 واسمه x وبعد ذلك نقوم بكتابة دالة التكرار وشرطها ان يكون المتغير x اقل من او يساوي 5 , ثم نقوم بطباغة المتغير الموجود لدينا , ونطبع سطر جديد للترتيب , واخيرا نقوم بزيادة المتغير بواحد ونرجع الى الاعلى لنرى هل الشرط صحيح ام لا , اذا كان صحيحا يقوم بفعل الطباعه مره اخرى واذا لم يكن صحيحا يقوم بالخروج من البرنامج. لنقم بالتفكير كمترجم PHP ونقوم بعمل الكود سطرا سطرا , لاحظ التالي , المتغير x يساوي القيمه 1 , يوجد لدي عباره تكرار وداخلها شرط وهو ان يكون المتغير x اقل من ويساوي 5 , قيمة المتغير x هي واحد والشرط ان يكون اقل من خمسه هل تحقق الشرط ؟ نعم هو صحيح , اذن ادخل العباره وقم بطباعة المتغير x , اقفز سطرا , قم بزيادة المتغير x بواحد , اصبح الان المتغير x قيمته 2 , ارجع الى الشرط مره اخرى , هل المتغير x اقل من 5 ؟ المتغير هو 2 والشرط هو اقل من ويساوي 5 اذن قم بطباعة المتغير واقفز سطرا وزد المتغير واحد , اصبح الان المتغير x يساوي العدد 3 , ......................................... زد المتغير واحد , اصبح الان المتغير يساوي 6 , ارجع الى الشرط , هل المتغير اقل من او يساوي 5 ؟ لا لم يتحقق الشرط اذن قم بالخروج من الكود . ويمكنك خارج حلقة التكرار ان تقوم بطباعة العباره انتهينا لكي تعرف ان التنفيذ تم .


مثال تطبيقي :

سؤال سريع , ماهو ناتج جمع الاعداد من 1 الى 100 ؟ الجواب هو الكود التالي :
http://prog.arccn.net/images/php/l5e4.gif

حاول ان تقوم بقراءة الكود وحاول ان تفهمه جيدا وسوف توضح لك الصوره

ماذا لو اردنا ان نجمع الاعداد الزوجيه لوحدها والاعداد الفرديه لوحدها ؟؟ فكر كيف سنقوم بذلك , بسيط جدا :) قم بإستخدام العباره الشرطيه IF داخل عبارة التكرار WHILE لاحظ التعديل على الكود وسوف تعرف الطريقه :
http://prog.arccn.net/images/php/l5e5.gif

هل يوجد شيئ صعب في هذاالكود ؟ لا اعتقد ذلك , لان كل ما نقوم بفعله منطقي جدا

ملاحظه: يمكن استخدام عبارة WHILE وداخلها WHILE وداخلها WHILE وداخلها IF وكل شي تريد واترك لك الباب مفتوح لكي تقوم بإستكشاف ما اعنيه من هذه الملاحظه :)


--------------------------------------------------------------------------------

اسئـــلة على الدرس :

قم بعمل برنامج لحساب درجات الطلاب , حيث ضع افتراضا عشر درجات لطلاب ( $student4_grade ) ( $student3_grade ) ( $student2_grade ) ( $student1_grade ) ( $student10_grade ) ........ ( $student5_grade ) وقم بحساب معدل الطلاب عن طريق عبارة التكرار While ( مساعده : معدل الطلاب = مجموع الدرجات ÷ عددها )

قم بالتعديل على برنامج السؤال الاول , حيث تقوم بحساب معدل الدرجات الزوجيه , ومعدل الدرجات الفردية

Sh2ee
01-07-2007, 04:08 AM
كما قلنا في دروس سابقه ان لغة PHP لغه مسامحه , حيث انه توفر لك العديد من المزايا , ولا اعلم بشكل صحيح 100% اذا كانت المسافات تعتبر من الاشياء مسامحه ام لا , ولكن اليك ما اعرفه , في لغة PHP المسافات لا تحسب , اعني بذلك انه عندما تقوم بكتابة الكود فلا يميز المترجم انه هناك مسافات في الكود او لا ......


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

مراجعة درس العبارات الشرطية

مراجعة درس عبارة التكرار WHILE

اهداف الدرس:

المسافات في لغة PHP
العباره الشرطية SWITCH
عبارة التكرار FOR
عبارة التكرار DO...WHILE
عبارات داخل عبارات
مثال تطبيقي

--------------------------------------------------------------------------------

المسافات في لغة PHP:

كما قلنا في دروس سابقه ان لغة PHP لغه مسامحه , حيث انه توفر لك العديد من المزايا , ولا اعلم بشكل صحيح 100% اذا كانت المسافات تعتبر من الاشياء مسامحه ام لا , ولكن اليك ما اعرفه , في لغة PHP المسافات لا تحسب , اعني بذلك انه عندما تقوم بكتابة الكود فلا يميز المترجم انه هناك مسافات في الكود او لا , بغض النظر عن النصوص عندما تضعها بين علامتي التنصيص " " سوف اقوم بكتابة كودين الان , ولاحظ الفرق بينهما , الاول بمسافات والثاني بدون مسافات :


http://prog.arccn.net/images/php/l6e1.gif
وهنا نفس الكود لكن بدون مسافات :
http://prog.arccn.net/images/php/l6e2.gif
قم بتشغيل الكود الاول والثاني , وسوف تلاحظ ان جميع المثالين اخرجا نفس الناتج بغض النضر عن المسافات



العباره الشرطية SWITCH :

تعلمنا في الدرس قبل السابق العباره الشرطيه IF وتوابعها والان سوف نتعلم العباره SWITCH وهي تعمل بنفس طريقة العباره IF ولكن يتم كتابتها بطريقة اخرى ويتم تنفيذ شرط واحد فقط اما في IF فيمكن كتابة عدة شروط , لنرى كيفية الكتابه , انظر الصوره التاليه :
http://prog.arccn.net/images/php/l6e3.gif
لنقم برؤية مثال على الطبيعه لتعرف كيفية عمل هذه الداله :
http://prog.arccn.net/images/php/l6e4.gif
ارأيت الطريقه ؟ بسيطه اليس كذلك ؟ ولاحظ اننا نعني بأنه يمكن في العباره IF كتابة اكثر من شرط مثل if( $x == 1 && $y == 4 ) ولكن في العباره SWITCH يمكننا فقط مقارنة متغير واحد فقط switch ( $ x ) , وايضا يمكن ان تقوم بألغاء اخر سطرين ( في الصوره سطر رقم 18 و 19 ) ولا يتوجب كتابتها وهي تعني ( ELSE ) اي غير ذلك ( حينما لا يتحقق اي شرط من الشروط ) , وايضا يجب ان تتذكر انه دائما يجب عليك كتابة العباره BREAK بعد نهاية كل CASE في العبارة SWITCH ولا يتوجب وجودها في السطر الذي يحوي DEFAULT



عبارة التكرار FOR :

هناك عبارة تكرار اخرى غير العباره WHILE وهي العباره FOR , وتستخدم دائما اكثر من العباره WHILE لان ديناميكيتها اكبر من WHILE ولكن ناتج عمل الاثنين واحد , واذا عملت عباره بالاولى يمكن عملها بالثانيه والعكس , ولا يوجد ناتج تقوم بعمله في الاولى ولا تستطيع ان تقوم به في الثانيه , والقرار في الاخير يرجع الى المبرمج , لنرى طريقة الكتابه وهي كالتالي :
http://prog.arccn.net/images/php/l6e5.gif
مثال على العباره , لنقم بالعد من 1 الى خمسه , مثلما فعلنا مع العباره WHILE ونرى ماهي الاختلافات :
http://prog.arccn.net/images/php/l6e6.gif
في هذه المره قمنا بعملها فقط ب 5 اسطر , هل لاحظت الفروقات الان ؟ الفرق الاول في العباره WHILE اننا نحدد المتغير في البدايه , وزيادة المتغير داخل العباره, اما في العباره FOR فاننا نستطيع فعل ذلك كله بين القوسين التي يوجد بها الشروط , ونترك باقي العمل الى FOR , لا تنسى ان $i++ هي نفسها $i = $i + 1



عبارة التكرار DO...WHILE :

تختلف عبارة التكرار هذه عن اختها WHILE انها تقوم بتنفيذ الامر اولا , ثم بعد ذلك تقوم بمقارنة الشرط , وطريقة كتابتها كالتالي :
http://prog.arccn.net/images/php/l6e7.gif
لنقم مره اخرى بكتابة الاعداد من 1 الى عشره ونرى الاختلاف , اكتب في محرر الاكواد التالي:
http://prog.arccn.net/images/php/l6e8.gif
هل لاحظت الاختلاف ؟ فقط انه قمنا بطباعة العدد قبل التحقق من الشرط , والتغيير طفيف ويستخدم عند الحاجه , لا تقلق في التطبيقات المتقدمه سوف نشاهد بعض من هذه الحيل البرمجيه, ملاحظه: لا تقم ابدا بنسيان الفاصله المنقوطه بعد كتابة الشرط , والا سوف يكون هناك خطأ برمجي في الكود :)



عبارات داخل عبارات :

كما قلنا في دروس سابقه , يمكننا ادراج عبارات داخل عبارات , اي انه يمكنك كتابة العباره FOR وداخلها العباره FOR , او العباره WHILE وداخلها العباره FOR وداخلها IF كل ذلك سهل جدا , ويحتاج الى قليل من التركيز , سوف نقوم الان بعمل مثال تطبيقي يحتوي على عبارة تكرار وداخلها عبارة تكرار , لنقم بعمل جدول الضرب ونحاول مع بعضنا البعض كتابة الكود , لنقم بتسهيل الامر , قم بفتح برنامج Microsoft FrontPage في جهازك وقم بكتابة جدول الضرب العدد 2 من ( 1 - 5 ) , انظر الشكل التالي:
http://prog.arccn.net/images/php/l6e9.gif
وعند مشاهدة محتوى كود ال HTML سوف ترى التالي :
http://prog.arccn.net/images/php/l6e10.gif
الان قم بالتركيز معي لكي توضح الصوره , لو نظرت الى الكود بالاعلى تجد انه HTML فقط وتجد انه مكرر كثيرا , وانت تحتاج الى استخدام عبارات التكرار لتقم بتسهيل الموضوع على نفسك , اذن يجب ان تكتشف اماكن التكرار , دقق في الكود وحاول ان تعرف اماكن التكرار ........... هل عرفت الاماكن ؟ انظر الى الكود التالي وسوف احدد لك اماكن التكرار
http://prog.arccn.net/images/php/l6e11.gif
انظر الى الخطوط السوداء , ترى ان الوسم <tr> و الوسم </tr> يتكرران في كل مره ننشئ بها صف ( ROW ) جديد , اذن الان نحتاج الى دالة تكرار ونحتاج ان تقوم بالتكرار 5 مرات لاننا نريد جدول الضرب للعد 2 من ( 1 الى 5 ) ( قم بعد الخطوط السوداء وسوف تجد انها 5 خطوط ) , لكي نقوم بتكرار الاصفف , افتح محرر الاكواد واكتب التالي :
http://prog.arccn.net/images/php/l6e12.gif

الان لقد عرفنا كيفية تكرار الاصفف , اذن لنظر الى صورة كود HTML مره ثانيه , وقم بالبحث عن تكرار جديد , اذا لم يوجد , فقد انتهينا , وان وجد فنحتاج الى ان نقوم بكتابة دالة التكرار مره اخرى , ................. هل عرفت مكان التكرار الاخر ؟ انظر الى الصوره لترى اين هو
http://prog.arccn.net/images/php/l6e13.gif
لاحظ هنا ان الوسم <td> و </td> يتكرر في كل مره نكتب بها عدد جديد , والوسم <TD> هو لكتابة الخلايا في الجدول , تكرر الوسم عندنا , وفي كل مره نقوم بكتابة الخليه مرتان , اذن نحتاج ان نقوم بالتكرار مرتان ( لاننا نريد جدول الضرب للعدد 2 ) , ارجع الى محرر الاكواد واكتب التالي ( بين وسم <tr> و </tr> ) ,
http://prog.arccn.net/images/php/l6e14.gif
ما قمنا به هنا , اننا قمنا بتكرار الوسوم <td> على حسب العدد الذي نريد انشاء عملية الضرب له , لاحظ ان المتغير x شرطه ان يكون اقل من او يساوي العدد 2 لكي يستمر في التكرار , ولاحظ هنا اننا نقوم بعملية ضرب المتغير x والمتغير y في مكان كتابة محتوى الصف , لكي نقوم بكل شي تلقائيا , قم بتشغيل الكود وسوف يكون الناتج التالي :
http://prog.arccn.net/images/php/l6e15.gif

ارأيت الان قمنا بكتابة جدول الضرب للعدد 2 بمجرد عبارتين تكرار صغيره :) ممتع جدا اليس كذلك ؟ لكن لم ننتهي بعد , لو نظرت الى كود ال HTML ترى اننا نريد كتابة العباره التاليه في الجدول ( مضروب في ) , لكي نقوم بإخراج الجدول بشكل افضل , انظر الى الصوره وستعرف ما اعنيه .http://prog.arccn.net/images/php/l6e16.gif

Sh2ee
01-07-2007, 04:12 AM
كيف نقوم بذلك في دالتين التكرار , قم بوضع يدك على رأسك واستغرق في التفكير لمدة دقيقتان وانت تنظر الى الكود , واسأل نفسك , كيف سأقوم بعملها , وسوف يأتيك الجواب كالتالي , نقوم بكتابة العباره ( مضروب في ) في اول وسم <td> وفي اول وسم <tr> , يعني عندما يكون المتغير x يساوي 1 وعندما يكون المتغير y يساوي 1 , قمنا بحل المشكله وما نحتاجه هو عبارة IF الشرطية ويكون شرطها انه عندما يكون المتغير x يساوي 1 و المتغير y يساوي واحد , لا تقم بضرب المتغيرين بل قم بكتابة العباره ( مضروب في ) غير ذلك قم بضرب المتغيرين مع بعضهمها البعض , اذن ارجع الى محرر الاكواد وقم بتعديل الكود الى التالي:

http://prog.arccn.net/images/php/l6e17.gif
وفي النهايه سوف يكون ناتج عملك الرائع هو الجدول التالي ,
http://prog.arccn.net/images/php/l6e18.gif
اتمنى ان يكوني شرحي جعلك تفهم هذه النقاط جيدا , ولا تنسى انه يجب ان تقوم بمحاولة عمل اشياء انت تريدها , ولا تحصر التمارين على ما تراه هنا , لكي تقوم بالتوسع في البرمجه :)


--------------------------------------------------------------------------------

اسئـــلة على الدرس :

قم بتعديل جدول الضرب في الاعلى , واجعله للعدد 2 و 3 و 4 و 5 و 6 و 7 و 8 و 9 و 10 , واجلعه يقوم بالضرب من العدد ( 1 - 10 ) مثل جدول المدارس :) مساعده : الحل يكمن في الشروط

Sh2ee
01-07-2007, 04:14 AM
برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه, يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي للواقع تريده, فمثلا لو قلنا ان لدينا ....


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

لا يوجد

اهداف الدرس:

مقدمه عن برمجة الكائنات ( Object Oriented )
مبدأ التعدديه ( Polymorphism )
مبدأ الوراثه ( Inheritance )
انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations )
مؤسس التصنيف ( Constructer )
استخدام التصنيفات

--------------------------------------------------------------------------------

مقدمه عن برمجة الكائنات ( Object Oriented ) :

برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه, يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي للواقع تريده, فمثلا لو قلنا ان لدينا تصنيف ( Class ) اسمه بشر , اكيد ان هذا البشر لديه خواص ( attributes ) فهو ينتمي الى نوع وهو ذكر او انثى, لديه اسم , لديه عمر , لديه لون بشره , لديه طول , لديه وزن وهكذا, ولديه عمليات ( operations ) يقوم بها كالنوم والاستيقاظ, والافطار, تخيل انك تقوم بفعل هذا كله بالبرمجه ؟؟؟ ماهو الاسهل بالنسبه لك الطريقه المعتاده من كتابة الاكواد , او الطريقه الجديده التي سنتعلمها بعد قليل :). وايضا نستطيه استخدام هذا المبدأ للاشياء المبدئيه, كالملفات مثلا , فيوجد لدينا ملف , ولديه اسم ولديه حجم , ولديه نوع وغير ذلك.

كثير من لغات البرمجه الحديثه تدعم مبدأ ( Object Oriented ), وتعتبر التي لا تدعمها ضعيفه, فأصبح كل شي في هذه الايام يعتمد على هذا المبدأ, فهو اسرع , اسهل , اكثر حمايه من الكود العادي, وبعض اللغات يطلب منها ويلزم عليها ان تكون مبنيه على هذا المبدأ. ومن وجهة نظري انا, اعتقد ان البرنامج الذي لا يستخدم هذا المبدأ لن يكون جيدا , ( ليس في كل الحالات ).

من اعظم فوائد مبدأ ( Object Oriented ) دعم والتشجيع على مبدأ ( Encapsulation ) ونعني به ( اخفاء المعلومات ), حيث اننا لا نستطيع التحكم في الخواص او المعاملات الا عن طريق الكائن, ومانسميه بواجهة الكائن. حى لو اردنا تغير نوع او اصلاح او اضافة اي شيئ, فسوف نرجع الى التصنيف الاساسي , ولن تطرق الى تعديل جميع اكوادنا. ويمكننا انشاء اكثر من ( Object ) من هذا التصنيف, حيث كل واحد منهم منفصل عن الاخر, فتخيل لدينا التصنيف الاول ( البشر ) فنستطيع انشاء عدة كائنات منه , واحد اسمه محمد ولديه خواص معينه , والاخر اسمه نوال ولديه خواص ومعاملات اخرى, ولا يعني انهم واحد, فكل واحد منهم منفصل على الاخر, ولديه تحكمات وخواص خاصه به.

مبدأ التعدديه ( Polymorphism ) :

بحثت في كثير من المعجمات والتراجم عن معنى هذه الكلمه بالعربيه ولم اجد, ولكن قرأت كتابا يقول عنها ( Different Classes have different behaviors for the same operations ) ومعنى ذلك باللغه العربيه, ان تصنيفات مختلفه يكون لديها سلوكات مختلفه لنفس العمليات, معادله رياضيه اليس كذلك ؟ لن تستطيع فهمها بسرعه, يجب ان تأخذ عليها امثله كثيره ليصل المبدأ الى العقل وتقوم بإستيعابه, واترك ذلك علي فسأحاول قدر الامكان ان اقوم بتسهيله لك. لنأخذ مثالا على ذلك, لو عندنا تصنيف سياره وتصنيف دراجه هوائيه, فكل منهما لديه خاصية التحرك ولكن في السياره يجب ان تقوم بالتشغيل, ولكن في الدراجه بطريقه اخرى ولا يوجد لدينا تشغيل, ولكن في لغات البرمجه لا يوجد لدينا هذا الواقع ولا تقوم بمحاكاة الواقع 100%100 فلذلك تحتاج اللغه ( polymorphism ) لكي تعرف اي عمليه تقوم بعملها لاي تصنيف. لنقولها بطريقه واقعيه باستخدام اللغه العربيه, الدراجه تحتاج الى تقوم بصيانتها , صبغها , تنظيفها , تلميعها , ونفس الشيئ السياره , ولكن اذا قلت اريد ان انظف, فيوجد بعقلك ماهو الشيئ الذي تريد ان تقوم بتنظيفه هل هو سياره او دراجه, هل وصلت الفكره ؟؟

مبدأ الوراثه ( Inheritance ) :

عملية الوراثه سهله, فأنت على سبيل المثال, ورثت صفة الحواجب العريضه من الاب, و الانف المعتدل من الام وغير ذلك, ولكن لديك اشياء وخواص خاصه بك لا توجد في الاب و الام اليس ذلك صحيحا ؟ نفس الشيئ هنا, لنضرب مثالا على ذلك , لدينا شركة سيارات, تقوم ببيع سيارات على عدة انواع ( رياضيه , عائليه , جيب ) , كل منهم لديهم خواص متماثله , كل سياره لها لون, كل سياره لها 4 عجلات, وغيرها, ولكن كل نوع لديه بعض الخصائص لا توجد في الاخرى, الرياضيه مقعدان فقط, الجيب 7 مقاعد , العائليه 5 مقاعد. في مبدا الكائنات نقوم بعملها كالتالي, ننشيئ تصنيف اسمه سياره, وثلاث تصنيفات اخرى ونجعلها تورث الصفات من التصنيف سياره, هل وضحت الصوره ؟ انظر المثال التالي:

Sh2ee
01-07-2007, 04:18 AM
برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه, يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي للواقع تريده, فمثلا لو قلنا ان لدينا ....


بسم الله الرحمن الرحيم

نتمنى ان تكون الاستفاده ممتازه من هذه الدروس ولا تترد بطرح اي سؤال على بريدي الشخصي وسوف يسعدني ان اقوم بالمساعده , اذا قمت بأي خطأ او كان هناك خطأ في معلوماتي الرجاء اعلامي بذلك , فلا تنسى انه جل من لا يسهو . ( ان اصبت من الله وان اخطأت فمن نفسي او الشيطان )

متطلبات قبل البدأ :

لا يوجد

اهداف الدرس:

مقدمه عن برمجة الكائنات ( Object Oriented )
مبدأ التعدديه ( Polymorphism )
مبدأ الوراثه ( Inheritance )
انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations )
مؤسس التصنيف ( Constructer )
استخدام التصنيفات

--------------------------------------------------------------------------------

مقدمه عن برمجة الكائنات ( Object Oriented ) :

برمجة الكائنات نعني بها , الوصول بالبرمجه الى محاكاة الواقعيه, كثير من البرامج التي لا تدعم الكائنات يصعب فهم كودها, ولكن مع هذه الطريقه, يوجد لدينا طريق نحاكي به الواقع, لو فكرت قليلا وسألت نفسك, كيف يمكنني ان اقوم بمحاكاة سيارة , طائره , انسان وغيرها, صدقني سيصعب عليك ذلك من غير هذا المبدأ ولكن اذا استخدمت برمجة الكائنات فيسهل عليك فعل كل شي محاكي للواقع تريده, فمثلا لو قلنا ان لدينا تصنيف ( Class ) اسمه بشر , اكيد ان هذا البشر لديه خواص ( attributes ) فهو ينتمي الى نوع وهو ذكر او انثى, لديه اسم , لديه عمر , لديه لون بشره , لديه طول , لديه وزن وهكذا, ولديه عمليات ( operations ) يقوم بها كالنوم والاستيقاظ, والافطار, تخيل انك تقوم بفعل هذا كله بالبرمجه ؟؟؟ ماهو الاسهل بالنسبه لك الطريقه المعتاده من كتابة الاكواد , او الطريقه الجديده التي سنتعلمها بعد قليل :). وايضا نستطيه استخدام هذا المبدأ للاشياء المبدئيه, كالملفات مثلا , فيوجد لدينا ملف , ولديه اسم ولديه حجم , ولديه نوع وغير ذلك.

كثير من لغات البرمجه الحديثه تدعم مبدأ ( Object Oriented ), وتعتبر التي لا تدعمها ضعيفه, فأصبح كل شي في هذه الايام يعتمد على هذا المبدأ, فهو اسرع , اسهل , اكثر حمايه من الكود العادي, وبعض اللغات يطلب منها ويلزم عليها ان تكون مبنيه على هذا المبدأ. ومن وجهة نظري انا, اعتقد ان البرنامج الذي لا يستخدم هذا المبدأ لن يكون جيدا , ( ليس في كل الحالات ).

من اعظم فوائد مبدأ ( Object Oriented ) دعم والتشجيع على مبدأ ( Encapsulation ) ونعني به ( اخفاء المعلومات ), حيث اننا لا نستطيع التحكم في الخواص او المعاملات الا عن طريق الكائن, ومانسميه بواجهة الكائن. حى لو اردنا تغير نوع او اصلاح او اضافة اي شيئ, فسوف نرجع الى التصنيف الاساسي , ولن تطرق الى تعديل جميع اكوادنا. ويمكننا انشاء اكثر من ( Object ) من هذا التصنيف, حيث كل واحد منهم منفصل عن الاخر, فتخيل لدينا التصنيف الاول ( البشر ) فنستطيع انشاء عدة كائنات منه , واحد اسمه محمد ولديه خواص معينه , والاخر اسمه نوال ولديه خواص ومعاملات اخرى, ولا يعني انهم واحد, فكل واحد منهم منفصل على الاخر, ولديه تحكمات وخواص خاصه به.

مبدأ التعدديه ( Polymorphism ) :

بحثت في كثير من المعجمات والتراجم عن معنى هذه الكلمه بالعربيه ولم اجد, ولكن قرأت كتابا يقول عنها ( Different Classes have different behaviors for the same operations ) ومعنى ذلك باللغه العربيه, ان تصنيفات مختلفه يكون لديها سلوكات مختلفه لنفس العمليات, معادله رياضيه اليس كذلك ؟ لن تستطيع فهمها بسرعه, يجب ان تأخذ عليها امثله كثيره ليصل المبدأ الى العقل وتقوم بإستيعابه, واترك ذلك علي فسأحاول قدر الامكان ان اقوم بتسهيله لك. لنأخذ مثالا على ذلك, لو عندنا تصنيف سياره وتصنيف دراجه هوائيه, فكل منهما لديه خاصية التحرك ولكن في السياره يجب ان تقوم بالتشغيل, ولكن في الدراجه بطريقه اخرى ولا يوجد لدينا تشغيل, ولكن في لغات البرمجه لا يوجد لدينا هذا الواقع ولا تقوم بمحاكاة الواقع 100%100 فلذلك تحتاج اللغه ( polymorphism ) لكي تعرف اي عمليه تقوم بعملها لاي تصنيف. لنقولها بطريقه واقعيه باستخدام اللغه العربيه, الدراجه تحتاج الى تقوم بصيانتها , صبغها , تنظيفها , تلميعها , ونفس الشيئ السياره , ولكن اذا قلت اريد ان انظف, فيوجد بعقلك ماهو الشيئ الذي تريد ان تقوم بتنظيفه هل هو سياره او دراجه, هل وصلت الفكره ؟؟

مبدأ الوراثه ( Inheritance ) :

عملية الوراثه سهله, فأنت على سبيل المثال, ورثت صفة الحواجب العريضه من الاب, و الانف المعتدل من الام وغير ذلك, ولكن لديك اشياء وخواص خاصه بك لا توجد في الاب و الام اليس ذلك صحيحا ؟ نفس الشيئ هنا, لنضرب مثالا على ذلك , لدينا شركة سيارات, تقوم ببيع سيارات على عدة انواع ( رياضيه , عائليه , جيب ) , كل منهم لديهم خواص متماثله , كل سياره لها لون, كل سياره لها 4 عجلات, وغيرها, ولكن كل نوع لديه بعض الخصائص لا توجد في الاخرى, الرياضيه مقعدان فقط, الجيب 7 مقاعد , العائليه 5 مقاعد. في مبدا الكائنات نقوم بعملها كالتالي, ننشيئ تصنيف اسمه سياره, وثلاث تصنيفات اخرى ونجعلها تورث الصفات من التصنيف سياره, هل وضحت الصوره ؟ انظر المثال التالي:
http://prog.arccn.net/images/php/l17e1.gif
انشاء التصنيفات ( Class ) , الخواص ( Attribute ) , العمليات ( Operations ) :

تكلمنا كثيرا في درس اليوم, لنأتي الان الى تطبيقاتنا , ونأخذ امثله حيه لكيفة انشاء التصنيفات والخواص والمعاملات. يمكننا انشاء تصنيفات بإستخدام العباره class لاحظ المثال التالي:
http://prog.arccn.net/images/php/l17e2.gif
تصنيفنا هذا يحتاج الى خواص , لنقم الان بإنشاء خاصيتين , وهي اسم السياره ولونها , ونقوم بإنشاء الخواص بإستخدام العباره var , لاحظ التالي :
http://prog.arccn.net/images/php/l17e3.gif
مؤسس التصنيف ( Constructer ) :

في كل تصنيف نقوم بإنشائه يجب علينا ان نقوم بإنشاء مؤسس لهذا التصنيف ويسمى ( Constructer )وهو نوع خاص من العمليات, وينادى هذا المؤسس في حالة انشاء الكائن وفي العاده يقوم ببدأ خواص الكائن, كجعل الخواص تبدأ من البدايه وغيرها, ويجب ان يكون اسمه بنفس اسم التصنيف, والطريقه هي كالتالي:
http://prog.arccn.net/images/php/l17e4.gif
وايضا نحتاج الى ان ننشئ بعض المعاملات على هذا التصنيف , ونقوم بذلك بإستخدام الدوال التي تعلمناها سابقا, راجع الدرس الحادي عشر: ادراج الملفات والدوال بأنواعها , لاحظ التالي :
http://prog.arccn.net/images/php/l17e5.gif
استخدام التصنيفات :

الان قمنا بإنشاء تصنيف خاص بنا, نريد ان نقوم بإستخدامه, او البدأ بالعمل عليه, كيف نقوم بذلك ؟؟ لاحظ المثال التالي:
http://http://prog.arccn.net/images/php/l17e6.gif
لاحظ اننا نقوم بإنشاء كائن في كل مره نقوم بإنشاء كائن من التصنيف, ولذلك سوف يكون ناتجنا هو التالي:
http://prog.arccn.net/images/php/l17e7.gif
اعتقد ان درس اليوم طويل جدا , واخذت كميه كبيره من المعلومات, لذلك سوف اقف هنا الان, واكمل المتبقي في الدرس القادم ان شاء الله ولا تنسى انه في حالة صعوبة اي شيئ عليك , راسلني بريديا وسوف يسعدني ان اقوم بالاجابه :)

(( منتــــديات شــــقاوه ))

-------------------------------------------

elhabib
01-13-2007, 11:04 AM
شقي

ما اروعها من مواضيع وبرامج

متالق دوما ومتميز

تبرهنا بالجديد دوما

كل الشكر لك