المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثالث : الجمل الشرطيه - دورة CSharp 2005


microtop
03-16-2010, 06:08 PM
الدرس الثالث

الجمل الشرطية:
معظم عمل الحاسوب يقوم على المقارنة بين قيمتين لإتخاذ أي قرار
بعبارة أدق أي عمل يقوم به الحاسوب هو عبارة عن عدد من المقارنات
بين قيم مخزنة في مسجلات المعالج
مسجلات المعالج هي عبارة عن أجزاء من المعالج يمكن أن تخزن قيم صغيرة
وكل مسجل يستطيع أن يخزن 16 بت , وهذه القيم المخزنة يقوم المعالج بمقارنتها
مع قيم اخرى في مسجلات أخرى من نفس المعالج لإنتاج تيار كهربائي يمثل نتيجة المقارنة
إذاً مبدأ عمل الحاسوب هو المقارنه , عرفنا المقارنه على مستوى المعالج
ولكن هذا لا يهمنا , وما يهمنا هو المقارنه على مستوى لغة البرمجة
والمقارنه تعتبر أحد أهم اعمدة اي لغة من اللغات , وهناك عدة صيغ للمقارنة
1- إذا كان (الشرط) فـ
{التعليمات التي تنفذ في حالة توفر الشرط}


if (x>y)
{
MessageBox.Show("إكس أكبر من واي");
}
في الكود السابق سيقوم المعالج بإظهار الرسالة إذا كان x أكبر من y وإلا فلن تظهر أي رسالة
لاحظ أننا لم نضع الفاصة المنقوطة بعد الشرط لأن المعالج لم يكمل جملة الشرط ويجب أن ندعه يكمل
الجملة إلى نهاية الحاصرة الثانية
2-إذا كان (الشرط) فـ
{التعليمات التي تنفذ في حالة توفر الشرط}
وإلا
{التعليمات التي تنفذ في حالة عدم توفر الشرط}

if (x>
y)
{
MessageBox.Show("إكس أكبر من واي");
}
else
{
MessageBox.Show("إكس ليس أكبر من واي");
} في الكود السابق سيقوم المعالج بإظهار رسالة "إكس أكبر من واي" إذا كان x أكبر من y
أما إذا لم يكن x اكبر من y فستظهر رسالة "إكس ليس أكبر من واي"
لاحظ أننا لم نضع فاصلة منقوطة بعد كلمة else لأن التعليمة لم تكتمل بعد
3-إذا كان(الشرط1) فـ
{التعليمات التي تنفذ عن توفر الشرط1}
وإلا إذا كان (الشرط 2) فـ
{التعليمات التي تنفذ في حالة عدم توفر الشرط1 و توفر الشرط 2}
وإلا إذا كان ...

if (x>5)
{
MessageBox.Show("اكس أكبر من خمسة");
}
else if(x<4)
{
MessageBox.Show("اكس ليس أكبر من خمسة , وأكس أصغر من أربعة");
}
.. في الكود السابق يبدأ المعالج بفحص الشرط الأول فإذا تحقق يظهر رسالة "اكس أكبر من خمسة"
وإن لم يتحقق فإنه ينتقل إلى الشرط الثاني فإذا تحقق سيظهر رسالة "اكس ليس أكبر من خمسة , وأكس أصغر من أربعة"
وهكذا حتي ينتهي من جميع الشروط .. لاحظ أنه من الممكن أن يكون في الجملة أكثر من شرطين
هناك عدد من معاملات المقارنه بالإضافة إلى < و >:
< أكبر من
مثل ما رأينا سابقاً
> أصغر من
مثل ما رأينا سابقاً
== يساوي

if (x == y)
{
MessageBox.Show("اكس يساوي واي");
} =! لا يساوي

if (x != y)
{
MessageBox.Show("اكس لا يساوي واي");
} أحياناً نحتاج إلى شرط مزدوج , أي أننا نحتاج إلى شرط مكون من جزئين
مثلاً إذا كان x أكبر من y و x أصغر من z

