الدعم العربي
الدرس الثالث: المتغيرات , الثوابت و المعاملات - نسخة قابلة للطباعة

+- الدعم العربي (https://www.mybbarab.com)
+-- قسم : :: . + تطوير المواقع و المنتديات و لغات برمجة المواقع + . :: (https://www.mybbarab.com/forum-78.html)
+--- قسم : قسم تطوير المنتديات والمواقع ولغات البرمجه (https://www.mybbarab.com/forum-117.html)
+---- قسم : نقاش عام حول PHP و MYSQL (https://www.mybbarab.com/forum-49.html)
+---- الموضوع : الدرس الثالث: المتغيرات , الثوابت و المعاملات (/thread-477.html)



الدرس الثالث: المتغيرات , الثوابت و المعاملات - Pepo - 2007-03-22

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

PHP كود :
<?php
$number1 
=1;
$number2 =2;
print 
$number1;
print 
"<br>"// سطر جديد
print $number2;
?>

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

[صورة: l3e2.gif]

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

PHP كود :
<?php
$number1 
=1;
$number2 =2;
$number2 $number1// قيمة 2 الى 1
print $number1;
print 
"<br>";
print 
$number2// سيطبع رقم 1
?>

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

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

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

[صورة: ex1.jpg]

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

معلومه خارجيه : تسمى لغة PHP اللغه المسامحه ولذلك انك عند وضع القيمه داخل المتغير لا تحتاج ان تقوم بتحديد النوع , فإن المترجم يقوم بعرفة النوع من تلقاء نفسه , ماعليك فعله فقط ان تقوم بوضع علامة $ قبل اسم المتغير.

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

PHP كود :
<?php
$name 
"Ahmed";
$number 100;
$double 100.0236;
$boolean true;
$test;
print 
gettype ($name);
print 
"<br>;
print gettype (
$number);
print "
<br>";
print gettype (
$double);
print "
<br>";
print gettype (
$boolean);
print "
<br>";
print gettype (
$test);
?>

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

[صورة: l3e5.gif]

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

ماذا لو اردنا تغيير قيمة متغير من نوع الى اخر , من integer  الى string فمالذي نفعله ؟ نقوم بإستخدام الداله settype($var , new type ) لكي تقوم بالعمل المطلوب , لنأخذ مثالا لتوضيح الصوره

PHP كود :
<?php
$number 
100;
print 
gettype ($number);
settype ($number string); //غيرنا النوع
print "<br>";
print 
gettype ($number);
?>
والناتج هو :

[صورة: l3e7.gif]

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

هناك طريقة اخرى لتغيير نوع المتغير وتسمى ( Casting ) وهي بالطريقة التاليه :

PHP كود :
<?php
    $number 
100;
    print 
gettype ($number);
    print 
"<br>";
    
$number = (string) 100;
    print 
gettype ($number);
?>

قم بكتابة الكود وسوف ترى ان النتيجه نفسها نتيجة عمل settype( $var , new type )  والاختلاف الوحيد ان طريقة ( Casting ) لا تقوم بتغيير نوع المتغير الاساسي او فعليا , ولكن تقوم بوضع نسخه من المتغير وتقوم بتغييرها الى النوع المراد , ولكن على عكس الاخرى فهي تقوم بتغير النوع فعليا

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



PHP كود :
<?php
$f_name 
"دورة";
$l_name "الدعم العربى";
$whole $f_name.$l_name;
print 
$whole;
print 
"<br>";
//فى السطر التالى سنستخدم القوس المزدوج لوضع فراغ بين الأسمين
$whole$f_name." ".$l_name;
print 
$whole;
print 
"<br>";
//نفس العملية
print "انا اتعلم فى".$whole;
?>

والناتج هو التالي:

[صورة: ex2.jpg]

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

رأيت في السابق اننا نقوم بإنشاء متغيرات ونقوم بتغيير انواعها والكثير من الامور ولكن يوجد لدينا الثوابت , ماهي الثوابت ؟ من الاسم يمكنك ان تستنج انه متغير ثابت ولا يتغير ابدا مهما حصل , قد تتسائل لماذا نحتاج الى هذه النوع من المتغيرات , والاجابه هي , تخيل ان لدينا اسعار بعض من منتجاتنا , وهذه الاسعار ثابته ولا تتغير ؟ فسوف نقوم بوضعها في الثوابت بالطريقه التاليه define( 'var' , value ) هل وضحت الصوره ؟؟ لنأخذها بالعربيه define('اسم المتغير' , القيمه ) , هل عرفت الان الطريقة ؟ لنقم ببعض الامثله ,تخيل انه لدينا مطعم ونبيع الببسي بثلاث انواع , صغير وقيمته ريال واحد , وسط وقيمته ريالان , كبير وقيمته 3 ريالات ,  قم بكتابة التالي ,

PHP كود :
<?php
define 
('small_pepsi' 1);
define ('medium_pepsi' 2);
define ('large_pepsi'3);
print 
small_pepsi;
print 
"<br>";
print 
medium_pepsi;
print 
"<br>";
print 
large_pepsi;
?>
والناتج هو التالي :

[صورة: l3e12.gif]

الفرق بين المتغيرات والثوابت , هي انه عندما نريد ان نقوم بطباعة الثابت او استخدامه لا نقوم بوضع علامة $ في الثابت ابدا , وايضا من الاسماء الممنوع استخدامها في متغيرات لغة PHP الثوابت المعرفة في نفس اللغه , وهي ثابته ولا تتغير ولمشاهدتها قم بكتابة التالي في محرر الاكواد

PHP كود :
<?php
php info
();
?>
وقم بتشغيل الملف وشاهد النتيجه Smile .
(( سوف تظهر لك صفحه يوجد بها اعدادات هذه اللغه , لا تهتم لها الان فقط انظر الى الثوابت Variables ))

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

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

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

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

[صورة: ex3.jpg]

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

[صورة: ex4.jpg]

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

PHP كود :
<?php
$x
=6;
$y=3;
//العمليات تكون على الشكل التالى
$a$x $y// جمع
$b$x $y// طرح
$c$x $y// ضرب
$d$x $y// قسمة
$e$x $y// قسمة بالباقى
print $x" + " .$y" = ".$a;
print 
"<br>";
print 
$x" - ".$y." = ".$b;
print 
"<br>";
print 
$x" * ".$y." = ".$c;
print 
"<br>";
print 
$x" / ".$y." = ".$d;
print 
"<br>";
print 
$x" % ".$y." = ".$e;
?>

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

PHP كود :
<?php
$x
6;
// السطر التالى يوضح كيفية زيادة المتغير
$x +=1// $x=$x+1
print $x
//السطر التالى زيادة المتغير بواحد
$x++;
print 
"<br>";
print 
$x;
?>

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

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

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

[صورة: ex5.jpg]

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

[صورة: ex6.jpg]

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

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

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

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

[صورة: ex7.jpg]

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



اسئـــلة على الدرس :
  1. اي من اسماء المتغيرات التاليه غير مسموح في لغة PHP :
    كود :
    $name

    $22name65

    $first name

    $last-name
    $______________MYARABICBB____________
  2. ماهو ناتج العمليات التاليه :
    كود :
    4+5+6*(2*4)

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


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

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