OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

الوصول إلى عناصر المصفوفة

إذن ما فائدة المصفوفات؟ مثلما يمكن تنفيذ العديد من مهام إدارة البيانات باستخدام برنامج جداول بيانات ، يمكن تنفيذ العديد من مهام البرمجة باستخدام المصفوفات.

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


صورة

[me @ linuxbox ~] $ ساعات .


ساعة

ملفات

ساعة

ملفات

----

-----

----

-----

00

0

12

11

01

1

13

7

02

0

14

1

03

0

15

7

04

1

16

6

05

1

17

5

06

6

18

4

07

3

19

4

08

1

20

1

09

14

21

0

10

2

22

0

11

5

23

0

إجمالي الملفات = 80


نقوم بتنفيذ ملف ساعات البرنامج ، مع تحديد الدليل الحالي كهدف. ينتج عنه جدول يوضح ، لكل ساعة من اليوم (0-23) ، عدد الملفات التي تم تعديلها في آخر مرة. الكود لإنتاج هذا هو كما يلي:



#! / بن / باش

# ساعات: برنامج نصي لعد الملفات حسب استخدام وقت التعديل () {

صدى "الاستخدام: $ {0 ## * /} دليل"> & 2

}

#! / بن / باش

# ساعات: برنامج نصي لعد الملفات حسب استخدام وقت التعديل () {

صدى "الاستخدام: $ {0 ## * /} دليل"> & 2

}


# تأكد من أن الوسيطة هي دليل إذا [[! - د 1 دولار]] ؛ من ثم

خروج الاستخدام 1

fi


# تهيئة المصفوفة

لـ i في {0..23} ؛ تفعل ساعات [i] = 0 ؛ انتهى


# اجمع بيانات

لـ i في $ (stat -c٪ y "$ 1" / * | cut -c 12-13) ؛ فعل j = $ {i / # 0}

((++ ساعة [j])) ((++ عدد))

فعل


# عرض البيانات

صدى -e "ساعة \ t الملفات \ t الساعة \ t الملفات" echo -e "---- \ t ----- \ t ---- \ t -----" لـ i في {0..11} ؛ فعل

j = $ ((i + 12))

تم طباعة "٪ 02d \ t٪ d \ t٪ 02d \ t٪ d \ n" $ i $ {ساعة [i]} $ j $ {ساعة [j]}

printf "\ n إجمالي الملفات =٪ d \ n" عدد الدولارات

# تأكد من أن الوسيطة هي دليل إذا [[! - د 1 دولار]] ؛ من ثم

خروج الاستخدام 1

fi


# تهيئة المصفوفة

لـ i في {0..23} ؛ تفعل ساعات [i] = 0 ؛ انتهى


# اجمع بيانات

لـ i في $ (stat -c٪ y "$ 1" / * | cut -c 12-13) ؛ فعل j = $ {i / # 0}

((++ ساعة [j])) ((++ عدد))

فعل


# عرض البيانات

صدى -e "ساعة \ t الملفات \ t الساعة \ t الملفات" echo -e "---- \ t ----- \ t ---- \ t -----" لـ i في {0..11} ؛ فعل

j = $ ((i + 12))

تم طباعة "٪ 02d \ t٪ d \ t٪ 02d \ t٪ d \ n" $ i $ {ساعة [i]} $ j $ {ساعة [j]}

printf "\ n إجمالي الملفات =٪ d \ n" عدد الدولارات


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

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

يقوم القسم التالي بجمع البيانات عن طريق تشغيل ملف القانون الأساسي برنامج على كل ملف في الدليل. نحن نستخدم مختون لاستخراج الساعة المكونة من رقمين من النتيجة. داخل الحلقة ، نحتاج إلى إزالة الأصفار البادئة من حقل الساعة ، لأن الغلاف سيحاول (ويفشل في النهاية) تفسير القيم من "00" إلى "09" كأرقام ثماني (انظر الجدول 34-2). بعد ذلك ، نزيد قيمة عنصر المصفوفة المطابق لساعة اليوم. أخيرًا ، نقوم بزيادة العداد (عد) لتتبع العدد الإجمالي للملفات في الدليل.

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


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: