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