المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : المصفوفات والسجلات (حاسوب)


عثمان صدى
02-12-2012, 06:12 PM
بسم الله الرحمن الرحيم
سوف أتناول معكم بإذن الله تعالى مقرر الحاسوب الصف الثالث الثانوى
عبر مجموعة من المحاضرات (الدروس) وفى نهاية كل درس بإذنه تعالى نضع تمريناً ليقوم الطالب بحله
وإن أراد الطالب مزيداً من التوضيح لأى مسألة فعليه إرسال ذلك عبر البريد الخاص
osmansada@gmail.com
كما يمكنه أيضاً إرسال حل التمرين فى نفس البريد لإكتساب مزيداً من الفوائد
ولله خالص الأعمال

بسم الله نبدأ على بركة الله


المصفوفات والسجلات : ( Records And Arrays)
مدخل : إذا قمنا بتقسيم أنواع البيانات إلى متغير ( بسيط ، قصير ، طويل ) فعند تعريف بيانات مركبة مثال الحالة الإجتماعية للطالب ( إسمه ، عمره ، سكنه ، مواده ) لا نستطيع تعريف ذلك بإحدى المتغيرات السابقة ( بسيط ، قصير ، طويل ) فالبسيط هو الذى يعبر عن وحدة بيانية واحدة فقط فى الذاكرة وكذلك الأخريات . لأن بيانات الطالب هى عدة متغيرات ولكل متغير موقع فى الذاكرة وتمثل جميعها وحدة بيانات مركبة .
فالمتغير الأساسى هو الطالب وبياناته وحدات مركبة منه .
س / كيف يمكن التعبير عن هذه البيانات مشتركة فى الذاكرة ؟ بواسطة بنائيات المصفوفات والسجلات .
المصفوفات (Arrays) :
تعريف المصفوفة :
هى بنائية بيانية مركبة تحمل نوع واحد من أنواع البيانات ولها أبعاد قد تكون واحد /أكثر.
تعريف آخر : هى بنائية بيانية مركبة تتصف بالمواصفات التالية :
1/ كل وحداتها البيانية من نوع واحد .
2/ تتكون من أبعاد قد تكون واحد / أكثر
الشهادة 2006م : أذكر مواصفات المصفوفة ؟
أنواع المصفوفة :
أ/ مصفوفة ذات بعد واحد (One Dimension Array ):
وهى فى صورة صف أو عمود مثال مصفوفة أسماء طلاب الفصل (عمودية) أو مصفوفة الأرقام أدناه :
مصفوفة الأرقام هى : 2 6 8 10 15 4 ومصفوفة أسماء طلاب الفصل هى :
1/ محمد حسن
2/ عثمان عوض
3/ مروة أحمد
4/ شيماء عمار
5/ خالد السر
6/ سماح محمد

الشهادة 2009م : فرق بين كل من :
- السجلات والمصفوفات
- البنائيات البيانية البسيطة والبنائيات البيانية المتجردة
- نظامى الليفو (LIFO) والفيفو (FIFO)

ب/ مصفوفة ذات بعدين (Two Dimension Array ):
وهى فى صورة صفوف وأعمدة معاً مثال مصفوفة الأرقام التالية:
5 9 1 4
7 6 3 0
أبعاد المصفوفة :
هى عدد الصفوف والأعمدة معاً . فمثلاً مصفوفة الأرقام أعلاه ذات بعدين (2 ×أربعة أعمدة) تساوى ثمانية (العناصر) ومصفوفة الأسماء السابقة ” ذات بعد واحد ” = 1 (عمود) × 6(صف ) = 1×6 = 6 مجموع الأبعاد أو العناصر .
الموقع الأساسى (Base Location) :
هو الموقع الذى يبدأ منه تخزين عناصر المصفوفة على التوالى فى الذاكرة .
رقم المؤشر (Pointer Number) :
هو رقم الموقع الذى يشير إلى ما بداخله .
كيفية تخزين المصفوفة فى الحاسوب ؟
1/ تخزين الموقع الأساسى .
2/ تخزين عدد أبعاد المصفوفة .
3 / تخزين أرقام المؤشرات .
4/ تخزين مؤشر العنصر والموقع الأساسى وعدد الأبعاد مجتمعة وذلك للوصول لأى عنصر فى الذاكرة عن طريقها .
قواعد حساب موقع أى عنصر فى ذاكرة المصفوفة :
إذا كانت المصفوفة ذات بعد واحد :
الموقع الأساسى + (رقم المؤشر – 1 )
إذا كانت المصفوفة ذات بعدين :

