أنت هنا:برمجها»اللغة ج»الدرس 9: الجداول والمصفوفات
الدرس 9: الجداول والمصفوفات الدرس 9: الجداول والمصفوفات
قيم الموضوع
(1 تصويت)

نتطرق في هذا الدرس إلى معرفة الجداول والمصفوفات في اللغة البرمجية ج.

 


تعريف النوع

يمكن في لغة ج تعريف أنواع بيانات جديدة بواسطة أمر تعريف النوع الذي له الصيغة التالية:

النوع <اسم> : <تعريف نوع>

مثلاً يعرف الأمر الأول في المثال التالي نوع بيانات جديد اسمه عدد_صحيح، يكافئ النوع "صحيح" المعرف أصلاً في لغة ج. أما الأمر الثاني فيعرف المتغير ص بأنه متغير من نوع عدد_صحيح.

النوع عدد_صحيح : صحيح
المتحول ص : عدد_صحيح

ويعد هذا أبسط استخدام لأمر تعريف النوع، ويفيد ببساطة في تعريف أسماء جديدة للأنواع المعرفة سابقاً. أما الاستخدام الأكثر فائدة لأمر تعريف النوع فيتمثل في تعريف أنواع البيانات المركبة، مثل الجداول والمصفوفات والوحدات، وفي تعريف المؤشرات أيضا.


الجداول

الجدول (أو الصفيفة) هو عبارة عن سلسلة متصلة من المتغيرات (أو عناصر) ذات النوع الواحد، كما هو مبين في الشكل التالي.

ويمكن لعناصر الجدول أن تكون من أنواع البيانات البسيطة، مثل الأعداد الصحيحة أو الحقيقية، أو المركبة، مثل الجداول والبنيات. ويعرف الجدول كما يلي:

صفيفة [<عبارة حسابية ثابتة>] [[<عبارة حسابية ثابتة>]] من <تعريف نوع>

حيث تحدد العبارة الحسابية عدد عناصر الجدول، ويحدد اسم النوع المذكور بعد كلمة "من" نوع عناصر البيانات في هذا الجدول. مثلاً، يعرف الأمر التالي نوعاً جديداً اسمه شعاع وهو عبارة عن جدول به 3 عناصر، كل منه عدد حقيقي.

النوع شعاع : صفيفة [3] من حقيقي


المصفوفات (الجداول ذو بعدين)

ويعرف الأمر التالي جدول ذو بعدين، متكون من 10 × 10 = 100 عنصر من النوع حقيقي.

النوع مصفوفة : صفيفة [10][10] من حقيقي


المصفوفات (الجداول ذو ثلاث أبعاد)

أما الأمر التالي فيعرف نوعاً جديداً اسمه "مصفوفة_ثلاثية­_البعد" وهو عبارة عن جدول بثلاثة أبعاد متكون من 10×5×20=1000 عنصر يمثل كل واحد منهم عددا حقيقيا.

النوع مصفوفة_ثلاثية_البعد : صفيفة [10][5][20] من حقيقي

بعد ذلك يمكن تعريف متغيرات من هذه الأنواع الجديدة. مثلاً، تعرف الجمل التالية ثلاثة متغيرات ش، ص، م لها النوع شعاع، مصفوفة، ومصفوفة_ثلاثية_البعد على التوالي.

المتحول ش : شعاع
المتحول ص : مصفوفة
المتحول م : مصفوفة_ثلاثية_البعد

ويمكن الوصول إلى أي عنصر من عناصر الجدول من خلال رقم خانته. ويكون رقم خانة أول عنصر في الجدول هو 1 ورقم خانة ثاني عنصر هو 2 وهكذامثلاً، لإسناد القيمة 6 إلى العنصر الثاني في الشعاع ش، نكتب ما يلي:

ش[2] = 6

ولإسناد القيمة 5.5 مثلاً للعنصر الثالث في البعد الأول، والتاسع في البعد الثاني، للمتغير ص، نكتب:

ص[3][9] = 5.5

وبطريقة مشابهة تسند الأمر التالي للمتغير الحقيقي ح، قيمة العنصر الذي ترتيبه 2 ، 5 ، 12 في المصفوفة ثلاثية البعد م.

