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

 

expressions-in-java

6. التعبيرات Expressions في لغة البرمجة جافا

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

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

 

 

 

العمليات الحسابية

العمليات العلائقية

العمليات المنطقية

عمليات الإسناد

عمليات متفرقة

 

أي عملية على لغة البرمجة جافا تتكون من على الأقل عامل واحد ومعامل أو معاملات كثيرة، وهذه القاعدة الأساسية تنطبق على جميع العمليات التي سنراها في هذا الدرس بإذن الله.

مثال على ذلك : 

العدد أو العملية -16, فالإشارة (-) تعتبر عامل والعدد 16 يعتبر معامل، وهذه العملية تتكون من عامل واحد فقط ومعامل : 

 

operator-operand

العملية 16-8+5 :

moreoperands 

1.6 العمليات الحسابية

ومعناها العمليات الرياضية الأربع؛ الجمع، الطرح، الضرب، القسمة، كما يضاف إلى ذلك عامل القيمة المتبقية، الإشارة السالبة والموجبة وعوامل الإضافة. 

 

العمليات الرياضية

العمليات الرياضية في لغة الجافة تخضع لنفس قوانين الرياضيات بدون أي تغيير! فهي في الأصل مستوحاة من هذه المادة، لذلك فأي شخص له دراية ولو جد بسيطة عن الرياضيات سوف يتمكن من التعامل مع هذه العمليات بسلاسة.

لحد الساعة قمنا بما لابأس به من برمجة الأكواد على لغة البرمجة جافا، ورأينا على ما أعتقد في الدروس السابقة ما يكفي للبداية ببرمجة برامج صغيرة، لهذا فاني متأكد أن البرنامج التالي لن يشكل لكم أي صعوبة في فهمه. 

البرنامج التالي يقوم بقراءة عددين a و b، بشرط أن يكون العدد b مخالف للصفر، لماذا ؟ لأننا سوف نطبق العمليات الأربع على هذين العددين وفي عملية القسمة لا يجب على المقام أن يكون مساوياً لصفر.

لنأخد المثال التالي ونقوم بترجمته وتنفيذه على برنامج اكليبس، 


import java.util.*;
public class exec14 {
    /**
     * @author Ayoub El Hobbi
     * @version 23.10.2012
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = 0;
        int b = 0;
        System.out.print("what is the number a : ");
        a = sc.nextInt();
        System.out.print("what is the number b ( not nullable ! ) : ");
        b = sc.nextInt();
        System.out.println("addition : a + b = " +(a+b) );  // الجمع 
        System.out.println("subtraction :  a - b = " +(a-b) );  // الطرح 
        System.out.println("multiplication : a * b = " +(a*b) );  // الضرب 
        System.out.printf( "Division : a / b = " +(a/b) );  // القسمة
        
    }
}

سنحصل على النتيجة التالية : 

 

CapturFiles 1

 

في النتيجة نرى أن العددين الذي تم ادخالهما من طرف المستخدم، العدد a = 12 والعدد b = 6 تم حسابهما في الوظيفة System.out.println، وذلك بإضافة اشارة (+) قبل تنفيذ العملية وذلك لإسناد هذه القيمة ونتيجتها وطباعتها، هكذا : 

+(a+b)

+(a-b)

+(a*b)

+(a/b)

 

كيفية بناء العمليات الحسابية

إستعمال العمليات الحسابية في لغة البرمجة جافا يتم بنفس طريقة استعمالها في مادة الرياضيات! فمثلاً إن أردت إستعمال عملية الجمع في الكود، وكما جاء في المثال فوق فستتم العملية بنفس الشكل الذي تتم عليه في الرياضيات : 

6 + 12 = 18 أو بمتغيرات يقوم بإدخال قيمتها المستخدم كالقيم a و-b .  

 

arithmetic

افترض أن أغلب ما جاء في هذا الجدول معروف، لكن ربما ماهو جديد على الكثير منكم هي العمليات التالية :

-- عامل القيمة المتبقية  : عامل القيمة المتبقية معناه القيمة التي تبقى عند القيام بعملية القسمة، فمثلاً إن قمنا بعملية القسمة لأي عدد فردي على 2 فاننا سنحصل دائماً على 1  كقيمة متبقية 

-- الزيادة قبل : ومعناها زيادة قيمة المتغير بواحد وبعد ذلك طباعة القيمة الجديدة للمتغير ( القيمة + 1 )

-- الزيادة بعد : ومعناها أنه يتم طباعة قيمة المتغير أولاً وبعد ذلك تتم زيادة قيمته ب 1

-- النقصان قبل : إنقاص قيمة المتغير بواحد وبعد ذلك طباعة القيمة الجديدة له ( القيمة - 1 )

-- النقصان بعد : طباعة قيمة المتغير أولاً وبعد ذلك إنقاص قيمته ب 1  

 

مثال عن الزيادة بعد


public class Increment {
    public static void main(String args[]) {
        int a = 0;    // هنا تم تهيئة المتغير بالعدد 0
        System.out.println("a = "+(a++));  //  زيادة واحد للمتغير

        System.out.println("a = "+a);  //  طباعة القيمة الجديدة

        System.out.println("a = "+a++);  // زيادة واحد

        System.out.println("a = "+a);  //  طباعة القيمة الجديدة
    }
}

النتيجة ستكون على االتالي : 

 a = 0
a = 1
a = 1
a = 2

 2.6 العمليات العلائقية 

دور العمليات العلائقية هي المقارنة بين المعاملات، ومن بين هذه العمليات نذكر التساوي أو عدم التساوي، أكبر من وأصغر من وهذه قائمة بكل هذه العمليات :

relational

 

 

3.6 العمليات المنطقية 

 العمليات المنطقية لها دور ربط القيم المنطقية. أمثلة على ذلك :

 واو المنطقية : إن كنا نريد التحقق مثلاً من كون a و b يساويان 4 فيمكن إستعمال الرمز : && بالشكل التالي : a && b = 4

وهناك أيضاً الأو المنطقية وتكتب على الشكل التالي : ||

القائمة التالية بها جميع هذه العمليات :

logical 

4.6 عمليات الإسناد

 عمليات الإسناد هي عمليات، يتم فيها إسناد قيمة متغير لمتغير أخر، إما بإسناد هذه القيمة بشكل التساوي أو باسنادها بالزيادة أو النقصان...

أبسط مثال على ذلك هو مثال الإسناد بالتساوي ( ! : يجب الانتباه أن الإسناد مخالف عن التساوي ). مثلاً إن اردنا إسناد قيمة الحرف a للحرف b فنكتب كالتالي : a = b

هذه إذاً لائحة بهذه العمليات : 

zuweisung

5.6 عمليات متفرقة 

1.5.6 عامل instanceof

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


public class MainClass {
    public static void main(String[] a) {
        String s = "hello";
        if (s instanceof java.lang.String) {
            System.out.println("s is a String!");
        }

        else
            System.out.println("s is not in the class!");
    }
}

نتيجة هذا الكود هي : s هي String .

 

2.5.6 عامل new

كما وسبق أن ذكرنا في درس أنواع البيانات والمتغيرات فإن أنواع البيانات المرجعية يجب أن تحدد ديناميكياً وذلك عن طريق عامل new، هذه البيانات هي الكائنات Ojects والمصفوفات Arrays.

طريقة الإستعمال :


public class MainClass {
    public static void main(String[] a) {
        String s = new String ("i am an String!");
    }
}

قمنا إذاً بتعريف كائن عبارة عن سلسلة من الحروف إسمه s وذلك بإضافة كلمات new كما في المثال. 

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