if (x>y & x<z)
{
MessageBox.Show("اكس أكبر من واي و أصغر من زد");
} لاحظ انا وضعنا الشرطين بينها علامة &
أما إذا أردنا شرط مزدوج من نوع آخر :
مثلاً إذا كان x أكبر من y أو x يساوي 10

if (x>y | x==10)
{
MessageBox.Show("اكس أكبر من واي أو يساوي 10");
} لاحظ انا وضعنا الشرطين بينها علامة |
إذا & تعني و
و | تعني أو
ملاحظة : علامة | يمكن طباعتها بالضغط على Shift مع زر \ والذي عادة ما يأتي بجانب زر المسح BackSpace وفوق زر Enter

الدوارات:
هناك أنواع كثيرة من الدوارات لكننا سنتعرف حالياً على أهم نوع منها
والدوارات هي تعليمات فائدتها تكرار تعليمات محدد لعدد محدد من المرات
مثلاً إذا أردنا أن نظهر رسالة ما عشر مرات أو عشرين مرة , لن نكتب التعليمة عشر أو عشرين مرة
حيث يستخدم المعالج متغير من نوع رقم كعداد وفي كل مرة تنفذ العملية يزداد العداد رقم واحد
وهكذا حتى يتوفر شرط وقوف الدواره , وأحياناً قد يكون عداد عكسي يعني أنه في كل مرة ينقص رقم
إذاً هناك أربعة أشياء مهمة لجملة الدوارة for
1- متغير من نوع عدد يستخدم كعداد مع تزويدة برقم إبتدائي يبدأ منه
2- شرط إستمرار الدوارة في العمل
3- تعريف نوع العداد هل هو تصاعدي أم تنازلي
4- التعليمات التي تنفذ

for (int i = 0;i < 10;i++)
{
MessageBox.Show("من الدوارة");
} في الكود السابق كلمة for تستخدم لتعريف الدوارة
بعد فتح القوس وضعنا تعريف للعداد int i=0 ووضعنا له قيمة 0 أي أن العداد سيبدأ من 0
وضعنا فاصلة منقوطة وو ضعنا بعدها شرط الإستمرار في العمل وهو أن يكون i أصغر من عشرة
وضعنا فاصلة منقوطة ووضعنا بعدها نوع العداد وهو تصاعدي ++i أما إذا كان تنازلي نضع --i
ثم أغلقنا القوس وفتحنا حاصرتين بينهما التعليمات التي سينفذها المعالج
معنى الدوارة السابقة أن المعالج سيظهر الرسالة للمرة الأولى ثم يزيد i ويفحص شرط الإستمرار
أذا تحقق شرك الإستمرار يظهر الرسالة مرة أخرى ويزيد العداد برقم ويفحص شرط الإستمرار .....
في الكود السابق سيقوم المعالج بإظهار الرسالة عشر مرات
ملاحظة : يمكن إستخدام متغير العداد داخل التعليمات

for (int i = 0;i < 10;i++)
{
MessageBox.Show(Convert.ToString(i));
} في الكود السابق سيظهر المعالج الرسالة للمرة الأولى وفيها قيمة العداد الأولية وهي 0
وفي المرة الثانية سيظهر الرسالة وفيها قيمة العداد بعد أن زاد برقم أي 1
وهكذا حتى العدد 9 , وعندما يزد العداد بعدها برقم أي يصبح 10 سيفحص المعالج شرط الإستمرار
وهو أن يكوت المتغير أصغر من 10 ولكن المتغير هذه المرة ليس أصغر من عشرة لذلك سيتوقف
المعالج عن تنفيذ التعليمات ويخرج من جملة for
يتبع التطبيق
..

