‫ابعة‬‫ر‬‫ال‬‫املحاضرة‬
1
‫املصفوفات‬
ghadeer-al-hasan ghadeerof@gamil.com
‫إعداد‬:‫م‬.‫الحسن‬ ‫غدير‬
‫املصفوفة‬:‫القيم‬ ‫من‬‫مجموعة‬ ‫لتخزين‬‫تستخدم‬ ‫معطيات‬ ‫بنية‬
‫الذاكرة‬‫بخانات‬ ‫متسلسل‬ ‫بشكل‬‫القيم‬‫ن‬‫تخز‬
‫عنها‬‫التصريح‬ ‫بعد‬‫مباشرة‬ ‫بشكل‬‫حجمها‬‫تغير‬‫يمكن‬‫ال‬ ‫حيث‬ ،‫البرنامج‬‫فترة‬ ‫طيلة‬ ‫ثابت‬ ‫حجم‬ ‫تأخذ‬
‫باملصفوفة‬‫ن‬‫ستخز‬‫التي‬ ‫القيم‬ ‫هي‬ ‫ما‬ ‫ه‬‫ر‬‫بدو‬ ‫يحدد‬ ، ‫البيانات‬ ‫من‬ ‫واحد‬‫نمط‬ ‫لها‬‫مصفوفة‬ ‫كل‬
‫الواحدة‬‫باملصفوفة‬‫نمط‬ ‫من‬‫أكثر‬‫تخزين‬‫يمكن‬‫ال‬
‫تعريف‬ 2
Type Name[size];
‫القوسين‬ ‫ضمن‬‫حجمها‬ ‫تحديد‬ ‫يتم‬ ‫حيث‬ ،‫عنها‬‫التصريح‬ ‫أثناء‬ ‫املصوفة‬ ‫حجم‬ ‫تحديد‬ ‫يجب‬
int a[10];
float b[15];
char name[100];
‫للمص‬ ‫ابتدائية‬ ‫قيم‬ ‫إعطاء‬ ‫يتم‬‫ف‬‫مس‬ ‫بشكل‬ ‫عنا‬‫التصريح‬ ‫بعد‬‫أو‬‫عنها‬‫التصريح‬ ‫أثناء‬ ،‫وفة‬‫ت‬‫قل‬
‫ابتدائية‬ ‫بقيم‬ ‫املصفوفة‬ ‫تهيئة‬ 3
‫دليلها‬‫خالل‬ ‫من‬‫املصفوفة‬ ‫لقيم‬‫ل‬‫الوصو‬ ‫يتم‬index
‫العنصر‬‫لقيمة‬ ‫للوصل‬‫املصفوفة‬‫قوسين‬ ‫بين‬ ‫الدليل‬ ‫وضع‬ ‫يتم‬ ‫حيث‬
‫له‬ ‫المقابل‬ ‫الدليل‬ ‫العنصر‬
0 ‫األول‬
1 ‫الثاني‬
2 ‫الثالث‬
3 ‫الرابع‬
… ...
Size - 1 ‫األخير‬
‫املص‬ ‫قيم‬‫إدخال‬‫ف‬‫وفة‬‫التنفيذ‬‫شاشة‬ ‫على‬‫قيمها‬ ‫وطباعة‬ ،‫املفاتيح‬ ‫لوحة‬ ‫من‬
‫معها‬ ‫التعامل‬ ‫لتسهيل‬‫املصفوفات‬ ‫مع‬ ‫التعامل‬ ‫عند‬ ‫الحلقات‬‫استخدام‬ ‫يتم‬
‫للمصفوفة‬ ‫كدليل‬ ‫الحلقة‬ ‫عداد‬‫نستخدم‬ ‫حيث‬
‫باملصفوفات‬ ‫واإلخراج‬‫اإلدخال‬ 4
‫باملصفوفات‬ ‫واإلخراج‬‫اإلدخال‬ 5
‫عناصر‬‫ثالثة‬ ‫من‬‫مصفوفة‬ ‫لدينا‬‫لنفرض‬a[3]
‫الدليل‬ ‫نحتاج‬ ،‫األخير‬‫للعنصر‬ ‫ل‬‫للوصو‬2(‫الحجم‬–1)
‫كتبنا‬‫لو‬ ‫ماذا‬a[3]‫؟؟؟‬‫العنصر‬‫قيمة‬ ‫هي‬ ‫ما‬ ،
‫املصفوفة‬‫لخارج‬‫ل‬‫الوصو‬ 6
‫واحدة‬‫بتعليمة‬‫النمط‬‫نفس‬ ‫من‬‫مصفوفات‬ ‫عدة‬ ‫عن‬‫التصريح‬‫يكمن‬
‫مالحظات‬ 7
Int a[10], b[3] = {10, -1, -5};
‫عنها‬‫التصريح‬ ‫عن‬ ‫املعطاة‬ ‫العناصر‬ ‫عدد‬ ‫من‬‫حجمها‬ ‫تحديد‬ ‫يتم‬ ،‫للمصفوفة‬ ‫حجم‬ ‫إعطاء‬‫عدم‬ ‫عند‬.
Char name[] = {‘a’,’z’,’k’};
‫مالحظة‬:‫التهيئة‬ ‫عند‬‫صفر‬‫قيمة‬ ‫بإعطاء‬ ‫قم‬ ،‫تكرار‬‫حلقة‬ ‫ن‬‫بدو‬‫صفر‬‫املصفوفة‬ ‫قيم‬‫جميع‬ ‫إعطاء‬ ‫دت‬‫ر‬‫أ‬‫حال‬ ‫في‬(‫ل‬‫ألو‬
ً
‫عمليا‬
‫عنصر‬)‫صفر‬ ‫قيمة‬ ‫سيأخذ‬‫العناصر‬ ‫من‬ ‫تبقى‬ ‫وما‬(
ً
‫الحقا‬‫ذكرنا‬‫كما‬)
‫من‬ ‫مكونة‬‫مصفوفة‬ ‫إعطاء‬‫حال‬ ‫في‬10‫عناصر‬ ‫سبعة‬‫أو‬‫عناصر‬ ‫لثمانية‬ ‫ابتدائية‬ ‫قيم‬ ،‫عناصر‬(‫حجمها‬ ‫من‬ ‫أقل‬)‫سيتم‬
‫العناصر‬ ‫من‬ ‫تبقى‬ ‫ملا‬‫صفر‬ ‫قيمة‬ ‫إعطاء‬
‫من‬ ‫مصوفة‬ ‫لدينا‬ ‫كان‬‫حال‬ ‫في‬4‫ل‬ ‫ابتدائية‬ ‫قيم‬ ‫وإعطاءه‬‫عنها‬‫التصريح‬ ‫وعند‬ ،‫عناصر‬7‫البرنام‬ ‫من‬ ‫خطأ‬ ‫مي‬‫ر‬ ‫سيتم‬‫عناصر‬‫ج‬
‫مثال‬ 8
‫مصفوفة‬‫عناصر‬ ‫مجموع‬ 9
‫بشكل‬ ‫مصفوفة‬‫عناصر‬ ‫قيم‬ ‫لطباعة‬ ‫مثال‬Histogram 10
‫تمهيدي‬‫مثال‬ 11
‫نرد‬‫حجر‬ ‫ات‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬
‫توليد‬ ‫نريد‬6000‫بين‬‫قيمهم‬‫ة‬‫ر‬‫محصو‬ ‫عشوائي‬ ‫قم‬‫ر‬1‫و‬6
‫الستة‬‫النرد‬ ‫وجه‬ ‫من‬ ‫وجه‬ ‫كل‬‫ر‬‫ظهو‬‫تكرار‬ ‫معرفة‬ ‫بعدها‬ ‫ونريد‬
‫املصفوفات‬‫باستخدام‬ ‫وذلك‬
‫الحل‬‫أفكار‬:
‫حلقة‬‫ضمن‬ ‫سنولد‬
ً
‫بداية‬6000‫عشوائي‬ ‫قم‬‫ر‬
‫نرد‬‫حجر‬‫وجوه‬ ‫من‬ ‫وجه‬‫ر‬‫ظهو‬‫تكرار‬ ‫هي‬‫قيمها‬ ،‫عناصر‬ ‫ستة‬ ‫من‬ ‫مصوفة‬ ‫لدينا‬ ‫ن‬‫سيكو‬
‫ه‬‫ر‬‫ظهو‬‫تكرار‬ ‫هي‬‫العنصر‬ ‫هذه‬‫وقيمة‬ ،‫ظهر‬‫الذي‬‫الوجه‬ ‫عن‬‫للتعبير‬‫املصفوفة‬ ‫دليل‬ ‫سنتسخدم‬
12
‫نرد‬‫حجر‬ ‫ات‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬
‫توليد‬ ‫نريد‬6000‫بين‬‫قيمهم‬‫ة‬‫ر‬‫محصو‬ ‫عشوائي‬ ‫قم‬‫ر‬1‫و‬6
‫الستة‬‫النرد‬ ‫وجه‬ ‫من‬ ‫وجه‬ ‫كل‬‫ر‬‫ظهو‬‫تكرار‬ ‫معرفة‬ ‫بعدها‬ ‫ونريد‬
‫املصفوفات‬‫باستخدام‬ ‫وذلك‬
13
‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬
‫كان‬ ‫إذا‬char‫واحد‬‫حرف‬ ‫لنا‬ ‫يمثل‬‫نمط‬ ‫من‬ ‫مصفوفة‬ ‫فأن‬ ،char‫ف‬‫ر‬‫محا‬‫سلسلة‬ ‫لنا‬‫تمثل‬
‫سلسلة‬‫ضمن‬‫حرف‬ ‫كل‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬ ‫نريد‬
‫فقط‬‫صغيرة‬‫أحرف‬ ‫على‬‫إال‬‫ي‬‫تحتو‬‫ال‬ ‫السلسلة‬ ‫أن‬ ‫العلم‬ ‫مع‬(‫املسألة‬ ‫لتسهيل‬)
‘a’ ‘d’ ‘e’ ‘a’ ‘f’ ‘f’ ‘a’ ‘j’
Char str[]
‫األحرف‬ ‫عدد‬‫عام‬ ‫بشكل‬26‫لتخزين‬‫مصفوفة‬‫يلزمنا‬،‫حرف‬26‫بالسلسلة‬ ‫ه‬‫ر‬‫ظهو‬‫متوقع‬‫حرف‬ ‫ألي‬‫تكرار‬
‫حرف‬‫ترميز‬a‫ل‬‫جدو‬ ‫في‬ASCII‫هو‬97
‫حرف‬‫ر‬‫ظهو‬ ‫عند‬b‫من‬‫سنطرحهه‬
ُ
‫مثال‬‘a’‫هو‬ ‫الناتج‬1‫التكرار‬‫بمصفوفة‬ ‫الدليل‬ ‫هذه‬‫ن‬‫سيكو‬،
‫حرف‬‫ر‬‫ظهو‬ ‫عند‬c‫من‬‫سنطرحه‬‘a’‫وهو‬‫دليله‬ ‫على‬‫لنحصل‬2
‫الحرف‬ ‫دليل‬‫هو‬ ‫ما‬a‫الصفر‬‫هو‬ ‫؟؟‬
‫على‬
ً
‫اعتمادا‬‫األبجدي‬‫تسلسلها‬‫ضمن‬‫التكرار‬‫مصفوفة‬‫ضمن‬‫األحرف‬ ‫وضعنا‬‫ن‬‫نكو‬‫بهذا‬ASCII
14
‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬
‫الحرف‬ ‫يمثل‬ ‫والذي‬ ‫صفر‬ ‫الدليل‬ ‫أن‬ ‫يوضح‬ ‫التالي‬ ‫الشكل‬a‫هي‬‫قيمته‬3‫ظهر‬‫مرات‬ ‫ثالث‬‫يعني‬ ،
‫الدليل‬2‫الحرف‬ ‫يمثل‬ ‫والذي‬c‫هي‬ ‫قيمته‬2‫مرتين‬‫ظهر‬ ‫الحرف‬‫يعني‬
‫األخير‬ ‫الدليل‬25‫الحرف‬ ‫يمثل‬ ‫والذي‬z‫قيمته‬3‫مرات‬ ‫ثالث‬‫ظهر‬‫يعني‬ ،
3 5 2 1 .. … 0 4 8 3
int freq[26]
0 1 2 3 25
15
‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬
Str[3]
‫السلسلة‬ ‫من‬ ‫الثالث‬ ‫الحرف‬ ‫أن‬‫لنفرض‬Str‫هو‬c‫هو‬ ‫سبق‬‫ما‬ ‫على‬
ً
‫بناءا‬‫التكرار‬‫بمصفوفة‬ ‫دليله‬2
‫بزيادتها‬‫سأقوم‬ ‫كيف‬ ، ‫واحد‬ ‫هي‬‫تكرار‬ ‫قيمة‬ ‫أن‬‫يعني‬ ‫هذا‬ ، ‫سبق‬ ‫فيما‬ ‫واحدة‬‫مرة‬‫ظهر‬ ‫أنه‬‫سنفرض‬
Freq[ ] ++- ‘a’
Freq[2]++
16
‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬ 17
‫املحرفية‬ ‫السالسل‬
‫النمط‬ ‫من‬ ‫مصفوفة‬ ‫عن‬‫ة‬‫ر‬‫عبا‬ ‫هي‬ ‫املحرفية‬ ‫السلسلة‬char
‫خانة‬ ‫في‬‫وضعه‬ ‫يتم‬‫حرف‬ ‫كل‬
‫ي‬‫الصفر‬ ‫املحرف‬ ‫ن‬‫يكو‬ ‫سلسلة‬‫بأي‬‫محرف‬‫آخر‬‘0’‫املحرفية‬ ‫السلسلة‬ ‫لنهاية‬‫ليشير‬
‫ي‬‫الصفر‬ ‫املحرف‬‫ملراعاة‬ ‫وذلك‬، ‫ما‬‫سلسلة‬ ‫حجم‬‫تحديد‬ ‫عن‬‫الحذر‬ ‫أخذ‬
ً
‫دوما‬‫يجب‬ ‫لذلك‬
‘a’ ‘d’ ‘e’ ‘a’ ‘f’ ‘f’ ‘a’ ‘j’ ‘e’ ‘0’
Char str[10]
‫حجمها‬‫السابقة‬ ‫السلسلة‬10‫ي‬‫تحتو‬ ،9‫ي‬‫الصفر‬‫للمحرف‬ ‫حجزه‬‫تم‬‫األخير‬‫والعنصر‬‫عناصر‬
18
‫املحرفية‬ ‫بالسالسل‬ ‫واإلخراج‬‫اإلدخال‬
‫املصفوفة‬ ‫حجم‬‫باإلدخال‬‫ز‬‫تجاو‬‫حال‬ ‫في‬
‫املصفوفة‬‫خارج‬ ‫القيم‬ ‫تكتب‬ ‫فقد‬
19
‫املحرفية‬ ‫بالسالسل‬ ‫واإلخراج‬‫اإلدخال‬ 20
‫الساكنة‬ ‫املصفوفات‬Static
‫الساكن‬‫ل‬‫املتحو‬(‫ستاتيكي‬)‫البرنامج‬ ‫تنفيذ‬‫ة‬‫فتر‬ ‫طيلة‬ ‫عليه‬ ‫تطرأ‬‫التي‬ ‫بالتغييرات‬‫يحتفظ‬‫الذي‬ ‫هو‬
‫ساكنة‬ ‫أنها‬ ‫على‬‫مصفوفة‬ ‫عن‬‫التصريح‬‫يمكن‬
‫حفظه‬ ‫سيتم‬‫آخر‬ ‫تابع‬‫أو‬‫نفسه‬ ‫التابع‬‫ضمن‬ ‫كان‬ ‫سواء‬‫عليها‬ ‫أ‬‫ر‬‫سيط‬‫تغيير‬ ‫أي‬
‫ابتدائية‬ ‫بقيم‬‫تهيئتها‬ ‫ستم‬ ،‫ساكنة‬‫مصفوفة‬ ‫عن‬‫التصريح‬ ‫عند‬(‫ي‬ ‫افتراض‬ ‫بشكل‬)‫قيم‬ ‫إعطاءها‬ ‫عدم‬‫حال‬ ‫في‬
‫االفتراضية‬ ‫القيمة‬ ‫النمط‬
‫صفر‬ ‫العددية‬ ‫األنماط‬
False ‫البولياني‬ ‫النمط‬
‫فراغ‬ ‫المحرفي‬ ‫النمط‬
21
‫مثال‬ 22
‫كوسطاء‬ ‫املصفوفات‬‫تمرير‬
‫لتابع‬ ‫كوسيط‬‫املصفوفة‬‫تمرير‬‫يمكن‬
‫باملرجعية‬‫املصفوفة‬‫تمرير‬ ‫يتم‬(‫بالقيمة‬ ‫وليس‬)‫األصلية‬ ‫النسخة‬ ‫على‬ ‫به‬‫التأثر‬ ‫يتم‬‫عليها‬ ‫تعديل‬ ‫أي‬ ،
‫قوسين‬‫النمط‬ ‫بعد‬‫ذكر‬‫يكفي‬ ،‫التابع‬‫نموذج‬‫تصريح‬ ‫في‬[ ]‫التابع‬ ‫نموذج‬ ‫في‬‫املصوفة‬ ‫اسم‬ ‫تجاهل‬ ‫،يتم‬
Void myfunction (int []);
Void myfunction2 ( int a[]); // ignore
‫األقواس‬‫ذكر‬ ‫يتم‬ ‫ال‬ ،‫فقط‬ ‫باالسم‬‫املصفوفة‬ ‫اسم‬‫تمرير‬ ‫يتم‬ ، ‫التابع‬‫مناداة‬ ‫عند‬
‫اسمها‬ ‫مع‬‫املصفوفة‬ ‫اسم‬‫ذكر‬ ‫يتم‬ ‫التابع‬ ‫جسم‬ ‫كتابة‬ ‫عند‬
Void print(int a[], int size){
for(int i = 0; i<size; i++)
cout<<a[i]<<“ “;
}
23
‫مثال‬ 24
‫مالحظات‬
‫بالذاكرة‬ ‫متتالية‬‫خانات‬‫تحجر‬‫املصفوفات‬‫تذكر‬
‫للتابع‬ ‫باالسم‬‫املصفوفة‬‫ر‬‫نمر‬ ‫لذلك‬ ،‫بها‬‫عنصر‬ ‫ل‬‫أو‬ ‫على‬ ‫يدل‬‫املصفوفة‬ ‫اسم‬
‫باملرجعية‬ ‫ر‬‫تمر‬‫فإنها‬ ‫لتابع‬‫املصفوفة‬‫تمرير‬ ‫عند‬
‫بالقيمة‬ ‫ر‬‫يمر‬ ‫فأنه‬ ،‫فقط‬ ‫واحد‬‫عنصر‬‫تمرير‬ ‫عند‬
Int a[3] = {1,2,4};
Myfunction(a[2]);
‫مكان‬ ‫أي‬‫من‬ ‫له‬‫ل‬‫الوصو‬‫يمكن‬‫عام‬ ‫كثابت‬ ‫عنه‬‫تصريح‬‫أو‬ ،‫كوسيط‬ ‫الحجم‬‫تمرير‬‫يمكن‬ ،‫لتابع‬ ‫مصفوفة‬‫تمرير‬ ‫عند‬
‫ثابت‬ ‫أنها‬ ‫على‬ ‫املصوفة‬‫تمرير‬ ‫عند‬const‫التابع‬‫جسم‬ ‫ضمن‬‫عليها‬ ‫تعديل‬ ‫أي‬‫إجراء‬ ‫يتم‬‫فال‬
Void print(const int []);
25
‫الثنائية‬ ‫املصفوفات‬
‫تخزين‬ ‫بنية‬ ‫هي‬ ‫الثنائية‬‫املصفوفة‬
‫وأعمدة‬‫أسطر‬‫تملك‬ ‫هي‬
‫باألعمدة‬ ‫تمثل‬ ‫القيم‬ ‫من‬‫مجموعة‬ ‫على‬‫ي‬‫يحتو‬ ‫سطر‬ ‫كل‬
‫سطر‬ ‫كل‬‫أجل‬‫من‬ ‫األعمدة‬ ‫على‬‫ر‬‫و‬‫للمر‬ ‫والثانية‬‫األسطر‬ ‫على‬‫ر‬‫و‬‫للمر‬‫حلقة‬ ،‫معها‬ ‫للتعامل‬ ‫لحلقتين‬‫نحتاج‬
26
‫مثال‬
‫ثنائية‬ ‫مصفوفة‬‫عناصر‬‫بجمع‬‫يقوم‬ ‫تابع‬
27
‫توضيحي‬‫مثال‬
I,J J=1 J=2 J=3 J=4 J=4
I=1
I=2
I=3
I=4
1 4 6 7 8
4 5 8 2 9
5 7 8 2 2
1 2 3 4 5
J=1 J=2 J=3 J=4 J=4J=1 J=2 J=3 J=4 J=4J=1 J=2 J=3 J=4 J=4
28
‫مالحظات‬
‫واألعمدة‬‫األسطر‬ ‫حجم‬‫ذكر‬ ‫يجب‬ ، ‫ابتدائية‬ ‫قيم‬ ‫إعطاءها‬ ‫يتم‬ ‫ولم‬ ‫ثنائية‬‫مصفوفة‬ ‫عن‬‫التصريح‬ ‫عند‬
‫الثاني‬ ‫البعد‬‫تمرير‬ ‫يجب‬ ‫تعريف‬‫أو‬‫نموذج‬ ‫سواء‬ ‫تابع‬ ‫عن‬‫التصريح‬ ‫عن‬(‫األعمدة‬)‫ل‬‫األو‬ ‫البعد‬‫ذكر‬‫يجب‬‫وال‬
‫ل‬‫األو‬ ‫البعد‬ ‫عدا‬ ‫ما‬ ‫األبعاد‬‫جميع‬‫ذكر‬‫يجب‬ ، ‫ق‬‫فو‬ ‫وما‬‫الثالثية‬‫املصفوفات‬ ‫مع‬ ‫التعامل‬ ‫حال‬ ‫في‬
29
‫انتهت‬
‫ابعة‬‫ر‬‫ال‬‫املحاضرة‬
30
ghadeer-al-hasan ghadeerof@gamil.com

