الثلاثاء، 18 أغسطس 2015

تداخل الحلقات والتحكم بها ++c

تأخذ الحلقات FOR  المتداخلة الشكل العام التالي :-

for (..........)
              for (..........)
                            for (..........)                                                                                         
                                                statements;   
//Program 3-9:
// An Example of 2 nested loops
#include<iostream.h>
main( )
{
int i,j;
for (i=1 ; i<3;++i)
for (j=1 ; j<4;++j)
cout << i*j<<'  ' <<endl;
}
return 0;
}

الخرج :

1  2  3  4
2  4  6  8
     6  9  12

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

التحكم بالحلقات

تعمل الحلقات عادة بشكل جيد إلا أننا في بعض الأوقات نحتاج للتحكم بعمل الحلقات ، العبارتين break و continue توفران هذه المرونة المطلوبة.
العبارة break :-
تتيح لنا العبارة break  الخروج من الحلقة في أي وقت.المثال التالي يبين لنا كيفية عمل العبارة break :

//Program :
//An Example on break as a loop exit
#include<iostream.h>
main( )
{
int isprime ,j ,n;
isprime = 1;
cin>>n;
for (j=2,j<n;++j)
{
if (n%j== 0)
{
isprime =0;
break;
}
}
}
هذا البرنامج يجعل قيمة المتغير isprime عند 1 إذا كان n  عدد أولى prime يجعل قيمته0 إذا لم يكن كذلك ( الرقم الأولي هو رقم يقبل القسمة على نفسه وعلى الرقم واحد فقط).لمعرفة ما إذا كان الرقم أولياً أم لا تتم قسمته على كل الأرقام وصولاً إلى n-1 ، إذا قبل الرقم n  القسمة على أحد هذه القيم من دون باقي فإنه لا يكون أولياً لكن إذا قبل الرقم n  القسمة على أحد هذه القيم بشكل صحيح لا داعي لإكمال الحلقة فحالما يجد البرنامج الرقم الأول الذي يقسم n  بشكل صحيح يجب أن يضبط قيمة المتغير isprime عند 0  ويخرج فوراً من الحلقة.

العبارة continue :-
تعيد العبارة continue  التنفيذ إلى أعلى الحلقة. المثال التالي يوضح كيفية عمل العبارة  continue:-

//Program :
//An Example on continue statement
#include<iostream.h>
main( )
{
int dividend , divisor;
do
//Continued
{
cout << ''Enter dividend:    '';
cin>>dividend;
cout<< ''Enter divisor:    '';
//Continued
cin>>divisor;
if( divisor == 0)
{
cout<<" divisor can't be zero\n" ;
continue;
}
cout <<"Quotient is "<< dividend/divisor;
cout<<" do another (y/n)?";
cin>>ch
}
while (ch! = 'n');
}

القسمة على 0 أمر غير مرغوب فيه لذا إذا كتب المستخدم 0 على أنه القاسم يعود التنفيذ إلى أعلى الحلقة ويطلب من البرنامج إدخال قاسم ومقسوم جديدين.

If ( divisor == 0)
{
cout << "divisor can't be zero\n”;
continue;
}
 يستمر تنفيذ الحلقة إلى أن يدخل المستخدم الحرف n .

while( ch ! ='n' ) ;


ليست هناك تعليقات:

إرسال تعليق