microtop
03-16-2010, 06:19 PM
التطبيق:
أفتح تطبيق الدرس السابق :
وقم بحذف صندوقي النص بواسطة زر Delete
غير النص المكتوب في الزر إلى "تشغيل الدوارة"
من صندوق الأدوات قم بسحب أداة القائمة :
http://absba7.absba.org/teamwork8/455943/23.jpg
من خلال الخاصية (Name) قم بتغيير إسم القائمة من ListBox1 إلى l1
ليسهل التعامل معها من الشفرة
ملاحظة: عند عمل تطبيق باللغة العربية يجب تحويل الأدوات في النافذه للترتيب العربي
أي من اليمين إلى اليسار ويتم ذلك عن طريق تحديد النافذة وتغيير صفتين من صفاتها
وهي صفات RightToLeft و صفة RightToLeftLayout من جدول الصفات
حيث تكون الخاصية الأولى Yes والخاصية الثانية True :
http://absba7.absba.org/teamwork8/455943/24.jpg
عندها ستلاحظ ان إتجاه الأدوات تغير ويصبح شكل النافذة هكذا :
http://absba7.absba.org/teamwork8/455943/25.jpg
الآن اضغط مزدوجاً على الزر للذهاب للشفرة قم بحذف الكود الموجود مسبقاً بين الحاصرتين
وأكتب بدلاً عنه هذا الكود:

for (int i=0;i<10;i++){l1.Items.Add(" من الدوارة ");}

قمنا بعمل دوارة من الصفر إلى 10 لإضافة كلمة "من الدوارة" إلى القائمة
الكائن l1.Items.Add يقوم بإضافة ما داخل القوس للقائمة l1
وبالتالي فالكود السابق سيقوم بكتابه كلمة "من الدوارة" عشر مرات على القائمة
جرب تشغيل البرنامج وإضغط على الزر , يجب أن ترى شيئاً كهذا:
http://absba7.absba.org/teamwork8/455943/26.jpg
ملاحظة : إذا أردنا أن نجمع كلمتين أو نصين في نص واحد فيمكننا إستخدام إشارة +
مثلاً إذا أردنا أن نظر رسالة تقول مرحباً بكم فيمكن عمل ذلك هكذا


MessageBox.Show("مرحباً" + "بكم");

هناك كلمتين ربطنا بينهما بعلامة +
والآن لنعدل التطبيق قليلاً لكي نجرب إستخدام العداد :
قم يتعديل كود الدوارة وأضف إلى كلمة "من الدوارة" أضف العداد هكذا:


for (int i=0;i<10;i++){l1.Items.Add(" من الدوارة " + Convert.ToString(i));}

بما أن العداد من نوع رقم إستخدمنا كائن التحويل لنحوله إلى نص ثم ربطناه بكلمة "من الدوارة"
عند تشغيل البرنامج سترى شيئاً كهذا :
http://absba7.absba.org/teamwork8/455943/27.jpg
أعتقد أن الصورة لا تحتاج للشرح ...
الآن لماذا لا نطبق جملة شرطية داخل الدوارة ..
سنكتب شفرة لطباعة كلمة "من الدوارة"
و إذا كان العداد أكبر من خمسة سنضيف كلمة "أكبر من خمسة" :
قم بتغيير كود الدوارة إلى هذا الكود:


for (int i=0;i<10;i++){if (i>5)


l1.Items.Add(" من الدوارة " + Convert.ToString(i) + " أكبر من خمسة ");


else

l1.Items.Add(" من الدوارة " + Convert.ToString(i) );}}
الكود باللون الأحمر سينفذ عشر مرات .
والكود بالخط المائل سينفذ إذا كان العداد i أكبر من خمسة.
والكود الذي تحته خط سينفذ إذا كان العداد i أصغر من أو يساوي خمسة .
عند تنفيذ البرنمج ستكون النافذه هكذا :
http://absba7.absba.org/teamwork8/455943/28.jpg
الواجب:
الواجب صعب قليلاً هذه المرة ...
إستخدم الدوارة والجمل الشرطية لتنفيذ عملية إضافة نصوص للقائمة 12 مرة
بحيث يكتب في آخر كل نص ما إذا كان العداد أكبر من 6 أو يساوي 6 أو أصغر من 6
لتكون النتيجة هكذا:
http://absba7.absba.org/teamwork8/455943/29.jpg
تلميح : ستستخدم الجمل الشرطية من النوع الثالث بثلاث شروط
أي أن جملة الشرط ستكون شبيهة بهذه:


if (...){...}else if(...){...}else if(...){...}
أكمل الفراغات , طبعاً كل هذا داخل الدوارة
.نهاية الدرس الثالث.
..
7oma

حماة النهضة
..