Difference between revisions 50660 and 55488 on arwikiversity

التركيب النحوي للغة جافا

سنبدأ أولاً بعرض برنامج يُعد نقطة انطلاق، لدراسة أي لغة برمجة، وسنتعرف على خطواته بالتفصيل. يطلق على هذا البرنامج، اسم HelloWorld ، وتتمثل مهمته الوحيد في طباعة العبارة Hello Worlds.

اكتب النص التالي باستخدام أي محرر نصوص، وأقترح عليك استخدام TextPad، ثم أطلق الاسم HelloWorld.java، على الملف..لاحظ وجود حروف الكبيرة في الاسم، وهو أمر مفضل. فإذا أردنا مثلاً، تسمية ملف باسم myownjava.java، فيفضل أن نسميه بالشكل التالي: MyOwnJava، حيث نبدأ كل كلمة بحرف كبير. أما امتداد الملف فيكون java، بالأحرف الصغيرة.

نص برنامج HelloWorld.java :
<source lang="java">
class HelloWorld {

     public static void main (String args[]) {

     System.out.println(“Hello World”);

     }

}
</source>
شرح عبارات البرنامج

يمكن اعتبار عبارة class HelloWorld، في السطر الأول، كتعريف باسم البرنامج، إذ يتعرف المترجم (compiler) على اسم البرنامج من خلالها، وليس من اسم الملف. يتضمن النص الأصلي لبرامج جافا، غالباً، عدداً من الفئات (classes)، يتولى "المترجم"، ترجمتها وتوزيعها إلى عدد من ملفات الفئات (.class files)، لكل منها اسم، هو اسم الفئة، وامتداد، هو class، وعلينا، لهذا السبب، تسمية ملف جافا باسم الفئة الرئيسية المسؤولة عن تشغيل البرنامج، وهي في مثالنا، HelloWorld. تمتاز الفئة الرئيسية، بأن تشغيلها يمكن أن يتم من خلال سطر الأوامر، بالإضافة إلى إمكانية استدعائها من داخل برنامج جافا آخر، وهو ما يميز لغة جافا.

تحتوي هذه الفئة على طريقة واحدة (method)، فيما يمكن للفئات الأخرى أن تحتوي على عدد لا محدود من الطرق، تعرف هذه الطريقة باسم، الطريقة الرئيسية (main method )، وتعد وسيلة لتشغيل برامج جافا.

تتجسد الطريقة في مثالنا، بالنص التالي:
<source lang="java">

public static void main (String args[]) {

System.out.println(“Hello World”);

}
</source>

من الملاحظ وجود ثلاث عبارات تسبق اسم الطريقة، وهي: public وstatic و void، لكن ماذا تعني كل منها؟

1 . تعني عبارة public، أن ، الطريقة main عامة، ويمكن استدعائها من أي برنامج خارجي.

2 . تعني عبارة static، أن الطريقة main تستدعى، دائماً، بدون ربطها بكائن (object).

(contracted; show full)

الثاني، هو التعليق على نص البرنامج، حيث توفر جافا ثلاث طرق لذلك: الأولى، أن نبدأ التعليق بالرمزين //، فيصبح كل ما يليهما غير قابل للترجمة، حتى نهاية السطر. الثانية، بالرمزين */، ثم ننتهي بالرمزين /*، ويعتبر كل ما بينهما، تعليقاً، لا يتناوله مترجم جافا، حتى لو امتد عدة سطور. الثالثة، بالرموز **/، وننهيه بالرمزين /*، وتستخدم هذه الطريقة لتحديد التعليقات التي نريدها أن توثق.

مثال:

<source lang="java">

// This is the Hello World program written in Java

class HelloWorld {

public static void main( String arg[]) {

/* now print the line

no need to do any thing else */

/** this comments is to be documented

it can be multiple lines

we will end it but putting */

system.out .println(“Hello World”);

}

}
</source>
البيانات والمتغيرات

لا تضم فئة جافا، طرقاً، فقط، بل بيانات ومتغيرات. لنطور برنامجنا قليلاً، وذلك بإدخال بعض المتغيرات عليه:
<source lang="java">

// This is the Hello World program … My own version

class HelloMh.Freak {

public static void main (String args[]) {

// you can freely change Mh.Freak by your name

String name = “Mh.Freak”;

/* now let us say hello*/

System.out.print(“Hello “);

System.out.println(name);

}

}
</source>
يعرض هذا البرنامج، على الشاشة، كلمةHello متبوعة باسم الشخص الذي حددناه بمتغير ( (variable، أطلقنا عليه اسم name، وأعطينا هذا المتغير قيمة ابتدائية، هي "Mh.Freak". استخدمنا طريقتين، هما System.out.print، وsystem.out.println. تعرض الأولى كلمةHello ، وتقف المشيرة بعد الكلمة المباشرة، وتعرض الثانية قيمة المتغير name، وهي في هذه الحالة Mh.Freak ، ثم تنقل المشيرة إلى السطر التالي.

متغيرات سطر الأوامر

لم يصبح برنامجنا،HelloWorld ، عاماً، حتى الآن. ولكي يصبح كذلك، يجب أن يتمكن من طباعة كلمة Hello، لأي اسم كان، بدون إجراء أي تعديل على نص البرنامج، وإعادة ترجمته. نستطيع إجراء ذلك باستخدام متغيرات سطر الأوامر، التي تكتب قيمها بجانب عبارة تشغيل البرنامج. مثال:

java HelloWorld command line arguments should be here

تتألف الجملة "command line arguments should be here"، من ستة قيم للمتغيرات، يبدأ عدها من الرقم صفر، أي أن القيمة command، رقمها صفر، وline، رقمها 1.. والقيمة here، رقمها 5.

عندما عرّفنا الطريقة الرئيسية في البرنامج، عرّفنا، أيضاً، متغيراً على هيئة String، وأسميناه arg[]، وهو يوجد على هيئة مصفوفة. عند كتابة كلمات، على سطر الأوامر، بعد أمر تشغيل برنامج جافا، تأخذ متغيرات هذه المصفوفة قيمها، من هذه الكلمات، وتكون في هذا المثال، كما يلي:
<source lang="java">

arg[0] = “command”;

arg[1] = “line”;

arg[2] = “arguments”;

arg[3] = “should”;

arg[4] = “be”;

arg[5] = “here”;
</source>
ويعني هذا أن بإمكاننا إدخال قيم، واستخدامها في برنامج جافا، من خلال موجه سطر الأوامر.

لنطور برنامجنا قليلاً باستخدام متغيرات سطر الأوامر، فيصبح نصه على الشكل التالي:
<source lang="java">

// this is the hello program written in java

/** this line will be documented

this line as well */

class Hello {

public static void main(String args[]) {

// now let us say hello

System.out.print(“Hello “);

/* let us print the name of the person by print the first word entered at the command line */

System.out.println(args[0]);

}

}
</source>
ترجم هذا البرنامج باستخدام مترجم جافا، ثم شغله، بإدخال الأمر: java Hello Mh.Freak، ولاحظ النتيجة.

لقد استغنينا عن المتغير name، الموجود في برنامج HelloMh.Freak، وأصبح برنامجنا هذا عاماً، بشكل أكبر. يمكن أن تكون قيم المتغيرargs[] ، رقماً، أو عبارة، أو كائناً، أو أي نوع آخر، وذلك لأنه على هيئة String .

عليك الآن اختبار برنامجك. يمكنك جعل البرنامج، مثلاً، يعرض على الشاشة، عبارة:

Hello Mh.Freak, your email address is [email protected] ، إذا أدخلت الأمر التالي، عند موجه دوس:

java Hello Mh.Freak [email protected] . لاحظ، أيضاً، ماذا يحدث إذا لم تدخل شيئاً، بل كتبت عند سطر الأوامر java Hello، فقط، وحاول أن تفسر رسالة الخطأ التي ستظهر أمامك.

عبارات الشرط واتخاذ القرارات

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

تحتوي جميع لغات البرمجة على عبارة if. يجب‎‎ استخدام هذه العبارة لفحص القيم المدخلة، وتلافى أخطاء الإدخال. فعلينا، مثلاً، أن نجعل البرنامج يتأكد من إدخال كلمات عند سطر الأوامر، وذلك بمقارنة قيمةargs.length مع الصفر. فإذا كانت أكبر من الصفر، فهذا يعني وجود كلمات لاحقة بأمر تنفيذ برنامج جافا، والعكس صحيح. ويصبح البرنامج بهذا التعديل، على الشكل التالي:
<source lang="java">

// again this is our program helo written in java

class Hello {

public static void main (String args [] ) {

/* now let us say hello */

System.out.print(“Hello “);

if (args.length > 0) {

System.out.println(args[0]);

}

}

}
</source>
ترجم البرنامج ثم شغله، وأدخل قيماً لمتغيرات سطر الأوامر. يمكنك، الآن، إدخال عدة تعديلات على البرنامج. عدّل البرنامج، مثلاً، لينفذ التالي:

يفحص وجود كلمات لاحقة بأمر تنفيذ البرنامج. فإذا وجدها عرض على الشاشة كلمة Hello، وبعدها الكلمات المدخلة (اسم الشخص). أما إذا لم يعثر عليها، فيعرض على الشاشة عبارة تشير إلى عدم وجود الاسم، مثل Sorry you didn’t enter a name at the command line.

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

تعتبر عبارة args.length، بمثابة طريقة من طرق الكائن args، الذي هو على هيئة String. وتعتبر length في الأصل، إحدى طرق الكائنString ، وبما أن args هي على هيئة String ، فإنها ترث جميع خصائص وطرق الكائن الأصلي String . أما الشيء الجديد الآخر، فهو if ، وعبارات المقارنة. تستخدم عدة عبارات للمقارنة في لغة جافا، هي:

== لمقارنة المساواة (يستخدم الرمز = لإعطاء قيمة لمتغير معين).

> و < لمقارنة أكبر، ثم مقارنة أصغر، على التوالي.

>= و <= لمقارنة اكبر أو يساوي، ثم أصغر أو يساوي، على التوالي.

true و false لمقارنة صح أو خطأ، على التوالي.

تستخدم عبارة أخرى للمقارنة، لتفادي الأخطاء التي يمكن أن تحصل عند تنفيذ برنامج معين، وفي حالات أخرى كثيرة، هي try وcatch، سنتناولهما عندما نتحدث عن أخطاء الاستثناءات exception errors .

توجد عبارة تلازم عبارة if، في كثير من الأحيان، هي عبارة else. تتمثل مهمة هذه العبارة، في إعطاء الفرصة لتنفيذ بعض الأوامر في حال عدم تحقق الشرط الموجود في عبارة if . وبالعودة إلى التمرين الذي نصحتك بمحاولة تنفيذه، كان عليك استخدام أكثر من عبارة if واحدة لتحقيق المطلوب. سنستخدم هذه المرة، عبارتي if وelse ، وسنعدل، لهذا السبب، برنامجنا، على الشكل التالي :
<source lang="java">

// Hello program written in java, using if and else

class Hello {

public static void main (String args[]) {

/* Now let’s say Hello J */

System.out.print(“Hello “);

if (args.length > 0) {

System.out.println(args[0]);

}

else {System.out.println(“whoever you are”);

}

}

}
</source>
سيعرض البرنامج على الشاشة عبارة Hello Mh.Freak، إذا أدخلت java Hello Mh.Freak، لتنفيذ البرنامج، فيما سيعرض Hello whoever you are، إذا لم تدخل اسماً بعد java Hello .

يمكنك دمج العبارتين else و if أيضا لعمل المقارنة. عدّل البرنامج كتمرين، كي يتمكن من عرضHello ، لعدة أشخاص. أمر التنفيذ يجب أن يكون:

java Ahlan Mh.Freak Adnan Maher

والنتيجة:

Ahlan Mh.Freak wa adnan wa maher shukran lakom.

بهذا تكون قد كتبت برنامجك الأول بلغة جافا..