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

الدالة الرئيسية و وسائطها

بدأه Game111 في 12 مايو 2011 · 1 رد · 303 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي استفسار حول الدالة الرئيسية و وسائطها , البارامتر لها يكون عادة (String[]args) ما معنى هذا البارامتر ؟؟

الشي الذي يجعلني اسأل انه بعض الاحيان ارى شرط يتعلق بال args[] مثل :

 if (args.length != 1)
		{

			System.exit(1);
		}

ماذا يعني هذا الكود ؟؟؟

#2

هذا البارامتر معناه ان الدالة تستقبل مصفوفة string

فائدته

لنفرض انك قمت باستدعاء البرنامج program من داخل سطر الاوامر command line او كما يسمونه DOS

سوف تقوم بكتابة اسم البرنامج لكي تنفذه

C:\> program

لنقل ان البرنامج يقوم بطباعة نص "Hello" وانت تريد ان تعطي للبرنامج عدد المرات التي سيقوم فيها بطباعة هذه الكلمة

program 5

مثلا سوف يقوم بطباعة البرنامج 5 مرات ، في هذه الحالة الدالة main استقبلت مصفوفه string فيها عنصر واحد فقط "5" يمكن للدالة main ان تستقبل اي عدد من

البرامترز ، اذا كنت قد استخدمت نظام تشغيل لينوكس سوف تلاحظ هذه الظاهرة بشكل كبير عندما تستخدم الterminal وهو شبيه بسطر الاوامر

فمثلا عندما تريد ان تقوم بتنزيل برنامج باستخدام rpm package manager

rpm  -i -h -v

هنا الدالة main للبرنامج rpm تستقبل مصفوفة فيها

args = {"-i", "-h", "-v"}

في المثال المكتوب عندك البرنامج يفحص اذا ما قام المستخدم بارفاق option مع اسم البرنامج فاذا لم يقم المستخدم بارفاق الoption يقوم باغلاق البرنامج ، نفهم من هذا

منطق البرنامج يتطلب اضافة option وحيد.

طبعا ايام لغة C, C++ كانت الدالة main تستقبل مصفوفه و عدد int

main (char ** argv, int argc)

حيث ان المصفوفة الاولي هي مصفوفة string والعدد فيه حجم المصفوفة

في لغة جافا بما ان المصفوفات reference الى objects اذا يمكن اضافة حجم المصفوفة كعنصر داخل المصفوفة لهذا تم استدعاء args.length في المثال المذكور عندك

طبعا في لغة C, C++ لم يكن يشترط ان تستقبل الدالة مصفوفة ولكن جافا فهذا شرط حتمي مالم فإنك تقوم بعمل overloading

ربما يوجد موضوع سابق في المنتدى عن هذا الشيئ ولكني لا ادري فعلا اذا كان هناك موضوع عن هذا الاستفسار

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

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