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

مشاهدة النسخة كاملة : الجزء االثالث (الدرس الأول)دوره تعليم c++



walid_8281500
03-23-2009, 09:07 PM
الحمد الله رب العالمين


بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277 (http://www.traidnt.net/vb/showthread.php?t=1035277)
::الجزء الأول (الدرس الثانى)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1036448 (http://www.traidnt.net/vb/showthread.php?t=1036448)
الجزء الثانى (الدرس الأول)دوره تعليم c++ http://www.traidnt.net/vb/showthread.php?t=1039831 (http://www.traidnt.net/vb/showthread.php?t=1039831)
الجزء الثانى (الدرس الثانى)دوره تعليم c++


المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط


http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.php?p=9621287&postcount=24)
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
إن شاء الله سيكون في هذا الدرس شرح عن الجمل الشرطية والدورانات

جمل التحكم وبنيتها Control Statements & Structure :
وهي نوعين :


ما يسمى جمل متتالية Sequential Control :


الجمل التي تنفذ مباشرة خلال البرنامج .



ما يسمى بالجمل الانتقالية Transfer Controls :



وهي ما سنتطرق اليه في درسنا اليوم , وتنقسم بدورها ايضا الى نوعين :



الجمل التحديدية او الشرطية Selection Statements :
مثل If و Switch ...

الجمل التكرارية Repetition Statements :
وهي الدورانات مثل دورانات Whileو do while و for ...


وطبعا قبل ان ندخل في النوع الثاني من الجمل يجب ان نعلم اشارات المقارنة الخاصة بلغة C++ Comparison Operator المكونة للشرط Condition

تنبيه هام...



. لاحظ ان الاشارة مقيدة بالشكل الذي تراه ولا يسمح بوجود مسافة بين الرموز المكونة لكل اشارة , مثلا == لا يسمح بكتابتها بالشكل = = سوف يعترض عليه المترجم ولن يتابع البرنامج...

2. في حال انك اخطأت في كتابة الجملة الشرطية باستخدام المساواة فكتبت = بدلا من == , لن يتعرض البرنامج حقيقة على ذلك , انما خلال التفيذ ستلاحظ ان هنالك خطأ منطقي اي في الحسابات وذلك بسبب تغير قيمة المتغير المقارن به مثلا

وقبل ان بدأ ...
قد نحتاج للجمع بين اكثر من شرط اي قد نقول اذا كان x اكبر من 0 واقل من 100 , او قد نقول اذا كان x اقل من 0 واكبر من 100 فإننا نستخدم الاشارة التالية :

لصيغة "أو OR" نقوم بالجمع بين الشريطن او اكثر بإشارة || بدون مسافة لاحظ .

لصيغة "و AND" نقوم باستخدام && بدون مسافات وبهذا الشكل



سينتج خطأ منطقي اذا استخدمتم & بدلا من && و | بدلا من || .. ارجو الانتباه

مثال : x > 100 || x < 0


مثال : x < 100 && x > 0
ملاحظة مهمة : يمكنك تخزين قيمة الناتج من عملية المقارنة في متغير من نوع bool حيث ان جملة المقارنة فعيلا ترجع قيمة اما true او false ... مثال :




bool result = x > y;


بحيث يمكن استخدام المتغير متى احتجنا ذلك بدلا من الجملة الشرطية كاملة ....
الجمل الشرطية (بمعنى آخر التحديدية) وانواعها Selection Statements :





يقصد بالجمل الشرطية ببساطة هي الجمل التي قد تنفذ او لا , حسب قاعدة نحن نكتبها او الاصح شرط نحن نكتبه , وسميت تحديدية Selection لانها نحدد ما الذي ينفذ من الجمل :



الجملة الشرطية IF


الجملة if هكذا تكتب ولا تكتب IF او iF او If كما تعلمنا ان لغة السي بلس بلس حساسة لحاله الاحرف فكن حذر , هي جملة في ابسط اشكالها تختبر شرط ما اذا كان الشرط صحيح فإنه ينفذ الجملة التابعة لجملة if واذا كانت خاطئة فيتجاوز ما يتبع جملة if ويتابع عمله ...






والصيغة العامة تكون كالتالي:




if (condition )
{
statement1;
statement2;
statement3;
.
.
.
}


وهذه جملة الـ if في ابسط حالاتها , ونلاحظ انها لم تنتهي بالفاصلة المنقوطة , واذا وضعت الفاصلة المنقوطة فإن هذا يعتبر انهاء لجملة if وتعتبر بنية كاملة , اعتقد بالامثلة تصل الفكرة التي قد لا تصل حقيقة الا بالامثلة ....




void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 ) {
cout<<"You are pretty young!\n";
}
}



أنظر للبرنامج هو يقوم بقراءة رقم نحن ادخلناه خلال تنفيذ البرنامج , يقرأ البرنامج قيمة المتغير age بعد الادخال ومن ثم يرى هل هو اكبر من القيمة 100 فإذا كان ذلك, يطبق الجملة التي داخل البلوك التابع له فإذا كان العمر المدخل اقل من 100 يطبع You are pretty young! اما اذا يساوي 100 او اكبر من 100 فإنه لا يطبع شيء ...




void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 ); {
cout<<"You are pretty young!\n";
}
}


هذا المثال نفس المثال اعلاه لكن الفرق بسيط جدا , هذا المثال ببساطة دائما يطبع You are pretty young! لكن لماذا؟



السبب ببساطة يوجد فاصلة منقوطة!!!!!
هنا if ( age < 100 ); , لذلك فهو سواء حقق الشرط او لا بالنسبة له انتهت الجملة if ولا تتبع لها شيء , لذلك جملة الطباعة التي تليها تعتبر خارج if وليس داخلها , ايضا نقطة اخرى احب ان انو لها




ما الفرق بين



void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 )
cout<<"You are pretty young!\n";
cout<<"Thank you!\n";
}


الفرق انه في الحالة الاولى الذي يتبع جملة if اذا تحققت هو فقط


cout<<"You are pretty young!\n";


ولذلك لو تحقق الشرط سيكون الناتج هو



You are pretty young!
Thank you!


اما اذا لم يتحقق فسيصبح


Thank you!


في الكود الثاني اذا تحقق الشرط سيطبع فقط


You are pretty young!
Thank you!

اما اذا لم يتحقق لن يطبع شيء , والسبب هو انه اذا لم تكن موجودة اشاة البلوك فسيعتبر الجملة التالية فقط هي التي تتبع لجملة if يعني بعبارة اوضح يتوقف تأثير if عند اول فاصلة منقوطة (مبدئيا نقول هذا), في حال وجود اشارات البلوك { و } وتتبع لجملة if فكل ما داخل البلوك يعتبر تابع لجملة if وهكذا نعرف فائدة البلوك بشكل اكثر ... وهو شيء مهم وضروري معرفته خصوصا على من تعود على لغة الفيجوال بيسك او البيسك اذا ان هذه اللغات تعتمد على ان كل ما يتبع جملة if هو تابع لها الا اذا وجد end if , هنا الذي يحدد هو البلوك , او اول فاصلة منقوطة بعد جملة if .....

لنقل بعبارة اخرى لو كنا نريد فقط تنفيذ جملة واحدة بعد if فيكننا الاستغناء عن البلوك ولا نحتاج لـ { و } لذلك , اما اذا اكثر من جملة وجب عليك ذلك ويجب تضمين العبارات المراد تطبيقها في بلوك ....

............

الى هنا نكون قد انتهينا من شرح اساسيات جملة if لكن هنالك عدة طرق لكتابتها
والسلام عليكم ورحمه الله
منكم الدعاء