بسم الله الرحمــــن الرحيم:
السلام عليكم و رحمة الله،من المفاهيم المهمة جدا و التي لابد منها،مفهوم الدوال methods،سنرى في هذا الدرس كيفية إنشاء دالة،و سنعطي أمثلة لدوال ننشئها بأنفسنا و دوال موجودة في حزمات ال java.
ما هي الدالة؟
الدالة يمكن اعتبارها كعلبة سوداء نمرر لها قيما(أو لا نمرر أية قية) فتقوم بعمليات داخلها،فتخرج لنا مخرجات(يمكن أن لا تكون هناك مخرجات).وكتعريف دقيق للدالة ،فهي مجموعة من التعليمات هدفها إنجاز إجراءات معينة.
إذن الدالة كما عرفناها يمكن أن نمرر لها قيما و يمكن العكس كذلك،يمكن أن تكون لها مخرجات،و في هذه الحالة لابد من تحديد نوع المخرجات :اعداد،نص،جدول.... ويمكن أن لا تكون لها مخرجات.لننظر إلى أحد الأمثلة البسيطة:
هذا مثال لدالة سميناها total،يعني أنه يمكننا تسميتها ما نشاء (بطبيعة الحال غير الأسماء المحجوزة ك int,double,String....)افترضنا أن هذه الدالة سيكون لها مخرجات و حددنا نوعها و هو int,كما حددنا كذلك القيم التي سنمررها لها و هي
int aNumber;
الدالة تتوفر على جسد(كل ما يوجد داخل الـــ{ و }) ويضم التعليمات و الاجراءات التي نريد تطبيقها،في مثالنا سنأخذ القيمة التي مررناها للدالة ثم نضيف لها 10 ثم نرجع هذه القيمة(مُخرج) ونستعمل الكلمة المفتاحية return لإرجاع القيمة.
الآن سنرى دالة ليس لها مخرجات،مثلا:
void sayHello(String name){
System.out.println("Hello dear "+name);
}
لو تأملنا كود الدالة،نلاحظ أن ليس لها مخرجات و الدليل أن ليس بها كلمة return ،كذلك اسم الدالة مسبوق بالكلمة void وتعني لاشيئ او فارغ ،بمعنى لا مخرجات.و دالتنا هذه تقوم فقط بطبع الجملة hello dear متبوعا بالقيمة التي مررناها لها.
استدعاء الدالة:
استدعاء الدالة يعني طبعا استخدامها،فليس من المعقول إنشاء دالة دون استخدامها،و السبب الرئيسي في التفكير في الدوال هو أننا قد نكون بحاجة مثلا أن نطبق جزءا من الكود لقيم عديدة،سيقول البعض نعم يكفي نسخ الكود و لصقه عدد مرات القيم التي نريد تطبيقه لها،لكن هل سيكون الكود مفهوما و مقروءا لا أظن.وهنا يأتي دور الدوال.إذن كيف نستدعي الدوال؟وقبل ذلك أين نكتب كود دوالنا؟
نفترض أننا في الكلاس الرئيسية،وسنكتب كود دالة ما،الكلاس الرئيسية كما تعلمون، تحتوي على ما سميناها الدالة الرئيسية،سنكتب دالتنا خارج الدالة الرئيسية ،لكن داخل الكلاس الرئيسية طبعا.هذا مثال:
import java.util.Scanner;
public class ScannerInputExample {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = input.next();
//استدعاء الدالة
sayHello(name);
}
public static void sayHello(String text){
System.out.println("Hello " + text);
}
}
بالنسبة للكلمات المفتاحية static و public لا تلقوا لها بال الآن سنتناولها في موضوع آخر إن شاء الله.
لو تأملنا الكود،سنرى أن الدالة تم تعريفها داخل الكلاس الرئيسية وخارج الدالة الرئيسية main ،وقمنا باستدعائها في جسد الدالة الرئيسية.بطبيعة الحال هذا المثال بسيط جدا،لكن في الحقيقة الدوال تستعمل للقيام بعمليات معقدة وكذلك لتنظيم الكود و لتبسيطه لكي يكون أكثر قابلية للقراءة.
سننتقل إلى مثال آخر يجسد الدور الفعلي للدالة،مثلا نريد دالة نمرر لها قيمتين و يرجع لنا أكبر القيمتين،سنسمي هذه الدالة max :
import java.util.Scanner;
public class ScannerInputExample {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = input.next();
int a = input.nextInt();
int b = input.nextInt();
System.out.println("the max is : "+ max(a, b) );
}
public static int max(int value1, int value2){
int result;
if(value1>=value2){
result = value1 ;
}else{
result =value2;
}
return result;
}
}
تصوروا أننا نريد إنشاء تطبيق نحتاج فيه إلى حساب أكبر قيمتين عددا كبيرا من المرات،لا يمكن تكرار كود حساب أكبر القيمتين عددا كبيرا من المرات،لذلك كان مفهوم الدالة ضروريا.
بعض دوال حزمات الجافا:
تطرقنا سابقا إلى أن String ليس بنوع متغير و إنما هو كلاس (فئة)،وهذه الفئة تحتوي على دوال كثيرة سنرى بعضا منها:
طول سلسلة نصية:
لتحديد طول سلسلة نصية (عدد حروف و رموز هذه السلسلة) نستعمل الدالة()length،و كمثال :
public class StringDemo {
public static void main(String args[]) {
String text = "Hello world";
int len = text.length();
System.out.println( "String Length is : " + len );
}
}
العدد الذي سيرجعه هو 11 ، بمعنى أنه يقوم أيضا باحتساب الفراغات.
دمج سلسلتين نصيتين:
نستعمل الدالة( concat(String ،و هذا هو المثال:
String string1 = "My name is :"; String string2 = "Ahmed"; String result = string1.concat(string2);
النتيجة ستكون جمع السلسلتين في سلسلة واحدة،يمكن الإسغناء عن هذه الدالة وكتابة الكود البديل كما يلي باسعمال "+" :
String result = string1 + string2;
هناك الكثير من الدوال الخاصة بالكلاس String ويمكنكم تفقدها في الجافادوك التي تعتبر من بين المنابع التي لا يمكن لمبرمج جافا الإستغناء عنها،ومن خلالها يمكنكم معرفة جمع كلاسات الجافا الأساسية و دوالها، من هنا تجدون كلاس String و دوالها
تمرين:
سنحاول إنشاء برنامج لحل المعادلة من الدرجة الثانية ax²+bx+c=0 من أجل ذلك:
- أنشؤوا دالة نمرر لها ثلاث قيم float وهي a,b,c وتقوم بإرجاع قيمة من نوع float و هي القيمة b²-4ac و هي مميز المعادلة.
- أنشؤوا دالة نمرر لها قيمة من نوع float و ترجع لنا قيمة من نوع boolean ، true إذا كان العدد موجبا و false إذا كان سالبا.لنسميها مثلا isPositif .
- أتمموا البرنامج بجيث يطلب من المستعمل الأعداد a,b,c و يحل المعادلة السابقة.
بالتوفيق،أتمنى أن تتفاعلوا في التعليقات.دمتم في رعاية الله.







0 commentaires:
Enregistrer un commentaire