الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه - عنوان غير مناسب : ]برنامج مجنني ؟؟ مش قادر افهمة ؟

مغلق
بدأه alQassam في 7 مارس 2011 · 10 رد · 893 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الكرام

هذا البرنامج حيرني

public class MethodCall
{
    public  static   void main(String args[])
    {
        int x = 5, y = 6, z = 0, s = 0;
        sum1(10, 5);
        sum1(x, y);
        s=sum2(5, 6);
        System.out.println("sum = " +  sum2(5, 6));
        z = 12 + 3 * sum2(x, 10);
        sum1(sum2(3, 4), 5);
    }
    static void sum1(int num1,int num2)
    {
        int sum=0;
        sum= num1+num2 ;
        System.out.println("sum = "+ sum);
    }
    static int sum2(int num1,int num2)
    {
        int sum=0; 
        sum= num1+num2 ;
        return sum ;
    }
}

سيكون الناتج هو

اقتباس
sum = 15

sum = 11

sum = 11

sum = 12

السؤال الأول : كيف أصبح الناتج الأول sum=15 ؟ بمعنى آخر

ماهي العملية الحسابية التي جعلت sum=15 ؟؟؟

السؤال الثاني : كيف نحسب قيمة ( z=12+3*sum2(x,10 ؟؟

السؤال الثالث : الناتج عبارة عن أربعة قسم لـ sum كيف ذلك مع انه ليس هناك سوى امرين من print وواحد return

#2

السلام عليكم .

اقتباس

السؤال الأول : كيف أصبح الناتج الأول sum=15 ؟ بمعنى آخر

ماهي العملية الحسابية التي جعلت sum=15 ؟؟؟

السؤال الثاني : كيف نحسب قيمة ( z=12+3*sum2(x,10 ؟؟

السؤال الثالث : الناتج عبارة عن أربعة قسم لـ sum كيف ذلك مع انه ليس هناك سوى امرين من print وواحد return

البرنامج يحتوي على دالتين فرعية sum1 و sum2 , كلاهما تستقبل قيم و تؤدي العمل الخاص بها .

في البداية .

int x = 5, y = 6, z = 0, s = 0;

عرف مجموعة من المتغيرات و اسند لها قيم .

 sum1(10, 5);

هنا استدعى الدالة الفرعية sum1 , وارسل لها القيم 10 و 5 . و ينفذها .

 static void sum1(int num1,int num2)
    {
        int sum=0;
        sum= num1+num2 ;
        System.out.println("sum = "+ sum);
    }

راح تستقبل القيم . وعرفت بداخلها متغير اسمه sum , لتخزين ناتج جمع العددين فيه .

و تطبع ناتجهم .. انتهى عمل هذه الدالة و نرجع للدالة الرئيسية لإستكمال التنفيذ .

 sum1(x, y);

نستدعي نفس الدالة , و نرسل لها القيم x , y . و في الدالة الفرعية راح تجمعهم و تطبع الناتج .

 s=sum2(5, 6);

استدعى الدالة الفرعية sum2 . هي دالة راح تستقبل قيمتين . تجمعهم و تسوي return للناتج .

يعني ما فيها امر طباعة .

اصبح المتغير s , يحتوي على ناتج جمع العددين 5 + 6 .

System.out.println("sum = " +  sum2(5, 6));

امر طباعة . و راح يطبع راجع الدالة sum2 . وهو حاصل جمع العددين 5 + 6 .

لاحظ : الان تمت طباعة ثلاث نواتج .

z = 12 + 3 * sum2(x, 10);

عملية حسابية , الأولوية لعملية الضرب . راح يضرب 3 في راجع الدالة sum2 . والراجع عبارة عن جمع العددين 10 + x=5 . و أضيف للناتج 12 .

اصبحت قيمة الـ z = 57 .

sum1(sum2(3, 4), 5);

في البداية , راح يتنفذ مابين الأقواس . يعني استدعي الدالة sum2 , لتعيد لي حاصل جمع 2 و 3 .

و من ثم استدعاء الدالة sum1 . التي تستقبل العددين و تجمعهم و تطبع الناتج .

بالتوفيق :happy: ,

1

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#3

الأخ الكريم/الأخت الكريمة

السلام عليكم ورحمة الله وبركاته

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4

علاء الصالحي

العفو اخوي

إشراقة فجر

ابوس روحك على الشرح

بس لسه في شي مافهمته

في الدالة الأخيرة

        int sum=0; 
        sum= num1+num2 ;
        return sum ;

هنا بعد return وضعنا sum

لماذا لم نستخدم الـ sum هنا

System.out.println("sum = " +  sum2(5, 6));

مش المفروض يكون sum بدل ( sum2(5, 6

تم تعديل هذه المشاركة بواسطة alQassam في 8 مارس 2011 في 10:50

#5

السلام عليكم .

اقتباس
مش المفروض يكون sum بدل ( sum2(5, 6

المتغير sum . متغير محلي . لا يمكننا ان نستخدمه خارج نطاق الدالة المعرف فيها .

بالتوفيق ,

1

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#6

^^^^^^^^

اي والله حص

كيف مانتبهت

جزاك ربي الجنة

#7

طيب اخوي معلش ممكن آخر سؤال

هل بإمكاني ان اكتب البرنامج بهذه الطريقة ؟؟

public class MethodCall
{
    static int sum=0;
    public  static   void main(String args[])
    {
        int x = 5, y = 6, z = 0, s = 0;
        sum1(10, 5);
        sum1(x, y);
        s=sum2(5, 6);
        System.out.println("sum = " +  sum2(5, 6));
        z = 12 + 3 * sum2(x, 10);
        sum1(sum2(3, 4), 5);
    }
    static void sum1(int num1,int num2)
    {
        int sum=0;
        sum= num1+num2 ;
        System.out.println("sum = "+ sum);
    }
    static int sum2(int num1,int num2)
    {
        int sum=0;
        sum= num1+num2 ;
        return sum ;
    }
}

وهي أني جعلت sum عامة لكل الطرق

تم تعديل هذه المشاركة بواسطة alQassam في 9 مارس 2011 في 11:29

#8

السلام عليكم ,

بما انك عرفت المتغير sum , تعريف عام .. ما يحتاج تعيد تعريفه مرة أخرى داخل الدوال الفرعية .

public class MethodCall {
 static int sum = 0;
    public  static   void main(String args[])
    {
        int x = 5, y = 6, z = 0, s = 0;
        sum1(10, 5);
        sum1(x, y);
        s=sum2(5, 6);
        System.out.println("sum = " +  sum2(5, 6));
        z = 12 + 3 * sum2(x, 10);
        sum1(sum2(3, 4), 5);
    }
    static void sum1(int num1,int num2)
    {
        sum= num1+num2 ;
        System.out.println("sum = "+ sum);
    }
    static int sum2(int num1,int num2)
    {
        sum= num1+num2 ;
        return sum ;
    }

}

اصبح المتغير sum يستخدم في كل دالة . وايضًا تتغير قيمته عند كل إستدعاء ..

بالتوفيق .

سبحآن الله وبحمده .. سبحآن الله العظيم .. ,

#9

الـ sum هنا لا تعتبر عامه لانك قومت باعاده تعريفها بنفس الاسم مره اخرى داخل كل داله

يعنى انت عرفتها هكذا

static int sum=0;

وبعدها قومت بتعريف نفس المتغير داخل كل داله

هكذا

int sum=0;

يمكنك ازاله اعاده التعريف وهكذا تكون عامه لكل الدوال

بالتوفيق

معذره كنت اكتب والاخت اشراقه تكتب ( حيث اننى فاتح الصفحه من فتره )

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 9 مارس 2011 في 13:50

Software Developer
Mahmoudkelany.com


 

#10

اشراقة فجر ومحمود

نعم نعم صحيح كلامكم

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

اشكركم جدا

#11

يغلق الموضوع لتعدد الأسئلة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…