الدرس الثالث: المتغيرات , الثوابت و المعاملات Posted by محمد الرحيلي on يوليو 1, 2010 in PHP | 0 comments
متطلبات قبل البدء :
- مراجعة الدرس الاول : اول برنامج 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 ) لكي تقوم بالعمل المطلوب , لنأخذ مثالا لتوضيح
الصوره
والناتج هو :
والبقية نفس المنوال , فقط قم بوضع المتغير , ثم ضع النوع المراد التحويل اليه
هناك طريقة اخرى لتغيير نوع المتغير وتسمى ( Casting ) وهي بالطريقة التاليه :
قم بكتابة الكود وسوف ترى ان
النتيجه نفسها نتيجة عمل settype( $var , new type ) والاختلاف الوحيد ان
طريقة ( Casting ) لا تقوم بتغيير نوع المتغير الاساسي او فعليا , ولكن
تقوم بوضع نسخه من المتغير وتقوم بتغييرها الى النوع المراد , ولكن على عكس
الاخرى فهي تقوم بتغير النوع فعليا
هناك شي اخر وهو لو اردنا جمع
متغيرين مع بعضهما البعض في سطر واحد , فسوف نقوم بإستخدام ( . ) , لم توضح
الصوره وانا متأكد , لنأخذ مثال يبين لنا المعنى , افتح محرر الاكواد
مجددا وقم بكتابة التالي :
والناتج هو التالي:
الثوابــــت:
رأيت في السابق اننا نقوم بإنشاء متغيرات
ونقوم بتغيير انواعها والكثير من الامور ولكن يوجد لدينا الثوابت , ماهي
الثوابت ؟ من الاسم يمكنك ان تستنج انه متغير ثابت ولا يتغير ابدا مهما حصل
, قد تتسائل لماذا نحتاج الى هذه النوع من المتغيرات , والاجابه هي , تخيل
ان لدينا اسعار بعض من منتجاتنا , وهذه الاسعار ثابته ولا تتغير ؟ فسوف
نقوم بوضعها في الثوابت بالطريقه التاليه define( ‘var’ , value ) هل وضحت
الصوره ؟؟ لنأخذها بالعربيه define(‘اسم المتغير’ , القيمه ) , هل عرفت
الان الطريقة ؟ لنقم ببعض الامثله
,تخيل انه لدينا مطعم ونبيع الببسي بثلاث انواع , صغير وقيمته ريال واحد ,
وسط وقيمته ريالان , كبير وقيمته 3 ريالات , قم بكتابة التالي ,
والناتج هو التالي :
الفرق بين المتغيرات والثوابت , هي انه
عندما نريد ان نقوم بطباعة الثابت او استخدامه لا نقوم بوضع علامة $ في
الثابت ابدا , وايضا من الاسماء الممنوع استخدامها في متغيرات
لغة PHP الثوابت المعرفة في نفس اللغه , وهي ثابته ولا تتغير ولمشاهدتها قم بكتابة التالي في محرر الاكواد
وقم بتشغيل الملف وشاهد النتيجه
.
(( سوف تظهر لك صفحه يوجد بها اعدادات
هذه اللغه , لا تهتم لها الان فقط انظر الى الثوابت Variables ))
المعامــلات:
لدينا ثلاث انواع من المعاملات في لغة PHP وهي المعاملات الحسابيه ,
معاملات المقارنه , المعاملات المنطقيه وسوف نتكلم عنها بالتفصيل
المعاملات الحسابيه
المعاملات الحسابيه الاعتياديه
نتيجة المثال
| مثال
| الاسم
| المعامل
|
2
| 1+1
| جمع
| +
|
0
| 1-1
| طرح
| -
|
6
| 2*3
| ضرب
| *
|
3
| 6/2
| قسمه
| /
|
1
| 10%3
| باقي القسمه
| %
|
معاملات حسابيه اخرى :
تساوي
| مثال
| العمليه
|
$x = $x + 5
| $x +=5
| +=
|
$x = $x – 5
| $x -=5
| -=
|
$x = $x * 5
| $x *= 5
| *=
|
$x = $x / 5
| $x /= 5
| /=
|
$x = $x % 5
| $x % = 5
| %=
|
$x = $x + 1
| $x++
| ++
|
$x = $x – 1
| $x–
| –
|
شيء مخيف اليس كذلك ؟ بالعكس انه سهل جدا ,
كأنك تقوم بتعلم الرياضيات للمرحله الاولى , لنقم بكتابة بعض الاكواد وسوف
ترى كيفية سهولة الامر , افتح محر الاكواد ولنقم بعمل بعض من تمارين
العمليات الحسابيه الاعتياديه :
ارأيت سهولة الامر ؟ فقط عليك ان تقوم بذكر
رموز العمليات وسوف يكون لديك الناتج , لنقم الان ببعض تمارين المعاملات
الحسابيه الاخرى , قم بكتابة التالي :
لاحظ اننا هنا قمنا بتغيير قمية محتوى
المتغير الاساسية , وليس مؤقتا , قم بتجربة العمليات الاخرى , حتى ولو كانت
هناك بعض الاخطاء , قم بالتكرار ومحاولة معرفة الخطأ وسوف تفهم جميع
الاكواد السابقه.
سوف نقوم الان بذكر معاملات المقارنه والمعاملات المنطقيه ولكن لن نقوم بعمل اي
تمارين عليها , وذلك لانها سوف تستعمل في الدرس القادم
معاملات المقارنـــــه :المعنى
| المعامل
|
يساوي
| = =
|
لا يساوي
| !=
|
يساوي ومن نفس النوع
| = = =
|
اكبر من
| >
|
اكبر من ويساوي
| >=
|
اصغر من
| <
|
اصغر من ويساوي
| <=
|
المعاملات المنطقية :
النتيجه
| مثال
| يكون صحيح عند
| الاسم
| المعامل
|
true
| true || false
| احد الطرفين صحيح
| او
| ||
|
true
| true OR false
| احد الطرفين صحيح
| او
| OR
|
false
| true && false
| كل الطرفين صحيحه
| و
| &&
|
false
| true AND false
| كل الطرفين صحيحه
| و
| AND
|
false
| true xor true
| احد الطرفين صحيح وليس الاثنان
| xor
| xor
|
false
| !ture
| الطرف ليس صحيح
| لا
| !
|
قد تتسائل لماذا يوجد لكل نوع اثنان من الاشكال ؟ والجواب سوف يكون في القسم التالي وهو ترتيب الاهميات
ترتيب الاهميــــات:
عند استخدام المعاملات يقوم المترجم
بالقراء من اليمين الى اليسار في الحالات العاديه وعند استخدام معامل واحد ,
ولكن تخيل لدينا اكثر من معامل في سطر برمجي واحد ؟ هنا يقوم المترجم
بالاختيار حسب الاهميه , لنأخذ مثال على ذلك , تخيل ان لديك العمليه
التاليه :
4 + 5 فماهو الناتج ؟؟؟ الناتج واضح وليس به اي غموض وهو 9
ولكن تخيل لو لديك العمليه التاليه 4 + 5 * 2
؟؟؟ فما هو ناتج العمليه الحسابيه ؟ الجواب هو 14 , لان المترجم قرأ عملية
الضرب اولا ثم عملية الجمع , ويمكن ان تقوم بإجبار المترجم على قراء عملية
الجمع اولا بإستخدام الاقواس , مثال : ( 4 + 5 ) * 2 وسوف يكون الناتج 18
, في الجدول التالي سوف تقوم بمعرفة الاهميات وترتيبها وماهي المعاملات التي تنفذ
قبل الاخرى ( من الاعلى الى الاسفل )
المعامل
|
++ , — , (cast)
|
/ , * , %
|
+ , -
|
< , <= , => , >
|
= = , = = = , !=
|
&&
|
||
|
= , += , -= , /= , *= , %= , .=
|
AND
|
xor
|
OR
|
لا تتعجل بالحكم على ان اللغه صعبه , يمكن
ان لا اكون قد وضحت فكرة الشرح بشكل جيد , او لم يكن القائي جيدا , ولكن
اعدك في الدرس القادم انك سوف تعرف معنى هذه المتغيرات وكيفية
استعاملها , ومع الدرس القادم , تبدأ به متعة لغة PHP
اسئـــلة على الدرس :
- اي من اسماء المتغيرات التاليه غير مسموح في لغة PHP :
$name
$22name65
$first name
$last-name
$______________ARCCN____________
2. ماهو ناتج العمليات التاليه :
4+5+6*(2*4)
2+9*8
3. قم بإنشاء متغير من نوع ( integer ) وقم بتحويله الى كل الانواع التي مرت
عليك , مره بإستخدام الداله settype ومره بإستخدام ( Casting ) ولاحظ الفرق بينهما
الـــدرس الــقادم :
سوف نقوم في الدرس القادم بالتعلم على
الشروط في لغة PHP بالتفصيل ,انواعها وطريقة كتابتها , واستعمالها مع
المعاملات المنطقيه و معاملات المقارنه .