قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 01-04-2020, 11:38 AM المشاركة 1   
افتراضي الدرس السادس عشر إرجاع (إعادة) قيمة من دالة Returning a Value from a Function Twitter FaceBook Google+



دورة برمجة الاردوينو : الدرس السادس عشر
إرجاع (إعادة) قيمة من دالة Returning a Value from a Function


في الدرس السابق ، تناولنا في كيفية تمرير قيمة إلى دالة. الآن نلقي نظرة على كيفية استعادة قيمة من دالة.
تسمى استعادة قيمة من دالة "إرجاع أو إعادة" "returning"القيمة من الدالة. يتم استخدام الكلمة الأساسية "العائد" return في نهاية الدالة لاستعادة القيمة. يجب أن نذكر أيضًا نوع القيمة التي ترجعها الدالة ، على سبيل المثال int ، float ، إلخ.
يستخدم البرنامج أدناه دالة لإجراء حساب رياضي ثم إرجاع return نتيجة الحساب التي يمكن استخدامها بعد ذلك في برنامج الاردوينو الرئيسي.

الدالة التى تعيد (ترجع) قيمة Function that Returns a Value

كود:
void setup() {
    float area;
  
    Serial.begin(9600);
    // calculate the area of a circle with radius of 9.2
    area = CircleArea(9.2);
    Serial.print("Area of circle is: ");
    // print area to 4 decimal places
    Serial.println(area, 4);
}

void loop() {
}

// calculate the area of a circle
float CircleArea(float radius)
{
    float result;
    
    result = 3.141592654 * radius * radius;
    
    return result;
}

ما الذى يفعله البرنامج :
يحسب البرنامج مساحة الدائرة من قيمة نصف قطر الدائرة التي تم تحديدها بشكل ثابت في البرنامج - في المثال ، يتم تعيين القيمة على 9.2 ، ولكن يمكنك تعيينها إلى أي قيمة تريدها. ثم يتم إرسال نتيجة الحساب خارج المنفذ التسلسلي بحيث يمكن رؤيته في نافذة الشاشة التسلسلية Arduino IDE.

صيغة حساب مساحة الدائرة هي:

كود:
A = π × r²
OR
A = π × r × r

Where:
A = area of the circle
π = PI = 3.141592654
r = radius of the circle

بمعنى آخر ، إذا كنا نعرف نصف قطر الدائرة (نصف القطر هو المسافة من مركز الدائرة إلى الحافة) يمكننا حساب مساحة الدائرة.
يمكن أن تكون الوحدة unit التي يوجد بها نصف القطر أي وحدة تُستخدم لقياس المسافة وستكون المساحة مربعات للوحدة المستخدمة ، على سبيل المثال إذا كان نصف القطر بالسنتيمتر ، فستكون المساحة بالسنتيمتر المربع ، إذا كان نصف القطر بالقدم ، فستكون النتيجة بالأقدام المربعة.

كيف يعمل البرنامج :
يجب أن تُرجع الدالة CircleArea() قيمة ، لذلك يسبقها نوع القيمة التي يجب أن تُرجعها - في هذه الحالة float . يتم أيضًا تمرير قيمة float تسمى radius إلى الدالة كما هو موضح في الدرس السابق .

كود:
float CircleArea(float radius)

داخل جسم الدالة ، يتم الحساب على نصف القطر ويتم وضع نتيجة الحساب في المتغير result وهو متغير تم إنشاؤه في الدالة .
تقوم الدالة بعد ذلك بإرجاع النتيجة باستخدام الكلمة الأساسية للإرجاع return في أسفل الدالة .

كود:
return result;

يتم ترجمة الصيغة إلى كود Arduino على النحو التالي:

كود:
A = π × r × r

Becomes:

result = 3.141592654 * radius * radius;

في جزء البرنامج الذي يستدعي الدالة CircleArea() ، تصبح الدالة بشكل أساسي القيمة التي تُرجعها ويمكن تعيينها لمتغير.
يتم تعيين المتغير area للقيمة التي ترجعها الدالة CircleArea() :

كود:
 area = CircleArea(9.2);

بعد ذلك ، يتم إرسال نتيجة الحساب ، وهي مساحة الدائرة ، إلى المنفذ التسلسلي ليتم عرضه في النافذة التسلسلية Arduino IDE.

نسخة أقصر من البرنامج :
يمكن كتابة البرنامج أعلاه بطريقة أقصر بدون استخدام بعض المتغيرات المتوسطة كما هو موضح أدناه.

كود:
void setup() {
    Serial.begin(9600);
    Serial.print("Area of circle is: ");
    // print area to 4 decimal places
    Serial.println(CircleArea(9.2), 4);
}

void loop() {
}

// calculate the area of a circle
float CircleArea(float radius)
{
    return (3.141592654 * radius * radius);
}

في هذا البرنامج ، تُرجع الدالة CircleArea() نتيجة الحساب على سطر واحد دون تعيينها أولاً إلى متغير.

كود:
return (3.141592654 * radius * radius);

لا بأس بهذه الطريقة في إجراء الحساب وإرجاع القيمة ، على الرغم من أنه قد لا يكون من السهل قراءة الكود مثل المثال الأول.
عندما يتم استدعاء الدالة CircleArea() في البرنامج ، يتم تمريرها إلى Serial.println() كما لو كانت متغير. هذا ممكن لأنه عندما تقوم دالة بإرجاع متغير ، فإنها تأخذ قيمة المتغير. وبالتالي فإن البرنامج يعمل بنفس الطريقة مثل البرنامج الأول ، على الرغم من أنه من الأصعب قراءة الكود .

كود:
Serial.println(CircleArea(9.2), 4);
حجم ملف الإخراج الثنائي (الملف الذي يتم تحميله إلى Arduino بعد الترجمة) من مترجم Arduino هو 4,040 bytes لكل من البرنامجين في الإصدار Arduino IDE 1.0.6.

اعلانات
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:58 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025