تعليمة الانتقال goto في لغة c++ الدرس |12| - Programmer Tech

Programmer Tech

موقع تعليم مجاني يهتم بتعلم البرمجة و علوم الكمبيوتر, أمن المعلومات, القرصنة الأخلاقية, سكربتات

إعلان اعلى المقالة

الأحد، 12 أبريل 2020

تعليمة الانتقال goto في لغة c++ الدرس |12|


سوف نكمل معكم التعليمات الأساسية في سي بلس بلس c++ , التي تتحكم بسير البرنامج مثل continue و break و goto و اليوم سوف نتحدث عن goto بالتحديد.

ما هي تعليمة goto

تستخدم هذه التعليمة للإنتقال غير المشروط, من مكان إلى آخر داخل الاجراء, و لكي نستخدمها يجب أن نضع Label عنوان داخل البرنامج لكي نتمكن من الإنتقال إليه, ونختار الأسم للعنوان بشكل عادي مثلما استخدمنا اسماء المتغيرات و نضع بعده نقطتين :.

الشكل العام له
goto label;
.
.
label : statement;


إن تعليمة goto تنتقل لعنوان آخر داخل نفس الإجراء الذي توجد به, و لا يمكن أن يكون في اجراء آخر, رغم أنها goto سهلة الإستخدام لكنها غير محببة لدى الكثير من المبرمجين, ويسبب كثرة استخدامها يصبح البرنامج غير مفهوم و غير مقروء جيداً و ليس بالسهولة تتبعه, و يكون متداخل ببعضه و الأغلب يشبهه "بالسباكيتي" بالمعكرونة لأنه تكون اكواد البرنامج متشابكة ببعضها شبيهة بالمعكرونة الملتفة ببعضها, رغم ذلك الأغلب يكتبون برامجهم ويقسمونها إلى ملفات منفصله, يكون هذا افضل بحيث كل ملف يحوي إجراء واحد او اكثر و كل إجراء له وظيفه واضحة و محدده لأن بهذا الشكل سهل الفهم و التتبع و يكون به إجراءات يمكن إعادة استخدامها لاحقاً في برامج اخرى.

مثال
#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    LOOP:do {
    if (a == 15){
    a = a + 1;
    goto LOOP;
    }
    cout << "value of a: " << a << endl;
    a = a + 1;
    }
    while (a < 20);
    return 0;
}


لدينا قيمة a تساوي 10 اي بداية حلقة التكرار ووضعنا شرط في حلقة تكرار عندما يصل إلى الرقم 15 يتجاهله و يضيف في كل دورة رقم 1 إلى ان يكتمل للرقم 20 عندما تكون قيمة a اصغر من 20.

مثال2
#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    MyLabel: do{
        if(a==15)
        {
            a=a+1;
            goto MyLabel;
        }
        printf("Value is %d\n", a);
        a++;
    } while(a<21);
    return 0;
}



هذا المثال يختلف قليلاً عن المثال السابق و لا داعي لشرحه.

تدريبات

1 - اكتب برنامج يقوم بإدخال رقم ما فإن كان الرقم أصغر من 10 فإنه يطبع العبارة التالية :
"number less ten" أما إذا كان الرقم المدخل أكبر او يساوي 10 فيطبع العبارة التالية :
"number bigger or equall ten".
#include <iostream>
using namespace std;
int main(){
    int x;
    cin>>x;
    if (x<10)
    goto one;
    else goto two;
    one: cout<<"number less ten"<<endl;
    two: cout<<"number bigger or equall ten"<<endl;
    return 0;
}


نلاحظ أنه ادخلنا في البرنامج رقم 15 وهو أكبر من 10 فطبع لنا ان الرقم اكبر او يساوي 10 , أما اذا كتبنا رقم اصغر من 10 فإنه سوف يطبع لنا العبارتين سوياً, وسبب هذا ان البرنامج ينفذ التعليمات سطر سطر فإن العبارة الثانية اتت فوراً بعد العبارة الأولى فإنه يطبعها.

2 - اكتب برنامج يقوم المستخدم بإدخال عدة اعداد /n/ ويقوم بجمعها بحيث يحدد المستخدم عدد الاعداد /n/ قبل ادخالها.
#include <iostream>
using namespace std;
int main(){
    int sum = 0,x,i,n;
    cout<<"enter n"<<endl;
    cin>>n;
    for(i=1; i<=n; i++)
    {
    cout<<"enter number ="<<endl;
    cin>>x;
    sum=sum+x;
    }
cout<<"the sum of number is = ";
cout<<sum<<endl;

    return 0;
}

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

إرسال تعليق

facebook

تسميات

تواصل معنا

Translate

أخر الافكار

من انا

authorمبرمجين ويب و محبين للتقنية و الشبكات و امن المعلومات و سوف نقدم لكم الافضل إن شاء الله
أعرف المزيد ←

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

اقسام