المتغيرات

Variables

في برنامجنا نحن  بحاجة لطريقة ما لتخزين القيم  في الذاكرة  ، هذه الأماكن التي يتم تخزين البيانات فيها تدعى المتغيرات (Variable) .
إذاً المتغيرات لا تمثل سوى الاسم الذي أعطيناه لتخزين المتغير في الذاكرة   .

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




عندما نستخدم المتغير نقوم بالإشارة إلى المعلومات المخزنة في هذا المكان , لأن البيانات توضع ضمن المتغيرات.

وبما أن البيانات لها أنواع مختلفة وأحجام مختلفة وتتطلب عمليات مختلفة لمعالجتها لهذا كانت المتغيرات ذات أنواع مختلفة.
والتصريح عن المتغيرات (Declaration ) يأخذ الصيغة التالية /
;<type> <name >


نلاحظ ثلاثة أشياء يجب مراعاتها عند التصريح عن المتغير هي نوع البيانات المخزنة في المتغير data type  والشيء الثاني هو اسم المتغير variable name أما الشيء الثالث فهو الفاصلة المنقوطة.
مثلا
;string name
حيث أن الـ string هي عبارة عن نوع المتغير الذي يخزن سلاسل الحروف والـ name  اسمه ثم الفاصلة المنقوطة

مثال آخر

;int x

;3=x

حيث أن int عبارة عن نوع متغير يحمل رقم صحيح والـ x هو اسم المتغير ثم الفاصلة المنقوطة ثم تم اسناد قيمة للمتغير وهي 3

ويمكن أن نسند قيمة للمتغير في نفس السطر
;int x=3
ويمكن أن نصرح عن أكثر من متغير في نفس السطر فبدلا من
;int x
;int y

نصرح عنها في سطر واحد ونفصل بينها بالفاصل
;int x ,y



مثال : كود لجمع قيمتين صحيحة
static void Main(string[] args)
{


int x=3, y=2, z;
z = x + y;



Console.WriteLine(z);
}

في هذا المثال ببساطة عرفنا ثلاث متغيرات رقمية صحيحة من نوع int يفصل بين كل متغير والآخر فاصلة ثم أنهيناها بفاصلة منقوطة لنقوم بعملية الجمع حيث جمعنا المتغير x مع المتغير y واسندنا الناتج بعلامة الاسناد(=) إلى المتغير z.
ليكون الناتج هو : 5 والذي تم تخزينة في المتغير z



فعندما نريد تخزين القيم الصريحة الرقمية نستخدم المتغير int  للأعداد الصحيحة أي التي لاتحوي على فاصلة عشرية أو كسرية وعندما نريد أن نخزن الأعداد الكسرية والعشرية فنستخدم المتغير double للأعداد العشرية أما القيم المنطقية التي لا تحتمل سوى false أو true فيتم تخزينها في المتغير الرقمي bool فنحن أحيانا بحاجة لمعرفة شيء هل يعمل أم لا هل هو صحيح أم خاطيء , أما سلاسل الحروف يتم تخزينها في المتغير string كما ذكرنا .

وهناك قاعدتين لتسمية المتغيرات :
  1. يجب أن يكون الرمز الأول من اسم المتغير حرف هجائي أو رمز "_" أو رمز @ فقط.
  2. يمكن أن تكون الرموز الأخرى بعد الرمز الأول حرف هجائي أو رقم أ رمز +_+ فقط
ويجب مراعاة عدة أمور عند التصريح عن المتغير :
  • لا يمكن استخدام المتغير قبل التصريح عنه
  • لايمكن استخدام المتغير قبل أن نسند له قيمة
  • اسماء المتغيرات متحسسة لحالة الأحرف (case-sensitive)  معنى هذا أن المتغير ذو الأسم Name ليس هو المتغير ذو الاسم name
ففي حال عدم مراعاة هذه الأمور سيحدث خطأ في ترجمة البرنامج.
إذا فحتى نتمكن من استخدام المتغيرات يجب علينا التصريح (declare) عنها كما ذكرنا وهذا يعني أن نحدد :
  • اسم المتغير
  • نوعه
