الخوارزمياتالتعامل مع الباراميترات - التمرين الرابع
المطلوب
أكتب دالة إسمها FindFirst
, عند إستدعائها تعطيها باراميترين, الباراميتر الأول عبارة عن مصفوفة تحتوي على أعداد صحيحة, الباراميتر الثاني عبارة عن عدد صحيح.
مهمة الدالة هي معرفة إذا كان هذا العدد موجود في المصفوفة و لو مرة واحدة فقط.
إذاً ستستمر الدالة بفحص قيم عناصر المصفوفة إلى أن تجد عنصر واحد يحتوي على نفس قيمة المتغير.
في حال وجدت الدالة عنصر في المصفوفة يملك قيمة تساوي قيمة المتغير ستوقف عملية البحث, و ستعرض index أول عنصر وجدت فيه القيمة المطلوبة.
في البرنامج, قم بإنشاء مصفوفة ذات بعد واحد إسمها Numbers
تحتوي على قيم أولية.
ثم أطلب من المستخدم إدخال أي عدد.
في الأخير قم باستدعاء الدالة FindFirst()
لطباعة ما إذا كان الرقم الذي أدخله المستخدم موجود في المصفوفة أم لا.
إرشادات
إذا أفترضنا أن المصفوفة Numbers
تحتوي على بعض القيم و أن المستخدم حاول البحث عن القيمة 5 فيها كالتالي.
النتيجة المطلوبة
إذا إفترضنا أن المصفوفة تحتوي على نفس القيم الموضوعة في الصورة السابقة, و أن المستخدم بحث عن العدد 16
.
إذا إفترضنا أن المصفوفة تحتوي على نفس القيم الموضوعة في الصورة السابقة, و أن المستخدم بحث عن العدد 5
.
الخوارزمية
كود الجافا
import java.util.Scanner; public class Parameters { /* ------------------------------- هنا قمنا بتعريف الدالة ------------------------------ */ public static void FindFirst (int[] a, int b) { boolean stopSearch = false; int i = 0; while ( stopSearch == false && i<a.length ) { if ( a[i] == b ) { System.out.print(b+ " is exist at index number: " +i+ "\n"); stopSearch = true; } i++; } if( stopSearch == false ) { System.out.print(b+ " is not exist \n"); } } /* --------------------------- من هنا يبدأ البرنامج بالتنفيذ --------------------------- */ public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] Numbers = {2, 7, 5, 6, 9, 14, 0, 5, 12, 5}; int x; System.out.print("Find: "); x = input.nextInt(); FindFirst(Numbers, x); } }
شرح الكود
public static void FindFirst (int[] a, int b) { boolean stopSearch = false; int i = 0; while ( stopSearch == false && i<a.length ) { if ( a[i] == b ) { System.out.print(b+ " is exist at index number: " +i+ "\n"); stopSearch = true; } i++; } if( stopSearch == false ) { System.out.print(b+ " is not exist \n"); } }
- هنا أنشأنا الدالة
FindFirst()
و حددنا أن نوعهاvoid
لأنها لن ترجع قيمة, و وضعنا لها باراميترين, الأول مصفوفة نوعهاint
و الثاني متغير نوعهint
. - إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها مصفوفة و قيمة من النوع
int
. - في السطر 10 قمنا بتجهيز المتغير
stopSearch
لأننا سنستخدمه لإيقاف الحلقةwhile
مباشرةً إذا تم إيجاد القيمة المراد البحث عنها في المصفوفة - في السطر 11 قمنا بتجهيز المتغير
i
لأننا سنستخدمه كعداد في الحلقةwhile
. - من السطر 13 إلى السطر 21 أنشأنا الحلقة
while
للمرور على جميع عناصر المصفوفة طالما أن القيمة المراد البحث عنها في المصفوفة لم يتم إيجادها بعد. - في كل دورة من دورات الحلقة
while
سيتم مقارنة قيمة عنصر من عناصر المصفوفة مع قيمة المتغيرb
المراد البحث عنها. - في حال وجود عنصر في المصفوفة يملك نفس قيمة المتغير
b
سيتم طباعة رقم index العنصر, ثم وضع القيمةtrue
في المتغيرstopSearch
لجعل الحلقةwhile
تتوقف. - من السطر 23 إلى السطر 26 سيتم فحص قيمة المتغير
stopSearch
, في حال بقيتfalse
فهذا يعني أنه لم يتم إيجاد القيمة التي تم البحث عنها في المصفوفة, لذلك سيتم طباعة أنه لم يتم إيجاد القيمة المراد البحث عنها.
public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] Numbers = {2, 7, 5, 6, 9, 14, 0, 5, 12, 5}; int x; System.out.print("Find: "); x = input.nextInt(); FindFirst(Numbers, x); }
- في السطر 37 قمنا بإنشاء المصفوفة
Numbers
و حددنا نوعهاint
و أعطيناها قيم عشوائية مباشرةً عند إنشائها. - في السطر 38 قمنا بتعريف المتغير
x
لتخزين العدد الذي سيدخله المستخدم. - في السطرين 40 و 41 طلبنا من المستخدم إدخال العدد الذي يريد البحث عنه في المصفوفة و وضعناه في المتغير
x
. - في السطر 43 قمنا باستدعاء الدالة
FindFirst()
و مررنا لها المصفوفة التي تحتوي على الأعداد العشوائية و العدد الذي أدخله المستخدم حتى تبحث عن العدد الذي أدخله المستخدم في المصفوفة, ثم تطبع له نتيجة البحث.