4- Arrays

  • 1.
  • 2.
    ‫املصفوفة‬:‫القيم‬ ‫من‬‫مجموعة‬ ‫لتخزين‬‫تستخدم‬‫معطيات‬ ‫بنية‬ ‫الذاكرة‬‫بخانات‬ ‫متسلسل‬ ‫بشكل‬‫القيم‬‫ن‬‫تخز‬ ‫عنها‬‫التصريح‬ ‫بعد‬‫مباشرة‬ ‫بشكل‬‫حجمها‬‫تغير‬‫يمكن‬‫ال‬ ‫حيث‬ ،‫البرنامج‬‫فترة‬ ‫طيلة‬ ‫ثابت‬ ‫حجم‬ ‫تأخذ‬ ‫باملصفوفة‬‫ن‬‫ستخز‬‫التي‬ ‫القيم‬ ‫هي‬ ‫ما‬ ‫ه‬‫ر‬‫بدو‬ ‫يحدد‬ ، ‫البيانات‬ ‫من‬ ‫واحد‬‫نمط‬ ‫لها‬‫مصفوفة‬ ‫كل‬ ‫الواحدة‬‫باملصفوفة‬‫نمط‬ ‫من‬‫أكثر‬‫تخزين‬‫يمكن‬‫ال‬ ‫تعريف‬ 2 Type Name[size]; ‫القوسين‬ ‫ضمن‬‫حجمها‬ ‫تحديد‬ ‫يتم‬ ‫حيث‬ ،‫عنها‬‫التصريح‬ ‫أثناء‬ ‫املصوفة‬ ‫حجم‬ ‫تحديد‬ ‫يجب‬ int a[10]; float b[15]; char name[100];
  • 3.
    ‫للمص‬ ‫ابتدائية‬ ‫قيم‬‫إعطاء‬ ‫يتم‬‫ف‬‫مس‬ ‫بشكل‬ ‫عنا‬‫التصريح‬ ‫بعد‬‫أو‬‫عنها‬‫التصريح‬ ‫أثناء‬ ،‫وفة‬‫ت‬‫قل‬ ‫ابتدائية‬ ‫بقيم‬ ‫املصفوفة‬ ‫تهيئة‬ 3 ‫دليلها‬‫خالل‬ ‫من‬‫املصفوفة‬ ‫لقيم‬‫ل‬‫الوصو‬ ‫يتم‬index ‫العنصر‬‫لقيمة‬ ‫للوصل‬‫املصفوفة‬‫قوسين‬ ‫بين‬ ‫الدليل‬ ‫وضع‬ ‫يتم‬ ‫حيث‬ ‫له‬ ‫المقابل‬ ‫الدليل‬ ‫العنصر‬ 0 ‫األول‬ 1 ‫الثاني‬ 2 ‫الثالث‬ 3 ‫الرابع‬ … ... Size - 1 ‫األخير‬
  • 4.
    ‫املص‬ ‫قيم‬‫إدخال‬‫ف‬‫وفة‬‫التنفيذ‬‫شاشة‬ ‫على‬‫قيمها‬‫وطباعة‬ ،‫املفاتيح‬ ‫لوحة‬ ‫من‬ ‫معها‬ ‫التعامل‬ ‫لتسهيل‬‫املصفوفات‬ ‫مع‬ ‫التعامل‬ ‫عند‬ ‫الحلقات‬‫استخدام‬ ‫يتم‬ ‫للمصفوفة‬ ‫كدليل‬ ‫الحلقة‬ ‫عداد‬‫نستخدم‬ ‫حيث‬ ‫باملصفوفات‬ ‫واإلخراج‬‫اإلدخال‬ 4
  • 5.
  • 6.
    ‫عناصر‬‫ثالثة‬ ‫من‬‫مصفوفة‬ ‫لدينا‬‫لنفرض‬a[3] ‫الدليل‬‫نحتاج‬ ،‫األخير‬‫للعنصر‬ ‫ل‬‫للوصو‬2(‫الحجم‬–1) ‫كتبنا‬‫لو‬ ‫ماذا‬a[3]‫؟؟؟‬‫العنصر‬‫قيمة‬ ‫هي‬ ‫ما‬ ، ‫املصفوفة‬‫لخارج‬‫ل‬‫الوصو‬ 6
  • 7.
    ‫واحدة‬‫بتعليمة‬‫النمط‬‫نفس‬ ‫من‬‫مصفوفات‬ ‫عدة‬‫عن‬‫التصريح‬‫يكمن‬ ‫مالحظات‬ 7 Int a[10], b[3] = {10, -1, -5}; ‫عنها‬‫التصريح‬ ‫عن‬ ‫املعطاة‬ ‫العناصر‬ ‫عدد‬ ‫من‬‫حجمها‬ ‫تحديد‬ ‫يتم‬ ،‫للمصفوفة‬ ‫حجم‬ ‫إعطاء‬‫عدم‬ ‫عند‬. Char name[] = {‘a’,’z’,’k’}; ‫مالحظة‬:‫التهيئة‬ ‫عند‬‫صفر‬‫قيمة‬ ‫بإعطاء‬ ‫قم‬ ،‫تكرار‬‫حلقة‬ ‫ن‬‫بدو‬‫صفر‬‫املصفوفة‬ ‫قيم‬‫جميع‬ ‫إعطاء‬ ‫دت‬‫ر‬‫أ‬‫حال‬ ‫في‬(‫ل‬‫ألو‬ ً ‫عمليا‬ ‫عنصر‬)‫صفر‬ ‫قيمة‬ ‫سيأخذ‬‫العناصر‬ ‫من‬ ‫تبقى‬ ‫وما‬( ً ‫الحقا‬‫ذكرنا‬‫كما‬) ‫من‬ ‫مكونة‬‫مصفوفة‬ ‫إعطاء‬‫حال‬ ‫في‬10‫عناصر‬ ‫سبعة‬‫أو‬‫عناصر‬ ‫لثمانية‬ ‫ابتدائية‬ ‫قيم‬ ،‫عناصر‬(‫حجمها‬ ‫من‬ ‫أقل‬)‫سيتم‬ ‫العناصر‬ ‫من‬ ‫تبقى‬ ‫ملا‬‫صفر‬ ‫قيمة‬ ‫إعطاء‬ ‫من‬ ‫مصوفة‬ ‫لدينا‬ ‫كان‬‫حال‬ ‫في‬4‫ل‬ ‫ابتدائية‬ ‫قيم‬ ‫وإعطاءه‬‫عنها‬‫التصريح‬ ‫وعند‬ ،‫عناصر‬7‫البرنام‬ ‫من‬ ‫خطأ‬ ‫مي‬‫ر‬ ‫سيتم‬‫عناصر‬‫ج‬
  • 8.
  • 9.
  • 10.
    ‫بشكل‬ ‫مصفوفة‬‫عناصر‬ ‫قيم‬‫لطباعة‬ ‫مثال‬Histogram 10
  • 11.
  • 12.
    ‫نرد‬‫حجر‬ ‫ات‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬ ‫توليد‬ ‫نريد‬6000‫بين‬‫قيمهم‬‫ة‬‫ر‬‫محصو‬‫عشوائي‬ ‫قم‬‫ر‬1‫و‬6 ‫الستة‬‫النرد‬ ‫وجه‬ ‫من‬ ‫وجه‬ ‫كل‬‫ر‬‫ظهو‬‫تكرار‬ ‫معرفة‬ ‫بعدها‬ ‫ونريد‬ ‫املصفوفات‬‫باستخدام‬ ‫وذلك‬ ‫الحل‬‫أفكار‬: ‫حلقة‬‫ضمن‬ ‫سنولد‬ ً ‫بداية‬6000‫عشوائي‬ ‫قم‬‫ر‬ ‫نرد‬‫حجر‬‫وجوه‬ ‫من‬ ‫وجه‬‫ر‬‫ظهو‬‫تكرار‬ ‫هي‬‫قيمها‬ ،‫عناصر‬ ‫ستة‬ ‫من‬ ‫مصوفة‬ ‫لدينا‬ ‫ن‬‫سيكو‬ ‫ه‬‫ر‬‫ظهو‬‫تكرار‬ ‫هي‬‫العنصر‬ ‫هذه‬‫وقيمة‬ ،‫ظهر‬‫الذي‬‫الوجه‬ ‫عن‬‫للتعبير‬‫املصفوفة‬ ‫دليل‬ ‫سنتسخدم‬ 12
  • 13.
    ‫نرد‬‫حجر‬ ‫ات‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬ ‫توليد‬ ‫نريد‬6000‫بين‬‫قيمهم‬‫ة‬‫ر‬‫محصو‬‫عشوائي‬ ‫قم‬‫ر‬1‫و‬6 ‫الستة‬‫النرد‬ ‫وجه‬ ‫من‬ ‫وجه‬ ‫كل‬‫ر‬‫ظهو‬‫تكرار‬ ‫معرفة‬ ‫بعدها‬ ‫ونريد‬ ‫املصفوفات‬‫باستخدام‬ ‫وذلك‬ 13
  • 14.
    ‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬ ‫كان‬‫إذا‬char‫واحد‬‫حرف‬ ‫لنا‬ ‫يمثل‬‫نمط‬ ‫من‬ ‫مصفوفة‬ ‫فأن‬ ،char‫ف‬‫ر‬‫محا‬‫سلسلة‬ ‫لنا‬‫تمثل‬ ‫سلسلة‬‫ضمن‬‫حرف‬ ‫كل‬‫ر‬‫ظهو‬‫تواتر‬‫حساب‬ ‫نريد‬ ‫فقط‬‫صغيرة‬‫أحرف‬ ‫على‬‫إال‬‫ي‬‫تحتو‬‫ال‬ ‫السلسلة‬ ‫أن‬ ‫العلم‬ ‫مع‬(‫املسألة‬ ‫لتسهيل‬) ‘a’ ‘d’ ‘e’ ‘a’ ‘f’ ‘f’ ‘a’ ‘j’ Char str[] ‫األحرف‬ ‫عدد‬‫عام‬ ‫بشكل‬26‫لتخزين‬‫مصفوفة‬‫يلزمنا‬،‫حرف‬26‫بالسلسلة‬ ‫ه‬‫ر‬‫ظهو‬‫متوقع‬‫حرف‬ ‫ألي‬‫تكرار‬ ‫حرف‬‫ترميز‬a‫ل‬‫جدو‬ ‫في‬ASCII‫هو‬97 ‫حرف‬‫ر‬‫ظهو‬ ‫عند‬b‫من‬‫سنطرحهه‬ ُ ‫مثال‬‘a’‫هو‬ ‫الناتج‬1‫التكرار‬‫بمصفوفة‬ ‫الدليل‬ ‫هذه‬‫ن‬‫سيكو‬، ‫حرف‬‫ر‬‫ظهو‬ ‫عند‬c‫من‬‫سنطرحه‬‘a’‫وهو‬‫دليله‬ ‫على‬‫لنحصل‬2 ‫الحرف‬ ‫دليل‬‫هو‬ ‫ما‬a‫الصفر‬‫هو‬ ‫؟؟‬ ‫على‬ ً ‫اعتمادا‬‫األبجدي‬‫تسلسلها‬‫ضمن‬‫التكرار‬‫مصفوفة‬‫ضمن‬‫األحرف‬ ‫وضعنا‬‫ن‬‫نكو‬‫بهذا‬ASCII 14
  • 15.
    ‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬ ‫الحرف‬‫يمثل‬ ‫والذي‬ ‫صفر‬ ‫الدليل‬ ‫أن‬ ‫يوضح‬ ‫التالي‬ ‫الشكل‬a‫هي‬‫قيمته‬3‫ظهر‬‫مرات‬ ‫ثالث‬‫يعني‬ ، ‫الدليل‬2‫الحرف‬ ‫يمثل‬ ‫والذي‬c‫هي‬ ‫قيمته‬2‫مرتين‬‫ظهر‬ ‫الحرف‬‫يعني‬ ‫األخير‬ ‫الدليل‬25‫الحرف‬ ‫يمثل‬ ‫والذي‬z‫قيمته‬3‫مرات‬ ‫ثالث‬‫ظهر‬‫يعني‬ ، 3 5 2 1 .. … 0 4 8 3 int freq[26] 0 1 2 3 25 15
  • 16.
    ‫محرفية‬ ‫سلسلة‬‫في‬‫أحرف‬‫تواتر‬ ‫حساب‬ Str[3] ‫السلسلة‬‫من‬ ‫الثالث‬ ‫الحرف‬ ‫أن‬‫لنفرض‬Str‫هو‬c‫هو‬ ‫سبق‬‫ما‬ ‫على‬ ً ‫بناءا‬‫التكرار‬‫بمصفوفة‬ ‫دليله‬2 ‫بزيادتها‬‫سأقوم‬ ‫كيف‬ ، ‫واحد‬ ‫هي‬‫تكرار‬ ‫قيمة‬ ‫أن‬‫يعني‬ ‫هذا‬ ، ‫سبق‬ ‫فيما‬ ‫واحدة‬‫مرة‬‫ظهر‬ ‫أنه‬‫سنفرض‬ Freq[ ] ++- ‘a’ Freq[2]++ 16
  • 17.
  • 18.
    ‫املحرفية‬ ‫السالسل‬ ‫النمط‬ ‫من‬‫مصفوفة‬ ‫عن‬‫ة‬‫ر‬‫عبا‬ ‫هي‬ ‫املحرفية‬ ‫السلسلة‬char ‫خانة‬ ‫في‬‫وضعه‬ ‫يتم‬‫حرف‬ ‫كل‬ ‫ي‬‫الصفر‬ ‫املحرف‬ ‫ن‬‫يكو‬ ‫سلسلة‬‫بأي‬‫محرف‬‫آخر‬‘0’‫املحرفية‬ ‫السلسلة‬ ‫لنهاية‬‫ليشير‬ ‫ي‬‫الصفر‬ ‫املحرف‬‫ملراعاة‬ ‫وذلك‬، ‫ما‬‫سلسلة‬ ‫حجم‬‫تحديد‬ ‫عن‬‫الحذر‬ ‫أخذ‬ ً ‫دوما‬‫يجب‬ ‫لذلك‬ ‘a’ ‘d’ ‘e’ ‘a’ ‘f’ ‘f’ ‘a’ ‘j’ ‘e’ ‘0’ Char str[10] ‫حجمها‬‫السابقة‬ ‫السلسلة‬10‫ي‬‫تحتو‬ ،9‫ي‬‫الصفر‬‫للمحرف‬ ‫حجزه‬‫تم‬‫األخير‬‫والعنصر‬‫عناصر‬ 18
  • 19.
    ‫املحرفية‬ ‫بالسالسل‬ ‫واإلخراج‬‫اإلدخال‬ ‫املصفوفة‬‫حجم‬‫باإلدخال‬‫ز‬‫تجاو‬‫حال‬ ‫في‬ ‫املصفوفة‬‫خارج‬ ‫القيم‬ ‫تكتب‬ ‫فقد‬ 19
  • 20.
  • 21.
    ‫الساكنة‬ ‫املصفوفات‬Static ‫الساكن‬‫ل‬‫املتحو‬(‫ستاتيكي‬)‫البرنامج‬ ‫تنفيذ‬‫ة‬‫فتر‬‫طيلة‬ ‫عليه‬ ‫تطرأ‬‫التي‬ ‫بالتغييرات‬‫يحتفظ‬‫الذي‬ ‫هو‬ ‫ساكنة‬ ‫أنها‬ ‫على‬‫مصفوفة‬ ‫عن‬‫التصريح‬‫يمكن‬ ‫حفظه‬ ‫سيتم‬‫آخر‬ ‫تابع‬‫أو‬‫نفسه‬ ‫التابع‬‫ضمن‬ ‫كان‬ ‫سواء‬‫عليها‬ ‫أ‬‫ر‬‫سيط‬‫تغيير‬ ‫أي‬ ‫ابتدائية‬ ‫بقيم‬‫تهيئتها‬ ‫ستم‬ ،‫ساكنة‬‫مصفوفة‬ ‫عن‬‫التصريح‬ ‫عند‬(‫ي‬ ‫افتراض‬ ‫بشكل‬)‫قيم‬ ‫إعطاءها‬ ‫عدم‬‫حال‬ ‫في‬ ‫االفتراضية‬ ‫القيمة‬ ‫النمط‬ ‫صفر‬ ‫العددية‬ ‫األنماط‬ False ‫البولياني‬ ‫النمط‬ ‫فراغ‬ ‫المحرفي‬ ‫النمط‬ 21
  • 22.
  • 23.
    ‫كوسطاء‬ ‫املصفوفات‬‫تمرير‬ ‫لتابع‬ ‫كوسيط‬‫املصفوفة‬‫تمرير‬‫يمكن‬ ‫باملرجعية‬‫املصفوفة‬‫تمرير‬‫يتم‬(‫بالقيمة‬ ‫وليس‬)‫األصلية‬ ‫النسخة‬ ‫على‬ ‫به‬‫التأثر‬ ‫يتم‬‫عليها‬ ‫تعديل‬ ‫أي‬ ، ‫قوسين‬‫النمط‬ ‫بعد‬‫ذكر‬‫يكفي‬ ،‫التابع‬‫نموذج‬‫تصريح‬ ‫في‬[ ]‫التابع‬ ‫نموذج‬ ‫في‬‫املصوفة‬ ‫اسم‬ ‫تجاهل‬ ‫،يتم‬ Void myfunction (int []); Void myfunction2 ( int a[]); // ignore ‫األقواس‬‫ذكر‬ ‫يتم‬ ‫ال‬ ،‫فقط‬ ‫باالسم‬‫املصفوفة‬ ‫اسم‬‫تمرير‬ ‫يتم‬ ، ‫التابع‬‫مناداة‬ ‫عند‬ ‫اسمها‬ ‫مع‬‫املصفوفة‬ ‫اسم‬‫ذكر‬ ‫يتم‬ ‫التابع‬ ‫جسم‬ ‫كتابة‬ ‫عند‬ Void print(int a[], int size){ for(int i = 0; i<size; i++) cout<<a[i]<<“ “; } 23
  • 24.
  • 25.
    ‫مالحظات‬ ‫بالذاكرة‬ ‫متتالية‬‫خانات‬‫تحجر‬‫املصفوفات‬‫تذكر‬ ‫للتابع‬ ‫باالسم‬‫املصفوفة‬‫ر‬‫نمر‬‫لذلك‬ ،‫بها‬‫عنصر‬ ‫ل‬‫أو‬ ‫على‬ ‫يدل‬‫املصفوفة‬ ‫اسم‬ ‫باملرجعية‬ ‫ر‬‫تمر‬‫فإنها‬ ‫لتابع‬‫املصفوفة‬‫تمرير‬ ‫عند‬ ‫بالقيمة‬ ‫ر‬‫يمر‬ ‫فأنه‬ ،‫فقط‬ ‫واحد‬‫عنصر‬‫تمرير‬ ‫عند‬ Int a[3] = {1,2,4}; Myfunction(a[2]); ‫مكان‬ ‫أي‬‫من‬ ‫له‬‫ل‬‫الوصو‬‫يمكن‬‫عام‬ ‫كثابت‬ ‫عنه‬‫تصريح‬‫أو‬ ،‫كوسيط‬ ‫الحجم‬‫تمرير‬‫يمكن‬ ،‫لتابع‬ ‫مصفوفة‬‫تمرير‬ ‫عند‬ ‫ثابت‬ ‫أنها‬ ‫على‬ ‫املصوفة‬‫تمرير‬ ‫عند‬const‫التابع‬‫جسم‬ ‫ضمن‬‫عليها‬ ‫تعديل‬ ‫أي‬‫إجراء‬ ‫يتم‬‫فال‬ Void print(const int []); 25
  • 26.
    ‫الثنائية‬ ‫املصفوفات‬ ‫تخزين‬ ‫بنية‬‫هي‬ ‫الثنائية‬‫املصفوفة‬ ‫وأعمدة‬‫أسطر‬‫تملك‬ ‫هي‬ ‫باألعمدة‬ ‫تمثل‬ ‫القيم‬ ‫من‬‫مجموعة‬ ‫على‬‫ي‬‫يحتو‬ ‫سطر‬ ‫كل‬ ‫سطر‬ ‫كل‬‫أجل‬‫من‬ ‫األعمدة‬ ‫على‬‫ر‬‫و‬‫للمر‬ ‫والثانية‬‫األسطر‬ ‫على‬‫ر‬‫و‬‫للمر‬‫حلقة‬ ،‫معها‬ ‫للتعامل‬ ‫لحلقتين‬‫نحتاج‬ 26
  • 27.
  • 28.
    ‫توضيحي‬‫مثال‬ I,J J=1 J=2J=3 J=4 J=4 I=1 I=2 I=3 I=4 1 4 6 7 8 4 5 8 2 9 5 7 8 2 2 1 2 3 4 5 J=1 J=2 J=3 J=4 J=4J=1 J=2 J=3 J=4 J=4J=1 J=2 J=3 J=4 J=4 28
  • 29.
    ‫مالحظات‬ ‫واألعمدة‬‫األسطر‬ ‫حجم‬‫ذكر‬ ‫يجب‬، ‫ابتدائية‬ ‫قيم‬ ‫إعطاءها‬ ‫يتم‬ ‫ولم‬ ‫ثنائية‬‫مصفوفة‬ ‫عن‬‫التصريح‬ ‫عند‬ ‫الثاني‬ ‫البعد‬‫تمرير‬ ‫يجب‬ ‫تعريف‬‫أو‬‫نموذج‬ ‫سواء‬ ‫تابع‬ ‫عن‬‫التصريح‬ ‫عن‬(‫األعمدة‬)‫ل‬‫األو‬ ‫البعد‬‫ذكر‬‫يجب‬‫وال‬ ‫ل‬‫األو‬ ‫البعد‬ ‫عدا‬ ‫ما‬ ‫األبعاد‬‫جميع‬‫ذكر‬‫يجب‬ ، ‫ق‬‫فو‬ ‫وما‬‫الثالثية‬‫املصفوفات‬ ‫مع‬ ‫التعامل‬ ‫حال‬ ‫في‬ 29
  • 30.