ح = م[2][5][12]

مثال

النوع جدول_قيم : صفيفة [10] من صحيح
المتحول س : جدول_قيم
س[3] = 123

يعرف السطر الأول في هذا البرنامج نوعاً اسمه جدول_قيم وهو جدول أعداد صحيحة يتسع لعشرة أعداد صحيحة. ثم يعرف السطر الثاني المتغير س بأنه من النوع جدول_قيم. أخيراً توضع القيمة 123 في العنصر الثالث من الجدول س.


تمارين تطبيقية 1: الجداول

التمرين 9.1

أنجز برنامجا يـمكن من قراءة البعد ن لجدول ج من النوع صحيح (البعد الأقصى هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة.

قم كذلك بحساب وإظهار حاصل الجمع لعناصر الجدول.


التمرين 9.2

 أنجز برنامجا يـمكن من قراءة البعد ن لجدول ج من النوع صحيح (البعد الأقصى هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة
أزل من الجدول القيم التي تساوي واحتفظ بالعناصر المتبقية. أظهر الجدول الناتج. 


التمرين 9.3

 أنجز برنامجا يـمكن من قراءة البعد ن لجدول ج من النوع صحيح (البعد الأقصى هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة.

اقلب بعد ذلك بقلب عناصر الجدول بدون استعمال جدول آخر للمساعدةأظهر الجدول الناتج. 


التمرين 9.4

أنجز برنامجا يـمكن من قراءة البعد ن لجدول ج من النوع صحيح (البعد الأقصى هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة.

قم بتحديد القيم الموجبة وضعها في جدول ثان سميه جموجب.

قم بتحديد القيم السالبة وضعها في جدول ثالث سميه جسالب.

أظهر الجدولين على الشاشة.


تمارين تطبيقية 2: المصفوفات

التمرين 9.5

أنجز برنامجا يـمكن من قراءة البعدين ل و س  لجدول ج من النوع صحيح (البعد الأقصى  للأعمدة والسطور هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة، وكذلك مجموع عناصره.


التمرين 9.6

أنجز برنامجا يـمكن من قراءة البعدين ل و س  لجدول ج من النوع صحيح (البعد الأقصى للأعمدة والسطور هو 50)، أملئ الجدول من خلال لوحة المفاتيح ثم أظهره على الشاشة، وكذلك مجموع عناصر كل سطر من سطوره وكل عمود من أعمدته باستعمال متغير واحد فقط  للمساعدة لأجل الجمع.


التمرين 9.7 

أنجز برنامجا يـمكن من تحويل جدول نسميه ج ذي البعدين ف  و ق (البعد الأقصى  للأعمدة والسطور هو 10)، في جدول خ ذي البعد ف*قمثال :

\         /
|
أ ب ج د |     \                         /
|
ه و ز ح | ==> | أ ب ج د ه و ز ح ط ي ك ل |
|
ط ي ك ل |     /                         \
/         \

 


تمارين تطبيقية 3: الجداول

 

التمرين 9.8 : الجداء السلمي لمتجهتين

أكتب برنامجا يمكن من حساب الجداء السلمي لمتجهتين ب و ت (لهما نفس الدرجة). مثال :

\        /   \        /
| 3 2 -4 | × | 2 -3 5 | = 3×2+2×(-3)+(-4)×5 = -20
/        \   /        \


التمرين 9.10

أحسب قيمة الحدودية ح ذات الدرجة ن  انطلاقا من العدد الحقيقي ذي النوع حقيقي :

ح(س) = ن×أن×س + (ن-1أن-1×س + ... + أ1×س+ أ0

P(X) = AnXn + An-1Xn-1 + ... + A1X + A0 (مكتوبة بالحروف اللاتينية) 

قيم ن والمعاملات أن ،....،أ0 مطلوب إدخالها من طرف المستعمل وتخزينها في جدول يسمى أ.

  1. استعمل الدالة تدوير المنتمية إلى المكتبة <رياضيات.jeem>.

    مثال ن = تدوير(س,10تكافئ ن = س10.

  2. لتجاوز استعمال الأس أثناء الحساب استعمل طريقة هورنر المعرفة كالتالي :

 


التمرين 9.10 : القيمة القصوية  و الدنوية  لجدول

أكتب شفرة تمكن من تحديد أكبر و أصغر قيمة في جدول ج للأعداد الصحيحةأظهر على الشاشة القيمة والموقع للقيمة القصوية  والدنوية. إذا كان الجدول يحتوي على كثير من مثيلات القيمة القصوية أو الدنوية ، يكفي اختيار أول قيمة موجودة.


التمرين 9.11 : إضافة قيمة إلى جدول مرتب

جدول ذي البعد ن+1  يحتوي على ن  من الأعداد الصحيحة مرتبة تزايديا،  القيمة (ن+1) غير معرفة.

أضف قيمة جديدة ق (مطلوب إدخالها من طرف المستعمل) إلى الجدول ج ليكتمل بـ ن+1 قيمة مرتبة.


التمرين 9.12:  البحث عن قيمة داخل جدول

أنجز برنامجا يـمكن من البحت عن قيمة ق ( مطلوب إدخالها من طرف المستعملداخل جدول ج للأعداد الصحيحة. 

أظهر على الشاشة موقع القيمة في الجدول إذا كانت موجودة فيه، وإلا فيجب إظهار جملة مناسبة لهذه الحالة.

يمكنك استعمال طريقتين :

  1. البحث المتتالي : تقارن قيم الجدول بالقيمة المبحوث عنها.

  2. البحث الثنائي  : في هذه الحالة يجب أن يكون الجدول مرتبا. ما المميزات الحسنة للبحث الزوجي.

  • قارن القيمة المبحوث عنها بالقيمة الموجودة في وسط الجدول،

  • إذا كان التساوي بينهما يجب إيقاف البحث.

  • إذا كانت  القيمة المبحوث عنها أصغر من القيمة التي في الوسط، أكمل البحث في النصف الأول للجدول باستعمال القيمة التي في وسط هذا النصف.

  • إذا كانت  القيمة المبحوث عنها أكبر من القيمة التي في الوسط، أكمل البحث في النصف الثاني للجدول باستعمال القيمة التي في وسط هذا النصف.

  • أنجز برنامجا يـمكن من البحت عن قيمة ق  لهذه الطريقة.


     

التمرين 9.13 : اتحاد جدولين مرتبين

نعتبر جدولين ج و خ (ذي البعدين ن و م على التوالي)، مرتبين تزايديا.

وحِّد عناصر الجدولين في جدول ثالث ح لكن بالشكل التزايدي.


التمرين 9.14  الترتيب باستعمال القيمة القصوية.

 صنف عناصر أو قيم الجدول ج تناقصياأظهر الجدول ج بعد ترتيبه على الشاشة.

طريقة: استعمل الرمز د  للمرور من أول الجدول إلى آخره. ولكل عنصر ج [د]من الجدول، حدد الموقع قصوي لأول عدد تصادفه يكون أكبر من ج [د]  وبدل في هذه الحالة ج [د]و ج[قصوي] .

مثال :

 


التمرين 9.15  الترتيب بطريقة الفقاعات

صنف عناصر أو قيم الجدول أ تزايديا.

أظهر الجدول أ بعد ترتيبه على الشاشة.

طريقة: في كل مرة نبدأ من بداية الجدول، ونكرر هذه العمليات :

باستعمال التبديل المتتالي، نضع أكبر قيمة وجدناها في نهاية الجدول (كما يحدث لفقاعات البرك المائية).

مثال :

 

أكمل الخوارزم باعتبار أن :

* قد لا توجد أية تبديلة ، في هذه الحالة سيكون الجدول مرتبا.

* قد لا يوجد أي جزء من الجدول مرتبا.


التمرين 9.16  :  إحصاء النقاط

 

أكتب شفرة تمكن من قراءة نقاط الامتحان لـ ن تلميذ  بقسم  بحيث يتم تحفيظها في جدول يسمى نقاط  ذي الرتبة ن.

* ابحث وأظهر:

- أعلى نقطة في القسم.

- أدنى نقطة في القسم.

- المعدل العام يعني متوسط النقاط.

* من خلال جدول نقاط التلاميذ نقاط ، أنشئ جدول آخر يسمى معدل ذي الرتبة 7 ومركب على الشكل التالي:

معدل[6]

  تحتوي على العدد ذي النقطة 60

معدل[5]

  تحتوي على العدد ذي النقاط من 50 إلى 59

معدل[4]

  تحتوي على العدد ذي النقاط من 40 إلى 49

....

  ....

معدل[0]

  تحتوي على العدد ذي النقاط من 0 إلى 9

 

أنجز إنشاء هندسيا للعوارض الممثلة للجدول معدل. استعمل سلسلة الرموز ####### لتمثيل العوارض  وأظهرها في مجال النقاط.

 

مساعدة: حدد القيمة قصوى في الجدول معدل و أظهر السطور على الشاشة بداية منه.

(في المثال الأسفل نعتبر قصوى= 6).

 

مثال :

أعلى معدل 58
أدنى معدل 13
متوسط المعدلات 39.250000
6  >                                 #######
5  >                         ####### #######
4  >                         ####### ####### #######
3  >                 ####### ####### ####### #######
2  >         ####### ####### ####### ####### #######
1  >         ####### ####### ####### ####### #######
    +-------+-------+-------+-------+-------+-------+-------+
 I 0 - 9 I 10-19 I 20-29 I 30-39 I 40-49 I 50-59 I   60  I

 

تمارين تطبيقية 4: المصفوفات

التمرين 9.17: وضع العدد في قطر مصفوفة. 

أنجز برنامجا يـمكن من ملء مصفوفة مربعةبعد ملئها ضع مكان عناصر قطر المصفوفة.


التمرين 9.18 : مصفوفة وحيدية.

أنجز برنامجا يـمكن من إنشاء مصفوفة مربعة وحيدية ص  ذات البعد نالمصفوفة الوحدية معرفة على الشكل التالي :

\ 1 , د=ذ

 

|

 

/ 0 , د?ذ

 

 


التمرين 9.19 : مقلوب مصفوفة

 أنجز برنامجا يـمكن من تحديد المقلوب قج لمصفوفة ج ذات البعدين ن و م على التوالي إلى مصفوفة ذات البعدين م و ن على التوالي.

بطبيعة الحال المصفوفة ذات البعدين م و ن على التوالي (أي المصفوفة المقلوبة) تكون في جدول آخر خ لإظهاره على الشاشة.

المصفوفة المقلوبة خ = قج  معرفة على الشكل التالي :

          \         /   \       /
قج = ق | أ ب ج د | = | أ ه ط |
       |
ه و ز ح
|   | ب و ي |
       |
ط ي ك ل
|   | ج ز ك |
       
/         \   | د ح ل |
                     
/       \

ملاحظة: قج مكونة من حرفين ق و ج بمعنى قلب ج إلى جدول آخر.


التمرين 9.20 : ضرب مصفوفة في عدد حقيقي

أنجز برنامجا يـقوم بضرب مصفوفة ج في عدد حقيقي سمثال :

    \         /   \                 / 
    | أ ب ج د |   | س×أ س×ب س×ج س×د 
س × | ه و ز ح | = | س×ه س×و س×ز س×ح 
    | ط ي ك ل |   | س×ط س×ي س×ك س×ل 
    /         \   /                 \

النتيجة المحصل عليها يجب أن تكون في جدول أو مصفوفة أخرى خ لإظهارها على الشاشة. جميع عناصر المصفوفة ج يجب ضربها في س.


التمرين 9.21 : جمع  مصفوفتين

 

أنجز برنامجا يـقوم بجمع مصفوفتين ج  و خ لهما نفس البعدين ن و ممثال :

\         /   \             /   \                     /
| أ ب ج د |   | أ' ب' ج' د' |   | أ+أ' ب+ب' ج+ج' د+د' | 
| ه و ز ح | + | ه' و' و' ز' | = | ه+ه' و+و' ز+ز' ح+ح' | 
| ط ي ك ل |   | ط' ي' ك' ل' |   | ط+ط' ي+ي' ك+ك' ل+ل' | 
/         \   /             \   /                     \

النتيجة المحصل عليها يجب أن تكون في  مصفوفة أخرى ح لإظهارها على الشاشة.


التمرين 9.22 : ضرب  مصفوفتين

أنجز برنامجا يـقوم بضرب مصفوفة ج ذات البعدين ن و م  في المصفوفة خ ذات البعدين م و ل للحصول على مصفوفة جديدة ذات البعدين ن و ل:

 ح(ن,ل) = ج(ن,م) ×خ(م,ل)

ضرب مصفوفتين يتم بضرب سطر المصفوفة الأولى في عمود  المصفوفة الثانية حسب العلاقة التالية:

تذكير (إقرأها من اليسار إلى اليمين):

/      \    /    \    /                                \
| a b c |   | p q |   | a*p + b*r + c*t a*q + b*s + c*u |
| e f g | × | r s | = | e*p + f*r + g*t e*q + f*s + g*u |
| h i j |   | t u |   | h*p + i*r + j*t h*q + i*s + j*u |
| k l m |   \     /   | k*p + l*r + m*t k*q + l*s + m*u |
\      /              \                                /


التمرين 9.23  : مثلث عمر الخيام

أنجز برنامجا يـقوم بإنشاء مثلث الخيام ذي الدرجة ن  وكذلك تقوم بحفظه في مصفوفة مربعة ج  ذات البعد ن+1.

 

مثال : مثلث الخيام ذي الدرجة 6.

 

 

 

 

 

 

1

ن=0

 

 

 

 

 

1

1

ن=1

 

 

 

 

1

2

1

ن=2

 

 

 

1

3

3

1

ن=3

 

 

1

4

6

4

1

ن=4

 

1

5

10

10

5

1

ن=5

1

6

15

20

15

6

1

ن=6

 

الطريقة :

أحسب و أظهر فقط القيم كما هو واضح في المثال أعلاه .

حدد درجة المثلث للمستعمل بان لا تتجاوز 13.

أنشئ المثلث سطرا  سطرا:

- هيئ الجدول بأن تكون العناصر الأولى للسطور وكذلك عناصر القطر تساوي 1.

- أحسب القيم المتبقية حسب العلاقة التالية :        ج د،ذ = ج د-1،ذ + ج د-1,ذ-1


التمرين 9.24 : البحث عن النقاط السحرية

ابحث في مصفوفة ج (تم إدخالها من طرف المستعمل) على الأعداد التي تكون في آن واحد هي الأكبر في سطرها  والأصغر في عمودها. هذه الأعداد تسمى النقاط السحرية. أظهر على الشاشة مواقع وقيم جميع النقاط السحرية الموجودة.

 أمثلة : القيم الملونة بالأحمر هي النقاط السحرية في هذه المصفوفات :

/           \ /         \ /           \ /       \
| 1 8 3 4 0 | | 4 5 8 9 | | 3 5 6 
7 7 | | 1 2 3 |
|           | | 3 8 9 3 | | 4 2 2 8 9 | | 4 5 6 |
| 6 
7 2 7 0 | | 3 4 9 3 | | 6 3 2 9 7 | | 7 8 9 |
\           / \         / \           / \       /

طريقة : استعمل مصفوفتين للمساعدة قصوى و دنوى لهما نفس بعد المصفوفة ج ، بحيث :

 

\ 1   ( ج[د,ذ] هي الأكبر إذا كانت

 

|      د على السطر)

قصوى[د,ذ] =

/ 0   إذا كان عكس ذلك

 

 

 

\ 1   ( ج[د,ذ] هي الأصغر إذا كانت

 

|      د على العمود)

دنوى[د,ذ] =

/ 0    إذا كان عكس ذلك

 

تمارين إضافية

 

التمرين 9.25  : حساب الإنحراف المعياري لسلسلة من الأعداد الحقيقية 

أكتب برنامجاً يقرأ سلسلة من الأعداد الحقيقية، ثم يحسب المتوسط الحسابي والإنحراف المعياري لهذه الأعداد.


تأليف

 

المؤلف الأصلي: الدكتورمحمد عمار السَلكة (دمشق - سوريا)

الموقع الشخصي: http://www.drsalka.com

البريد الإلكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

 

ضبط بتصرف: محمد عبد الرحمان (الدار البيضاء - المغرب) 


المراجع

http://www.jeemlang.com


 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث