الباب السادس 0ت المصفوفات و النضائد
2 الحجز في الذاكرة
إذا أردنا استخدام مصفوفة في البرنامج ؛ فلابد في البداية من حجز عدد من
المواقع في الذاكرة يكفى لجميع عناصر هذه المصفوفة؛ ومع الحجز يجب
الإعلان عن نوع هذه العناصر حتى تخصص ليا المواقع المناسبة لحجمها .
فإذا كانت المصفوفة 6088 ذات 7 عناصر من النوع الكسري ؛ فإن الإعلان
لاحظ أن ذلك يعنى أن عناصر المصفوفة هي :
أي أن آخر عنصر يكون دليله أقل بواحد من الرقم المعلن عنه في الحجز ء؛
والسبب هو البداية من الصفر ء أي أن العنصر الأول دليله - 0؛ والعنصر
الثاني دليلة - 1 +
ا و ِ )0 د عمر زرني
مثال : اكتب برنامجا لحساب متوسط دخل فرد خلال أسبوع (أي سبعة أيام)
من دخله اليومي؛ ثم طباعة الفرق بين دخل كل يوم والمتوسط .
سبق وأن تطرقنا إلى هذا المثال في المقدمة للمصفوفات ؛ ورأينا أن عدم
ين دخل الفرد في كل يوم على النحو :
استخدام المصفوفات يؤدى إلى ضرورة قراءة البيا:
أي بدون استخدام المصفوفات؛ ولكن ماذا لو كان المطلوب المتوسط الشهري أو
حتى السذوي ؟ بكل تأكيد ستكون قائمة الأسماء طويلة جداء
لذلك نستخدم الإعلان
[7] مسمعدة لم12
لنعلن عن مصفوفة ذات 7 عناصر كسرية اسمها 1112601106 +
بعد قراءة هذه العناصر وحساب المتوسط نتستطيع الرجوع إليها
الحساب الفرق 25ل بين كل عنصر والمتوسط كما هو مبين بالبرنامج
الباب السادس 0 المصفوهات و النضائد
(حجز : 6->1 :1010-0
"[ه16] توقك 101 مسمعدة معاسك ها ترز
6 170-[ نوعست[ إعسمع ص 1+1
الشكل (6.2.1) برنامج حساب المتوسط والفرق بين كل عنصر والمتوسط
3 ترتيب المصفوفة ع801110 يتم
من أهم تطبيقات المصفوفة أنها تمكننا من إعادة ترتيب عناصرها إما ترتيباً
هناك طبعاً عدة طرق لترتيب المصفوفات. مثلا لو أعطيت الأعداد الثالية :
ٌ و : )0 د عمر زرني
كيف ترتبها تنازلياً (أي ابتداء من أكبر قيمة إلى أصغر قيمة ) ؟ هناك طبعا عدة
* من 1-0 إلى 0-2 - 1 ( حيث 0-1 هو دليل آخرعنصر في
إذا كانت [1241] * > [1] > فاستبدل قيمتيهما .
٠ هل أصبحت المصفوفة مرتبة ؟
إذا كانت الإجابة نعم توقف وإلا فارجع إلى الخطوة © +
والبرنامج التالي يترجم هذه الخوارزمية إلى لغة سي:
الباب السادس 2 المصفوفات و النضائد
وجل 11-1 :1016-0
برها د [اجت]<
كتمعن (15)801160
بول ,9601167 ع تومته 501160 ما" )لاست
وجب 17 :1016-0
+لزناج "960 صا )لكاستمر
الشكل (6.3.1) ترتيب البيانات
من الواضح في هذا البرنامج أن هناك حلقتين . الحلقة الخارجية تستمر بدون
تحديد حتى يتم ترتيب المصنوفة ؛ والحلقة الداخلية تتم بعد 8 دورة.
من الملاحظ أيضا في البرنامج بالشكل (6.3.1) استخدام المتغير 801160 الذي
يبدأ بالقيمة 1 ثم يتحول إلى 0 إذا ما وجدنا غنصرين غير مرتبين ؛ وفى نهاية
ا و ِ )0-0 د عمر زرني
الدورة الداخلية نختبر قيمة هذا المتغير ؛ فإذا كانت 1 فذلك يعنى أن عملية
الترتيب قد تمت كما يجب . ونخرج من الدورة الخارجية اللانهائية بالجملة :
لمعا ( 50:10 )11
وهى تكافئ الجملة :
للمعيط (1- جوع ) كذ
ولكن أكثر اختصاراً .
وثمة ملاحظة أخرى جائبية عن هذا البرنامج وهي أنه يطبع عدد الدورات
طبعاً هذا العدد يختاف حسب المصفوفة المدخلة ؛ ولكنه في أسواً الأحوال لا
يزيد عن 17 (عدد العناصر) ٠
كان بالإمكان أن نكتب الدورة الخارجية على النحو :
والاستغناء عن اختبار المتغير 501160 ؛ والحلقة اللانهائية؛ ولكن قد لا نحتاج
المدخلة تكاد تكون مرتبة تنازليا ؛ لذلك استخدمنا المتغير 801460 للخروج من
الدورة الخارجية بمجرد الوصول إلى المصفوفة المرتبة.
الباب السادس 0 المصفوفات و النضائد
لاحظ أيضاً أن البرنامج يقوم بعملية استبدال [ة] * مع [1+1] * بالطريقة
قبل وضع[ 3+1]< في [1] * على الشكل التالي :
[1»: لها إت»
الشكل (6.3.1) استبدال [1] # مع [1+1] *
4 النضائد 5ع51:17
النضيد هو عبارة عن مصفوفة من الرموز . وهذه الرموز تشمل الحروف
الهجائية ؛ والأرقام والإشارات ؛ المبيئة بجدول آسكى 88611 (أنظر الملحق) +
في لغة سى ؛ يوضع النضيد بين علامات التنصيص المزدوجة مثل :
لاحظ أن هذه الرموز (سواء أكانت حروف أم أرقاماً ) تخزن في ذاكرة
جاممة الفاح سكلية العلوم - طرابلسن - لبيا دمع ممطة بو /وانمت هته
منها العدد الذي يحمله الحيز المسخصص لحرف واحد في الحاسوب ؛ وهو
عادة بايت واحدة أي 8 بت. عند تخصيص حيز في الذاكرة للنضيد يجب الانتباه
إلى إضافة موقع واحد لرمز نهاية الذضيد (ويرمز له بالرمز '60 ) ؛ فإذا كان
النضيد المطلوب هو :
فيجب الإعلان عن 11 رمز لهذا النضيد (10 أحرف بالإضافة إلى رمز
الانتهاء) ٠ ويكون الإعلان على الذحو التالي :
عنصر منها 10 رموز عادية ورمز الانتهاء 90
مثال : . اكتب برنامجا يقوم بقراءة اسم المستخدم ؛ ولقبه ( بحيث لا يزيد
٠ ع مسق سمح
حيث يطبع الاسم واللقب في هذا السطر مع وضع فراغ واحد بينهماء
لدينا هنا مصفوفتان الأولى للاسم ولتكن 000016 والأخرى للقب ولتكن تاتس
5 رمزا (14 حرفا مع رمز الانتهاء) ٠
الباب السادس © المصفوهات و النضائد
:للتنسوق :م9 الس
الشكل (6.4.1) قراءة نضيدين وطباعتهما في سطر واحد
© لاحظ الآن أن دالة القراءة 808015 تستخدم الرمز 968 لقراءة النضيد (
# ترمز لكلمة وصتاة نضيد) -
© لاحظ أيضاً عند قراءة نضيد ما إمكانية الاستغناء عن الرمز 8 الذي يوضع
عادة قبل المتغير المطلوب قراءته في دالة 88:15 ؛ وسيتضح السبب فيما
© توجد في لفة سى دالة أخرى غير دالة 88015 لقراءة النضيد وهى 86:8
(اختصار #0108 :8 ) ١ أي كان بالإمكان كتابة الجملة :
(عسقط ) امع
بدلا من الجملة: