منتديات المبرمج العراقي

موقع عراقي يختص بالبرمجة ومشاريعها واكوادها
 
الرئيسيةس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 دورة البرمجة بلغة سي الدرس التاسع

اذهب الى الأسفل 
كاتب الموضوعرسالة
المبرمج العراقي
Admin


المساهمات : 24
تاريخ التسجيل : 04/07/2008

مُساهمةموضوع: دورة البرمجة بلغة سي الدرس التاسع   الأربعاء يوليو 09, 2008 6:47 pm

المؤثرات العلاقية ( Relational Operators ) :
يرجع اسم المؤثرات العلاقية الى العمليات المختصة بالقيم التي بينها علاقات وهو اجراء عمليات مقارنة بين كميات حسابية او رمزية , وتكون نتيجة منطقية وهي اما نعم (true) أو لا (false)
وفي لغة السي تعامل النتيجة (false) على انها صفر " 0 " وتأخذ النتيجة (true) أية قيمة غير الصفر والمشهور أنها " 1 " .
ويبين الشكل التالي المؤثرات العلاقية :
نفرض ان : int a=b=3




المؤثرات المنطقية ( Logical Operators ) :




الفصل الخامس : اتخاذ القرار

تعرضنا حتى الآن لبرامج متتالية الأوامر، حيث ينفذ الكمبيوتر العبارات الموجودة في البرنامج بالترتيب الذي وردت به .

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

وسنتعرض هنا لطرق اتخاذ القرار في لغة الC وكيفية تغيير تسلسل التنفيذ تبعا للشروط الموضوعة.

العبارة الشرطية البسيطة ( if statement):

تكوين العبارة الشرطية البسيطة كما هو موضح بالشكل

CODE

if ( condition )
statement;




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

CODE

#include <stdio.h>
main()
{
float sum;
printf(“\n Enter the Sum : “);
scanf(“%f”,sum);
if (sum >50)
printf (“\n The student had passed”);
}




وفي هذا البرنامج يطبع الكمبيوتر رسالة ليسأل المستخدم عن مجموع الطالب وبعد ذلك يقوم بمقارنتها بالشرط اللازم للتأكد من النجاح ( وهو تجاوز المجموع 50 )فإذا تحقق الشرط يطبع الكمبيوتر رسالة للمستخدم يعلمه أن الطالب ناجح،

العبارة الشرطية الكاملة ( if ……. else statement)

إن اتخاذ القرارات في الحياة العملية ليست بالسهولة التي ذكرت في البرنامج السابق، إذ نحتاج في معظم الأحيان لاتخاذ اجراء تبعا لشرط معين، واتخاذ إجراء آخر إذا لم يتحقق هذا الشرط.

لو نظرنا للبرنامج السابق لوجدنا سؤالا ملحا : ماذا لو كان مجموع الطالب أقل من 50 ؟؟
الاجابة على هذا السؤال هي أن الطالب يكون راسبا. ولكن البرنامج لا يتضمن أمرا بإعطاء حالة الرسوب، لأننا استخدمنا عبارة الشرط البسيطة والتي تستجيب لشرط واحد.
وسنتعرض الآن لعبارة مركبة كما في البرنامج التالي:


CODE

#include <stdio.h>
main()
{
float sum;
printf(“\n Enter the Sum : “);
scanf(“%f”,sum);
if (sum >50)
printf (“\n The student had passed”);
else
printf(“\n The student had failed”);
}




وفي هذا البرنامج استخدمنا العبارة الشرطية الكاملة والتي تأتي على الصورة الموضحة بالشكل التالي

CODE

if ( condition)
statement-1;
else
statement-2;




حيث أن ( condition ) هو الشرط
و ( statement -1 ) هي عبارة النتيجة الأصلية.
و (statement -2 ) هي عبارة النتيجة البديلة.

ومنطق اتخاذ القرار هنا هو : " لو تحقق الشرط يقوم الكمبيوتر بتنفيذ عبارة النتيجة الأصلية أما لو لم يتحقق الشرط فيقوم الكمبيوتر بتنفيذ عبارة النتيجة البديلة"

