410 likes | 423 Views
المصفوفات Arrays. اكتبي برنامجا يقرأ خمسة أرقام ، ثم اوجدي حاصل الجمع لها و اطبعيها بترتيب عكسي. import java.util .*; public class RevOrder {
E N D
المصفوفات Arrays أ.حنين عبدالرحمن برمجة 2
اكتبي برنامجا يقرأ خمسة أرقام ، ثم اوجدي حاصل الجمع لها و اطبعيها بترتيب عكسي. أ.حنين عبدالرحمن برمجة 2
import java.util.*; public class RevOrder{ static Scanner console = new Scanner(System.in); public static void main(String[] args){int item0, item1, item2, item3, item4;int sum;System.out.println("Enter 5 numbers: "); item0=console.nextInt(); item1=console.nextInt(); item2=console.nextInt(); item3=console.nextInt(); item4=console.nextInt(); sum = item0+item1+item2+item3+item4;System.out.println("Sum = " + sum);System.out.print("Numbers is reverse = ");System.out.println(item4+" "+item3+" "+item2+" "+item1+" "+item0); }} Enter 5 numbers: 3 6 8 9 0Sum = 26Numbers is reverse = 0 9 8 6 3 أ.حنين عبدالرحمن برمجة 2
Array المصفوفة هي نوع من البيانات المنظمة مع عدد محدد من العناصر. كل عنصر من نفس النوع. يتم الوصول إليها باستخدام مواقع العناصر في المصفوفة ( المحددات ) index. أ.حنين عبدالرحمن برمجة 2
يتم انشاء المصفوفات بتحديد نوع المتغير المراد تنظيمه ضمن المصفوفة واسم المصفوفة وللتفرقة يجب اضافة قوسين [ ] وتنشأ المصفوفات لتحتوي أي نوع من المعلومات التي يمكن أن تخزن في متغير واليك هذا المثال: int[] samy = { 90,85,85,75,70,95 };String[] netWeight;String netWeight[];boolean[] GradeStudents;int[] primes = new int[300]; أ.حنين عبدالرحمن برمجة 2
One-Dimensional Arraysالمصفوفات أحادية البعد • المصفوفة أحادية البعد هي المصفوفة التي لها بعد واحد فقط ـ سطر واحد من الأرقام التي تتراوح بين الصفر ورقم العنصر الأعلى المحدد للمصفوفة وهل للمصفوفة عناصر ؟ نعم والعناصر هنا بمعنى عدد البنود التي يمكن تخزينها في المصفوفة فكل بند في المصفوفة يسمى عنصرا وبعبارة أخرى عندما ننشئ مصفوفة نقوم بتخزين قيمة أولية فيها باستعمال الجملة نيو مع نوع المتغير كما في المثال التالي int[] primes = new int[300]; String [] physicsTeachers = {"Samy","Nasser","Taha",}; أ.حنين عبدالرحمن برمجة 2
One-Dimensional Arraysالمصفوفات أحادية البعد • Syntax to instantiate an array: طريقة كتابة مصفوفة أحادية البعد • dataType[ ] arrayName; arrayName = newdataType[size] • dataType[ ] arrayName = newdataType[size] • dataType[ ] arrayName1, arrayName2; • Syntax to access an array component: أسلوب الخطاب و الوصول إلى عناصر المصفوفة • arrayName[indexExp] • عدد العناصر في المصفوفة>= 0 • 0 <= المحدد < عدد عناصر المصفوفة أ.حنين عبدالرحمن برمجة 2
Array num int[] num = new int[5]; أ.حنين عبدالرحمن برمجة 2
Array list أ.حنين عبدالرحمن برمجة 2
تعيين حجم المصفوفة أثناء تنفيذ البرنامج intarraySize; System.out.print("Enter the size of " + "the array: "); arraySize = console.nextInt(); System.out.println(); int[] list = newint[arraySize]; أ.حنين عبدالرحمن برمجة 2
Array Initialization During Declaration double[] sales = {12.25, 32.50, 16.90, 23, 45.68}; يتم وضع القيم ، وتدعى القيم الأولية ، بين أقواس ومفصولة بفواصل. • Here, sales[0]= 12.25, sales[1]= 32.50, sales[2]= 16.90, sales[3]= 23.00, and sales[4]= 45.68. هنا حجم المصفوفة هو عدد العناصر بين الأقواس. في هذه الطريقة لا نحتاج إلى كلمة new أ.حنين عبدالرحمن برمجة 2
Arrays and the Instance Variable length • A public instance variable lengthمرتبطة مع المصفوفات التي تم إنشاءها. • The variable length تحتوي على حجم المصفوفة . • list.length is 6. int[] list = {10, 20, 30, 40, 50, 60}; أ.حنين عبدالرحمن برمجة 2
Arrays and the Instance Variable length • int[] numList = newint[10]; هذه الخطوة تنشئ مصفوفة من 10 عناصر مهيأة بالقيمة الأولية 0 • numList.lengthis 10 • numList[0] = 5; • numList[1] = 10; • numList[2] = 15; • numList[3] = 20; ممكن إعطاء كل عنصر في المصفوفة قيمة معينة أ.حنين عبدالرحمن برمجة 2
مثال لتخزين قيم داخل المصفوفة عن طريق قراءتها من قبل المستخدم int[] list = new int[100]; int i; for (i = 0; i < list.length; i++) list[i] = console.nextInt(); for (i = 0; i < list.length; i++) System.out.print(list[i] + " "); أ.حنين عبدالرحمن برمجة 2
بعض العمليات على المصفوفات Initialize تهيئة Input dataبيانات الإدخال Output stored dataإخراج البيانات المخزنة Find largest/smallest/sum/average of elements البحث عن أكبر / أصغر / مجموع / متوسط العناصر أ.حنين عبدالرحمن برمجة 2
double[] sales = newdouble[10]; int index; double largestSale, sum, average; أ.حنين عبدالرحمن برمجة 2
تهيئة جميع العناصر بالقيمة 10.00 for (index = 0; index < sales.length; index++) sales[index] = 10.00; أ.حنين عبدالرحمن برمجة 2
إدخال بيانات إلى المصفوفة for (index = 0; index < sales.length; index++) sales[index] = console.nextDouble(); أ.حنين عبدالرحمن برمجة 2
طباعة عناصر المصفوفة for (index = 0; index < sales.length; index++) System.out.print(sales[index] + " "); أ.حنين عبدالرحمن برمجة 2
ايجاد مجموع و متوسط العناصر في المصفوفة sum = 0; for (index = 0; index < sales.length; index++) sum = sum + sales[index]; if (sales.length != 0) average = sum / sales.length; else average = 0.0; أ.حنين عبدالرحمن برمجة 2
إيجاد الرقم الأكبر في المصفوفة maxIndex = 0; for (index = 1; index < sales.length; index++) if (sales[maxIndex] < sales[index]) maxIndex = index; largestSale = sales[maxIndex]; أ.حنين عبدالرحمن برمجة 2
Determining Largest Element in Array Java Programming: From Problem Analysis to Program Design
استخدام المصفوفة في الطرق General syntax to declare an array as a formal parameter: dataType[] arrayName public static void arraysAsFormalParameter(int[] listA, double[] listB, int num) { //... } int[] intList = newint[10]; double[] doubleNumList = newdouble[15]; int number; arraysAsFormalParameter(intList, doubleNumList, number); أ.حنين عبدالرحمن برمجة 2
مثال لاستخدام الطريقة لبيان اذا كانت المصفوفتين متساوية أم لا booleanisEqualArrays(int[] firstArray, int[] secondArray) { if (firstArray.length != secondArray.length) return false; for (int index = 0; index < firstArray.length; index++) if (firstArray[index] != secondArray[index]) return false; return true; } if (isEqualArrays(listA, listB)) ... أ.حنين عبدالرحمن برمجة 2
foreach loop for (dataType identifier : arrayName) statements ممكن استخدام هذه الطريقة لمعالجة العناصر داخل المصفوفة. Identifier هو متغير بنفس نوع العناصر للمصفوفة. أ.حنين عبدالرحمن برمجة 2
مثال على foreach sum = 0; for (double num : list) sum = sum + num; أ.حنين عبدالرحمن برمجة 2
Two-Dimensional Arraysمصفوفة ثنائية البعد inStock أ.حنين عبدالرحمن برمجة 2
Two-Dimensional Arraysمصفوفة ثنائية البعد • البيانات في بعض الأحيان في شكل جدول (صعبة التمثيل باستخدام مصفوفة أحادية الأبعاد). • To declare/instantiate a two-dimensional array: • لتعريف مصفوفة ثنائية البعد dataType[ ][ ] arrayName = newdataType[row][col]; • To access a component of a two-dimensional array: • للوصول الى عناصر المصفوفة: arrayName[row][col]; • row, col >= 0 • row = row position مكان الصف • col = column position مكان العمود أ.حنين عبدالرحمن برمجة 2
double[][]sales = new double[10][5]; Two-Dimensional Arrays Java Programming: From Problem Analysis to Program Design
Accessing Two-Dimensional Array Components Java Programming: From Problem Analysis to Program Design
Two-Dimensional Arrays int [][] matrix = new int[20][15]; 20 rows صف 15 columns عمود matrix.length = 20 //number of rows عدد الاصفف • كل صف هو عبارة عن مصفوفة أحادية البعد matrix.[0].length = 15 //# عدد الأعمدة في الصف الأول matrix.[1].length = 15 // # عدد الأعمدة في الصف الثاني أ.حنين عبدالرحمن برمجة 2
حالة خاصة من المصفوفة ثنائية البعد • يمكن تعيين عدد أعمدة معين في كل صف ، ولكن نعرف كل صف على حدة و تسمى • ragged arrays
int[] board = new int[5]; board[0] = new int[6]; board[1] = new int[2]; board[2] = new int[2]; board[3] = new int[3]; board[4] = new int[4]; أ.حنين عبدالرحمن برمجة 2
Two Dimensional Array Initialization During Declaration int[][] board = {{2,3,1} , {15,25,13} , {20, 4, 7}}; board ما هو شكل المصفوفة بعد حدوث هذه العملية ؟ int[][] table = {{2,3,1,5} , {15,25} , {4, 23, 45}};
العمليات على المصفوفات ثنائية البعد Initialization التهيئة for (row = 0; row < matrix.length; row++) for (col = 0; col < matrix[row].length; col++) matrix[row][col] = 10; Print الطباعة for (row = 0; row < matrix.length; row++) { for (col = 0; col < matrix[row].length; col++) System.out.printf("%7d", matrix[row][col]); System.out.println(); } أ.حنين عبدالرحمن برمجة 2
العمليات على المصفوفات ثنائية البعد Input ادخال بينات for (row = 0; row < matrix.length; row++) for (col = 0; col < matrix[row].length; col++) matrix[row][col] = console.nextInt(); Sum by Row جمع الصفوف for (row = 0; row < matrix.length; row++) { sum = 0; for (col = 0; col < matrix[row].length; col++) sum = sum + matrix[row][col]; System.out.println("Sum of row " + (row + 1) + " = "+ sum); } أ.حنين عبدالرحمن برمجة 2
العمليات على المصفوفات ثنائية البعد Sum by Columnجمع الأعمدة for (col = 0; col < matrix[0].length; col++) { sum = 0; for (row = 0; row < matrix.length; row++) sum = sum + matrix[row][col]; System.out.println("Sum of column " + (col + 1) + " = " + sum); } أ.حنين عبدالرحمن برمجة 2
العمليات على المصفوفات ثنائية البعد Largest Element in Each Row العنصر الأكبر في كل صف for (row = 0; row < matrix.length; row++) { largest = matrix[row][0]; for (col = 1; col < matrix[row].length; col++) if (largest < matrix[row][col]) largest = matrix[row][col]; System.out.println("The largest element of row " + (row + 1) + " = " + largest); } أ.حنين عبدالرحمن برمجة 2
العمليات على المصفوفات ثنائية البعد • Largest Element in Each Column العنصر الأكبر في كل عمود • تطبيق أ.حنين عبدالرحمن برمجة 2
Multidimensional Arraysمصفوفة متعددة الأبعاد • يمكن تعريف مصفوفة من 3 أبعاد أو أي بعد • Syntax to declare and instantiate array: • طريقة التعريف dataType[][]…[] arrayName = new dataType[intExp1][intExp2]…[intExpn]; • Syntax to access component: • الطريقة للوصول الى العناصر arrayName[indexExp1][indexExp2]…[indexExpn] • intExp1, intExp2, ..., intExpn = أرقام موجبة • indexExp1,indexExp2, ..., indexExpn = أرقام موجبة Java Programming: From Problem Analysis to Program Design
Loops to Process Multidimensional Arrays double[][][] carDealers = new double[10][5][7]; For (i = 0; i < 10; i++) for (j = 0; j < 5; j++) for (k = 0; k < 7; k++) carDealers[i][j][k] = 10.00; Java Programming: From Problem Analysis to Program Design