النتائج 1 إلى 2 من 2
الموضوع:

functions of c++

الزوار من محركات البحث: 20 المشاهدات : 637 الردود: 1
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    من أهل الدار
    мᾄḋʀἶḋ'ṩ ʛἶʀl
    تاريخ التسجيل: March-2014
    الدولة: Iraq,Thi-Qar
    الجنس: أنثى
    المشاركات: 3,271 المواضيع: 329
    صوتيات: 7 سوالف عراقية: 0
    التقييم: 1197
    مزاجي: :)
    المهنة: programmer
    موبايلي: IPhone 8Plus
    آخر نشاط: 21/February/2020
    مقالات المدونة: 3

    Waiting functions of c++


    انشاء ومناداة دوال

    رأينا في الدروس السابقة بأن برامج السي تبدء بدالة تدعى main

    سأذكركم بمخطط وضعته لكم لينعش ذاكرتكم

    هذا هو شكل البرامج الرئيسي
    يبدء أولا بالـ préprocesseur سنتطرق لشرحهم بالتفصيل في دروس لاحقة
    تبدء دائما بالعلامة # ونجدهم عادة في أعلى الكود
    ثم يأتي بعدهم مباشرة الدوال وفي هذا المخطط نرى الدالة main وهي التي يبدء منها أي برنامج بالسي
    وقد كانت برامجنا كلها في ما سبق كودها محصور بين حاضنيتي { } الدالة الرئيسية main
    بحيث اذا رأينا بعض السورسات لا نجد الكود فقط داخل الدالة main قد نجدها خارجه
    ولحد الآن برامجنا داخل الدالة الرئيسية لانها برامج صغيرة ولا نقع في مشكل لكن تخيل لو كانت مشاريع ضخمة
    بها آلاف أو ملايين التعليمات سيكون من المستحيل عمل هذا المشروع
    لذا ما سنقوم به الآن هو أن نتعلم تنظيم هذه الفوضى بحيث نقوم بتفكيك البرنامج الى عدة برامج صغيرة تسمى دوال
    نرجع الى مثال الليغو بحيث كل قطعة منه هي عبارة عن دالة ونقوم بتركيبها لنحصل على شكل مناسب
    ما هو الهدف من الدوال ؟
    تقوم الدوال بتنفيذ تعليمات أو أحداث وتعطي نتيجة ، أي مجموعة من الاكواد تقوم بشيء معين
    أو بطريقة أخرى لديها مدخلات ومخرجات ( وهي النتيجة ) يمكن تمثيلها على هذا الشكل

    لمن لا يفهم الفرنسية
    entrée=مدخلات
    sortie=مخرجات
    عندما ننادي دالة هناك 3 مراحل :

    1. الادخال : نقوم بادخال المعلومات التي نريد أن نعمل لها الحسابات للدالة
    2. الحسابات: تقوم الدالة بعمل حسابات على المعلومات التي تم ادخالها
    3. الاخراج : بعد أن تنتهي الدالة نم الحسابات تعطينا النتيجة وهو ما يسمى الاخراج أو الارجاع أي ترجع النتيجة

    يمكن تصور ذلك بالدالة triple وهي دالة تعطيك العدد مضاعف 3 مرات والصورة توضح

    هذا مثال بسيط عن الدوال ، هدف الدوال هو تبسيط الكود سورس وربح الوقت فمثلا لو أردت أن تستعمل مضاعف كم من عدد
    مش كل مرة تعمل الكود سورس الخاص بمضاعفة العدد وانما يكفي مناداة الدالة trilpe
    الاآن سنتطرق لمنهجية انشاء الدالة :
    type nomFonction(parametres)
    {
    // نكتب التعليمات هنا
    }

    type أي نوع الدالة int او float او char الخ ... وهو نوع النتيجة المراد الحصول عليها اذا أردت عدد عشري تكتب float واذا أردت عدد صحيح تكتب int
    كما أنه يمكن عمل دالة لا ترجع شيء اذا هناك نوعان من الدوال
    1- التي ترجع قيمة : سنكتب في type اذا نوعه int او float او ...
    2-التي لا ترجع قيمة :سنكتب في type النوع void يعني فارغة
    nomFonction : أي اسم الدالة من اختيارك
    parametres: وهي المدخلات أو المعلومات التي ستعمل عليها الدالة وطبعا سنكتب نوع المعلومة اذا كانت عدد صحيح نكتب int x اذا كانت عدد عشري نكتب float x
    والتعليمات تكتب داخل { }
    انشاء أول دالة :
    سنعمل على الدالة triple تقوم الدالة هذه بارجاع قيمة عدد صحيح مضاعف 3 مرات لذا سنختار النوع int
    لذا سيكون الكود كالآتي :
    int triple(int number)
    {
    int result=0;
    result=number*3; //نضرب في 3 العدد الذي نريد أن نضاعفه
    return result; //الذي فيه قيمة العدد المدخل مضاعف 3 مرات result نرجع المتغير
    }

    مبروك عليكم أول دالة
    أول شيء عليكم الانتباه له هو أن الدالة من نوع int لذا يجب ان ترجع int

    لدينا المتغير result وهو الذي نضع فيه النتيجة نضرب العدد المدخل في 3 ونضعه داخل هذا المتغير
    ثم في return نضع هذا المتغير result وهذا سيكون محتوى الدالة
    غالبا ما تكون الكلمة return دائما في آخر الدالة بعد انتهاء الحسابات لترجع لنا قيمة الدالة وكأننا نقول للدالة : توقفي واعطينا العدد result

    لكن هل هذه الطريقة المختصرة للدالة triple
    سأقول لا يمكننا عمل هذا في سطر واحد فقط كالآتي

    int triple(int number)
    {
    return number*3;

    }

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

    هذه كانت دالة بمعلومة واحدة سنرى الآن دوال فيها عدة بيانات وأخرى بدون بيانات :

    أولا عدة بيانات :

    مثال جمع عددين
    int addition(int a,int b)
    {
    return a+b;

    }
    يكفي تفريق البيانات ب فاصلة كما ترون
    int a,int b

    ثانيا بدون بيانات :

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

    سنضع دالة تضع مرحبا مثلا bonjour بالفرنسية


    void bonjour()
    {
    printf("bonjour");
    }

    لم أضع شيء بين الاقواس لان الدالة لا تأخذ أي بيانات
    ووضعت أيضا void التي تكلمت عليها في الأعلى وكما ترون لا يوجد return لان دالتنا لا ترجع شيء والدالة التي لا ترجع شيء هي من نوع void

    الآن وقد عرفنا كيف ننشئ دالة سنرى كيف ننادي دالة ونستعملها في البرنامج

    سنستعمل الدالة triple وعليكم الآن انشاءها قبل الدالة main وليس بعدها وسأشرح لكم في القادم

    #include <stdio.h>
    #include <stdlib.h>

    int triple(int nombre)
    {
    return 3 * nombre;
    }

    int main(int argc, char *argv[])
    {
    int nombreEntre = 0, nombreTriple = 0;

    printf("Entrez un nombre... ");
    scanf("%d", &nombreEntre);

    nombreTriple = triple(nombreEntre);
    printf("Le triple de ce nombre est %d\n", nombreTriple);

    return 0;
    }


    أي برنامج يبدء من الدالة main كما تعلمون

    سنطلب من المستخدم أن يدخل عدد وسنضع هذا العدد الذي أدخله الى الدالة triple وسنضع النتيجة في المتغير nombreTriple
    هذا السطر هو المهم الآن في درسنا لانه هنا يتم المناداة على الدالة
    nombreTriple = triple(nombreEntre);

    بين قوسين نضع العدد المدخل للدالة triple وهو العدد الذي نريد العمل عليه ( العدد الذي نريد الحصول على مضاعفته)
    هذه الدالة ترجع قيمة والتي بدورها سنضعها في المتغير nombreTriple اذا سنطلب من الجهاز في هذا السطر من حساب مضاعف العدد nombreEntre ووضع النتيجة
    في المتغير nombreTriple


    أمثلة على الدوال
    التحويل من الاورو الى الدينار :
    نرى من أي موقع خاص بتحويل العملات ونرى كم يساوي الاورو بالدينار
    وجدنا مثلا : 1 أورو =6.55957 دينار
    سوف ننشئ دالة ونسميها conversion
    سوف تأخذ هذه الدالة كبيانات متغير من نوع double وترجع قيمة أيضا double لاننا بطبيعة الحال سنستعمل أعداد عشرية
    بما أننا نتكلم عن النقود
    ليكون الكود كالآتي :
    double conversion(double euros)
    {
    double francs = 0;
    francs = 6.55957 * euros;
    return francs;
    }
    int main(int argc, char *argv[])
    {
    printf("10 euros = %fF\n", conversion(10));
    printf("50 euros = %fF\n", conversion(50));
    printf("100 euros = %fF\n", conversion(100));
    printf("200 euros = %fF\n", conversion(200));
    return 0;
    }


    ويعطينا كنتيجة


    10 euros = 65.595700F 50 euros = 327.978500F 100 euros = 655.957000F 200 euros = 1311.914000F



    لايوجد اختلا كبير بينها وبين الدالة triple وسوف أثبت لكم ذلك

    أولا الدالة conversion يمكن اختصارها في سطر واحد فقط مثل ما شرحت لكم

    في الدالة الرئيسية main وضعت عدة Printf لترو أهمية عمل الدوال فهنا تحتاج فقط لتغيير البيانات بدل 10 تضع 50

    أو 100 الخ ...

    يلا تحركو شوي قومو الآن بعمل دالة تحول من الدينار للأور وليس العكس ، سهلة يوجد تغيير بسيط فقط

    سنكتب الآن دالة لا ترجع شيء أي من نوع void
    وهي دالة تقوم بكتابة startimes في الشاشة عدة مرات سوف تأخذ كبيانات عدد مرات كتابة النص
    void punition(int nombreDeLignes)
    {
    int i;

    for (i = 0 ; i < nombreDeLignes ; i++)
    {
    printf("Je ne dois pas recopier mon voisin\n");
    }
    }

    int main(int argc, char *argv[])
    {
    punition(10);

    return 0;
    }

    النتيجة :

    Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin Je ne dois pas recopier mon voisin
    كل شيء واضح وتم التطرق اليه سابقا لدينا دالة void أي لا ترجع شيء لا يوجد فيها return ولدينا متغير
    لتحديد عدد الاسطر التي نريدها
    مساحة مستطيل :
    سهلة لدينا الطول × العرض
    لذا ستأخذ الدالة كبيانات الطول longueur والعرض largeur ليكون الكود كالآتي :
    double aireRectangle(double largeur, double longueur)
    {
    return largeur * longueur;
    }
    int main(int argc, char *argv[])
    {
    printf("Rectangle de largeur 5 et longueur 10. Aire = %f\n", aireRectangle(5, 10));
    printf("Rectangle de largeur 2.5 et longueur 3.5. Aire = %f\n", aireRectangle(2.5, 3.5));
    printf("Rectangle de largeur 4.2 et longueur 9.7. Aire = %f\n", aireRectangle(4.2, 9.7));
    return 0;
    }

    النتيجة :
    Rectangle de largeur 5 et longueur 10. Aire = 50.000000 Rectangle de largeur 2.5 et longueur 3.5. Aire = 8.750000 Rectangle de largeur 4.2 et longueur 9.7. Aire = 40.740000
    يمكننا أيضا عمله بطريقة أخرى ونضع printf داخل الدالة ونختصر الكود
    void aireRectangle(double largeur, double longueur)
    {
    double aire = 0;
    aire = largeur * longueur;

    printf("Rectangle de largeur %f et longueur %f. Aire = %f\n", largeur, longueur, aire);
    }
    int main(int argc, char *argv[])
    {
    aireRectangle(5, 10);
    aireRectangle(2.5, 3.5);
    aireRectangle(4.2, 9.7);
    return 0;
    }


  2. #2
    من المشرفين القدامى
    سَرمَديّة
    تاريخ التسجيل: August-2014
    الدولة: بغداد
    الجنس: أنثى
    المشاركات: 32,329 المواضيع: 2,167
    صوتيات: 152 سوالف عراقية: 98
    التقييم: 11949
    مزاجي: الحمدلله ، جيد
    المهنة: legal
    أكلتي المفضلة: دولمة
    آخر نشاط: منذ 4 يوم
    مقالات المدونة: 19
    يسلموووو

تم تطوير موقع درر العراق بواسطة Samer

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

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال