You are on page 1of 23

‫برمجة حاسب‬

‫د‪ .‬رامي حراثي‬

‫محاضرة ‪4‬‬
‫المصفوفات‬
‫الكلية التقنية بالخرج‬

‫‪1‬‬
‫في هذه المحاضرة‬

‫مقدمة‬ ‫◼‬

‫تعريف المصفوفة‬ ‫◼‬

‫الفهرس‬ ‫◼‬

‫القيم االبتدائية للمصفوفة‬ ‫◼‬

‫التعامل مع العناصر‬ ‫◼‬

‫أمثلة‬ ‫◼‬

‫تمارين‬ ‫◼‬

‫‪2‬‬
‫ما المصفوفة؟‬

‫المصفوفات‪ :‬هي عبارة عن مواقع يتم تخزين البيانات فيها لمدة‬ ‫◼‬
‫مؤقتة‪ ( .‬طيلة فترة تنفيذ البرنامج فقط)‪.‬‬

‫الغاية من المصفوفة هي تخزين عدد غير محدد من القيم تحت‬ ‫◼‬


‫اسم واحد فقط ( اسم المصفوفة) دون الحاجة إلى تخزين كل قيمة‬
‫في متغير منفصل‪.‬‬

‫‪3‬‬
‫أنــواع المصفوفات‬
‫▪ المصفوفات لها نوعين‪:‬‬
‫▪ أحاديــة األبعــاد‪ :‬يتم فيها تخزين البيانات في‬
‫صف واحد فقط‪.‬‬
‫▪ متعددة ا األبعــاد أبعــاد‪ :‬يتم فيها تخزين البيانات‬
‫في صفوف و أعمدة‪.‬‬

‫‪4‬‬
‫طرق تعريف المصفوفة أحاديـة األبعاد‬