الموقع الأساسى + طول البعد الأول (س)×( المؤشر الثانى -1) + (المؤشر الأول -1)
أو :
الموقع الأساسى + (المؤشر الثانى -1) × طول البعد الأول (س) + (المؤشر الأول -1)

وإذا كان لدينا مصفوفة تسمى (أ) بها ( س، ص) هما أرقام مؤشرا العنصر الأول والثانى على التوالى يمكن تمثيل القاعدة بالحروف كالآتى :
1/ إذا كانت المصفوفة ذات بعد واحد :
الموقع الأساسى + (س – 1 )

2/ إذا كانت ذات بعدين :
الموقع الأساسى + طول البعد الأول (س)×( ص -1) + (س -1)
مثال : مصفوفة ذات بعد واحد الموقع الأساسى لها 18 جد موقع العنصر الخامس فيها ؟
الموقع الأساسى + (رقم المؤشر – 1 ) = 18 + (5 - 1) = 22
18 -19-20-21-22
18 هو الموقع الاساسى و 22 هو موقع العنصر الخامس فيها

مثال : مصفوفة ذات بعد واحد الموقع الأساسى لها 3 جد موقع العنصر الـ 24 فيها ؟
الموقع الأساسى + (رقم المؤشر – 1 ) = 3 + (24 - 1) = 26
تدريب :
مصفوفة ذات بعد واحد الموقع الأساسى لها صفر جد موقع العنصر الـتاسع فيها ؟
مثال :مصفوفة ذات بعدين بها ( 4صفوف وثمانية أعمدة) الموقع الأساسى لها 12 جد موقع العنصر (6،4) فيها ؟
= الموقع الأساسى + (ص -1) × طول البعد الأول + (س -1)
= 12 + (6 – 1) × 4 + (4-1) = 12 + 20 + 3 = 35

مثال : مصفوفة ذات بعدين الموقع الأساسى لها 305 جد موقع العنصر (3،1) فيها ؟
= 305 + (3 – 1) × 1 + (1-1) = 305 + 2 + 0 = 307

مثال : إذا كان موقع العنصر ( 2 ، 4 ) فى المصفوفة أ (4 × 6 ) هو 100 جد الموقع الأساسى لهذه المصفوفة ؟
ملحوظة : (2) هى (س) أى المؤشر الأول و (4) هى (ص) أى المؤشر الثانى و(أ) هى المصفوفة و(4) هى عدد الصفوف و (6) هى عدد الأعمدة وطول البعد فى هذا المثال = 4 أى عدد الصفوف .
موقع العنصر = الموقع الأساسى + (ص -1) × طول البعد الأول + (س -1)
100 = م + (4 – 1) × 4 + (2-1) ، 100 = م + 13 ، 100-13 = م ، م = 87

تمرين :
1/ هات مثال لمصفوفة ذات بعدين صفِّية ؟ (تتكون من صف واحد وأعمدة/ عمود)
2/ هات مثال لمصفوفة ذات بعد واحد صفِّية ؟ (تتكون من صف واحد فقط)
3/ ما هو الفرق بين المصفوفتين أعلاه ؟
4/ مصفوفة ذات بعد واحد الموقع الأساسى لها 15 أوجد موقع العنصر العاشر فيها ؟
5/ مصفوفة ذات بعدين الموقع الأساسى لها 2 أوجد موقع العنصر (21، 3) فيها ؟

ونسأل الله لنا ولكم حسن الثواب والتوفيق
والله من وراء القصد وهو هادى السبيل

عثمان صدى
02-12-2012, 06:20 PM
كيفية تعريف المصفوفة فى لغة باسكال
تتفق كل اللغات على ضرورة تعريف المصفوفة فى بداية البرنامج حيث يتم تعريف :
1/ إسم المصفوفة 2/ عدد الأبعاد 3/ طول كل بعد 4/ نوع البيانات (المتغير)
ويتم ذلك أولاً بكتابة كلمة متغير (Var) فى البداية ثم (إسم المصفوفة) ثم (:) ثم كلمة مصفوفة (Array) ويكتب طول البعد داخل أقواس مربعة ثم (تعريف نوع المتغير) ويفصل بين طول البعد بنقطتين ثم يتم وضع (;) فى النهاية وتصبح المصفوفة بهذه الصورة إذا كانت ذات بعد واحد وطوله 6 وبياناتها حرفية:

متغير Var
س: مصفوفة [1.. 6] حرفية ; ; X : array [ 1..6 ] of char

ويتم تعريف المصفوفة ذات البعدين بنفس طريقة البعد الواحد ولكن يفصل بين كل بعد والآخر بعلامة (,) مثلاً ذات بعدين طولها (6 ، 8) نوعها حرفية :
متغير Var
س: مصفوفة [1.. 6 ,1.. 8]حرفية ; X : array [1..6 , 1..8] of char

تدريب :
عرف مصفوفة فى باسكال إذا كانت :

/ ذات بعد واحد طولها 20 نوعها حقيقية ؟
ب/ ذات بعدين طولها (22، 9) نوعها رقمية ؟
لمعرفة خطوات تخزين المصفوفة أنظر الآتى :
إفترض أن لدينا طلاب سوف يجلسون إمتحان وعددهم (36) طالباً فى3 غرف .نبدأ أولاً بحجز المواقع الموقع الأساسى(كم طالباً فى كل غرفة) ثم حجز المواقع نفسها (عدد الأبعاد) ثم أرقام الجلوس على الأدراج (أرقام المؤشرات) وأخيراً يتم وضع قائمة بأسماء الطلاب وأرقام الجلوس خارج الغرفة على الباب (تخزين كل العناصر مجتمعة) وذلك حتى يتمكن أى طالب من معرفة مكانه (الوصول لأى بيان بها)وهكذا فى كل غرفة .







السجلات (Records) :
مدخل : إذا أضفنا لمصفوفة أسماء الطلاب بعض التعديلات لتصبح بهذه الصورة :
الرقم الإسم عربى رياضيات حاسوب المجموع
1 محمد حسن 80 89 98 267
2 عثمان عوض 87 80 100 267
3 مروة أحمد 100 100 100 300
4 شيماء عمار 89 89 89 267
5 خالد السر 80 99 88 267
6 سماح محمد 95 97 99 291

لاحظ مدى التغير الذى حدث فقد أصبحت أنواع البيانات تختلف عن بعضها ، لذلك هل نستطيع أن نطلق عليها (مصفوفة) ؟ بالطبع لا لعدم ( تساوى البيانات). ماذا نسمى هذه البنية البيانية ؟ تسمى سجل .
تعريف السجل : هو مجموعة من الحقول التى تشترك فى وصف شئ واحد .
مقارنة بين السجل والمصفوفة :
الرقم الإسم عربى رياضيات حاسوب المجموع
1 محمد حسن 80 89 98 267
2 عثمان عوض 87 80 100 267
3 مروة أحمد 100 100 100 300
4 شيماء عمار 89 89 89 267
5 خالد السر 80 99 88 267
6 سماح محمد 95 97 99 291


3 100 100 100 300
4 89 89 89 267
5 80 99 88 267
6 95 97 99 291



