طرق تعريف مصفوفة ذات بعد واحد
لتعريف مصفوفة ذات بعد واحد, يوجد طريقتين:
- تعرّف المصفوفة و تعطيها القيم لاحقاً.
- تعرّف المصفوفة و تعطيها القيم مباشرةً عند تعريفها.
معلومة تقنية
في لغة جافا لا يمكن تغيير عدد عناصر المصفوفة بعد أن تم تحديده.
لتعريف مصفوفة ذات بعد واحد, يوجد طريقتين:
في لغة جافا لا يمكن تغيير عدد عناصر المصفوفة بعد أن تم تحديده.
لتعريف مصفوفة من أي نوع سواء int
, float
, double
, String
إلخ.. نضع فقط الرمزين []
بعد تحديد نوع البيانات التي سنخزنها فيها.
بهذه الطريقة يفهم الكمبيوتر أننا نريد تعريف مصفوفة ذات بعد واحد لها نوع محدد.
في المثال التالي هنا قمنا بتعريف مصفوفة ذات بعد واحد إسمها vector
, نوعها int
و تتألف من 5 عناصر.
int[] vector = new int[5];
new int
نضعها من أجل لغة جافا, و هي تضع القيمة صفر كقيمة إفتراضية لجميع عناصر المصفوفة بشكل تلقائي, و السبب أن جميع عناصر المصفوفة يجب أن تحتوي على قيمة أولية عند إنشائها, لأننا إذا أردنا مثلاً أن نعرض جميع قيم عناصر المصفوفة لنرى ماذا تحتوي و كان أحد عناصرها لا يحتوي على قيمة سيسبب ذلك مشاكل في البرنامج.0
أو 0.0
أو null
فذلك يعني أننا لم نغير قيمة أي عنصر بعد.vector.length-1
, أي عدد جميع العناصر ناقص 1.للوصول إلى أي عنصر موجود في المصفوفة, يجب كتابة إسم المصفوفة, ثم تحديد رقم index العنصر الذي نريد الوصول إليه.
ستتعلم ذلك من الأمثلة.
في المثال التالي قمنا بتغيير قيمة العنصر الأول, الثاني و الثالث في المصفوفة vector
.
vector[0] = 7; vector[1] = 40; vector[2] = -20;
في المثال التالي قمنا بعرض قيم جميع العناصر الموجودة في المصفوفة vector
حتى نتأكد إذا كانت القيم قد تغيرت أم لا.
System.out.print("vector[0]: " + vector[0] + "\n" ); System.out.print("vector[1]: " + vector[1] + "\n" ); System.out.print("vector[2]: " + vector[2] + "\n" ); System.out.print("vector[3]: " + vector[3] + "\n" ); System.out.print("vector[4]: " + vector[4] + "\n" );
public class Vector { public static void main (String[] args) { int[] vector = new int[5]; // هنا قمنا بتعريف مصفوفة تتألف من 5 عناصر vector[0] = 7; // هنا قمنا بتغيير قيمة العنصر الأول vector[1] = 40; // هنا قمنا بتغيير قيمة العنصر الثاني vector[2] = -20; // هنا قمنا بتغيير قيمة العنصر الثالث System.out.print("vector[0]: " + vector[0] + "\n" ); // هنا قمنا بعرض قيمة العنصر الأول System.out.print("vector[1]: " + vector[1] + "\n" ); // هنا قمنا بعرض قيمة العنصر الثاني System.out.print("vector[2]: " + vector[2] + "\n" ); // هنا قمنا بعرض قيمة العنصر الثالث System.out.print("vector[3]: " + vector[3] + "\n" ); // هنا قمنا بعرض قيمة العنصر الرابع System.out.print("vector[4]: " + vector[4] + "\n" ); // هنا قمنا بعرض قيمة العنصر الخامس } }
إذا أردنا إدخال القيم مباشرةً عند تعريف المصفوفة, بعد رمز المساواة =
نضع الرمزين { }
و بداخلهم نضع القيم التي نريدها, و نضع فاصلة بين كل قيمتين.
ملاحظة: سنعيد نفس البرنامج السابق بطريقة أخرى.
الآن, لنفترض أننا نريد تعريف مصفوفة إسمها vector
مع إعطائها 5 قيم أولية مباشرةً عند إنشائها.
في المثال التالي قمنا بتعريف مصفوفة نوعها int
مع إعطائها قيم مباشرةً عند إنشائها.
هنا بما أننا وضعنا فيها 5 قيم مباشرةً عند إنشائها, أصبحت المصفوفة أيضاً تتألف من 5 عناصر و يمكننا تغيير قيمها لاحقاً إذا أردنا, لكننا لا نستطيع تغير عدد العناصر.
int[] vector = {7, 40, -20, 0, 0};
في المثال التالي قمنا بتغيير قيمة العنصر الأول, الرابع و الخامس في المصفوفة vector
.
vector[0] = 3; vector[3] = 121; vector[4] = 10;
في المثال التالي قمنا بعرض قيم جميع العناصر الموجودة في المصفوفة vector
حتى نتأكد إذا كانت القيم قد تغيرت أم لا.
System.out.print("vector[0]: " + vector[0] + "\n" ); System.out.print("vector[1]: " + vector[1] + "\n" ); System.out.print("vector[2]: " + vector[2] + "\n" ); System.out.print("vector[3]: " + vector[3] + "\n" ); System.out.print("vector[4]: " + vector[4] + "\n" );
public class Vector { public static void main (String[] args) { int[] vector = {7, 40, -20, 0, 0}; // هنا قمنا بتعريف مصفوفة تتألف من 5 عناصر و أعطيناها القيم مباشرة عند إنشائها vector[0] = 3; // هنا قمنا بتغيير قيمة العنصر الأول vector[3] = 121; // هنا قمنا بتغيير قيمة العنصر الرابع vector[4] = 10; // هنا قمنا بتغيير قيمة العنصر الخامس System.out.print("vector[0]: " + vector[0] + "\n" ); // هنا قمنا بعرض قيمة العنصر الأول System.out.print("vector[1]: " + vector[1] + "\n" ); // هنا قمنا بعرض قيمة العنصر الثاني System.out.print("vector[2]: " + vector[2] + "\n" ); // هنا قمنا بعرض قيمة العنصر الثالث System.out.print("vector[3]: " + vector[3] + "\n" ); // هنا قمنا بعرض قيمة العنصر الرابع System.out.print("vector[4]: " + vector[4] + "\n" ); // هنا قمنا بعرض قيمة العنصر الخامس } }
للوصول إلى جميع عناصر المصفوفة vector
بسرعة و بكود أقل مهما كان حجم المصفوفة نستخدم الحلقات.
فمثلاً تستطيع إستخدام الحلقة for
لإعطاء قيم لجميع العناصر الموجودة في المصفوفة أو لعرض جميع قيمها دفعة واحدة.
في المثال التالي, قمنا بتعريف مصفوفة إسمها vector
تتألف من 10 عناصر.
بعدها جعلنا المستخدم يدخل قيمة لكل عنصر من عناصرها.
في الأخير قمنا بعرض جميع القيم التي أدخلها المستخدم في المصفوفة.
إذا قام المستخدم بإدخال القيم 1, 2, 3, 4, 5, 6, 7, 8, 9 و 10 عند تشغيل البرنامج, ستكون نتيجة التشغيل كالتالي.
import java.util.Scanner; public class Vector { public static void main (String[] args) { Scanner input = new Scanner(System.in); // هنا قمنا بتعريف مصفوفة من 10 عناصر int[] vector = new int[10]; // من خلال هذه الحلقة سيطلب من المستخدم إدخال قيمة لجميع العناصر for(int i=0; i<10; i++) { System.out.print("Enter vector["+i+"]: "); vector[i] = input.nextInt(); } System.out.print("\n"); // من خلال هذه الحلقة سيعرض للمستخدم قيم جميع العناصر التي تحتويها المصفوفة for(int i=0; i<10; i++) { System.out.print("vector["+i+"]: " +vector[i]+ "\n"); } System.out.print("\n"); } }
int[] vector = new int[10];
for(int i=0; i<10; i++) { System.out.print("Enter vector["+i+"]: "); vector[i] = input.nextInt(); }
i
سيطلب من المستخدم إدخال قيمة في عنصر محدد من عناصر المصفوفة و بعدها سيتم وضع القيمة التي أدخلها في هذا العنصر كالتالي:i
تساوي 0 سيُطلب من المستخدم إدخال قيمة للعنصر vector[0]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 1 سيُطلب من المستخدم إدخال قيمة للعنصر vector[1]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 2 سيُطلب من المستخدم إدخال قيمة للعنصر vector[2]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 3 سيُطلب من المستخدم إدخال قيمة للعنصر vector[3]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 4 سيُطلب من المستخدم إدخال قيمة للعنصر vector[4]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 5 سيُطلب من المستخدم إدخال قيمة للعنصر vector[5]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 6 سيُطلب من المستخدم إدخال قيمة للعنصر vector[6]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 7 سيُطلب من المستخدم إدخال قيمة للعنصر vector[7]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 8 سيُطلب من المستخدم إدخال قيمة للعنصر vector[8]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.i
تساوي 9 سيُطلب من المستخدم إدخال قيمة للعنصر vector[9]
, بعدها سيتم تخزين القيمة التي أدخلها فيه.for(int i=0; i<10; i++) { System.out.print("vector["+i+"]: " +vector[i]+ "\n"); }
i
سيتم عرض قيمة عنصر محدد من عناصر المصفوفة, أي سيعرض له أن العنصر رقم كذا قيمته كذا كالتالي:i
تساوي 0 سيطبع له أن قيمة العنصر vector[0]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 1 سيطبع له أن قيمة العنصر vector[1]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 2 سيطبع له أن قيمة العنصر vector[2]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 3 سيطبع له أن قيمة العنصر vector[3]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 4 سيطبع له أن قيمة العنصر vector[4]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 5 سيطبع له أن قيمة العنصر vector[5]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 6 سيطبع له أن قيمة العنصر vector[6]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 7 سيطبع له أن قيمة العنصر vector[7]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 8 سيطبع له أن قيمة العنصر vector[8]
تساوي القيمة التي أدخلها فيه سابقاً.i
تساوي 9 سيطبع له أن قيمة العنصر vector[9]
تساوي القيمة التي أدخلها فيه سابقاً.new
قلنا في بداية الدرس أنه لتعريف مصفوفة من أي نوع سواءint
, float
, double
, String
إلخ.. نضع فقط الرمزين []
بعد تحديد نوع البيانات التي ستخزنها, و بهذه الطريقة يفهم الكمبيوتر أننا نريد تعريف مصفوفة ذات بعد واحد لها نوع محدد.
الآن سنتفق على أن كلمة new
مهمتها إنشاء المصفوفة في الذاكرة و إعطاء القيمة صفر كقيمة أولية لجميع عناصرها.
النقطة التي نريدك أن تنتبه إليها هي أن الكلمة new
تعطي القيمة صفر التي تناسب نوع المصفوفة.
في المثال التالي, قمنا بتعريف ثلاث مصفوفات, و كل مصفوفة تخزن نوع بيانات مختلف.
int
و إسمها vector_int
.double
و إسمها vector_double
.String
و إسمها vector_String
.بعدها قمنا بعرض القيم الإفتراضية التي تم وضعها لعناصر هذه المصفوفات.
public class Vector { public static void main (String[] args) { int[] vector_int = new int[3]; double[] vector_double = new double[3]; String[] vector_String = new String[3]; System.out.print("vector_int[0]: " + vector_int[0] + "\n" ); System.out.print("vector_int[1]: " + vector_int[1] + "\n" ); System.out.print("vector_int[2]: " + vector_int[2] + "\n\n" ); System.out.print("vector_double[0]: " + vector_double[0] + "\n" ); System.out.print("vector_double[1]: " + vector_double[1] + "\n" ); System.out.print("vector_double[2]: " + vector_double[2] + "\n\n" ); System.out.print("vector_String[0]: " + vector_String[0] + "\n" ); System.out.print("vector_String[1]: " + vector_String[1] + "\n" ); System.out.print("vector_String[2]: " + vector_String[2] + "\n\n" ); } }
vector_int
نوعها int
لذلك تم إعطاء عناصرها القيمة 0
كقيمة أولية.vector_double
نوعها double
لذلك تم إعطاء عناصرها القيمة 0.0
كقيمة أولية.vector_String
نوعها String
لذلك تم إعطاء عناصرها القيمة null
كقيمة أولية.الآن, أنت فهمت جيداً كيف يمكنك تعريف مصفوفة ذات بعد واحد و الوصول إلى عناصرها و تغيير و عرض قيمها.
في الدرس التالي ستتعرف على الخاصية length
التي تستخدم لمعرفة عدد عناصر المصفوفة بالإضافة إلى عدة طرق يمكن إتباعها لتخزين, مقارنة, و عرض قيم عناصر المصفوفة.
نرجو منك الإنتقال لدورة البرمجة للمبتدئين الجديدة التي أنشأنها كبديل أفضل لهذه الدورة ففي تلك الدورة قمنا بتبسيط الشرح أكثر و جعلناك قادر على تجربة الكود بشكل مباشر في موقعنا.