‫;] ‪type[] array_name = new type[ x‬‬

‫نوع العناصر التي‬ ‫عدد العناصر التي نريد‬


‫ستحجز في الذاكرة‬ ‫حجزها في الذاكرة‬

‫;‪type [] array_name‬‬
‫;] ‪array_name = new type[ x‬‬

‫‪5‬‬
‫طرق تعريف المصفوفة أحاديـة األبعاد‬

‫تعريف المصفوفة‪:‬‬ ‫◼‬

‫النوع‬ ‫اسم المصفوفة‬


‫‪int‬‬ ‫;][‪array1‬‬
‫حجز مواقع المصفوفة‪:‬‬ ‫◼‬

‫=][‪array1‬‬ ‫;]‪new int[9‬‬


‫يمكن دمج الجملتين بجملة واحدة‪:‬‬ ‫◼‬

‫;]‪int array1[]= new int[9‬‬

‫‪6‬‬
‫تعريف أنواع من المصفوفات‬

‫;] ‪int[] grades = new int[ 10‬‬


‫هذه الخطوة تنشئ مصفوفة من ‪ 10‬عناصر مهيأة بالقيمة األولية ‪0‬‬

‫;] ‪String[] employees = new String[ 10‬‬

‫;] ‪float[] salary = new float[ 30‬‬

‫‪7‬‬
‫الفهرس‬

‫يتم الوصول للبيانات المخزنة في هذه المواقع عن طريق اسم‬ ‫◼‬


‫المصفوفة ورقم الموقع ]‪.[index‬‬
‫سيتم حجز تسع مواقع في الذاكرة ابتداء من الخانة ‪.0‬‬ ‫◼‬

‫‪0 2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬


‫‪0‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬

‫‪8‬‬
‫الفهرس‬

‫المؤشر األول‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬

‫قيمة الموقع األول‬

‫الحظ بداية حجز المواقع من الموقع ‪.0‬‬ ‫◼‬

‫عند حجز ‪ n‬من المواقع فإن أرقام المواقع تكون من صفر إلى ‪n-1‬‬ ‫◼‬

‫فمثال في المصفوفة السابقة تم حجز ‪ 9‬مواقع لذا فإن أرقام المواقع بدأت من ‪ 0‬إلى ‪.8‬‬ ‫◼‬

‫‪9‬‬
‫طرق تعريف المصفوفة متعددة األبعاد‬

‫;] ‪type [,] array_name = new type[ x, y‬‬

‫‪10‬‬
‫التفاعل مع خاليا المصفوفة‬

‫▪ يمكن التفاعل مع أي عنصر من عناصر المصفوفـة من‬


‫خالل التعبيـر البرمجي التالي و الذي يشمل على اسم‬
‫المصفوفة باإلضافـة إلى رقم الخلية المراد التفاعل معها‪.‬‬

‫‪Array [ i ] = k‬‬

‫اسم المصفوفـة‬ ‫القيمة المراد وضعها في الخلية‬


‫رقم الخلية المراد التفاعل معها‬
‫و هو محدد من صفر إلى‬
‫طول الخلية ‪1-‬‬

‫‪11‬‬
‫التفاعل مع خاليا المصفوفة‬

‫يتم التعامل مع العناصر عن طريق المؤشر ‪.index‬‬ ‫◼‬

‫;‪marks[1]=40‬‬ ‫مثال‪:‬‬ ‫◼‬

‫في المثال السابق تم تعديل قيمة العنصر رقم ‪ 1‬لتصبح ‪ 40‬بدال‬ ‫◼‬
‫من ‪.90‬‬
‫ولطباعة العنصر نكتب مايلي‪:‬‬ ‫◼‬
‫;)]‪System.out.println("element at index 0: " + marks [0‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪90‬‬ ‫‪40‬‬ ‫‪70‬‬ ‫‪50‬‬ ‫‪77‬‬

‫‪12‬‬
‫التفاعل مع خاليا المصفوفة‬

.‫ولطباعة جميع عناصر المصفوفة البد من استخدام جمل التكرار‬ ◼

:‫مثال‬ ◼
class ArrayDemo
{ ‫الناتج‬
public static void main(String[] args) 90
{ 80
int marks[]= {90,80,70,50,77}; 70
for(int i=0;i<5; i++) 50
System.out.println(marks[i]); 77
}
}

13
‫تحديد قيم ابتدائية للمصفوفة‬

‫عند تعريف مصفوفة يتم تخزين قيم تلقائية بناء على نوع‬ ‫◼‬
‫المصفوفة‪:‬‬

‫النوع‬ ‫القيمة االبتدائية‬


‫‪int, byte, short, long‬‬ ‫‪0‬‬
‫‪double, float‬‬ ‫‪0.0‬‬
‫‪String‬‬ ‫‪Null‬‬
‫‪Char‬‬ ‫فراغ‬
‫‪boolean‬‬ ‫‪false‬‬

‫‪14‬‬
‫تحديد قيم ابتدائية للمصفوفة‬

‫يمكن تحديد قيم ابتدائية بالطريقة التالية‪:‬‬ ‫◼‬

‫}‪int marks[]= {90,80,70,50,77‬‬


‫سيتم حجز مواقع على عدد هذه القيم االبتدائية‪.‬‬ ‫◼‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫‪90‬‬ ‫‪80‬‬ ‫‪70‬‬ ‫‪50‬‬ ‫‪77‬‬

‫‪15‬‬
‫حجم المصفوفة‬

. ‫ تحتوي على حجم المصفوفة‬The variable length ◼

list.length is 6. ◼

int[] list = {10, 20, 30, 40, 50, 60};

16
‫مثال إخراج بيانات مصفوفة‬

class ArrayDemo
{
public static void main(String[] args)
{
int marks[]= {90,80,70,50,77};

for(int i=0;i< list.length; i++)


System.out.println(marks[i]);
}

17
‫نشاط‬

:‫ما هي مخرجات البرنامج إذا عدلنا البرنامج كما يلي‬ ◼


class ArrayDemo
{
public static void main(String[] args) ‫الناتج‬
{
90
int marks[]= {90,80,70,50,77};
40
marks[1]=40;
70
for(int i=0;i<5; i++)
50
System.out.println(marks[i]);
77
}
}

18
‫نشاط‬

:‫ما هي مخرجات البرنامج إذا عدلنا البرنامج كما يلي‬ ◼


class ArrayDemo
{
public static void main(String[] args) ‫الناتج‬
{
10
int A[]= {1,2,3,4, 7};
10
int B[]= {9,8, 0,5,7};
3
int C[]= new array[ 5];
9
for(int i=0;i<5; i++) {
14
C[i]= A[i]+ B[i] ;
System.out.println(C[i]);
}}
}
19
‫مثال تهيئة جميع عناصرمصفوفة‬

class ArrayDemo
{
public static void main(String[] args)
{
int list[]= new array[ 10];

for(int i=0;i< list.length; i++)


list [i]=5;
}

20
‫مثال إدخال بيانات إلى المصفوفة‬

class ArrayDemo
{
public static void main(String[] args)
{
String input;
int list[]= new array[ 10];
for(int i=0;i< list.length; i++) }
input = JOptionPane.showInputDialog("give me a number ");
list [i]= = Integer.parseInt(input);
}}

21
‫مثال إيجاد الرقم األكبر في المصفوفة‬
class MinAlgorithm
{
public static void main ( String[] args )
{
int[] array = {4, 19, 3, 5, 0, -1, 12, 2 } ;
int min=array[0]; // initialize the current minimum

for ( int index=0; index < array.length; index++ )


if ( array[ index ] < min )
min = array[ index ] ;
System.out.println("The minimum of this array is: " + min
);
}
}

22
‫تمارين‬
‫اكتب برنامج يقوم بإنشاء مصفوفة تحتوي على البيانات ]‪[-1,2, 3,-7,- 3,8,1‬ثم يقوم‬ ‫‪(1‬‬
‫بطباعة عدد مرات ظهور األرقام الموجبة و عدد مرات ظهور األرقام السالبة في‬
‫المصفوفة ‪A‬‬
‫اكتب برنامج يقوم بإدخال مصفوفة ‪ A‬تحتوي ‪10‬أرقام و رقم ‪ N‬ثم يقوم بطباعة مرات‬ ‫‪(2‬‬
‫ظهوره في المصفوفة‪.‬‬
‫اكتب برنامج يقوم بإدخال مصفوفة ‪ A‬تحتوي ‪10‬أرقام ثم يقوم بطباعة مجموع األرقام في‬ ‫‪(3‬‬
‫المصفوفة‪.‬‬
‫اكتب برنامج يقوم بإدخال مصفوفة ‪ A‬تحتوي ‪10‬أرقام و رقم ‪ N‬ثم يقوم بالتثبت من وجوده‬ ‫‪(4‬‬
‫في المصفوفة‪.‬‬
‫اكتب برنامج يقوم بإدخال مصفوفة ‪ A‬تحتوي ‪10‬أرقام و رقم ‪ N‬ثم يقوم بإيجاد الرقم األكبر‬ ‫‪(5‬‬
‫في المصفوفة‪.‬‬

‫‪23‬‬

You might also like