المغيرات التي يتم إنشاؤها  تكون وفق قاعدتين :
  • Pascal case :  يكون الحرف الأول من كل كلمة كبير فمثلا المتغير age يتم كتابته هكذا Age والمتغير ذو الكلمات المتعددة يتم كتابته هكذا LastName
  • camel case  ويكون الحرف الأول صغير مثل age والكلمات المتعددة تكون وفق firstName و timeOfDeath
  • هناك أحد النظم القديمة الذي يقوم بوضع رمز "_"بين الكلمات كفاصل time_of_deth و first_name
ويجب أن يراعى عند تسمية المتغيرات أن تكون الأسماء وصفية فمثلا بدلا أن اسمي متغير اسم الطالب X اسمية StudentName وهكذا.


والمتغيرات الرقمية يتم تقسيمها لعدة أقسام هي :
  1. الأعداد الصحيحية Integral
  2. الأعداد ذات العلامة العائمة Floating-Point
  3. الأعداد ذات الدقة العاليةDecimal
  4. القيم المنطقية Boolean
1- الأعداد الصحيحة : هي القيمة الرقمية التي لاتحتوي على قيمة كسرية أو عشرية وهي :
  • الأعداد الصحيحة int,uint
  • الأعداد القصيرة shot,ushort
  • الأعداد الطويلة long,ulong
  • البايت byte-sbyt
  • والمتغيرات الحرفية char
نجد أن الأعداد الصحيحة int,uint  يتم تخزينها في أربعة بايت من الذاكرة ويتم استخدام uint لتخزين الأرقام ذات العلامة الموجبة فقط  في مدى أربعة بايت.
 وكذلك نجد short,ushort والتي يتم تخزينها في 2 بايت من الذاكرة ويتم استخدام ushort للأعداد ذات العلامة الموجبة فقط في مدى اثنين بايت وهي تماما مثل int  إلا أنها توفر موارد الذاكرة.
ونجد أيضا long,ulong التي توفر مساحة أكبر في الذاكرة بحيث تخزن في 8 بايت و ulong لتخزين الأعداد ذات العلامة الموجبة فقط في مدى ثمانية بايت .
 ونجد أيضا البايت byte,sbyte والذي يخزن في واحد بايت وهناك اصدار منه بعلامة وهو sbyte بخلاف byte الذي لايخزن سوى العلامة الموجبة في مدى واحد بايت فقط.
 ونجد المتغير char الذي يقوم بتخزين المتغير في 2بايت قبل أن يتم تحويله إلى حرف وفي char عندما نضع الحرف نضعه بين علامتي اقتباس مثلا "a"وهو يخزن حرف واحد فقط.

2- الأعداد ذات العلامة العائمة :
وبما أن الأعداد ليست كلها صحيحة نجد أننا بحاجة لتخزين الأعداد ذات العلامة العشرية والأعداد ذات العلامة المزدوجة فمثلا عند حساب المحيط الخارجي للذائرة نجد أن الناتج ليس بعدد صحيح غالبا وسنجده رقم عشري لهذا نستخدم متغيرات عشرية , فنجد أن المتغير Float يقوم بتخزين الأرقام في مساحة 4بايت والمتغير double  يقوم بتخزين المتغيرات من هذا النوع في مساحة 8 بايت أي أنه يمكن أن يكون أكبر من float

3- الأعداد ذات الدقة العالية :
 يقوم الـ decimal بتخزين البايانات في 16 بايت ويستخدم لتقريب الأعداد العشرية, أي أنها تعتبر أكثر دقة من double,flaot
