الفرق بين المراجعتين ل"Arduino/static"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'تُستعمَل الكلمة المفتاحية <code>static</code> عند إنشاء متغيرات مرئيَّة لدالةٍ واحدة فقط من أجل الحف...')
 
(إضافة محتويات الصفحة.)
سطر 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
سطر 56: سطر 55:
  
 
</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 Variable Scope & Qualifiers]]

مراجعة 14:42، 27 أكتوبر 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".
*/

#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) حيث تُخزَّن جميع متغيرات البرنامج.
  • مجال المتغيرات في أردوينو.

مصادر