You are on page 1of 39

‫‪ Arrays‬اﻟﻤﺼﻔﻮﻓﺎت‬

‫‪1‬‬
‫اﻟﻤﺼﻔﻮﻓﺔ ‪Array‬‬

‫‪.‬ھﻲ ﻧﻮع ﻣﻦ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻨﻈﻤﺔ ﻣﻊ ﻋﺪد ﻣﺤﺪد ﻣﻦ اﻟﻌﻨﺎﺻﺮ‬

‫‪.‬ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻧﻔﺲ اﻟﻨﻮع‬

‫ﯾﺘﻢ اﻟﻮﺻﻮل إﻟﯿﮭﺎ ﺑﺎﺳﺘﺨﺪام ﻣﻮاﻗﻊ اﻟﻌﻨﺎﺻﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ) اﻟﻤﺤﺪدات (‬


‫‪index.‬‬

‫‪2‬‬
‫ﯾﺘﻢ اﻧﺸﺎء اﻟﻤﺼﻔﻮﻓﺎت ﺑﺘﺤﺪﯾﺪ ﻧﻮع اﻟﻤﺘﻐﯿﺮ اﻟﻤﺮاد ﺗﻨﻈﯿﻤﮫ ﺿﻤﻦ اﻟﻤﺼﻔﻮﻓﺔ‬
‫واﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ وﻟﻠﺘﻔﺮﻗﺔ ﯾﺠﺐ اﺿﺎﻓﺔ ﻗﻮﺳﯿﻦ ] [ وﺗﻨﺸﺄ اﻟﻤﺼﻔﻮﻓﺎت‬
‫ﻟﺘﺤﺘﻮي أي ﻧﻮع ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﯾﻤﻜﻦ أن ﺗﺨﺰن ﻓﻲ ﻣﺘﻐﯿﺮ واﻟﯿﻚ ھﺬا‬
‫‪:‬اﻟﻤﺜﺎل‬

‫;} ‪int[] samy = { 90,85,85,75,70,95‬‬

‫;‪String[] netWeight‬‬

‫;][‪String netWeight‬‬

‫;‪boolean[] GradeStudents‬‬

‫;]‪int[] primes = new int[300‬‬

‫‪3‬‬
‫‪One-Dimensional Arrays‬‬
‫اﻟﻤﺼﻔﻮﻓﺎت أﺣﺎدﯾﺔ اﻟﺒﻌﺪ‬
‫اﻟﻤﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ ھﻲ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻲ ﻟﮭﺎ ﺑﻌﺪ واﺣﺪ ﻓﻘﻂ ـ ﺳﻄﺮ واﺣﺪ ﻣﻦ‬
‫اﻷرﻗﺎم اﻟﺘﻲ ﺗﺘﺮاوح ﺑﯿﻦ اﻟﺼﻔﺮ ورﻗﻢ اﻟﻌﻨﺼﺮ اﻷﻋﻠﻰ اﻟﻤﺤﺪد ﻟﻠﻤﺼﻔﻮﻓﺔ‬
‫وھﻞ ﻟﻠﻤﺼﻔﻮﻓﺔ ﻋﻨﺎﺻﺮ ؟‬
‫ﻧﻌﻢ واﻟﻌﻨﺎﺻﺮ ھﻨﺎ ﺑﻤﻌﻨﻰ ﻋﺪد اﻟﺒﻨﻮد اﻟﺘﻲ ﯾﻤﻜﻦ ﺗﺨﺰﯾﻨﮭﺎ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻜﻞ ﺑﻨﺪ‬
‫ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﯾﺴﻤﻰ ﻋﻨﺼﺮا وﺑﻌﺒﺎرة أﺧﺮى ﻋﻨﺪﻣﺎ ﻧﻨﺸﺊ ﻣﺼﻔﻮﻓﺔ ﻧﻘﻮم ﺑﺘﺨﺰﯾﻦ‬
‫ﻗﯿﻤﺔ أوﻟﯿﺔ ﻓﯿﮭﺎ ﺑﺎﺳﺘﻌﻤﺎل اﻟﺠﻤﻠﺔ ﻧﯿﻮ ﻣﻊ ﻧﻮع اﻟﻤﺘﻐﯿﺮ ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‬
‫;]‪int[] primes = new int[300‬‬

‫;}‪String [] physicsTeachers = {"Samy","Nasser","Taha",‬‬

‫‪4‬‬
One-Dimensional Arrays
‫اﻟﻤﺼﻔﻮﻓﺎت أﺣﺎدﯾﺔ اﻟﺒﻌﺪ‬
Syntax to instantiate an array: ‫طﺮﯾﻘﺔ ﻛﺘﺎﺑﺔ ﻣﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ‬
◦ dataType[ ] arrayName;
arrayName = new dataType[size]
◦ dataType[ ] arrayName = new dataType[size]
◦ dataType[ ] arrayName1, arrayName2;

Syntax to access an array component:


‫أﺳﻠﻮب اﻟﺨﻄﺎب و اﻟﻮﺻﻮل إﻟﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬

◦ arrayName[indexExp]

● 0 =<‫ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ‬


● 0 <= ‫اﻟﻤﺤﺪد > ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬

5
Array num
int[] num = new int[5];

6
Array list

7
‫ﺗﻌﯿﯿﻦ ﺣﺠﻢ اﻟﻤﺼﻔﻮﻓﺔ أﺛﻨﺎء ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ‬
int arraySize;
System.out.print("Enter the size of "
+ "the array: ");
arraySize = console.nextInt();
System.out.println();
int[] list = new int[arraySize];

8
‫‪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‬ﻓﻲ ھﺬه اﻟﻄﺮﯾﻘﺔ ﻻ ﻧﺤﺘﺎج إﻟﻰ ﻛﻠﻤﺔ‬

‫‪9‬‬
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};

10
Arrays and the Instance Variable length
int[] numList = new int[10];
0 ‫ ﻋﻨﺎﺻﺮ ﻣﮭﯿﺄة ﺑﺎﻟﻘﯿﻤﺔ اﻷوﻟﯿﺔ‬10 ‫ھﺬه اﻟﺨﻄﻮة ﺗﻨﺸﺊ ﻣﺼﻔﻮﻓﺔ ﻣﻦ‬

numList.length is 10
◦ numList[0] = 5;
◦ numList[1] = 10;
◦ numList[2] = 15;
◦ numList[3] = 20;

‫ﻣﻤﻜﻦ إﻋﻄﺎء ﻛﻞ ﻋﻨﺼﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﻗﯿﻤﺔ ﻣﻌﯿﻨﺔ‬

11
‫ﻣﺜﺎل ﻟﺘﺨﺰﯾﻦ ﻗﯿﻢ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ ﻋﻦ طﺮﯾﻖ ﻗﺮاءﺗﮭﺎ‬
‫ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم‬
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] + " ");

12
‫ﺑﻌﺾ اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت‬

‫ﺗﮭﯿﺌﺔ ‪Initialize‬‬

‫ﺑﯿﺎﻧﺎت اﻹدﺧﺎل‪Input data‬‬

‫إﺧﺮاج اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ‪Output stored data‬‬

‫‪Find largest/smallest/sum/average of elements‬‬


‫اﻟﺒﺤﺚ ﻋﻦ أﻛﺒﺮ ‪ /‬أﺻﻐﺮ ‪ /‬ﻣﺠﻤﻮع ‪ /‬ﻣﺘﻮﺳﻂ اﻟﻌﻨﺎﺻﺮ‬

‫‪13‬‬
double[] sales = new double[10];
int index;
double largestSale, sum, average;

14
10.00 ‫ﺗﮭﯿﺌﺔ ﺟﻤﯿﻊ اﻟﻌﻨﺎﺻﺮ ﺑﺎﻟﻘﯿﻤﺔ‬
for (index = 0; index < sales.length;
index++)
sales[index] = 10.00;

15
‫إدﺧﺎل ﺑﯿﺎﻧﺎت إﻟﻰ اﻟﻤﺼﻔﻮﻓﺔ‬
for (index = 0; index < sales.length;
index++)
sales[index] = console.nextDouble();

16
‫طﺒﺎﻋﺔ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬
for (index = 0; index < sales.length;
index++)
System.out.print(sales[index] + " ");

17
‫اﯾﺠﺎد ﻣﺠﻤﻮع و ﻣﺘﻮﺳﻂ اﻟﻌﻨﺎﺻﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ‬
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;

18
‫إﯾﺠﺎد اﻟﺮﻗﻢ اﻷﻛﺒﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ‬
maxIndex = 0;

for (index = 1; index < sales.length;


index++)
if (sales[maxIndex] <
sales[index])
maxIndex = index;

largestSale = sales[maxIndex];

19
Determining Largest Element in Array

20
‫اﺳﺘﺨﺪام اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺪوال‬
General syntax to declare an array as a formal parameter:

dataType[] arrayName ‫ﺻﻴﻐﺔ ﻛﺘﺎﺑﺔ اﻟﻤﺼﻔﻮﻓﺔ ﻛﺒﺎراﻣﺘﺮ‬


‫ﻣﺜﺎل‬

public static void funCall(int[] listA, double[] listB, int num)


{
//...
}
‫ﻓﻲ اﻟﺮﺋﻴﺴﻲ‬
int[] intList = new int[10];
double[] doubleNumList = new double[15];
int number;

funCall(intList, doubleNumList, number);