1/ الفرق بين السجل والمصفوفة ؟ نوع البيانات ( تشترط المصفوفة توحيد نوع البيانات )
2/ الفرق بين السجل والمصفوفة ذات البعدين ؟ يمكن إعتبار السجل صف فى مصفوفة ذات بعدين .
توضيح : بإفتراض أن الطالب رقم (4) فى السجل بياناته هى (89 ، 89، 89) وهى درجاته وفى نفس الوقت هى درجاته فى المصفوفة ويعتبر فى المصفوفة يقع فى الصف الرابع . أنظر جيداً للصورة السابقة .
كيفية تعريف (تخزين) السجل فى الحاسوب :
يعرف ( يخزن) السجل بنفس طريقة المصفوفة ولكن بمواقع متجاورة بدون مؤشرات حقول . بل توجد معرفات / أسماء للحقول . مثال : النوع مصفوفة سجلات وهى سجل ويتم ذلك أولاً بكتابة كلمة النوع (Type) فى البداية ثم (إسم السجل) ثم علامة (=) ثم كلمة سجل (Record) ثم يتم تعريف الحقول وذلك بكتابة إسم الحقل ثم (:) ثم كلمة (Array) ويكتب طول البعد داخل أقواس مربعة ثم (تعريف نوع المتغير) ويفصل بين طول البعد بنقطتين ثم كلمة (end) ثم (; ) فى النهاية ويصبح السجل بهذه الصورة إذا كان يسمى عناوين وبه الإسم 10 حروف ، التلفون 15 رقم .
النوع Type
العناوين = سجل address=Record
الإسم: مصفوفة [1.. 10] حرفية ; name : array [1..10] of char;
التلفون: مصفوفة [1.. 15] رقمية ; tele : array [1..15] of integer;
نهاية ; end ;
مثال : أكتب شفرة للإعلان عن سجل يسمى الطلاب يحتوى على : الإسم:20 حرف / العمر: رقمى / السكن : 15 حرف / الرمز : رقمى / التلفون : 16 رقم ، لاحظ الفرق بين رقمى و 16 رقم ؟ لأن العمر لا يمكن أن يكون مكون من أرقام بل رقم واحد .
النوع Type
الطلاب = سجل students=Record
الإسم: مصفوفة [1.. 20] حرفية ; name : array [1..20] of char;
العمر: رقمى ; age: integer;
السكن: مصفوفة [1.. 15] حرفية ; Live : array [1..15] of char;
الرمز: رقمى ; code: integer;
التلفون: مصفوفة [1.. 15] رقمية ; tele : array [1..15] of integer;
نهاية ; end ;
يتم تعريف السجل بطريقتين : 1/ كنوع بيانات : و يتم التعامل معه بتعريف متغيرعلى النحو التالى :
Rec:studen - records; ثم إستدعاء إسم المتغير بواسطة ما يسمى بالإجراءات procedure
أوالدوال function وذلك للتنفيذ داخل البرنامج . 2 / كمتغير :

متغير Var
الطلاب: مصفوفة[1.. 20]عناوين ; students: array[1..20] of address;
العنوان: عناوين ; Line: address;
تدريب : عرف سجل باللغة العربية يسمى الجامعة يتكون من رمز الكلية (رقمى) ، إسم الكلية (20 حرف) ،
موقع الجامعة (9 حروف) ، عدد الطلاب (رقمى) ؟


تمت المحاضرة بحمد الله وتوفيقه

عثمان صدى
02-12-2012, 06:24 PM
ملحوظة : علامتى الوجه الضاحك باللون الاصفر واللبنى هما علامات كتابة فى المصفوفات استبدلهما النظام تلقائيا وهما بهذا الشكل اصلا أى الفاصل بين الاسم وكلمة مصفوفة

name : array
والعلامة الثانية هى الفاصلة المنقوطىة (semicolon)

مجموعة المهاجرين
02-13-2012, 12:45 AM
يعطيك العافية أستاذ عثمان

علي المشاركة الرائعة

نتمني المزيد و المزيد

شكراً لك

أمنية
02-13-2012, 12:52 AM
مشكور استاذ عثمان

بداية موفقة

و انطلاقه قويه

سنتابع كل ما لديك

عثمان صدى
02-14-2012, 11:01 AM
مشكور الأخ المدير العام والأخت أمنية على المرور والتقييم

قيثارة
02-15-2012, 08:28 PM
مشكوووووور والله يعطيك الف عافيه

عثمان صدى
02-17-2012, 11:47 PM
ألف شكر على المرور قيثارة

إبراهيم يس
02-28-2012, 01:39 PM
مشكور علي المادة المهمة

ربنا يوفقكم

عثمان صدى
02-28-2012, 08:56 PM
تشكر الاخ ابراهيم على التقييم والمرور

زينب حسين
05-06-2012, 01:15 PM
بارك الله فيكم

عثمان صدى
09-17-2014, 01:53 PM
مروركم أسعدنى
وين التفاعل والأسئلة يا طلاب
يمكنكم طرح الأسئلة فى نفس البوست إن كان هنالك شئ غير واضح