القائمة الرئيسية

الصفحات

تعلم البرمجه تعلم لغه البرمجه Javaالدرس الثاني 2


لم البرمجه من الصفر حتى الختراف
تعلم البرمجه  تعلم لغه البرمجه الجافا الدرس الثاني 2



Java
أول برنامج لك في جافا

إنشاء أول برنامج في جافا
سنقوم الآن بإنشاء برنامج بسيط مهمته فقط طباعة الجملة Welcome to java world

في المثال التالي قمنا بتسمية البرنامج MyFirstApplication و إستخدمنا الأمر System.out.println() لطباعة الجملة التي نريد عرضها.

مثال
HelloWorld.java
package helloworld;

public class HelloWorld {

    public static void main(String[] args) {

        // هنا قمنا بعرض الجملة
        System.out.println("Welcome to java world");

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

Welcome to java world


مبادئ العرض الأساسية
عليك مراعاة المبادئ التالية عند استخدام دوال الطباعة.

لعرض رقم, ضعه كما هو في دالة الطباعة.
لعرض قيمة متغير, ضعه كما هو في دالة الطباعة.
لعرض حرف أو كلمة أو نص, يجب وضعه بين " "


معلومة تقنية
ملف الجافا الذي يحتوي على الكلاس HelloWorld يجب أن يكون من نفس الإسم و يكون إمتداده .java
أي يجب أن يكون إسمه HelloWorld.java

إذاً ملفات المشروع السابق يجب أن تكون مرتبة كما في الصورة التالية.



ملاحظة: يمكنك تغيير إسم المجلد الذي توضع فيه ملفات الجافا أثناء إنشاء المشروع, أو بعد إنشائه.
أي يمكنك وضع الإسم الذي تريده للـ package

مفهوم الـ Concatenation
Concatenation تعني سلسلة باللغة العربية. برمجياً تعني دمج عدة أشياء مع بعضها سواء كانت نصوص أو أرقام و جعلها تبدو شيئاً واحداً.

هنا قمنا بإنشاء برنامج يحتوي على أمر طباعة واحد, في هذا الأمر قمنا بدمج ثلاث كلمات و رقم, و عرضناهم مع بعضها كجملة واحدة.

مثال
Concatenation.java
package concatenation;

public class Concatenation {

    public static void main(String[] args) {

        // هنا قمنا بدمج ثلاث كلمات و رقم, و عرضناهم مع بعضها كجملة واحدة
        System.out.println("Welcome " + "to " + "java " + 101);

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

Welcome to java 101
دوال العرض
في جافا يوجد ثلاث دوال يمكنك استخدامهم للطباعة, ذكرناهم في الجدول التالي.

الدالة مع تعريفها
1
System.out.print()
دالة تستخدم لعرض أي شيء نضعه في داخلها سواء نص, رقم أو قيمة متغير.
2
System.out.println()
تستخدم أيضاً لعرض أي شيء نضعه في داخلها سواء نص, رقم أو قيمة متغير.
الفرق بينها و بين الدالة السابقة أنها تعرض أي شيء نطبعه بعدها على سطر جديد.
3
System.out.printf()
تستخدم أيضاً لعرض أي شيء نضعه في داخلها سواء نص, رقم أو قيمة متغير.
فكرة هذه الدالة تختلف عن الدالتين السابقتين, و استخدامها مختلف أيضاً. تم تصميمها لتحقيق مبدأ الـ Concatenation بطريقة مختلفة فقط.
هنا كل شيء تريد عرضه عليك حجز مكان له.
عند عرض عدد صحيح, أي نوعه int, إستخدم الرمز %d لتحجز مكان له في دالة العرض.
عند عرض عدد بفاصلة عشرية, أي نوعه float, إستخدم الرمز %f لتحجز مكان له في دالة العرض.
عند عرض نص عادي String, إستخدم الرمز %s لتحجز مكان له في دالة العرض.

ملاحظة: لا تقلق أبداً في حال لم تفهم الدالة System.out.printf() لأننا أصلاً لم نشرح في هذا الدرس أنواع البيانات int, float و String التي ذكرناها في الجدول, لكننا حاولنا شرحها بتفصيل في الأمثلة.

أمثلة شاملة حول دوال العرض
في المثال التالي قمنا بعرض ثلاث أشياء باستخدام الدالة print()

المثال الأول
PrintDemo.java
package print_methods_examples;

public class PrintDemo {

    public static void main(String[] args) {

        // هنا قمنا بعرض نص
        System.out.print("Welcome to java world");

        // هنا قمنا بعرض رقم
        System.out.print(1000);

        // بعدها قمنا بعرض قيمته x هنا قمنا بتعريف متغير إسمه
        int x = 123;
        System.out.print(x);

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

Welcome to java world1000123
إذاً الدالة print() تعرض أي شيء نضعه فيها.


هنا قمنا بكتابة نفس البرنامج السابق, لكننا استخدمنا الدالة println() بدلاً من الدالة print()

المثال الثاني
PrintlnDemo.java
package print_methods_examples;

public class PrintlnDemo {

    public static void main(String[] args) {

        // هنا قمنا بعرض نص
        System.out.println("Welcome to java world");

        // هنا قمنا بعرض رقم
        System.out.println(1000);

        // بعدها قمنا بعرض قيمته x هنا قمنا بتعريف متغير إسمه
        int x = 123;
        System.out.println(x);

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

Welcome to java world
1000
123
إذاً الدالة println() تعرض أي شيء نضعه فيها, بالإضافة إلى ذلك تجعل أي شيء نعرضه بعدها ينزل على سطر جديد.


في المثال التالي قمنا بدمج النص الموجود في الدالة printf() مع رقم.
إنتبه: يجب وضع فاصلة قبل كل متغير أو قيمة سيتم إستبدالها.

المثال الثالث
PrintfDemo.java
package print_methods_examples;

public class PrintfDemo {

    public static void main(String[] args) {

        // 10 قيمته x هنا قمنا بتعريف متغير إسمه
        int x = 10;

        // بعدها سيتم عرض كامل محتوى دالة الطباعة %d مكان الـ x هنا سيتم وضع قيمة المتغير
        System.out.printf("The value of x is: %d", x);

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

The value of x is: 10

في المثال التالي قمنا بدمج النص الموجود في الدالة printf() مع رقمين, الأول نوعه int و الثاني نوعه float
تذكر: يجب وضع فاصلة قبل كل متغير أو قيمة سيتم إستبدالها.

المثال الثالث
PrintfDemo.java
package print_methods_examples;

public class PrintfDemo {

    public static void main(String[] args) {

        // 10 قيمته x هنا قمنا بتعريف متغير إسمه
        int x = 10;

        // 10.55 قيمته y هنا قمنا بتعريف متغير إسمه
        float y = 10.55f;

        // بعدها سيتم عرض كامل محتوى دالة الطباعة %f مكان الـ y و قيمة المتغير %d مكان الـ x هنا سيتم وضع قيمة المتغير
        System.out.printf("x = %d   and   y = %f", x, y);

    }

}

•سنحصل على النتيجة التالية عند التشغيل.

x = 10   and   y = 10.550000


Java
أنواع البيانات في جافا



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


البيانات في جافا نوعين:

Primitive Data Types و تعني أنواع البيانات البدائية.
Reference/Object Data Types و تعني أنواع البيانات المرجعية.
أنواع البيانات البدائية
هناك ثمانية أنواع بدائية في جافا و هي:
byte - short - int - long - float - double - boolean - char


النوع byte
هذا النوع يمثل عدد صحيح يتألف من 8-bit
أقل قيمة يمكن تخزينها فيه هي ( -2^7 ) و هذا يساوي -128
أكثر قيمة يمكن تخزينها فيه هي ( 2^7 - 1 ) و هذا يساوي +127
إذا لم نضع أي قيمة, توضع القيمة 0 كقيمة إفتراضية.
النوع byte يستخدم لتخزين عدد صغير الحجم لا يحتوي على فاصلة عشرية, أي لتخزين عدد صحيح.

مثال
byte a = 123;
byte b = -70;


النوع short
هذا النوع يمثل عدد صحيح يتألف من 16-bit
أقل قيمة يمكن تخزينها فيه هي ( -2^15 ) و هذا يساوي -32,768
أكثر قيمة يمكن تخزينها فيه هي( 2^15 - 1 ) و هذا يساوي +32,767
إذا لم نضع أي قيمة, توضع القيمة 0 كقيمة إفتراضية.
النوع short يستخدم لتخزين عدد متوسط الحجم لا يحتوي على فاصلة عشرية, أي لتخزين عدد صحيح.

مثال
short a = 12345;
short b = -7000;


النوع int
هذا النوع يمثل عدد صحيح يتألف من 32-bit
أقل قيمة يمكن تخزينها فيه هي ( -2^31 ) و هذا يساوي -2,147,483,647
أكثر قيمة يمكن تخزينها فيه هي ( 2^31 - 1 ) و هذا يساوي +2,147,483,646
إذا لم نضع أي قيمة, توضع القيمة 0 كقيمة إفتراضية.
النوع int يستخدم لتخزين عدد كبير لا يحتوي على فاصلة عشرية, أي لتخزين عدد صحيح.

مثال
int a = 1234567;
int b = -700000;


النوع long
هذا النوع يمثل عدد صحيح يتألف من 64-bit
أقل قيمة يمكن تخزينها فيه هي ( -2^63 ) و هذا يعني -9,223,372,036,854,775,808
أكثر قيمة يمكن تخزينها فيه هي ( 2^63 - 1 ) و هذا يعني +9,223,372,036,854,775,807
إذا لم نضع أي قيمة, توضع القيمة 0L كقيمة إفتراضية.
النوع long يستخدم لتخزين عدد كبير جداً لا يحتوي على فاصلة عشرية, أي لتخزين عدد صحيح حجمه كبير جداً.

مثال
long a = 1234567L;
long b = -700000L;


النوع float
هذا النوع يمثل عدد بفاصلة عشرية يتألف من 32-bit
أقل و أكبر قيمة يمكن تخزينها فيه تحدد بنظام ( single-precision 32-bit IEEE 754 floating point )
إذا لم نضع أي قيمة, توضع القيمة 0.0f كقيمة إفتراضية.
النوع float يستخدم لتخزين عدد كبير بفاصلة عشرية.

مثال
float a = 12.05f;
float b = -8.123f;


النوع double
هذا النوع يمثل عدد بفاصلة عشرية يتألف من 64-bit
أقل و أكبر قيمة يمكن تخزينها فيه تحدد بنظام ( double-precision 64-bit IEEE 754 floating point )
إذا لم نضع أي قيمة, توضع القيمة 0.0d كقيمة إفتراضية.
النوع double يستخدم لتخزين عدد كبير جداً بفاصلة عشرية.

مثال
double a = 50.98794d;
double b = -100.1d;


النوع boolean
هذا النوع يمثل معلومة تتألف من 1-bit
يستطيع أن يحتوي إما على القيمة true أو على القيمة false
إذا لم نضع أي قيمة, توضع القيمة false كقيمة إفتراضية.
النوع boolean يستخدم في الشروط.

مثال
boolean check = true;
boolean found = false;


النوع char
هذا النوع يمثل معلومة تتألف من 16-bit
أقل قيمة يمكن تخزينها فيه هي 0
أكثر قيمة يمكن تخزينها فيه هي 65,535
و يستطيع أن يحتوي على أي حرف أو رمز كقيمة.
إذا لم نضع أي قيمة, يوضع اليونيكود '\u0000' كقيمة إفتراضية. و هذا اليونيكود يمثل أصغر قيمة يمكن وضعها في النوع char.
النوع char يستخدم لتخزين حرف واحد, و يستخدم في الشروط.

مثال
char a = 0;
char b = 1234;
char letterA = 'A';
أنواع البيانات المرجعية
أي نوع أصله كائن من كلاس يعتبر من البيانات المرجعية.
أي نوع نضع الكلمة new عندما نقوم بتعريفه, يعتبر من البيانات المرجعية.
جميع أنواع المصفوفات في جافا تعتبر من البيانات المرجعية.
إذا لم نضع أي قيمة, توضع القيمة null كقيمة إفتراضية, و التي تعني فارغ.

أمثلة
String website   = "www.harmash.com";
String[] names   = new String[10];
int[] numbers    = new int[100];
float[] notes    = new float[5];
char[] alphabets = new char[26];
Scanner input    = new Scanner(System.in);

في الدرس التالي ستتعلم جميع الأساليب التي تستطيع اتباعها لتعريف المتغيرات.

Java
المتغيرات في جافا


أساليب تعريف المتغيرات
في البداية أنواع المتغيرات هي نفسها أنواع البيانات البدائية التي ذكرناها في الدرس السابق و هي:
byte - short - int - long - float - double - boolean - char

الآن, من خلال الأمثلة سنعلمك عدة أساليب يمكنك إتباعها لتعريف المتغيرات و تصغير حجم الكود.


المثال الأول
•في حال كنت تريد تعريف عدة متغيرات من نفس النوع بدون قيم.

int a;
int b;
int c;
•تستطيع تعريفهم هكذا.

int a, b, c;


المثال الثاني
•في حال كنت تريد تعريف عدة متغيرات من نفس النوع و إعطائهم قيم مباشرةً عند إنشائهم.

int a = 10;
int b = 20;
int c = 30;
•تستطيع تعريفهم هكذا.

int a=10, b=20, c=30;


المثال الثالث
•في حال كنت تريد تعريف عدة متغيرات من نفس النوع و لكن طبيعتهم مختلفة و بدون قيم.

int a;
int b[];
int c[][];
•تستطيع تعريفهم هكذا.

int a, b[], c[][];


المثال الرابع
تستطيع تعريف المصفوفة بعدة طرق.

•الطريقة الأولى

int[] a;
•الطريقة الثانية

int []a;
•الطريقة الثالثة

int a[];

•الشيء الذي علينا الإنتباه له هو أنك إذا كنت تريد تعريف مصفوفة و متغير من نفس النوع, لا تستخدم الطريقة الأولى.
•السبب أنك إذا كتبت int[] سيتم إعتبار كل إسم تضعه بعد الفاصلة يمثل مصفوفة و ليس متغير عادي.

int[] a, b, c;
•إذاً هنا a و b و c جميعهم يمثلون مصفوفات ذات بعد واحد.


ملاحظة
نفس المبدأ ينطبق على المصفوفات الأكثر من بعد واحد.

ملاحظات مهمة حول المتغيرات
ركز جيداً على المفاهيم التالية لكي تعرف كيف تصلح الأخطاء التي قد تتعرض لها عند كتابة الكود.

عملية تعريف متغير بدون إعطائه قيمة تسمى Declaration.
عملية إعطاء قيمة لمتغير تم إنشاؤه سابقاً تسمى Assigning.
عملية تعريف متغير و إعطائه قيمة مباشرةً عند إنشائه تسمى Initialisation.

أمثلة
•هنا سنفعل declare لمتغير جديد, أي سنقوم بتعريف متغير جديد بدون إعطائه قيمة أولية.

int a;
•هنا سنفعل assign لمتغير, أي سنقوم بإعطاء قيمة لمتغير كان في الأصل موجوداً.

a = 10;
•هنا سنفعل initialise لمتغير جديد, أي سنقوم بإنشاء متغير جديد و إعطائه قيمة أولية.

double Sum = 0;
إرشادات مهمة لمعالجة الأخطاء
بعد أن فهمت المصطلحات الأساسية الخاصة بالمتغيرات, سنقوم الآن بإعطائك بعض الأمثلة التي تحتوي على أخطاء مقصودة لتعليمك كيف تعرف طبيعة الخطأ و بالتالي كيف تصلح الخطأ بنفسك.

المثال الأول
•هنا سنفعل declare لمتغير جديد, ثم سنقوم بعرض قيمته و هو فارغ.

int a;

System.out.println(a);
•لاحظ الصورة التالية لتفهم كيف يقوم برنامج الـ Netbeans بإبلاغك بالخطأ قبل أن تقوم بتشغيل البرنامج.


•إذاً المشكلة الوحيدة هنا أننا حاولنا عرض محتوى متغير فارغ.
•و البرنامج بكل بساطة أخبرنا أن المشكلة هنا سببها المتغير a لأننا لم نفعل له initialise, و وضع تحته خط أحمر للتنبيه, لأنه إذا بقي هذا الخط ظاهراً و قمنا بتشغيل البرنامج, فسيظهر لنا خطأ, و يخبرنا في أي سطر وجده و ما الذي سببه.

•إذاً لإصلاح هذا الخطأ علينا فقط إعطاء المتغير a قيمة قبل أن نعرض قيمته.
•لا تقلق من الجملة Variable is not used لأنها تعني فقط أننا حتى الآن لم نستخدم هذا المتغير في شيء مفيد, أي يمكننا الإستغناء عنه.



المثال الثاني
•أحياناً ينسى المبرمج و يستخدم مباشرةً إسم متغير دون أن يكون قد قام بتعريف هذا المتغير, أي نسيَ أن يفعل له Declare.
هنا سنقوم بعرض قيمة متغير غير موجود إطلاقاً.
System.out.println(a);
•في هذا الحالة سيظهر لك هذه الرسالة إذا وضعت الماوس فوق اللمبة.


•إذاً المشكلة هنا أنه لم يعرف ما هو ال a, و هذا يعني أنك نسيت تعريف المتغير a قبل أن تضعه في الدالة.

في الدرس التالي سنتعلم كيف تعرف دوال جديدة.



Java
الدوال في جافا


مفهوم الدوال
دالة: تعني Method او Function في اللغة الإنجليزية, و هي عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم باستدعائها.
كما أن جافا تحتوي على مجموعة كبيرة جداً من الدوال الجاهزة التي يمكنك إستعمالها مباشرةً و التي سنتعرف إليها في دروس لاحقة.


أمثلة حول الدوال الجاهزة

دوال الطباعة هي من الدوال الجاهزة في لغة جافا.

System.out.print();
System.out.println();
System.out.printf();
بناء الدوال
عند تعريف أي دالة في جافا عليك إتباع الشكل التالي:

modifier returnType methodName(Parameters List){
      // Method Body
}
• modifier: يحدد طريقة الوصول للدالة, ستفهم معنى هذه الكلمة في دروس لاحقة.
• returnType: يحدد النوع الذي سترجعه الدالة عندما تنتهي أو إذا كانت لن ترجع أي قيمة.
• methodName: يمثل الإسم الذي نعطيه للدالة, و الذي من خلاله يمكننا استدعاءها.
• Parameters List: المقصود بها الباراميترات ( وضع الباراميترات إختياري ).
• Method Body: تعني جسم الدالة, و المقصود بها الأوامر التي نضعها في الدالة.


الـ returnType في الدالة يمكن أن يكون أي نوع من أنواع البيانات الموجودة في جافا (int, double, boolean, String إلخ.. ).
و يمكن وضع إسم لكلاس معين, و هنا يكون القصد أن الدالة ترجع كائن من هذا الكلاس ( لا تقلق ستتعلم هذا في دروس لاحقة ).

في حال كانت الدالة لا ترجع أي قيمة, يجب وضع الكلمة void مكان الكلمة returnType.

أمثلة حول تعريف دوال جديدة
في المثال التالي قمنا بتعريف دالة إسمها welcomeMessage, نوعها void, و تحتوي على أمر طباعة فقط.
بعدها قمنا باستدعائها في الدالة main() حتى يتم تنفيذ أمر الطباعة الموضوعة فيها.

المثال الأول
package methods;

public class Test {

    // عند إستدعاءها تطبع جملة للترحيب .welcomeMessage هنا قمنا بتعريف دالة إسمها
    public static void welcomeMessage() {
        System.out.println("Welcome to harmash.com");
    }


    public static void main(String[] args) {
        // لطباعة جملة الترحيب الموضوعة فيها welcomeMessage هنا قمنا باستدعاء الدالة
        welcomeMessage();
    }

}
•سنحصل على النتيجة التالية عند التشغيل.

Welcome to harmash.com

في المثال التالي قمنا بتعريف دالة إسمها sum, عند إستدعاءها نعطيها عددين فترجع ناتج جمع هذين العددين.
بعدها قمنا باستدعائها في الدالة main().

المثال الثاني
package methods;

public class Test {

    // عند إستدعاءها نعطيها عددين فترجع ناتج جمع هذين العددين sum هنا قمنا بتعريف دالة إسمها
    public static int sum(int a, int b) {
        return a+b;
    }


    public static void main(String[] args) {
        // لحساب ناتج جمع العددين 5 و 10 sum هنا قمنا باستدعاء الدالة
        System.out.println( "5 + 10 = " + sum(10, 5) );
    }

}
•سنحصل على النتيجة التالية عند التشغيل.

5 + 10 = 15

في الدرس التالي سنتعرف على جميع العوامل الموجودة في جافا.

تعليقات