الدرس الثامن – الحلقات-1

سلسلة من الدروس في لغة البرمجة ++C

الدرس الثامن – الحلقات-1

تعليمة القفز

تسمح تعليمة القفز بالانتقال إلى تعليمة محددة معنونة بلافتة label ، لها الشكل التالي:

Label: ………

…….

…….

goto  Label;

مثال 1: طباعة الأعداد الزوجية المحصورة بين a و a+10  حيث a  هو متحول يمثل عدد زوجي مدخل من لوحة المفاتيح(مثال 7- الجلسة الخامسة).

#include<iostream>

using namespace std;

int main()

{

            int a;// starting even integer

            int i;//counter

            cout<<“enter the starting even integer”<<endl;//prompt

            cin>>a;

            cout<<endl;

            cout<<a<<endl;

            i=1;//counter initialization

            /*this section is repeated five times*/

label:

            a = a+2;

            cout<<a<<endl;

            i = i + 1;//i = i++ ;

            if(i<6)

                        goto label;//jump

return 0;

}

مثال 2: إيجاد جداء عددين X,Y باستخدام طريقة الجمع المتكرر(الجلسة الثالثة).

#include<iostream>

using namespace std;

int main()

{

            int X,Y;

            int P;//P:product

            int I;//counter

            cout<<“enter 2 integers”<<endl;//prompt

            cin>>X>>Y;

            //initialization

            I=0;

            P=0;

            /*this section is repeated Y times*/

label:

            if(I<Y)

            {

                        P += X;

                        I = I + 1;

                        goto label;//jump

            }

            else //actually we do’nt need it

                        cout<<“product is :”<<P<<endl;

return 0;

}

معاملات الزيادة و النقصان

تقوم هذه المعاملات بزيادة أو إنقاص قيمة المتحول بمقدار واحد.

بفرض لدينا المتحول X:

المعامل

المعنى

X++

زيادة قيمة المتحول بعد التنفيذ

++X

زيادة قيمة المتحول قبل التنفيذ

X- –

إنقاص قيمة المتحول بعد التنفيذ

– -X

إنقاص قيمة المتحول قبل التنفيذ

المثال التالي سيوضح الفرق بين الزيادة قبل التنفيذ و الزيادة بعد التنفيذ.

مثال 3:

//مثال توضيحي

#include<iostream>

using namespace std;

int main()

{

            int number = 5;

            cout<<number++<<endl;//We have to get 5

            cout<<number<<endl;//We have to get 6

            cout<<++number<<endl;//We have to get 7

            cout<<number<<endl;//We have to get 7

return 0;

}

حلقة التكرار for

تعبر حلقة for  عن التكرار المنتهي غير المقيد بشرط.

for(القيمة الابتدائية للعداد;شرط الاستمرار;مقدار التزايد)

{

//الجزء الذي سيتم تكراره

}

مثال 4:

#include<iostream>

using namespace std;

int main()

{

            int a;// starting even integer

            int i;//counter

            cout<<“enter the starting even integer”<<endl;//prompt

            cin>>a;

            cout<<endl;

            cout<<a<<endl;

            for(i=1;i<6;i++)//for(i=0;i<5;i++)

            {

            /*this section is repeated 5 times*/

                        a =a+2;

                        cout<<a<<endl;

            }

return 0;

}

آلية عملها:

–         تقرأ القيمة الابتدائية.

–         تتأكد من تحقيقها لشرط الاستمرار.

–         تنفذ الجزء المرتبط بالحلقة مرة واحدة.

–         تزيد قيمة العداد اعتماداً على مقدار الزيادة المحدد.

–         تتأكد من تحقيق القيمة لشرط الاستمرار.

–         تنفذ الجزء المرتبط بالحلقة مرة واحدة.

–         تكرار الخطوات الثلاثة السابقة طالما أن شرط الاستمرار محقق.

مثال 5:

#include<iostream>

using namespace std;

int main()

{

            int i; //counter

     //هذه الحلقة لن تنفذ أبداً لعدم تحقيق القيمة الابتدائية لشرط الاستمرار

            for(i=1;i<0;i++)

                        cout<<“I am in the loop”<<endl;

cout<<“I am out the loop”<<endl; //ستطبع هذه الجملة فقط

return 0;

}

مثال 6:

#include<iostream>

using namespace std;

int main()

{

            int i; //counter

     القيمة الابتدائية تحقق شرط الاستمرار//

            for(i=-5;i<0;i++)

                        cout<<“I am in the loop”<<endl; //تطبع هذه الجملة خمس مرات

     //ستطبع هذه الجملة عند الخروج من الحلقة السابقة

            cout<<“I am out the loop”<<endl;

return 0;

}

مثال7: العداد تنازلي

#include<iostream>

using namespace std;

int main()

{

            int i,j;//counters

            //Ascending

            for(i=0;i<10;i++)

                        cout<<i<<“\t”;

            cout<<endl;

            //Descending

            for(j=9;j>=0;j–)

                        cout<<j<<“\t”;

return 0;

}

مثال 8: طباعة الأعداد الزوجية المحصورة بين a و a+10  حيث a  هو متحول يمثل عدد زوجي مدخل من لوحة المفاتيح

#include<iostream>

using namespace std;

int main()

{

            int a;// starting even integer

            int i;//counter

reenter:          cout<<“enter the starting even integer”<<endl;//prompt

            cin>>a;

            if(a%2==0) //a is an even

            {

            cout<<endl;

            /*this section is repeated 5 times*/

            for(i=a;i<=a+10;i=i+2)

            {

                        cout<<i<<endl;

            }

            }

            else//a is not an even

            {

                        cout<<“this is’t an even number !”<<endl;

                        goto reenter;

            }

return 0;

}

الحلقات اللانهائية

يمكن تنفيذ حلقة التكرار for  عدد لانهائي من المرات و ذلك عند كتابتها بالشكل التالي:

for( ; ; )

{

//هذا الجزء سينفذ عدد لا نهائي من المرات

}

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

About زين العابدين

مهندس حواسيب - معهد IDA - جامعة Braunshweig التقنية.
هذا المنشور نشر في دروس في البرمجة, دروس تعليمية. حفظ الرابط الثابت.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s