وهكذا -باستخدام العبارة الشرطية الكاملة - تمكننا من اتخاذ القرار لحالتين متضادتين ، والآن ماذا لو كانت النتيجة الأصلية و النتيجة البديلة تتضمنان أكثر من أمر للكمبيوتر؟
في هذه الحالة نحتاج إلى احتواء عبارات النتيجة الأصلية بين قوسين من أقواس البلوكات، وهو الموضح بالشكل


CODE

if ( condition)
{
statement 1;
statement 2;
.
.
statement n;
}
else
{
statement 1;
statement 2;
.
.
statement m;
}




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


CODE

#include <stdio.h>
main()
{
float sum;
printf(“\n Enter the Sum : “);
scanf(“%f”,sum);
if (sum >50)
{
printf (“\n The student had passed”);
printf(“\n The percentage is : %f”,(sum/1000)*100)
}
else
{
printf(“\n The student had failed”);
printf(“\ There is no percentage for failed student !”);
}
}




لو افترضنا انه قد طلب منك - كمبرمج - عمل برنامج يمكنه احتساب التقديرات اعتمادا على مجموع الطالب، في هذه الحالة نستخدم عبارة شرطية أيضا ولكن بها عدد من الشروط وعدد مناظر من النتائج. أو ما يطلق علية العبارة الشرطية المتدرجة.

والشكل التالي يوضح التكوين العام للعبارة الشرطية المتدرجة

CODE

if ( condition –1)
statement –1;
else if ( condition-2)
statement-2;
else if( condition-3)
statement-3;
………..
else
statement-n;






الاختيار متعدد البدائل ( statement switch )
يعتبر الاختيار المتعدد البدائل بديلا للعبارة الشرطية المتدرجة التي تعرضنا لها سابقا، والواقع أن الاختيار المتعدد البدائل أعد خصيصا ليكون أسهل استخداما من العبارة الشرطية المتدرجة.ويتميز عنها بأنه أفضل توضيحا.

والشكل التالي يوضح الصورة العامة للاختيار متعدد البدائل

CODE

switch (variable)
{
case value1;
statement 1;
break;
case value2;
statement 2;
break;
case value 3;
statement 3;
break;
……………
default:
statement;
}




وكما نرى فإن الاختيار المتعدد البدائل يبدأ بكلمة ( switch) يليها متغير الاختيار والذي تحدد قيمته الاختيار الذي سيتم تنفيذه، ويلي ذلك قوس بلوك كبير يحتوي داخله بلوكات صغيرة كل منها يمثل اختيارا من البدائل المطروحة و كل بلوك من بلوكات البدائل يبدأ بكلمة ( case ) متبوعة بقيمة لمتغير الاختيار - والتي تمثل الشرط - وبعد ذلك تأتي عبارة النتيجة.

ويختتم بلوك البديل بكلمة ( break) والغرض من هذه الكلمة هو منع الكمبيوتر من تنفيذ عبارة النتيجة التالية!!!
وقد تبدو هذه العبارة غريبة للوهلة الأولى ويتبادر للذهن سؤال ملح : ألم يتحقق الشرط الأول مثلا فماذا يدفع الكمبيوتر لتنفيذ بقية عبارات النتائج؟؟
والإجابة عن هذا السؤال هي أن عبارة الاختيار متعدد البدائل لا ترسل للكمبيوتر أمرا بالتوقف بعد تحقق أي شرط فيها، لذا لزم الاستعانة بكلمة (break )

وبعد نهاية بلوكات البدائل تأتي كلمة (default ) متبوعة بعبارة أو بعبارات ينفذها الكمبيوتر في حالة عدم تحقق أي من الشروط السابقة.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://iq-prog.rigala.net
 
دورة البرمجة بلغة سي الدرس التاسع
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات المبرمج العراقي :: لغات البرمجة :: منتدى البرمجة العام-
انتقل الى: