الدرس الخامس عشر : بعض المميزات لل method 2
الدرس الخامس عشر : بعض المميزات لل method 2
وفي هذا الدرس إن شاء الله سنوضح : 1- تعريف المتغير كقيمة(by value) أو كمرجع (by reference) .
2- إمرار المتغير في الmethod كقيمة (pass-by-value) أو كمرجع (pass-by-reference) .
والآن بسم الله نبدأ :
1- تعريف المتغير كقيمة(by value) أو كمرجع (by reference) .
المتغير المعرف كقيمة (by value) يحتوي على بيانات من النوع المعرف به وتملك قيمة واحدة فقط ، مثلا ً :
C#
|
والأنواع التي تعرف بها هذا النوع من المتغيرات هي :
- الأنواع الغير كسرية (صحيحة) : sbyte , byte , char , short , ushort , int , uint , long .
- الأنواع الكسرية : float , double .
- وهناك النوعان : decimal , bool .
أما المتغير المعرف كمرجع (by reference) يحتوي على عنوان الموقع في الذاكرة للمتغير الذي عُـرّف به ، وعادة ً يشير إلى object (سنتوسع به في دروس لاحقة إن شاء الله )
C#
|
لكن ال object بشكل موجز ( لسهولة المقارنة ) :
هو عبارة عن متغير يحتوي على عدد من المتغيرات ، وكل واحدة من هذه المتغيرات تمتلك قيمة .
وأكثر هذه المتغيرات تعرّف بالأنواع التالية : string , object ، إلى أنه يمكن استخدام أي نوع آخر .
ويمكن للمبرمج أيضا ً إنشاء متغير من نوع reference عن طريق بناء ما تسمى class (والتي أيضا ً سنتوسع بها في دروس لاحقة إن شاء الله ) .
والجدول التالي يعرض قائمة من الأنواع المستخدمة في تعريف المتغيرات وقيم كل واحدة وحجمها :
2- إمرار المتغير في الmethod كقيمة (pass-by-value) أو كمرجع (pass-by-reference) .
لإستدعاء المتغير في ال method طريقتين :
1- كقيمة(pass-by-value) :
وفي هذه الحالة يتم أخذ نسخة من قيمة المتغير ، حيث أن التغيرات التي تحدث على هذه القيمة لا تؤثر على قيمة المتغير الأصلية . وهذا يمنع بعض التأثيرات الجانبية التي يمكن أن تؤثر على صحة عمل البرنامج .
2- أو كمرجع (pass-by-reference) .
وفي هذه الحالة أي تأثير على قيمة المتغير داخل ال method تتأثر قيمة المتغيرالأصلية ، وهذا ما يساعد على التقليل من ثقل نسخ البيانات من داخل المتغيرات خاصة إذا كانت من نوع object ، إلا ّ أنه يضعف الأمن على قيمة المتغير الأصلي .
ملاحظة :
هناك كلمة محجوزة وهي out فهي by reference أيضا ً إلا أنه عند تعريف متغير في method المتغير المستــَـلـَـم لا يشترط أن يحمل قيمة ، أي يمكن أن يحمل قيمة إن لم يكن نستطيع أن نضع له قيمة افتراضية داخل ال method ، وسيتضح المعنى أكثر مع البرنامج .
والآن سنقوم بكتابة برنامج لتتوضح لك الصورة .
الهدف الرئيسي في هذا البرنامج ملاحظة أثر ال Square Method أي مربع العدد عند استدعائه by value أو by reference .
والآن :
يحتوي البرنامج على ثلاثة (methods) لحساب مربع عدد صحيح :
الأول :
C#
|
أي أنه سيتعامل مع القيمة المبعوثة إليه بعنوانها ، فمثلا ً لو بعثنا له 5 فسيقوم يحفظ عنوان القيمة 5 ومن ثم يربع القيمة ويعيدها إلى نفس العنوان . فإذا طبعنا قيمة x سيكون الناتج 25 لأنه قد أخذ مكانه فلو استدعينا ال method مرة أخرى وبعثنا له قيمة x والتي هي 25 فسيكون الناتج 625 .
الثاني :
C#
|
وتعمل نفس عمل ال reference إلا أنه إن بعث له قيمة 5 مثلا ً سيحفظ عنوانها ثم يربعها ويعيدها إلى نفس عنوانها 25 . وأما إذا لم يبعث له قيمة فيمكن إعطاؤها قيمة من داخل الmethod ويحفظ عنوانها ويعيدها إليه 36 .
الثالث :
C#
|
حيث إذا بعثنا له متغير يحمل القيمة 5 = y سيعمل منها نسخة ويربعها ويطبع 25 . لكن لو طبعنا المتغير y نجده مازال 5 .
هكذا نكون قد انتهينا من تعريف المتغير by reference أو by value وفي الدرس التالي سنوضح إن شاء الله كيفية التعامل وإنتاج الأرقام العشوائية .
وهذا هو البرنامج مع بعض الملا حظات الموضحة عليه :
تحميل
الدرس الرابع عشر : بعض المميزات لل method 1
الدرس الرابع عشر : بعض المميزات لل method 1
في هذا الدرس سنوضح بعض المميزات لل method :1- ترقية العناصر .
2- مفهوم الnamespace في ال #C .
والآن بسم الله نبدأ :
1- ترقية العناصر .
وهو ان يكون لدينا متغير معرف بنوع معين وتحويله بالإجبار إلى نوع آخر ليستطيع المرور في method معينة . وهناك نوعان من التحويل :
1- التحويل الضمني (implicit conversion) :
ويقوم بتحويل قيمة المتغير من نوع إلى نوع آخر ضمنيا ً ، أي دون كتابة النوع الجديد قبل المتغير المراد تحويله اليه.
مثال : ال method الذي اسمه sqrt() والذي يقوم بإعطاء الجذر التربيعي للرقم ، الموجود في الclass اسمها math (تحدثنا عنها سابقا) ، المتغيرات التي يستقبلها معرفة في الأصل double أي عند كتابة هذا الmethod كتب كالتالي :
C#
|
فإذا بعثنا له رقم 4 مثلا ً والذي هو int :
C#
|
فسيتحول تلقائيا ً (ضمنيا ً) إلى 4.0 أي من نوع double ويكون الناتج 2 . وذلك لأن int أصغر من double إذا ً فهو يحتويه ، وهنا لا يحدث أي خسارة في المعلومات .
2- التحويل الصريح ( Explicit conversion)
أما إذا اردنا التحويل العكسي فيجب كتابة نوع التحويل :
C#
|
ويكون الناتج هنا أيضا ً 2 لأنه تم تحويله إلى int قبل إيجاد الجذر ، ولكن في هذه الحالة يحدث خسارة في المعلومات .
والجدول التالي يوضح حالات التحويل الضمنية :
2- مفهوم الnamespace في ال C# .
C# تحتوي على مجموعة من ال classesمجتمعة داخل ال namespace والكود الرئيسي لهذه ال classes مخزنة بمكتبة مخصصة لل classes بإمتداد .dll وتدعى assemblies أي المرمّـزة .
العبارة using تحدد ال namespace الذي نريد استخدامه في البرنامج . مثلا ً : جميع البرامج عند انشائها يتم استدعاء ال System namespace تلقائيا ً
C#
|
لإخبار ال compiler بأننا نريد استخدام ال System namespace ، وعبارة using تسمح لنا باستخدام ال classes الموجودة داخل ال System namespace . فنستدعي ال WriteLine method الموجود في ال Console class والموجود داخل ال System namespace بالطريقة التالية :
C#
|
بدلا ً من كتابتها :
System.Console.WriteLine
وأي namespace آخر يجب إضافته يدويا ً عن طريق إضافة الملف المرجع له (add reference) كما تعلمنا في الدرس الثالث .
والجدول التالي يوضح مجموعة بسيطة من ال namespaces الشائعة الإستخدام والتي سنستخدمها في البرامج التالية إن شاء الله ، وخاصة في برامج ال windows application :
الدرس الثالث عشر : Methods
الدرس الثالث عشر : Methods
في الدروس السابقة عند فتح new project كنا نختار Console Application حيث كان ال output يظهر على شاشة Dose . والآن سننتقل الى بيئة VC# : 1) عند فتح مشروع جديد قم باختيار windows Application بدلاً من Console Application . ثم اكمل الخطوات كما تعلمت واجعل اسمه SquareInt.cs. 2) ستدخل إلى بيئة VC# وهي لا تختلف عن أي بيئة فيجوال : والآن سنتعرف على ال methods ومن ثم نقوم بكتابة برنامج بسيط على الwendows application . Methods : في درس ٍ سابق قلنا أن ّ كل برنامج يجب يحتوي على Class , method , namespace . الشكل التالي يوضح كيفية عمل ال methods . حيث ال boss هي method رئيسية تقوم باستدعاء ال methods الفرعية worker1,worker2 ,worker3….. ويمكن لل methods الفرعية استدعاء methods أخرى. وغلباً ما تكون هذه ال boss method هي ال main method . * Math Class وهي Class شائعة الإستخدام تحتوي على methods تستخدم في العمليات الحسابية. 1)الشكل العام لل method . C#
2)الثوابت Math.PI = 3.1415926535… Math.E = 2.7182818285… 3) ال methods شائعة الإستخدام . والان سنبدأ بعمل برنامج : SquareInt برنامج بسيط ، يحتوي على button و label حيث يعرض مربع الأعداد من 1 - 10 . 1) قم بتنظيم شكل ال form كالتالي : ثم اجعل اسم ال button : calcolatputton واسم ال label : outputLabel 2) (double click ) على ال button . سيظهر ال code مكتوب مسبقا ً سيتم شرحه في دروس قادمة . لا نقوم بكتابة اي شيئ داخل ال main method فهو فقط للتنفيذ . C#
ولتفعيل البرنامج اذهب الى Debug ثم start أو f5 . والشكل التالي هو ال output لهذا البرنامج . وها هو البرنامج : تحميل |
الدرس الثاني عشر : عبارة break وعبارة continue
الدرس الثاني عشر : عبارة break وعبارة continue
في الدرس السابق قمنا بشرح تركيبة for وتنفيذ برنامج عليها .تركيبة foreach عملها مشابه لتركيبة for من حيث التكرار بعدد معين . لكن أهميتها تكمن في المصفوفات وخاصة مصفوفات ثنائية الأبعاد . فبدلاً من وضع for داخل for يمكننا استخدام foreach بجملة واحدة وسنتوسع بها عندما نأخذ المصفوفات بإذن الله .
في هذا الدرس :
سنوضح عبارة break و continue .
والآن نبدأ بعون الله :
1- عبارة break .
وتستخدم بشكل رئيسي للخروج من التراكيب while , for , do/while , switch عند نقطة معينة (شرط معين) . فمثلاً البرنامج التالي ستقوم تركيبة for بطباعة قيمة العداد من 1 إلى 10 إلا إذا تحقق شرط معين وهو أن قيمة العداد = 5 سينفذ break أي سيتوقف :
C#
|
وسيكون الناتج كما يلي :
لاحظ أن الرقم 5 لم يُطبع وذلك لأن if تختبر قيمة العداد قبل طباعتة وعندما تجد قيمته 5 سينفذ break ويتوقف .
2 - عبارة continue .
وتستخدم في التراكيب while , for , do/while للقفز عن تنفيذ الجملة داخل تركيبة التكرار عند الوصول إلى نقطة معينة . فلو استبدلنا في المثال السابق كلمة continue بدلاً من كلمة break سيكون الناتج كمايلي :
C#
|
وتعني إذا أصبحت قيمة العداد 5 فإنها ستهمل تنفيذ أي جملة تتبعها وسترجع لزيادة العداد 1 . وسيكون الناتج كما يلي :
هكذا نكون تعلمنا هاتين العبارتين فرغم بساطتهما إلا انهم مهمات جداً
الدرس الحادي عشر : تركيبة For للتكرار
الدرس الحادي عشر : تركيبة For للتكرار
بسم الله الرحمن الرحيم في الدرسين السابقين وضحنا تركيبة while للتكرار ووضحنا أشكال استعمالها :
1- استخدام while كعداد
2- عدد while يعتمد على قيمة مدخلة .
3- التراكيب المتداخلة .
ووضحنا تركيبة do/while أيضا ً وفي هذا الدرس إن شاء الله سنشرح تركيبة جديدة وهي تركيبة for وتركيبة foreach للتكرار:
بسم الله نبدأ :
* تركيبة for للتكرار :
وهي عبارة عن تجميع للجمل المستخدمة في while في جمله واحدة . والشكل التالي يوضح جملة for وأجزاؤها :
سنقوم الآن ببناء برنامج للعد من 1 – 5 لكلى التركيبتين والمقارنة بينهما لتوضيح الفكرة أكثر :
البرنامج على تركيبة while :
C#
|
البرنامج على تركيبة for :
C#
|
من الواضح أن جملة for مختصره لجملة while ، وقبل المقارنة لاحظ الشكل التالي الموضح لأجزاء تركيبة for الرئيسية :
تتكون تركيبة for من ثلاث أجزاء تفصل بينهم فاصلة منقوطة :
الجزء الأول وهو متغير التحكم (Control variable) وهو المتغير الذي يتحكم باستمرارية الدوران للعد أو الخروج من الدارة بالاعتماد على قيمته ، مسند إليه قيمة بدائية للبدء منها ، ويمكن تعريف هذا المتغير خارج التركيبة لكن عند استخدامها داخل التركيبة يجب إعطائها قيمة بدائية كما يلي :
C#
|
لكن من الأفضل تعريفها كما في الشكل السابق .
ملاحظة :
عند تعريف متغير التحكم داخل جملة for يكون محصور داخل جسمها (body) أي لا يمكن استخدامه خارجها ، أم في الحالة الثانية وهي تعريف المتغير خارج جملة for فيمكن استخدامه في أماكن أخرى من البرنامج .
الجزء الثاني وهي جملة الشرط أي أن العداد سيبقى يطبع قيمته ويجمع لنفسه 1 حتى تصبح قيمته أكبر من 5 أي عندما يفشل اختبار الشرط .
الجزء الثالث وهو جزء تزايد العداد بمقدار 1 في كل دوره ، وله عده أشكال وكلها متكافئة :
C#
|
والآن لاحظ جملة تعريف المتغير في سطر 1 في برنامج تركيبة while ستجده هو نفسه في الجزء الأول من تركيبة for.
وجملة الشرط في السطر 3 هي نفسها الجزء الثاني من تركيبة for .
وجملة الزيادة في السطر 6 هي نفسها الجزء الثالث من تركيبة for .
وأكثر ما نستفيد من تركيبة for في المصفوفات والتي سنأخذها في دروس قادمة إن شاء الله .
والشكل التالي يوضح كيف تعمل تركيبة for في البرنامج السابق :
لاحظ أن البداية واحدة وهي القيمة البدائية لمتغير التحكم (Control variable) counter ثم تبدأ الدارة بالعمل ، تختبر القيمة هل هي أقل أو تساوي 5 ، إذا تحقق الشرط (True) يقوم بتنفيذ الجمل التي يحتويها ثم يرجع إلى جملة الشرط ، حيث يختبر قيمة الcounter مره أخرى وهي الآن أصبحت 2 إذا ً يكمل العمل ، حتى تصبح قيمة counter = 6 عندها يفشل الاختبار (False) فيخرج من الدارة .
* برنامج إيجاد المجموع باستخدام تركيبة for .
حيث يقوم بإيجاد مجموع الأعداد الصحيحة الزوجية من 2 إلى 100 ثم يظهر الناتج على MessageBox .
أولا ً : سنقوم باستدعاء المكتبة System.Windows.Forms لاستخدام الClass : MessageBox كما تعلمنا في الدرس الثالث : الوصله .
ثانيا ً : سنعرف متغير من نوع صحيح (integer) كمخزن لناتج الجمع في كل دوره (sum) ونعطيه قيمة بدائية 0 . ومتغير آخر من نوع integer أيضا ً number وهو العداد ويبدأ من 2 .
والآن إذا أردنا تحليل البرنامج باللغة العربية لفهمه سنقول :
كرر من number = 2 بشرط أن قيمة number أقل أو تساوي 100 حيث في كل دوره أضف 2 على الناتج .
عندما يصبح قيمة sum أكبر من 100 أخرج من الدارة واطبع قيمة sum على MessageBox .
والآن سيكون التطبيق سهل جداً ، فلنبدأ بسم الله :
C#
|
وسيكون الناتج كما يلي :
برنامج sum : تحميل
الدرس العاشر : الشكل الثالث 3) التراكيب المتداخله وتركيبة do/while
الدرس العاشر : الشكل الثالث 3) التراكيب المتداخله وتركيبة do/while
|
الدرس التاسع : تركيبة while وأشكال استخدامها
الدرس التاسع : تركيبة while وأشكال استخدامها
وفي هذا الدرس إن شاء الله سنشرح تركيبة while للتكرار :3- تركيبة while التكرارية .
تركيبة التكرار تسمح للمبرمج بتحديد الحدث المطلوب تكراره طالما الشرط متحقق (True).
مثال : لاحظ هذا الجزء من برنامج ، يجد أول قوه للرقم 2 حيث يكون ناتجها أكبر من 1000 .
والآن سنفرض متغير product من نوع integer . ثم نطبق ال pseudocode ( الكود الوهمي ) التالي:
While product less than or equal 1000
product equal 2 multiplied by product
|
كما يلي :
C#
|
والشكل التالي يوضح أسلوب عمل while في هذا البرنامج :
|
|
|
الدرس الثامن : تركيبة if وتركيبة if/else
الدرس الثامن : تركيبة if وتركيبة if/else
في الدرس السابق تحدثنا عن عمليات اتخاذ القرار وأنها عادة ً ما تستخدم في تركيبة if أو تركيبة if/esle والتي هي محور حديثنا في هذا الدرس .تحتوي لغة C# على ثلاث أنواع من تراكيب الاختيار :
if : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتقفز عنه إذا كان الشرط خاطئ(false) ، وتدعى (single-selection structure) أي تركيبة الاختيار المنفرد .
if/else : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتنفذ حدث آخر إذا كان الشرط خاطئ(false) ، وتدعى (double-selection structure) أي تركيبة الاختيار الثنائية .
switch : تقوم باختيار حدث وتنفيذه من بين مجموعة من الأحداث ، وتدعى
( multiple-selection structure ) .
وثلاث أنواع من تراكيب التكرار :
While , do/while , for , foreach وسنتعرف عليهم لاحقاً . أما في هذا الدرس فسنتعرف على تركيبة if وتركيبة if/else .
ملاحظة :
if , else , switch , While , do/while , for , foreach كلها كلمات محجوزة keywords
والجدول التالي يذكر قائمة الكلمات المحجوزة في C# :
وسنتعلم معظمها إن شاء الله خلال الدروس .
والآن بسم الله نبدأ :
1- تركيبة if للاختيار:
وهي عبارة عن احتمالين إما تنفيذ ما تحتوي في حالة true أو عدم التنفيذ false .
فلنفرض أن درجة للنجاح في امتحان هي 50 (الدرجة من 100) إذا ًَ خوارزمية التعبير أو الكود الوهمي (pseudocode) سيكون كما يلي :
if student’s grade is grater than or equal to 50
Print “Passed”
|
إذا كانت درجة الطالب أكبر أو تساوي 50 سيطبع ناجح ، وإذا كانت درجة الطالب أقل من 50 تهمل جملة if وتنفذ الجملة التالية لها .
والآن سنقوم بترجمة ال pseudocode إلى لغة C# حيث يفهمها ال Compiler :
C#
|
والشكل التالي يوضح عمل تركيبة if :
2- تركيبة if/else للاختيار :
وهي أيضا ً احتمالين لكن في كلا الحالتين يتم تنفيذ حدث ، وهذا يساعد المبرمج على تحديد حدثين مختلفين بالاعتماد على نتائج الشرط True أم False .
فمثلا ً الكود الوهمي pseudocode التالي :
If student’s grade is greater than or equal to 50
Print “ Passed “
Else
Print “Failed “
|
سيطبع ناجح (Passed) إذا تحقق الشرط True وهو أن الدرجة أكبر أو يساوي 50 .
وسيطبع راسب (Failed) إذا لم يتحقق الشرط False وهو أن الدرجة أصغر من 50 .
أي أنه لا يهمل جملة if أبدا ً ولا يخرج منها حتى يطبع شيء .
والآن سنترجم هذا ال pseudocode إلى كود C# :
C#
|
والشكل التالي يوضع طريقة عمل تركيبة if/else الاختيارية :
* وهناك طريقة أخرى لاستخدام تركيبة if/else وهي (? : ) ، وتحتوي على ثلاث جمل تنفيذية :
جملة الشرط ، جملة التنفيذ الأولى في حالة تحقق الشرط True ، جملة التنفيذ الثانية في حالة عدم تحقق الشرط False ، فإذا أعدنا صياغة جملة if السابقة تصبح كالتالي :
C#
|
* يمكن أيضا ً استخدام تركيبة if/else تركيبة if/else لتنفيذ جملة من عدد من الجمل ، فمثلا ً إذا فهمنا الكود الوهمي pseudocode التالي :
If student’s grade is greater than or equal to 90
Print “ A “
Else
If student’s grade is greater than or equal to 80
Print “ B “
Else
If student’s grade is greater than or equal to 70
Print “ C “
Else
If student’s grade is greater than or equal to 60
Print “ D “
Else
If student’s grade is greater than or equal to 50
Print “ E “
Else
Print “ F “
|
وحولناه إلى كود C# :
C#
|
سيقوم بتنفيذ جملة واحدة فقط لا محالة .
ويمكن كتابة الكود بشكل أبسط :
C#
|
وكلاهما يعطي نفس النتائج .
ملاحظة :
* كل جملة else مرتبطة بجملة if سابقة لها .
* إذا احتوت أي تركيبة على أكثر من جملة بداخلها يجب استخدام أقواس المجموعة ( { } ) ، أما إذا احتوت على تركيبة أخرى فقط فليس من الضروري استخدام أقواس المجموعة .
C#
|
في هذه الحالة else تعتبر تابعة لل if الثانية أي سيتم تنفيذ الجملة الثانية x is <= 5 في حال y <= 5 وقيمة x > 5 ، أم إذا كانت x <= 5 فستهمل هذه الجملة كلها .
إذا أردنا جعل else تابعة لل if الأولى يجب وضع ما داخل ال if في أقواس كما يلي :
C#
|
والآن تنفذ مجموع الجمل الأولى في حال x > 5 وجملة else في حال x <= 5 .
الدرس السابع : عمليات اتخاذ القرار وتطبيق عليها
الدرس السابع : عمليات اتخاذ القرار وتطبيق عليها
سنقوم في هذا الدرس إن شاء الله بشرح ما يلي : 1- عمليات اتخاذ القرار . - عمليات المساواة . - العمليات النسبية . 2- برنامج مقارنة بين رقمين صحيحين . بسم الله نبدأ : 1) عمليات اتخاذ القرار : عادة ً تستخدم هذه العمليات في تركيبة if ، حيث تسمح للبرنامج أن يقرر هل ناتج الشرط True أم False . إذا كان ناتج الشرط True فإن الجمل في جسم تركيبة if سوف ينفذ ، وإذا كان ناتج الشرط false فلن ينفذ شيء . C#
أي إذا كانت قيمة المتغير x أكبر من 1 (True) قم بطباعته وإلا فلا تطبع شيء ، والجدول التالي يوضح عمليات المساواة والعمليات النسبية . العمليات النسبية لها نفس مستوى الأولوية في التنفيذ لذا فعند تعددها يتم التنفيذ من اليسار إلى اليمين ، وعمليات المساواة أيضا ً لها نفس مستوى الأولوية إلا ً أنها أقل من العمليات النسبية كما هو موضح في الشكل التالي :
|
الدرس السادس: العمليات الحسابية ومختصراتها
الدرس السادس: العمليات الحسابية ومختصراتها
في هذا الدرس سنوضح العمليات الحسابية المستخدمة في لغة #C ومقارنتها بالجبر ، وبعض المختصرات لهذه العمليات : والآن بسم الله نبدأ :
* العمليات الحسابية :
بعض العمليات الحسابية في البرمجة تختلف برمزها عن الجبر وهذا الجدول يوضح الفرق بين الرموز :
التعابير الحسابية يجب أن تكتب بخط مستقيم أي على نفس الخط . وهي أيضا ً لا تحتوي على أسس.
مثلا ً العبارة التالية :
في الجبر تكتب هكذا : 5 ÷ (m = (a+b+c+d+e
في C# تكتب هكذا : m = (a+b+c+d+e) / 5
في عملية القسمة يعتمد الناتج على نوع القيمة المدخلة فإذا كانت من نوع integer فإن النتيجة ستتحول تلقائيا ً إلى أقرب عدد صحيح . مثلا ً :
إذا أدخلنا قيمة صحيحة 9 وقسمناها على قيمة صحيحة أخرى 2 في الأصل الناتج يكون 4.5 لكن النتيجة ستكون 4 فقط .
* ترتيب العمليات ( الأسبقية ) :
أثناء التنفيذ لجملة معينة تعددت فيها العمليات الحسابية يجب أن يعرف الCompiler بأيها يبدأ وقد تم ترتيب هذه العمليات حسب الأولوية في الجدول التالي :
مثلا ً لو طلبنا من الحاسوب أن ينفذ الجملة الحسابية التالية :
Z = pr % q + (w– y) ÷ x
حتى يستطيع فهمها يجب أن ندخلها بالشكل التالي :
Z = p * r % q + (w – y) / x
والآن سنتخيل ما سيقوم به المترجم(Compiler) وقد تم تنفيذ البرنامج وقام المستخدم بإعطاء القيم التالية :
P = 5 , r = 6 , q = 3 , w = 7, y = 3 , x = 2
أولا ً سيرتب القيم في الجملة الحسابية كالتالي :
Z = 5 * 6 % 3 + ( 7 – 3) / 2
وهذه الخطة التي سيتبعها في عملية الحساب :
وهذه الخطوات التي يقوم بها تفصيليا ً أثناء عملية الحساب :
* بعض المختصرات للعمليات الحسابية :
بعض التعابير للعمليات الحسابية يمكن اختصارها للسهولة وعادة ً تستخدم للعدادات فمثلا ً :
c = c + 3 ;
وتعني إضافة قيمة 3 لنفس قيمة المتغير c . ويمكن كتابتها بطريقة أخرى :
c += 3 ;
والجدول التالي يبين اختصارات العمليات الحسابية :
* عمليات التزايد والتناقص المختصرة :
وتستخدم للعدادات المتزايدة بمقدار1 أو المتناقصة بمقدار واحد فقط . فبدلاً من استخدام التعبير c = c + 1 ، أو c += 1 . استخدام التعبير c++ ، والجدول التالي يوضح هذه العمليات :
فلو تتبعنا البرنامج التالي :
C#
|
سنحصل على النتائج التالية :
MS-DOS
|
وهذا هو البرنامج : تحميل
الدرس الخامس : مفهوم الذاكرة
الدرس الخامس : مفهوم الذاكرة
في الدرس السابق قمنا بشرح برنامج يجمع بين رقمين صحيحين ولكن كيف ستتم هذه العمليه في الذاكرة ؟ هذا ما سيكون موضوعنا في هذا الدرس : بسم الله نبدأ : * مفهوم الذاكرة : كل متغير مثل number1,number2,sum هو عبارة عن موقع في الذاكرة ، وكل متغير يملك اسم ونوع وحجم وقيمة . فمثلاً الجملة التالية في برنامج (جمع رقمين صحيحين) الجملة: C#
عندما عرفنا المتغير number1 تم تحديده بواسطة المترجم(compiler) كموقع في الذاكرة . فلنفرض أن المستخدم قام بإدخال قيمة 45 كحرف string للمتغير FirstNumber سيقوم البرنامج بتحويله الى integer ثم يضعه في الموقع number1 كما يلي : ونفس الشيء يحدث عند ادخال الرقم الثاني : C#
ملاحظة : إذا كان يوجد قيمة في الموقع وتم إضافة قيمة أخرى فإن القيمة القديمة سوف تلغى ويصبح قيمة الموقع الرقم الجديد . فمثلاً لو وضعنا أمر في البرنامج بإدخال القيمتين number1 = 45, number2 = 72 واصبحت تمتلك مواقعهم قيم ووضعنا بعدها أمر آخر لإعادة ادخال القيمتين مره أخرى number1= 7,number2 = 5 فلو قمنا بعملية الجمع الآن فإن الناتج سيكون 12 أي أن قيمها الحالية 7و5 وليس القيم السابقة . والآن ستتم عملية الجمع ويوضع الناتج في الموقع sum : ان شاء الله تكون قد تم فهم فكرة الذاكرة في عملية الجمع . |
الدرس الرابع : برنامج يقوم بجمع رقمين صحيحين
الدرس الرابع : برنامج يقوم بجمع رقمين صحيحين
|
* إذا حاولت إدخال قيم تحتوي على كسور أو عدم إدخال قيم فسيعطي خطأ لأنه لم يتم معالجتها.
طريقة أخرى :
في جملة الإدخال قمنا بتعريف متغيرين من نوع string ثم أسندنا اليهما القيم المدخلة ثم قمنا بتحويلهما إلى integer .
C#
|
فلماذا لا نضع جملة القراءة داخل أقواس method التحويل حيث يتم إدخال القيمة وتحويله فوراً:
C#
|
وهذه طريقة مختصرة للطريقة السابقة وتعطي نفس النتائج .
C#
|
الدرس الثالث : استخدام ال MessageBox
الدرس الثالث : استخدام ال MessageBox
في الدرس السابق شرحنا برنامج Print Welcome وطبعناه على شاشة DOS وهذه وصلته :
شرح برنامج Print welcome مع بعض المختصرات للطباعة
وفي هذا الدرس سنطبع المخرجت لنفس البرنامج لكن على MessageBox
3)) استخدام ال MessageBox
معظم تطبيقات #C تستخدم نوافذ حوار(dialogs) لإظهار المخرجات (output) ، أو لتذكير المستخدم .
تحتوي بنية المكتبة في #C على Class يدعى MessageBox لإنشاء نافذة حوار . وهذا الClass موجود داخل المكتبة System.Windows.Forms ، ولأن هذا البرنامج Console فلا يتم استدعاء هذه المجموعة عند إنشاء المشروع كما في Windows Application على اعتبار أنها لا تحتاجها لأن مخرجاتها تظهر على شاشة Dose .
لكن سنقوم نحن بإضافتها لاستخدام ما تحتويه . وتكون هذه المكتبة مخزنة بامتداد .dll
والآن :
1) قم بإنشاء مشروع جديد وسمه PrintWelcome2 .
2) والآن اذهب إلى Project ثم Add Reference .
3) ستظهر لك نافذة Add Reference قم بإختيار المكتبة System.Windows.forms.dll ثم قم بالكبس عليها مرتين متتاليتين(double Click) ، ستظهر لك في Selected Components قم باختيارها ثم OK .
4) تم إضافة هذه المجموعة إلى محتويات البرنامج وستجدها في ال Solution Explorer .
والآن حتى نستطيع استخدام محتويات هذه المكتبة يجب استدعاؤها كما تم استدعاء المكتبة System لإستخدام
C#
|
5) والآن سنقوم باستدعاء method اسمه Show من Class اسمه MessageBox لإظهار المخرجات .
قم بكتابة الجملة التالية داخل ال main method :
C#
|
سيكون شكل الكود كما يلي :
C#
|
6) قم بتنفيذ البرنامج سيظهر لك الناتج كما يلي :
ويمكن التحكم بشكل الMessage بإعطائه عنوان و نوع الكبسات التي نريدها تظهر عليه وعددها و إظهار اشارة بجوار المخرج تدل على نوع الجملة هل هي معلومات أم سؤال وغيرها .
فإذا قمت بإعادة صيغة الجملة كالتالي :
C#
|
لل MessageBox عدة أشكال في شكل الأيقونة أو شكل ال Button التي ستظهر ف ال Message منها :
أشكال لشكل الأيقونة :
C#
|
أشكال ال button في ال messagebox:
C#
|