GagorAcadmey

تعلم برمجة تطبيقات الاندرويد من الصفر حتي الاحتراف

آخر المواضيع

الثلاثاء، 21 أغسطس 2018

الارقام في جافا

مفهوم الأرقام

أرقام: تعني numbers في اللغة الإنجليزية, و نحن عادةً ما نستخدم أنواع البيانات البدائية ( أي الـprimitive ) لتخزين الأرقام.
أي لتعريف متغير بهدف تخزين رقم, نعرفه كـ int أو float أو double إلخ..

مثال


int  a = 10;
short b = 50;
float c = 10.5f;
double d = 37.002;

أحياناً يضطر المبرمج أن يستخدم الكائن للنوع و ليس الشكل البدائي للنوع.
من أجل ذلك, جافا تقدم لنا wrapper classes.

ما معنى wrapper classes؟
كل نوع بيانات بدائي في جافا له كلاس يمثله, و يكون من نفس إسمه, أمثلة:
  • النوع int يمكن تمثيله بالكلاس Integer.
  • النوع float يمكن تمثيله بالكلاس Float.
  • النوع byte يمكن تمثيله بالكلاس Byte.
  • النوع double يمكن تمثيله بالكلاس Double.
  • النوع short يمكن تمثيله بالكلاس Short.
  • النوع long يمكن تمثيله بالكلاس Long.

  • إذاً الـwrapper classes هم كل الكلاسات التي تمثل أنواع البيانات البدائية.
    هذه الصورة تظهر لك جميع الكلاسات التي تمثل الأرقام.


    ما هي فائدة الـ wrapper classes؟
    فكرة الـ wrapper classes جعلنا قادرين على معاملة هذه الأنواع ككائنات و بناء دوال خاصة لهم و لكن المبرمج العادي قد لا يتعامل بتاتاً مع الـ wrapper classes لأنه نادراً ما يحتاج لهم.

    مصطلحات تقنية

  • عملية تحويل النوع البدائي لكائن من نفس النوع تسمى boxing.
  • عملية إرجاع قيمة الكائن إلى النوع البدائي لهذا الكائن تسمى unboxing.
  • مثال

    Integer a = 10;  // int و ليس Integer هنا ستكون a لأن نوع القيمة التي خزنها المتغير boxing هذه العملية تسمى

    int b = a + 15;  // 15 قبل إضافتها على int لأنه سيتم تحويل قيمته للنوع a بالنسبة للمتغير unboxing هذه العملية تسمى

    شرح الكود

    1. Integer a = 10  // يمثل كائن نوعه Integer قيمته 10.
    2. int b = a + 15 // هنا سيتم تحويل قيمة الكائن a إلى النوع int ثم إضافة 15 عليها و تخزين الناتج في المتغير b

    دوال الكلاس Math

    الكلاس Math هو كلاس جاهز في جافا, يحتوي على دوال تتعلق بالرياضيات, ذكرنا بعضها في هذا الجدول.
    إسم الدالة تعريفها
    abs() ترجع القيمة المطلقة للعدد الذي نضعه لها كـ argument.
    ceil() ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نضعه لها كـ argument.
    floor() ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نضعه لها كـ argument.
    rint() ترجع أقرب عدد صحيح للعدد الذي نضعه لها كـ argument.
    round() ترجع أقرب عدد صحيح للعدد الذي نضعه لها كـ argument.
    max() ترجع العدد الأكبر بين العددين الذين نضعهما لها كـ arguments.
    min() ترجع العدد الأصغر بين العددين الذين نضعهما لها كـ arguments.
    exp() ترجع قيمة الـ exponential للعدد الذي نضعه لها كـ argument.
    log() ترجع قيمة الـ logarithm للعدد الذي نضعه لها كـ argument.
    pow() ترجع قيمة الـ argument الأول مضاعف بقيمة الـ argument الثاني.
    sqrt() ترجع قيمة الـ square root للعدد الذي نضعه لها كـ argument.
    sin() ترجع قيمة الـ sine للعدد الذي نضعه لها كـ argument.
    cos() ترجع قيمة الـ cosine للعدد الذي نضعه لها كـ argument.
    tan() ترجع قيمة الـ tangent للعدد الذي نضعه لها كـ argument.
    asin() ترجع قيمة الـ arcsine للعدد الذي نضعه لها كـ argument.
    acos() ترجع قيمة الـ arccosine للعدد الذي نضعه لها كـ argument.
    atan() ترجع قيمة الـ arctangent للعدد الذي نضعه لها كـ argument.
    toDegrees() تحول قيمة العدد الذي نضعه لها كـ argument لـ Degrees.
    toRadians() تحول قيمة العدد الذي نضعه لها كـ argument لـ Radians.
    random() ترجع عدد عشوائي بين 0 و 1.

    الامثلة التي توضح كيفية استخدام الدوال الرياضية

    public class Test {
      
        public static void main(String[] args) {
            int a=10;
            int b=20;
            double c = 20.955;
            System.out.println("abs of (-100) = "+ Math.abs(-100));
            System.out.println("ceil of (10.349888) = "+ Math.ceil(c));
            System.out.println("floor(10.349888) = "+ Math.floor(c));
            System.out.println("rint of (20.698) = "+ Math.rint(20.698));
            System.out.println("round of (20.298) = "+ Math.round(20.298));
            System.out.println("max number(10,20) = "+ Math.max(a,b));
            System.out.println("min number(10,20) = "+ Math.min(a,b));
            System.out.println("exponential(15) = "+ Math.exp(15));
            System.out.println("logarithm(10) = "+ Math.log(a));
            System.out.println("pow(2,2) = "+ Math.pow(2,2));
            System.out.println("square root = " +Math.sqrt(36));
            System.out.println("sin(30) = "+ Math.sin(30));
            System.out.println("cosin(30) = " +Math.cos(30));
            System.out.println("tangent(30) = "+ Math.tan(30));
            System.out.println("arcsine(90) = "+ Math.asin(90));
            System.out.println("arccosine(0.2) = "+ Math.acos(0.2));
            System.out.println("arctangent(30) = "+ Math.atan(30));
            System.out.println("Degree of (60) = "+ Math.toDegrees(60));
            System.out.println("the Radians(30) = "+ Math.toRadians(30));
            System.out.println("random numbers = "+ Math.random());
        }
     
    }
    
    نتيجة التنفيذ
    abs of (-100) = 100
    ceil of (10.349888) = 21.0
    floor(10.349888) = 20.0
    rint of (20.698) = 21.0
    round of (20.298) = 20
    max number(10,20) = 20
    min number(10,20) = 10
    exponential(15) = 3269017.3724721107
    logarithm(10) = 2.302585092994046
    pow(2,2) = 4.0
    square root = 6.0
    sin(30) = -0.9880316240928618
    cosin(30) = 0.15425144988758405
    tangent(30) = -6.405331196646276
    arcsine(90) = NaN
    arccosine(0.2) = 1.369438406004566
    arctangent(30) = 1.5374753309166493
    Degree of (60) = 3437.7467707849396
    the Radians(30) = 0.5235987755982988
    random numbers = 0.4907707032954094
    

    ثوابت الكلاس Math

    الكلاس Math يحتوي أيضاً على الثوابت التالية التي تتعلق بالرياضيات.
    إسم الثابت تعريفها
    E يحتوي على قيمة الـ Exponential.
    PI يحتوي على قيمة الـ PI.

    الامــثلة التي توضح الدالتين اعلا

    public class MyClass {
     public static void main(String[] args) {
       // PI هنا قمنا بعرض قيمة الثابت
            System.out.println( "PI = " + Math.PI );
            
            // E هنا قمنا بعرض قيمة الثابت        
            System.out.println( "E = " + Math.E );
     }
    }
    
    نتيــجة التنفيذ
    PI = 3.141592653589793
    E = 2.718281828459045
    

    دوال الأرقام التي تستخدم مع كائنات الـ wrapper classes

    ذكرنا بعض الدوال التي تستخدم مع الـ wrapper classes في هذا الجدول.
    إسم الدالة تعريفها
    xxxValue() تحول قيمة الكائن ( الذي يمثل رقم ) لقيمة بدائية تحددها الدالة التي تم إستدعاءها على الكائن و ترجعها.
    compareTo() تقارن قيمة الكائن ( الذي يمثل رقم ) مع القيمة التي نضعها لها كـ argument.
    equals() تحدد إذا كانت قيمة الكائن ( الذي يمثل رقم ) تساوي القيمة التي نضعها لها كـ argument.
    valueOf() ترجع قيمة الـ argument ككائن نوعه Integer
    toString() ترجع قيمة الكائن ( الذي يمثل رقم ) كـ String
    parseXxx() تستخدم للحصول على القيمة البدائية لقيمة String

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

    إرسال تعليق

    ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

    صفحتنا علي الفيسبوك

    التسميات

    المتواجدين حاليا