21
‫ﻣﺜﺎل ﻻﺳﺘﺨﺪام داﻟﺔ ﻟﺒﯿﺎن اذا ﻣﺎ ﻛﺎﻧﺖ اﻟﻤﺼﻔﻮﻓﺘﯿﻦ‬
‫ﻣﺘﺴﺎوﯾﺘﯿﻦ أم ﻻ‬
boolean isEqualArrays(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))
...

22
‫‪foreach loop‬‬
‫اﻟﺸﻜﻞ اﻟﻌﺎم‬
‫)‪for (dataType identifier : arrayName‬‬
‫‪statements‬‬

‫‪.‬ﻣﻤﻜﻦ اﺳﺘﺨﺪام ھﺬه اﻟﻄﺮﯾﻘﺔ ﻟﻤﻌﺎﻟﺠﺔ اﻟﻌﻨﺎﺻﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬

‫‪Identifier‬‬
‫‪.‬ﻫﻮ ﻣﺘﻐﻴﺮ ﺑﻨﻔﺲ ﻧﻮع اﻟﻌﻨﺎﺻﺮ ﻟﻠﻤﺼﻔﻮﻓﺔ‬

‫‪23‬‬
foreach ‫ﻣﺜﺎل ﻋﻠﻰ‬
int[] list = {10, 20, 30, 40, 50, 60};

int sum = 0;

for (double num : list)


sum = sum + num;

24
Two-Dimensional Arrays
‫ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
inStoc
k

[Red] [Brown] [Black] [White] [Gray]

[GM] 10 4 95 3 5

[Ford] 6 3 6 6 4

[Toyota] 3 5 3 6 7

[BMW] 8 2 7 5 3

[Nissan] 0 4 5 33 4

[Volvo] 1 5 7 9 7

25
Two-Dimensional Arrays
‫ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
‫اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن ﻓﻲ ﺷﻜﻞ ﺟﺪول )ﺻﻌﺒﺔ اﻟﺘﻤﺜﯿﻞ ﺑﺎﺳﺘﺨﺪام ﻣﺼﻔﻮﻓﺔ‬
(‫أﺣﺎدﯾﺔ اﻷﺑﻌﺎد‬.

To declare/instantiate a two-dimensional array:


‫ﻟﺘﻌﺮﯾﻒ ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
dataType[ ][ ] arrayName = new
dataType[row][col];

To access a component of a two-dimensional array:


‫ﻟﻠﻮﺻﻮل اﻟﻰ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ‬:
arrayName[row][col];
● row, col >= 0
● row = row position ‫ﻣﻜﺎن اﻟﺼﻒ‬
● col = column position ‫ﻣﻜﺎن اﻟﻌﻤﻮد‬

26
Two-Dimensional Arrays
double[][]sales = new double[10][5];

27
Accessing Two-Dimensional Array
Components

28
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 // # ‫ﻋﺪد اﻟﺄﻋﻤﺪة ﻓﻲ اﻟﺼﻒ اﻟﺜﺎﻧﻲ‬

29
‫ﺣﺎﻟﺔ ﺧﺎﺻﺔ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
‫ﯾﻤﻜﻦ ﺗﻌﯿﯿﻦ ﻋﺪد أﻋﻤﺪة ﻣﻌﯿﻦ ﻓﻲ ﻛﻞ ﺻﻒ ‪ ،‬وﻟﻜﻦ ﻧﻌﺮف ﻛﻞ ﺻﻒ ﻋﻠﻰ‬
‫ﺣﺪة و ﺗﺴﻤﻰ‬
‫‪ragged arrays‬‬

‫‪30‬‬
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];

31
Two Dimensional Array Initialization
During Declaration
int[][] board = {{2,3,1} , {15,25,13} , {20, 4, 7}};

boar
d
[0] [1] [2]
[0] 2 3 1
[1] 15 25 13
[2] 20 4 7

‫ﻣﺎ ھﻮ ﺷﻜﻞ اﻟﻤﺼﻔﻮﻓﺔ ﺑﻌﺪ ﺣﺪوث ھﺬه اﻟﻌﻤﻠﯿﺔ ؟‬


int[][] table = {{2,3,1,5} , {15,25} , {4, 23, 45}};

32
‫اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
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();
}
33
‫اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
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);
}
34
‫اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
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);
}

35
‫اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
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);
}

36
‫اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
‫اﻟﻌﻨﺼﺮ اﻷﻛﺒﺮ ﻓﻲ ﻛﻞ ‪Largest Element in Each Column‬‬
‫ﻋﻤﻮد‬

‫ﺗﻄﺒﯿﻖ‬

‫‪37‬‬
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 = ‫أرﻗﺎم ﻣﻮﺟﺒﺔ‬

38
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;

39

You might also like