الفرق بين المراجعتين لصفحة: «Arduino/static»

من موسوعة حسوب
أنشأ الصفحة ب'تُستعمَل الكلمة المفتاحية <code>static</code> عند إنشاء متغيرات مرئيَّة لدالةٍ واحدة فقط من أجل الحف...'
 
طلا ملخص تعديل
 
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الكلمة <code>static</code> المفتاحية في  أردوينو}}</noinclude>
تُستعمَل الكلمة المفتاحية <code>static</code> عند إنشاء متغيرات مرئيَّة لدالةٍ واحدة فقط من أجل الحفاظ على محتواها بعد انتهاء تنفيذ تلك الدالة المستدعاة وحتى الاستدعاء التالي لها خلافًا للمتغيرات المحلية التي تُنشَأ وتدمَّر في كل مرة تُستدعَى فيها الدالة.
تُستعمَل الكلمة المفتاحية <code>static</code> عند إنشاء متغيرات مرئيَّة لدالةٍ واحدة فقط من أجل الحفاظ على محتواها بعد انتهاء تنفيذ تلك الدالة المستدعاة وحتى الاستدعاء التالي لها خلافًا للمتغيرات المحلية التي تُنشَأ وتدمَّر في كل مرة تُستدعَى فيها الدالة.


ستُنشَأ وتُهيَّأ المتغيرات الساكنة المصرَّح عنها ضمن الدالة مع الكلمة <code>static</code> المفتاحية أول مرة تُستدعَى فيها تلك الدالة فقط.
ستُنشَأ وتُهيَّأ المتغيرات الساكنة المصرَّح عنها ضمن الدالة مع الكلمة <code>static</code> المفتاحية أول مرة تُستدعَى فيها تلك الدالة فقط.
 
==البنية العامة==
== البنية العامة ==
<syntaxhighlight lang="arduino">
<syntaxhighlight lang="arduino">
static dataType var = val;
static dataType var = val;
</syntaxhighlight>يمثِّل <code>dataType</code> نوع المتغير المراد تعريفه، و <code>var</code> اسم المتغير، و <code>val</code> القيمة المراد إسنادها إلى هذا المتغير الساكن. انتبه إلى أنَّه متى ما أُنشِئ المتغير <code>var</code> عند استدعاء الدالة أول مرة، لن يدمَّر عند انتهاء تنفيذ الدالة وسيحافِظ على القيمة المخزَّنة ضمنه حتى الاستدعاء التالي للدالة.
</syntaxhighlight>يمثِّل <code>dataType</code> نوع المتغير المراد تعريفه، و <code>var</code> اسم المتغير، و <code>val</code> القيمة المراد إسنادها إلى هذا المتغير الساكن. انتبه إلى أنَّه متى ما أُنشِئ المتغير <code>var</code> عند استدعاء الدالة أول مرة، لن يدمَّر عند انتهاء تنفيذ الدالة وسيحافِظ على القيمة المخزَّنة ضمنه حتى الاستدعاء التالي للدالة.
 
==أمثلة==
== أمثلة ==
يعمل البرنامج التالي على توليد خطوات عشوائية محدودة بمجال معيَّن بالإضافة إلى تقييد حجم الخطوات عبر المتغير <code>stepsize</code> المُمرَّر إلى الدالة <code>()randomWalk</code>:<syntaxhighlight lang="arduino">
يعمل البرنامج التالي على توليد خطوات عشوائية محدودة بمجال معيَّن بالإضافة إلى تقييد بحجم الخطوات عبر المتغير <code>stepsize</code> المُمرَّر إلى الدالة <code>randomWalk</code>:<syntaxhighlight lang="arduino">
/* RandomWalk
/* RandomWalk
* Paul Badger 2007
* Paul Badger 2007
سطر 17: سطر 16:
* A static variable is moved up and down a random amount.
* A static variable is moved up and down a random amount.
* This technique is also known as "pink noise" and "drunken walk".
* This technique is also known as "pink noise" and "drunken walk".
*
* Edited by: wiki.hsoub.com 2018
*/
*/


سطر 56: سطر 57:


