Professional Documents
Culture Documents
14- الدالات functions
14- الدالات functions
.14الداالت functions
.14.1ما هي الداالت Functions
إن تجزئة الكود إلى داالت يسمح للمبرمج بإنشاء أجزاء معيارية من الكود تؤدي مهمة محددة ثم
تعود إلى منطقة الكود التي تم استدعاء الوظيفة منها .الحالة النموذجية إلنشاء دالة هي عندما
لنالحظ الكود 14.1حيث يعمل على وميض الضوء على المخرج 13بسرعات مختلفة 10مرات كل
مرة.
كود 14.1
برمجة األردوينو والروبوتات ببساطة!
اسم الدالة
األوامر
قم بوضع كل حلقة في الكود 14.1ضمن دالة منفصلة وقم بتسميتها كما في الكود 14.2وبهذه
الطريقة وزعنا األوامر على عدة داالت .وعند تحميل هذا الكود نالحظ عدم حدوث أي شيء .وضع
األوامر ضمن الدالة يعرفها فقط وال ينفذها .ولتنفيذ أوامر الدالة علينا أن نستدعيها Callعن طريق
أمر Doكما في الصورة . 14.2ولتخفيف مساحة البرنامج سنقوم بإغالق الداالت عن طريق Collapse
ويمكن فتحها عن طريق ( Expandصورة .)14.3قم بعمل الكود 14.3والحظ النتيجة حيث ستعطي
كود 14.2
عناصر استدعاء
الداالت
استدعاء تعريف
الداالت الداالت
بالنسبة للمبرمجين الذين اعتادوا على استخدام ، BASICتوفر األردوينو في ( Arduinoوتوسع) فائدة
مرة واحدة.
هذا يقلل ً
أيضا من فرص حدوث أخطاء في التعديل ،إذا كان الرمز بحاجة إلى التغيير. •
برمجة األردوينو والروبوتات ببساطة!
إنها تجعل من السهل إعادة استخدام التعليمات البرمجية في برامج أخرى من خالل جعلها •
قابلية للقراءة.
في المثال السابق قمنا باستعمال الداالت لعمل أوامر ثابتة .يمكن أيضاً استعمال المعامالت
عن طريق زر اإلعدادات في الدالة Functionيمكن إضافة معامل وهو عبارة عن متغير يستخدم في
من نافذة Mathاختر عنصر العملية الحسابية وصمم الكود .14.4والحظ بعد تحميل الكود وفتح
نافذة serial monitorالنتيجة كما في الصورة .14.5ويمكن تجربة عمليات حسابية مختلفة وتغيير
)variable
كود 14.4
الدالة التي تعاملنا معها تسمى دالة األوامر Void Functionحيث نقوم بعمل جميع األوامر خاللها
وال تعطينا أي قيم عائدة Returning Valueوإنما تقوم بتنفيذ األوامر فقط.
وهناك نوع ثاني وهو دالة القيم Returning Value Functionوشرحها في الصورة .14.6وسنقوم
بتكرار المثال السابق مع هذا النوع من الداالت كما في الكود .14.5والحظ النتيجة كما في الصورة
.14.7
برمجة األردوينو والروبوتات ببساطة!
اسم الدالة
األوامر
القيمة العائدة
كود 14.5
برمجة األردوينو والروبوتات ببساطة!
صورة 14.8
برمجة األردوينو والروبوتات ببساطة!
واحدة تلو األخرى من اليسار إلى اليمين كما في الجدول التالي حيث يمثل 1حالة HIGHو 0حالة
.LOW
-1تعريف المتغيرات
الحظ المتغيرات في الصورة .14.9تم إنشاء متغير delayTimeالستعمال قيمة المقاومة المتغيرة
للتحكم بسرعة حركة النور في اإلشارات الضوئية .LEDsوعن طريق دالة Mapتم تحويل قراءة
المقاومة المتغيرة ) ( 0 – 1023إلى المجال ) ( 50 – 500الذي سيستعمل ضمن دالة التأخير .delay
مثال ,سنقوم بعمل الكود في الصورة 14.10ولعمل الحالة 2نستخدم الكود في
ً جدول 14-1
الصورة 14.11وهكذا.
لعمل الحاالت األربعة سنحتاج الى تكرار كمية كبيرة من العناصر وبالتالي ستصبح قراءة البرنامج
صعبة.
ولحل المشكلة سنستعمل دالة تعبر عن حالة ونستخدم معامالت لكل حالة كما في ال !Error
.Reference source not found.حيث نالحظ استعمال معامالت الستخدامها كحالة لكل إشارة
ضوئية .LED
جدول 14-2
لتمثيل كل حالة سنستدعي الدالة statusالمعرفة في ال Error! Reference source not found.عن
طريق دالة doكما في ال ،Error! Reference source not found.حيث يمثل رقم 1حالة HIGHو
وسنقوم بعمل كامل الكود 14.6مع استخدام قراءة المقاومة المتغيرة للتحكم بالسرعة .والشرح
مرفق مع الكود.
برمجة األردوينو والروبوتات ببساطة!
تعتبر الداالت من أقوى األدوات في البرمجة واألردوينو وخصوصاً في التعامل مع برامج التحكم
تعريف المتغيرات
قراءة المقاومة
المتغيرة وعمل
تحويل للمجاالت
دالة الحالة
المقاومة المتغيرة