المحاضرة الرابعة :
الإثنين 23 – 2 - 2005
أنواع البيانات وجملة الإدخال والإخراج – قسم الـ Console :
كما تعلمنا سابقاً في جملة الطباعة أنه يمكننا الطباعة حسب المواقع Indexes .
سنقوم اليوم بالتوسع في صيغة جملة الإخراج والتعرف على جملة الإدخال وكذلك معرفة أنواع البيانات التي تتيحها لنا لغة السي شارب . لنبدأ الآن :
يمكن تعريف نوع من المتغيرات بالطريقتين التاليتين :
كود:
Data Type Var Name ;
Data Type Var Name = Value ;
سنقوم الآن بتعريف الأنواع كالتالي :
ظهر مفهوم المتغيرات ( Variables )جديداً في عالم البرمجة مما أحدث تغييراً عميقاً في هذا المجال
ويمكن تعريف المتغير بأنه إسم يحمل قيمة قابلة للتغيير في وقت لاحق في المشروع . ويخضع لشروط تسمية ويحمل نوع معين . أما بالنسبة للشروط فهي :
1 – أن تبدأ بحرف
2 – يجوز إستخدام الرمز _ في البداية أو النهاية
3 – يجوز إستخدام الأرقام في جميع الخانات ما عدا أول خانة
4 – أن لا تكون من الكلمات المحجوزة للبرنامج
5 – لغة السي شارب لغة حساسة أي (Age, AGE, aGE , AgE ) كلها متغيرات لا يشبه بعضها بعضاً
- سؤال : أي الجمل التالية برمجياً صحيحية . ولماذا؟
(جاوب عليها وأرسل الجواب على الإيميل الخاص بي مع ذكر الإسم )
كود:
int idnumber;
int transaction_number;
int __my_phone_number__;
float 4myfriend;
float its4me;
double VeRyStRaNgE;
float while;
float myCash;
int CaseNo;
int CASENO;
int caseno;
أما بالنسبة للأنواع فهي كالتالي :
- تسمح لغة السي شارب بتعريف المتغيرات التالية :
Boolean , character, float , integer , double , decimal , string ,
object , long , short , byte
الأنواع باللون الأحمر ( تحته خط ) هي أنواع جديدة في لغة السي شارب حيث لم تكن موجودة في لغة السي ++ , وأود إعلامك أخي العزيز إلى ضرورة كتابة الأنواع كلها بحروف صغيرة وأنت تعرف لماذا .
حسناً سأقوم الآن بشرح الأنواع جميعها :
1 – يعرف المتغير البولياني Boolean بالكلمة المحجوزة bool ويحتوي إحدي القيمتين true أو false صحيح أو خاطىء وإليك أخي الكريم مثالأ على ذلك :
كود:
bool myStatus = true;
bool yourStatus = false;
وكما رأينا في المثال السابق يمكن وضع قيمة إفتراضية في جملة التعريف أو في جملة لاحقة .
ويجب التنبيه هنا بأنه لا يمكن إستخدام الأرقام 0 أو 1 كما في الإصدارات السابقة .
2 – يعرف المتغير العددي الصحيح Integer بالكلمة المحجوزة int وهاذا النوع هو من أكثر الأنواع إنتشاراً وإستعمالاً إليك أمثلة هاذا النوع :
كود:
int count;
int number_of_students = 30;
وننبه هنا أن المتغير الذي يحمل نوع ال integer يأخذ قيمة عدد صحيح أي أننا إذا أسندنا إليه قيمة مثل 5.3 أو 5.9 فإنه سوف يعتبرها 5 .
3 – يعرف المتغير العددي العشري Float بالكلمة المحجوزة float وهو يشبه النوع السابق ولكن يسمح بالفاصلة العشرية مثال 3.33333333 . ومن هنا يمكننا إشتقاق النوع Double وهو النوع العشري ولكن يسمح بطول 32 قبل وبعد الفاصلة أيضاً النوع Decimal مشابه له . ومثال على النوع float :
كود:
float owned = 0.0f;
float owed = 1234567.89f;
هنا يجب التنويه إلى أمر وهو أن لغة السي شارب تعتبر النوع الأصل هو الـ Double فإذا أردت أن تعرف متغير من هذا النوع ما عليك سوى كتابة جملة التعريف له ثم قم بإعطاءه قيمة وأنهي الجملة بفاصلة منقوطة . ولكن ...
مع الأنواع الأخرى مثل الـ Float والـ Decimal يجب أن تزيد حرف بعد التعريف فإذا أردت أن تعرف متغير من النوع Float عليك بكتابته كالتالي :
حيث أن الحرف f يدل على أن هذا الرقم ليس من النوع Double وإنما من النوع Float
أيضاً إذا أردت أن تعرف متغير من النوع Decimal عليك بكتابة التالي :
حيث أن الحرف m يدل على أن هذا الرقم ليس من النوع Double وإنما من النوع Decimal وهنا الحرف ميم للتمييز بينه وبين حرف الـفاء للنوع Float .
4 – يعرف المتغير الخاني ( خانات ) Character بالكلمة المحجوزة char ( لفظها كار وليس شار ) ومن خلال هذا النوع الذي يحمل خانة واحدة فقط تستطيع تعريف أي خانة أو أي رمز من رموز لوحة المفاتيح أو الرموز الأمريكية المشفرة ASCII وإليك بعض الأمثلة على هذا النوع :
كود:
char firstInitial = 'J';
char secondInitial = 'K';
ومن هنا أيضاً يمكن أن نعرف النوع الجديد وهو الـ String وهو عبارة عن نوع كامل يحتوي على جمل ونصوص كتابية .
هنا يجب التنويه إلى أمر وهو أن لغة السي شارب تميز بين النوع Char والنوع String بالفاصلة
حيث تعطي النوع Char فاصلة واحدة ( ' ) والنوع String بفاصلة مزدوجة ( " ) وكما قلت لك النوع الأول يأخذ خانة واحدة فقط .
5 - النوع الأخير وهو الـ Object وهو عبارة عن نوع يحمل جميع أي قيمة من القيم السابقة أي أنه يمكن أن يحتوي عدد صحيح أو خاني أو من نوع بولياني ... إلخ . ها هو مثال ذلك :
كود:
object x=313.22222m;
object x=313.22222f;
object x = 'a'
object x = "Hello"
ونهايةً أريد أن أذكر أننا عندما نعرف متغير من نوع ما فإن أول قيمة له هي مكانه في الذاكرة فمثلاً لو أننا قمنا بتعريف متغير من نوع صحيح وعملنا له إخراج كالتالي :
كود:
static void Main(string[] args)
{
int x;
Console.WriteLine(x);
}
فإننا سوف نحصل على Error أي خطأ في كتابة الكود . حيث أن لغة السي شارب لا تسمح بطباعة مكان موقع المتغير في الذاكرة لذلك يجب أن نعطي له قيمة بداية كما في المثال التالي :
كود:
static void Main(string[] args)
{
int x = 124;
Console.WriteLine(x);
}
كذلك يمكنك تعريف المتغيرات بالأنواع بإستخدام مكتبة الـ System كالتالي :
System.Int16 x=121; --> 16 character
System.Int32 x=121; --> 32 character
System.Int64 x=121; --> 64 character
أو أي نوع من الأنواع السابقة مثل :
كود:
System.String x="RTAQ";
الآن لنتعرف أكثر على جمل الإدخال والإخراج :
تعلمنا طباعة المتغيرات بطريقة الـ Indexes فمثلا :
كود:
int x=432;
Console.WriteLine("The Value Of X Is : {0}",x);
سأذكر في هذه الجملة أنه لا يجوز طباعة متغيران فقط مثل :
كود:
Console.WriteLine(x,y);
فهذه الجملة خاطئة ويجب أن تبتدأ بنص وتصحيح الجملة السابقة كالتالي :
كود:
Console.WriteLine("The Value Of X & Y Is : {0} {1}",x,y);
سيقوم بطباعة قيمة x .
الآن يمكننا وبواسطة جملة الإخراج التحكم في صيغة المخرج فمثلاً يمكننا إخراج المتغير على شكل عملة أو عدد صحيح أو بفاصلة عشرية أو حتى بالـ Exponential كالتالي :
كود:
Console.WriteLine("The Value Of X : {0:E}",x);
لاحظ هنا أننا قمنا بزيادة {0:E} أي موقع المتغير ثم الصيغة المطلوبة وحرف الـ E هنا يعني Exponential وهو متغير رياضي معروف .
حسناً إليك سرداً بقائمة الصيغ وما تعني والمخرجات بجانبه (( يجب أن يكون الحرف كبير )) :
على إفتراض أن قيمة x تساوي 52.19f .
كود:
Console.WriteLine("The Value Of X : {0:C}",x); --> $ 52.190
Console.WriteLine("The Value Of X : {0:D}",x); --> Error
Console.WriteLine("The Value Of X : {0:E}",x); --> 5.219000E+001
Console.WriteLine("The Value Of X : {0:F6}",x); --> 52.190000
Console.WriteLine("The Value Of X : {0:G}",x); --> 52.19
الشرح :
في الجملة الأولى إستخدمنا الحرف C لإضافة تأثير العملة أي علامة الدولار والحرف C مأخوز من إسم العملة بالإنجليزي وهي Currency .
في الجملة الثانية إستخدمنا الحرف D ومعناها Decimal وهي لا تنفع إلا مع النوع Integer فإذا عرفنا متغير من نوع عدد صحيح ثم أسندنا له القيمة 25 ثم نفذنا الجملة التالية لكان الناتج :
كود:
Console.WriteLine("The Value Of X : {0:D6}",x); --> 000025
أي أنه أخذ 6 خانات للرقم x بوضع أصفار إلى اليسار لتصبح بعدد الخانات التي أدخلتها .
في الجملة الثالثة إستخدمنا الحرف E لإضافة تأثير المتغير الرياضي Exponential .
في الجملة الرابعة إستخدمنا الحرف F للدلالة على عدد الفاصلة (( الرقم بعد الحرف مباشرة )) .
في الجملة الخامسة إستخدمنا الحرف G ومه مأخوذ من كلمة General ولا يقوم بالتغيير بشيء .
هنا نكون أنهينا جملة الإخراج لنبدأ بجملة الإدخال :
- في لغة السي شارب لا تُقرأ الكلمة المدخلة إلا String أي أن هذه اللغة تقوم بتحويل ناتج الإدخال إلى نص فقط وإذا أردنا نوع آخر نقوم بالتغيير حسب جمل محددة وإليك تبيان ذلك :
جملة الإدخال والصيغة العامة :
كود:
Var Name = Console.ReadLine();
لاحظ هنا أننا قمنا بإسناد المدخل من لوحة المفاتيح إلى المتغير الذي قبل إشارة المساواة ويجب أن يحمل المتغير النوع String وإلا فسيظهر معك خطأ في تنفيذ المشروع .
إليك الأمثلة :
كود:
string x;
x = Console.ReadLine();
Console.WriteLine("You Entered : {0}",x);
سيقوم بإسناد قيمة المدخل إلى المتغير x كقيمة String .
حسناً لعلك تتسائل كيف أقوم بإدخال رقم ؟؟!!
سأقوم بالرد عليك حالأ وأقول لك يجب هنا أن تستخدم النوع أو دالة الـ Convert الموجودة في المكتبة System كالتالي :
يمكنك أن تحول قيمة نص إلى رقم بإستعمال النوع ثم إتبعه بنقطة ثم كلمة Parse :
كود:
Integer Var = Type.Parse(String Var) ;
وإليك مثال ذلك :
كود:
static void Main(string[] args)
{
string x;
int y;
x = Console.ReadLine();
y = int.Parse(x) ;
Console.WriteLine("Square Number : {0}",y*y);
}
في المثال السابق قمنا بتحويل المتغير x من نوع String إلى المتغير y من نوع Integer .
أيضاً يمكنك فعل السابق بالدالة Convert كالتالي :
كود:
y = Convert.ToInt16(x) ;
وهذا الكائن يحتوي على جميع الأنواع .
ويمكنك دمج الخطوتان السابقتان في واحدة كالتالي :
كود:
static void Main(string[] args)
{
int x;
x = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("Square Number : {0}",x*x);
}
وهنا يرجع الأمر للمبرمج ولطريقة التفكير لديه ولكفاءته .