</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
* الكلمة المفتاحية <code>[[Arduino/const|const]]</code>: هي اختصار للكلمة «ثابت» (constant)، وهي مقيِّدةٌ للمتغيرات التي تٌستعمَل معها، إذ تعدِّل سلوك المتغير لتجعله في وضع «القراءة فقط» (read-only).
* الكلمة المفتاحية <code>[[Arduino/volatile|volatile]]</code>: تُستعمَل عادةً قبل نوع المتغير عند تعريفه لتوجيه المصرِّف إلى تحميل المتغير من الذاكرة RAM وليس من سجلات التخزين للذاكرة المؤقتة (الذاكرة flash) حيث تُخزَّن جميع متغيرات البرنامج.
* [[Arduino/scope|مجال المتغيرات]] في أردوينو.


== انظر أيضًا ==
==مصادر==
 
*[https://www.arduino.cc/reference/en/language/variables/variable-scope--qualifiers/static/ صفحة static في توثيق أردوينو الرسمي.]
== مصادر ==
[[تصنيف: Arduino]]
* [https://www.arduino.cc/reference/en/language/variables/variable-scope--qualifiers/static/ صفحة static في توثيق أردوينو الرسمي.]
[[تصنيف: Arduino Constants & Variables]]

المراجعة الحالية بتاريخ 07:11، 7 نوفمبر 2018

تُستعمَل الكلمة المفتاحية static عند إنشاء متغيرات مرئيَّة لدالةٍ واحدة فقط من أجل الحفاظ على محتواها بعد انتهاء تنفيذ تلك الدالة المستدعاة وحتى الاستدعاء التالي لها خلافًا للمتغيرات المحلية التي تُنشَأ وتدمَّر في كل مرة تُستدعَى فيها الدالة.

ستُنشَأ وتُهيَّأ المتغيرات الساكنة المصرَّح عنها ضمن الدالة مع الكلمة static المفتاحية أول مرة تُستدعَى فيها تلك الدالة فقط.

البنية العامة

static dataType var = val;

يمثِّل dataType نوع المتغير المراد تعريفه، و var اسم المتغير، و val القيمة المراد إسنادها إلى هذا المتغير الساكن. انتبه إلى أنَّه متى ما أُنشِئ المتغير var عند استدعاء الدالة أول مرة، لن يدمَّر عند انتهاء تنفيذ الدالة وسيحافِظ على القيمة المخزَّنة ضمنه حتى الاستدعاء التالي للدالة.

أمثلة

يعمل البرنامج التالي على توليد خطوات عشوائية محدودة بمجال معيَّن بالإضافة إلى تقييد حجم الخطوات عبر المتغير stepsize المُمرَّر إلى الدالة ()randomWalk:

/* RandomWalk
* Paul Badger 2007
* RandomWalk wanders up and down randomly between two
* endpoints. The maximum move in one loop is governed by
* the parameter "stepsize".
* A static variable is moved up and down a random amount.
* This technique is also known as "pink noise" and "drunken walk".
* 
* Edited by: wiki.hsoub.com 2018
*/

#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;

int thisTime;
int total;

void setup()
{
  Serial.begin(9600);
}

void loop()
{        // randomWalk اختبار الدالة
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
   delay(10);
}

int randomWalk(int moveSize){
  static int  place;     // عُرِّف كأَّنه ساكن لذا يخزِّن القيم randomWalk متغير يخزِّن قيمة في الدالة 
                         // بين استدعاءات الدوال مع بقاء هذا المتغير محلي ولا يصل إليه سوى هذه الدالة

  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange){                              // التحقق من الحدود الدنيا والعليا
    place = randomWalkLowRange + (randomWalkLowRange - place);  // يعكس الرقم بالاتجاه المعاكس نحو الاتجاه الموجب 
  }
  else if(place > randomWalkHighRange){
    place = randomWalkHighRange - (place - randomWalkHighRange);  // يعكس الرقم بالاتجاه المعاكس نحو الاتجاه السالب
  }

  return place;
}

انظر أيضًا

  • الكلمة المفتاحية const: هي اختصار للكلمة «ثابت» (constant)، وهي مقيِّدةٌ للمتغيرات التي تٌستعمَل معها، إذ تعدِّل سلوك المتغير لتجعله في وضع «القراءة فقط» (read-only).
  • الكلمة المفتاحية volatile: تُستعمَل عادةً قبل نوع المتغير عند تعريفه لتوجيه المصرِّف إلى تحميل المتغير من الذاكرة RAM وليس من سجلات التخزين للذاكرة المؤقتة (الذاكرة flash) حيث تُخزَّن جميع متغيرات البرنامج.
  • مجال المتغيرات في أردوينو.

مصادر