وعند التحويل من float أو double أو decimal يحدث خطأ التقريب , إذا كان الرقم أكبر من أن يتناسب مع المتغير وهذا يؤدي لحدوث خطأ .
فعند التحويل من double إلى float  أكبر بكثير أو أصغر بكثير فإن القيمة ستمثل في رقم لانهائي أو صفر بالترتيب
عند التحويل من float أو double أو decimal فإن القيمة يتم تقريبها ويحدث التقريب بعد 28 خانة عشرية
إذا كانت القيمة المراد تقريبها صغيرة جدا لكي تتمثل في decimal فحينها تصبح القيمة الجديدة صفر
أما إذا كانت القيمة كبيرة جدا التي يراد تخزينها في decimal حينها سيحدث خطأ
وعندما نحول من decimal إلى double أو float فإن القيمة يتم تقريبها لأقرب قيمة لمكن للنوع flaot أو double حملها, ولكن يتم فقدان دقة الـ decimal عند التحويل إلى float أو double>

4-القيم المنطقية :
وإذا أردنا تخزين الأعداد المنطقية والتي تنحصر بين قيمتي false أو true مثلا أخبتار شيء ما هل يعمل أم لا فقط , أي تأخذ القيمة واحد أو صفر فنستخدم المتغير bool.

إذا يهمنا الآن أن أنواع البيانات في #c هي :
 int,uint,long,ulong,short,ushort,byte,sbyte,char,bool,float,double,decimal
والفرق بين المتغير بعلامة وبدون علامة هو أن المتغير ذو العلامة يحمل الأرقام السالبة أما المتغير بدون علامة فلا يحمل إلا الأرقام الموجبة.

جدول يوضح أنواع المتغيرات في #c

ولنأخذ كود يوضح لنا بعض المتغيرات وسعتها
static void Main(string[] args)

}Console.WriteLine("\na boolean is {0} byte(s)", sizeof(bool ));
Console.WriteLine("\na decimal is {0} byte(s)", sizeof(decimal ));

Console.WriteLine("A double is {0} byte(s)", sizeof(double ));

Console.WriteLine("\na float is {0} byte(s)", sizeof(float ));

Console.WriteLine("an ulong is {0} byte(s)", sizeof(ulong ));

Console.WriteLine("\na long is {0} byte(s)", sizeof(long ));

Console.WriteLine("an uint is {0} byte(s)", sizeof(uint ));

Console.WriteLine("\nan int is {0} byte(s)", sizeof(int ));

Console.WriteLine("an ushort is {0} ushort(s)", sizeof(ushort ));

Console.WriteLine("\na short is {0} byte(s)", sizeof(short ));

Console.WriteLine("a char is {0} byte(s)", sizeof(char ));

Console.WriteLine("an sbyte is {0} byte(s)", sizeof(sbyte ));

Console.WriteLine("\na byte is {0} byte(s)", sizeof(byte
));
{







الناتج :


a byte is 1 byte(s)



an sbyte is 1 byte(s)
a char is 2 byte(s)
a short is 2 byte(s)
an ushort is 2 ushort(s)
an int is 4 byte(s)
an uint is 4 byte(s)
a long is 8 byte(s)
an ulong is 8 byte(s)
a float is 4 byte(s)
A double is 8 byte(s)
a decimal is 16 byte(s)
a boolean is 1 byte(s)


  • سلاسل الحروف :
إذا أردنا أن نضع الاحرف معا لتكوين كلمة أو عبارة أو جملة فنستخدم المتغير string ويتم وضع سلسلة الأحرف بين علامت الاقتباس المزدوجة "سلاسل الأحرف"  ويعتبر المتغير string من أنواع بيانات الإشارة هو والمصفوفات وغيرها كالواجهات والتفويضات.

  • الثوابت :
ونستخدم الثوابت عندما نريد وضع قيمة في متغير مع تجميدها أي لا نسمح بتغييرها فحينها نستخدم const كتخزين نصف قطرة الدائرة مثلا , هذا ونستطيع استخدامها مع أي متغير كان , ويفضل مبرمجو #C  أن تكتب أسماء المتغيرات بالحروف الصغيرة والثوابت بالحروف الكبيرة .



Share this article :

إرسال تعليق

 
Support : Creating Website | Johny Template | Mas Template
copyright © 2011. عالم الكمبيوتر - All Rights Reserved
Template Created by Creating Website Published by Mas Template
Proudly powered by Blogger تعريب ساهر حسن صاحب مدونه عاشق بلوجر