C# والتعامل مع اللغة
كيف نتعامل مع البيانات فيC# ...!!! .كيف يتم قراءة البيانات وطباعتها في لغة سي شارب..!!! كيف يتم تعريف المتغيرات Variables في C# ..؟! وما هي أنواع البيانات في سي شارب ..!!! ماهي العمليات الحسابية المتوفرة في سي شارب وكيف يتم تنفيذ التعبيرات الرياضية في C#..؟؟!!
C# من اللغات التي تطرقنا لها في مقال عن أساسيات البرمجة كما تعرفنا أكثر على لغة C# عرفنا بيئة العمل و أهم التعليمات في مشروع الـ Console في مقال مقدمة إلى C# و في هذا المقال سنتعرف على طريقة ادخال المدخلات Inputs وطباعة المخرجات Outputs في سي شارب كما سنتعرف على أنواع البيانات في سي شارب العمليات الحسابية في C#
لنبدأ…في هذا المقال نتعرف على:
- طباعة المخرجات Outputs في C# .
- المتغيرات Variables و الثوابت Constants في C# .
- أنواع البيانات Data Types في C# .
- قراءة المدخلات Inputs في C# .
- العمليات الحسابية Operations في C# .
- التعبيرات Expression في C# .
طباعة المخرجات Outputs في C#
المخرجات Outputs هي النتائج التي نراها عند التنفيذ، و لطباعة المخرجات لمشروع Console نجد أن Console Class يوفر دوال تقوم بطباعة الـ Outputs وهي دالتين :
- Writ() التي تقوم بطباعة قيم المتغيرات للبرنامج وكذلك البيانات المرسلة لها بين علامتي التنصيص (Double Quotations ) "...." وستُبقى المؤشر في نفس السطر بعد التنفيذ.
- WriteLine() والتي سوف تقوم بنفس عمل الدالة Writ() ولكن ستقوم بوضع المؤشر في السطر التالي بعد التنفيذ وهي الأكثر استخدام.
وفي طباعة المخرجات تسمح سي شارب باستخدام أحرف الهروب مع الدالتين Writ() و WriteLine() و أحرف الهروب Escape Sequences هي مجموعة من الرموز المستخدمة مع دوال الطباعة هذه الرموز يسبق كتابتها الشرطة المائلة العكسية Backslash مثل " \n " ولكل من هذه الرموز وظيفة تنسيق محددة و فيما يلي سرد لتسلسلات الهروب الشائعة ووصف كيفية تأثيرها على الـ Outputs :
\n | لسطر جديد Newline حيث يضع جملة الطباعة التالية في بداية السطر التالي. |
\t | لترك مسافة tab (3 أحرف) أي اترك مسافة 3 أحرف قبل طباعة الجملة التالية. |
\\ | لطباعة الشرطة المائلة العكسية Backslash (\) العكسية ضمن جملة الطباعة. |
\" | لطباعة علامة اقتباس Double quote أي عندما نريد إظهار جملة الطباعة بين علامات اقتباس |
يوضح المثال التالي طريقة استخدام أحرف الحروب مع جملة الطباعة في سي شارب :
Console.WriteLine("Welcome to \n C# programming!");
Console.WriteLine("Welcome to \t C# programming!");
Console.WriteLine("Welcome to \\ C# programming! \\");
Console.WriteLine("Welcome to \" C# programming! \"");
الـ Output للمثال:
Welcome to C# programming! Welcome to C# programming! Welcome to \ C# programming! \ Welcome to " C# programming! "
تنسيق المخرجات Output Format مع C#
في سي شارب يمكن تنسيق المخرجات الـ Outputs مع الدوال Write() و WriteLine() ، فعندما تتطلب الدالة Arguments (القيم المرسلة) متعددة، يتم الفصل بين Arguments بفواصل (,) حيث يتم حجز أماكن للقيم المراد طباعتها و ارسال القيم مواقع مخصصة لها ويتم هذا بواسطة إعطاء رقم الموقع بين أقواس {...} ويفصل بين قيم (Arguments) المواقع المختلفة بـ فاصلة (،) و يوضح المثال التالي طريقة تنسيق طباعة القيم :
Console.WriteLine("{0} \n {1}", "Welcome to","C# programming!" );
الـ Output للمثال:
Welcome to C# programming!
نلاحظ :
{0} مكان للقيمة الـ Argument الأول.
{1} مكان للقيمة الـ Argument الثاني. وهكذا يتم ترتيب ظهور القيم.
ويمكن كذلك استخدام علامة الجمع(+) مع Write () و WriteLine () للتنسيق الـ Output كما سنرى في أمثلة لاحقه.
المتغيرات Variables و الثوابت Constants في C#
المتغيرات Variables في C#
المتغير هو موقع من الذاكرة يستخدم لتخزين قيمة معينة واستعمالها لاحقاً في البرنامج. ولكل متغير اسم (Name) ونوع (Type) وحجم ( Size) وقيمة (Value) حيث يتيح اسم المتغير للبرنامج الوصول إلى قيمة المتغير في الذاكرة و يحدد نوع المتغير نوع البيانات المخزنة في ذلك الموقع من الذاكرة. ويتم تحديد نوع واسم المتغير في جملة الإعلان عن المتغير Variable Declaration Statement (وتسمى أيضا Declaration ).
الثوابت Constants في C#
الثوابت هي متغيرات بقيمة ثابتة ، الثوابت لابد أن تعطى قيمة لحظة الإعلان عنها. وتسمح الثوابت باستخدام قيمها في البرنامج ولكن لا يمكن التعديل عليها. في C# تستخدم الكلمة المحجوزة const للإعلان عن الثابت وينطبق على الثابت Constant ما ينطبق على المتغير Variable من حيث ان له اسم ونوع وحجم وقيمة ويحدد الاسم والنوع القيمة للثابت لحظة الإعلان وهو ما يُعرف بـ التهيئة Initialization. و من المتعارف في البرمجة عليه استخدام الأحرف الكبيرة عند تسمية الثوابت .
أنواع البيانات Data Types C#
و الإعلان عن المتغير في سي شارب يمكن استخدام الكلمة المحجوزة var ، في هذه الحالة يحُدد نوع البيانات للمتغير من نوع القيمة المسندة له . و تتيح سي شارب أيضاً امكانية تحديد نوع البيانات للمتغير لحظة الإعلان عنه ( وهو الخيار المفضل في البرمجة ).
ويتم تحديد نوع البيانات للمتغير بواسطة الكلمات المحجوزة int, float, double, decimal للبيانات الرقمية و تستخدم string للبيانات النصية و char للحروف و bool للبيانات المنطقية وتختلف المساحة المحجوزة من الذاكرة باختلاف نوع المتغير ويوضح الشكل التالي المساحة المحجوزة من الذاكرة لكل نوع من أنواع البيانات:
هذا المثال يوضح طريقة الاعلان عن المتغيرات والثوابت في سي شارب :
public static void Main(string[] args)
{
const int X = 10;
string str = "Hello, world";
int num = 1;
float num0 = 0;
bool x = true;
char a = 'a';
Console.Write("{0}\n {1} \t {2}\n {3} {4}\n {5}", str, num, num0, x, a ,X);
}
الـ Output للمثال:
Hello, world 1 0 True a 10
كما تتيح سي شارب امكانية الإعلان عن عدة متغيرات من نفس نوع البيانات في جملة اعلان واحدة ، مع استخدام الفاصلة (,) للفصل بين أسماء المتغيرات (قائمة أسماء المتغيرات مفصولة بفاصلة).
قراءة المدخلات Inputs في C#
في سي شارب يوفر Console دوال تستخدم لقراءة البيانات المدخلة من المستخدم وهذه الدوال هي Read() و ReadLine() . هذه الدوال تقرأ البيانات النصية فقط و لقراءة البيانات من الأنواع الأخرى يوفر Console دالة التحويل Convert حيث تتوفر دالة تحويل خاصة لكل نوع من أنواع البيانات في سي شارب ، مثلاً عندما نريد تحويل البيانات المدخلة الى قيمة رقمية من نوع int نستخدم الدالة ToInt32() من Convert Class مع الدوال Read() و ReadLine() من Console Class كما يتضح في المثال التالي:
public static void Main(string[] args)
{
//String data type input
Console.Write("May I Ask you to enter your name: ");
string str = Console.ReadLine();
//Integer data type input
Console.Write("Hi, "+ str +" May I Ask you to enter an integer number : ");
int num = Convert.ToInt32(Console.ReadLine());
// Double data type input
Console.Write("Please, enter an floating number : ");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(str + " your Integer number is: {0} \n and the floating number is {1} ", num, num1);
//Boolean data type input
Console.Write("If it true please type \"true\" otherwise type \"false\": ");
bool result = Convert.ToBoolean(Console.ReadLine());
Console.WriteLine("Thanks answer is : " + result);
}
الـ Output للمثال:
May I Ask you to enter your name: KHOLOOD May I Ask you to enter your name: kholood Hi, kholood May I Ask you to enter an integer number : 5 Please, enter an floating number : 10.1 kholood your Integer number is: 5 and the floating number is 10.1 If it true please type "true" otherwise type "false": true Thanks answer is : True
من الممارسات الجيدة في البرمجة إعلام المستخدم بنوع البيانات المدخلة مثلاً طلب اسم المستخدم للمتغير النصي و ورقم الهاتف للمتغير من نوع integer .
العمليات الحسابية Operations في C#
تُعد العمليات الحسابية جزء اساسياً من عمليات البرمجة وهي في البرمجة تماماً كما هي في الجبر الرياضي إلا أنها في البرمجة تتعامل مع مواقع الذاكرة حيث يتم التخزين والتعديل للبيانات في الذاكرة من خلال التعامل مع المتغيرات Variables .
حيث يتم حفظ القيم والتعديل للبيانات في الذاكرة من خلال التعامل مع المتغيرات Variable . ويتم تخزين قيمة في متغير باستخدام عامل الإسناد Assignment Operator (=) كما انه يسمى ايضاً العامل الثنائي Binary Operator هذا لأنه يعمل على جزئين المعاملات. فهو يقوم بقراءة القيمة Value في الجانب الأيمن وقراءة اسم المتغير Variable من الجانب الأيسر وينقل الـ Value الى موقع الذاكرة المخصص Variable .
والشكل التالي يوضح اهـم العمليات الحسابية في C# هـي:
التعبيرات Expression في C#
التعبير الرياضي Expression هو مجموعة من القيم يتم تنفيذ عليها مجموعة من العمليات في جملة واحدة ، ولا غنى في البرمجة عن استخدام التعبيرات الرياضية . لكن ليتم تنفيذ التعبير الرياضي بشكل صحيح وتكون النتائج صحيحة دائماً ، يجب أن يتم كتابة التعبير الرياضي بشكل يتوافق مع أولوية التنفيذ. لهذا من المهم جداّ فهم أولوية التنفيذ للعمليات الحسابية،حيث يتم تقييم العمليات الحسابية وفقًا لقواعد أولوية التنفيذ، والتي هي عمومًا نفس القواعد المتبعة في الجبر والتي تكون كالتالي:
- الأولوية القصوى للأقواس Parentheses (...) حيث تستخدم الأقواس لتجميع الحدود في تعبيرات C# بنفس طريقة التعبيرات الجبرية. و إذا احتوى تعبير على أقواس متداخلة ، فسيتم تنفيذ التعبير الموجود في مجموعة الأقواس الداخلية أولاً.
- تأتي العمليات الضرب Multiplication والقسمة Division وباقي القسمة Remainder في الدرجة الثانية من الأولوية للتنفيذ.
- أخيراَ يتم تنفيذ عمليتي الجمع Addition و الطرح Subtraction الأقل أولوية في التنفيذ.
ملاحظة: يتم قراءة التعبيرات من اليسار الى اليمن كما أن تقيم العمليات وفقًا لقواعد أولوية التنفيذ ثابت في جميع لغات البرمجة .
يوضح الشكل التالي خطوات تنفيذ العمليات الحسابية وفقاً لقواعد الأولوية:
في المثال سيتم تنفيذ عمليات الضرب والقسمة و باقي القسمة أولاً بالترتيب من اليسار إلى اليمين لأن لها أولوية أعلى من عمليات الجمع والطرح. ثم يتم تنفيذ عمليتي الجمع والطرح بعد ذلك. يتم تطبيق هذه العمليات أيضًا من اليسار إلى اليمين.
مثــال تطبيــقي
في هذا المثال سنقوم ببناء تطبيق بلغة سي شارب لحساب نتيجة العملية الحسابية التالية:
على افتراض أن قيم كلاً من : a = 2 , b = 1, c = 3
public static void Main(string[] args)
{
//Variables and constants declaration statement
const int A = 2, B = 1, C = 3;
int y = 0;
// Reading the x value from user
Console.Write(" Please ,Enter the x value: ");
int x = Convert.ToInt32(Console.ReadLine());
// Calculation the y value
y = A * ( x * x) + ( B * x - C);
//print the output
Console.WriteLine("y = " + y);
}
الـ Output للمثال:
Please ,Enter the x value: 5 y = 52
إلى هنا ينتهي هذا المقال الذي يشرح طريقة العمل مع لغة C# من خلال Console Class تعرفنا فيه دوال الـ Console المستخدمة في قراءة المدخلات Inputs وطباعة المخرجات Outputs كما شرحنا المتغيرات Variable s و الثوابت Constants في سي شارب مع الأمثلة عليها. و أوضحنا أنواع البيانات في C# والفرق بينها. كما شرح المقال العمليات الحسابية في C# وقواعد أولوية التنفيذ للعمليات الحسابية.