الدرس الثاني
المتغيرات
في الدرس الأول تعلمنا أن كل شيئ في الحاسوب يعتبر كائن
وفي الحقيقة هناك نوعين من الكائنات :
كائنات حقيقية: وهي التي لها صفات وأفعال ويمكن أن يكون لها تمثيل مرئي
متغيرات : وهي متغيرات لا تحتوي على صفات أو أفعال وإنما تحتوي على قيمة محددة ولا تكون مرئية
أي انه من الممكن أن يحتوي الكائن "المتغير" X على قيمة مخزنة في ذاكرة الحاسوب
ومن الممكن أن تكون قيمة المتغير أما رقم أو نص أو حرف أو رقم عشري أو....
وإذا أردنا أن ننشئ متغير في ذاكرة الحاسوب فيجب أن نحدد نوع القيمة التي ستحملها المتغير
مع العلم أننا نختار إسم الكائن كما نشاء مادام الإسم يحقق الشروط التالية:
1-أن يكون اسم المتغير حروف أو ارقام لاتينية
2-أن لا يكون أول حروف الإسم رقم , فهذا الإسم غير مسموح 5int بينما هذا مسموح int5
3-أن لا يحتوي الإسم على علامات أواشارات مثل # أو $ أو * أو + , الإشارة المسموحة فقط هي _
وهذه الشروط تنطبق على أسماء الكائنات أو المتغيرات ألتي سنقوم بإنشائها
إذن المتغير هو كائن يستخدم لتخزين قيمة من نوع محدد
مثلاً إذا أردنا أن نعرف متغير اسمه x من نوع رقم سيكون الكود كالتالي:
كود:
int x;
وكلمة int إختصار لكلمة integer ومعناها عدد صحيح
الكود السابق معناه أنا عرفنا متغير اسمه x سيحمل قيمة من نوع عدد صحيح
لاحظ أنك تستطيع تغيير اسم المتغير كما تشاء المهم أن تراعي شروط التسمية الثلاثة
وإذا أردنا تحميل هذا المتغير قيمة محدد يكون الكود كالتالي:
كود:
x=20;
الكود السابق معناه أن المتغير x يحمل القيمة 20 ويستمر بحمل القيمة حتي يتوقف البرنامج أو نحملة قيمة أخرى
لاحظ الكود التالي:
كود:
int Var1;
int Var2;
Var1=10;
Var2=Var1;
قمنا بتعريف متغيرين من نوع رقم صحيح ثم حملنا الرقم الأول قيمة 10
وفي السطر الأخير حملنا المتغير الثاني قيمة المتغير الأول أي أن المتغير الثاني يحمل أيضاً القيمة 10
ملاحظة مهمه:في لغات البرمجه معامل التساوي ليس تبادلي يعني أن
Var2=Var1
لا تساوي أبداً
Var1=Var2
لإن معامل = في لغات البرمجة يقوم بنقل قيمة المتغير في اليمين إلى المتغير في اليسار
فلو عكسنا المعاملات في السطر الأخير من الكود السابق هكذا :
كود:
int Var1;
int Var2;
Var1=10;
Var1=Var2;
فسيظهر لنا خطأ عند السطر الأخير لأن المعالج سيحاول نقل ما في المتغير Var2 إلى المتغير Var1
ولكن المتغير Var2 لا يحتوي على أي قيمة لذلك سيظهر لنا الخطأ
بعض أنواع المتغيرات وكيفية تعريفها:
رقم صحيح int
نص أو كلمة string
رقم حقيقي "رقم يقبل الكسور العشرية مثل 41.51" double
حرف char
تاريخ أو وقت DateTime
قيمة بوليانية bool
معنى القيمة البوليانية أي أن المتغير يحمل قيمة صح أو خطأ , للتوضيح:
كود:
int k;
string w;
double m;
char n;
bool p;
k=15;
w="هذا نص";
m=12.15;
n="م";
p=true;
لا حظ أن المتغير من نوع رقم لا يحتاج إلى علامتي إقتباس
بينما المتغير من نوع نص أو حرف يحتاج إلى علامتي إقتباس
المتغير من نوع bool يحمل أما قيمة true أو false
ماذا لو جربنا الكود التالي:
كود:
k="نص";
سيظهر لنا خطأ لأنا نحاول أن نحمل المتغير k قيمة من نوع نص
بينما المفروض أن يحمل قيمة من نوع رقم كما عرفناه
وأيضاً هذا الكود خاطئ لنفس السبب
كود:
k=w;
حيث أن w يحتوي على قيمة من نوع نص و k المفروض أن يحمل قيمة من نوع رقم
ماذا لو كان لدينا هذا الكود:
كود:
w="45";
k=w;
سيظهر لنا خطأ أيضاً عند السطر الثاني بالرغم من أن w يحمل رقم
لأن المترجم لا يعرف أن w يحمل رقم , فهو يعتبر كل ما هو بين علامتي اقتباس على أنه نص
وبالتالي فالمترجم لن يقبل أن يحمل k قيمة نصية لأن من المفروض أن يحمل رقم
للتغلب على هذه المشكلة يوجد في بيئة التطوير كائن للتحويل ما بين الأنواع
وهذا الكائن يقوم بتحويل القمية إلى أي نوع فإذا اردنا تنفيذ الكود السابق بإستخدام كائن التحويل:
كود:
w="45";
k=Convert.ToInt32(w);
الكائن Convert قام بأخذ قيمة w وحولها إلى رقم ثم حملها للمتغير k
لاحظ أننا للوصول إلى أفعال أو صفات الكائن نكتب اسم الكائن ثم نقطة ثم فعل أو صفة الكائن
فالكائن Convert يحتوي على فعل ToInt32 لذلك كتبنا اسم الكائن ثم نقطه ثم فعل الكائن
ووضعنا بين القوسين المدخلات , ومن أفعال الكائن Convert:
ToInt32 للتحويل إلى رقم صحيح كما رأينا في المثال السابق
ToString للتحويل إلى نص
ToDouble للتحويل إلى عدد عشري
ToChar للتحويل إلى حرف
ToBoolean للتحويل إلى قيمة بوليانية