ثانياً : التفريغ : لتنفيذ سطر أو عدة سطور طبقا لشرط معين .أى تفريغ بعنى تغير مسار البرنامج . والتفريغ إما يكون مشروط أو غير مشروط
1) التفريغ المشروط
* جملة الشرط IF : تستخدم كلمة IF لتنفيذ جملة أو أكثر حسب شرط معين ( اختبار منطقى )
الصورة العامة
if ( condition )
statement ;
معناه إذا تحقق الشرط ( condition ) نفذ الجملة التالية أما إذا لم يتحقق الشرط فلا تنفذ هذه الجملة وانتقل إلى التى تليها
ملاحظة إذا كان هناك أكثر من جملة تريد تنفيذها مع if لابد من فتح قوس { قبل مجموعة الجمل والقوس } فى أخر الجمل كما يلى :
if ( condition )
{
statement 1 ;
statement 2 ;
}
* جملة if الشرطية المتداخلة : يمكن أن تتداخل جمل if فتأخذ الشكل التالى :
if ( condition )
if ( condition )
if ( condition )
وهذا معناه إذا تحقق الشرط الأول انظر إلى الشرط الثانى …. وهكذا
* الجملة الشرطية if …else : تستخدم لتنفيذ أحد اختيارين وتأخذ الصورة التالية :
if ( condition )
{
statement 1
}
else
{
statement 2
}
ومعناها إذا كان الشرط ( condition ) صحيح true نفذ الجملة الأولى ( statement 1 ) وإلا نفذ الجملة الثانية ( statement 2 ) أى الجملة الشرطية if ….else تستخدم لتحديد اختبار واحد من اختيارين ولا يمكن تنفيذ الاختيارين معا .
* الجملة الشرطية if …. else if : لتنفيذ خيار من مجموعة خيارات كمقارنة رقمين
الطريقة الأولى : باستخدام ثلاث جمل IF وفى كل جملة نضع أحد الشروط الثلاثة كما يلى : -
كود:
i = 5 ;
if ( i < 5 ) ;
printf ( “ i less than 5 " ) ;
if ( i = 5 )
printf ( " i equal to 5 " ) ;
if ( i > 5 )
printf ( “ i greater than 5 “ ) ; وهذه طريقة تستهلك وقتا فى اختبار جمل الشرط
الطريقة الثانية
كود:
if ( condition )
statement 1 ;
else if ( condition )
statement 2 ;
else if ( condition )
statement 3 ; وتكون صيغة المثال السابق كآلاتى :
كود:
I = 5 ;
if ( i < 5 )
printf ( “ i less than 5 " ) ;
else if ( i = 5 )
printf ( “ i equal to 5 " ;
else if ( i > 5 )
printf ( " i greater than 5 " ) ; برنلمج : اشرح وظيفة البرنامج مع إيجاد الناتج إذا كانت القيم 13و7على التوالى :-
كود:
# include < stdio.h >
main ( )
{
float num1 , num2 ;
char op ;
while (1)
{
printf ( “ type number , operator , number \ n " ) ;
scanf ( “ % f % c % f ) , & num 1 , & op , & num 2 ) ;
if ( op = = ' + ' )
printf ( “ = % f " , num1 + num2 ;
else if ( op = = ' – ' )
printf ( “ = % f “ , num1 – num2 ;
else if ( op = = ' * ' )
printf ( " % f " , num1 * num2 ;
else if ( op = = ' / ' )
printf (“ = % f " , num1 / num2 ;
printf ( " \ n \ n " ) ;
}
} 2 - التفريع Switch …. case
تتسبب عبارة Switch فى اختبار مجموعة من عبارات معينة من عديد من المجموعات المتاحة للاستخدام . ويعتمد الاختبار على القيمة الحالية لتعيير موجود داخل عبارة Switch
تمرين : تعديل برنامج الآلة الحاسبة السابعة باستخدام Switch ….. case
كود:
#include < stdio.h>
main ( ) /* void main(void) */
{
float num1,num2;
char ch,op;
do
{
printf( “\in type num1 op num2: “ ) ;
scanf( “%f %c %f “, &num1,&op,&num2);
switch (op)
{
case “+”;
printf ( "sum = %f ", num1+num2);
break;
case “-”;
printf ( "sub = %f ", num1-num2);
break;
case “*”;
printf ( "mul = %f ", num1*num2);
break;
case “/”;
printf ( "div = %f ", num1/num2);
break;
default:
printf\n unknowen operator .”);
}
printf(“\n Again (y/n): “);
}
while (( ch=getch())== ‘y’ ):
} ملاحظة : من التطبيقات المشهودة لاستخدام التفريع switch ….. case هو استخدامه فى قوائم الاختيارات ( menu (
تستخدم عبارة break فى انهاء دورات او الخروج من switch
3) التفريغ غير المشروط goto
معناه الانتقال الى مكان محدد داخل البرنامج بدون شرك
كود:
#include <stdio.h>
main( )
{
char ss;
ss:
printf(“\t ALLAH”);
goto ss;
} ملاحظات : - لا ننصح باستخدام جملة goto ويفضل استخدام الدوال لتغيير مسار تنفيذ البرنامج
- للخروج من البرنامج السابق أضغط CTRL+C