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

من موسوعة حسوب
أنشأ الصفحة ب'التعبير ‎<code>#define</code> هو أحد العناصر المفيدة في C، إذ يسمح بإعطاء اسمٍ لقيمةٍ ثابتةٍ قبل أن يُ...'
 
إضافة محتويات الصفحة.
سطر 1: سطر 1:
التعبير ‎<code>#define</code> هو أحد العناصر المفيدة في C، إذ يسمح بإعطاء اسمٍ لقيمةٍ ثابتةٍ قبل أن يُفسَّر البرنامج. الثوابت المعرَّفة باستعمال هذا التعبير في أردوينو لا تحتل أيَّة مساحةٍ من ذاكرة البرنامج على الشريحة (chip). سيبدل المفسِّر (compiler) القيمة المعرَّفة مكان المراجع التي تشير إلى هذه الثوابت أثناء عملية تصريف الشيفرة.
<noinclude>{{DISPLAYTITLE:التعبير <code>‎#define</code> في  أردوينو}}</noinclude>
التعبير ‎<code>#define</code> هو أحد العناصر المفيدة في C، إذ يسمح بإعطاء اسمٍ لقيمةٍ ثابتةٍ قبل أن يُفسَّر البرنامج. الثوابت المعرَّفة باستعمال هذا التعبير في أردوينو لا تحتل أيَّة مساحةٍ من ذاكرة البرنامج على الشريحة (chip). سيبدِّل المفسِّر (compiler) القيمة المعرَّفة مكان المراجع التي تشير إلى هذه الثوابت أثناء عملية تصريف الشيفرة.


انتبه إلى أنَّ استعمال التعبير ‎<code>#define</code> في تعريف الثوابت كما ذُكِر آنفًا له آثار جانبية غير مرغوبة مثل استعمال اسم ثابت عُرِّف في ‎<code>#define</code> مع اسم ثابت أو متغير آخر؛ في هذه الحالة، سيُستبدَل باسم الثابت المعرَّف عبر ‎<code>#define</code> القيمة المعطاة أينما وُجد في الشيفرة وهذا سيؤدي إلى أخطاء عند تنفيذها.
انتبه إلى أنَّ استعمال التعبير ‎<code>#define</code> في تعريف الثوابت كما ذُكِر آنفًا له آثار جانبية غير مرغوبة مثل استعمال اسم ثابت عُرِّف في ‎<code>#define</code> مع اسم ثابت أو متغير آخر؛ في هذه الحالة، سيُستبدَل باسم الثابت المعرَّف عبر ‎<code>#define</code> القيمة المعطاة أينما وُجِدَ في الشيفرة وهذا سيؤدي إلى أخطاء عند تنفيذها.


عمومًا، يفضل استعمال الكلمة <code>const</code> المفتاحية لتعريف الثوابت التي يستعاض بها عن استعمال ‎<code>#define</code>.
عمومًا، يفضل استعمال الكلمة [[Arduino/const|<code>const</code>]] المفتاحية لتعريف الثوابت التي يستعاض بها عن استعمال ‎<code>#define</code>.
 
==البنية العامة==
== البنية العامة ==
<syntaxhighlight lang="arduino">
<syntaxhighlight lang="arduino">
#define constantName value
#define constantName value
</syntaxhighlight>لا تنسَ إضافة الرمز <code>#</code> لأنه ضروري.
</syntaxhighlight>'''ملاحظة''': لا تنسَ إضافة الرمز <code>#</code> لأنه ضروري.
 
==أمثلة==
== أمثلة ==
مثالٌ على استعمال التعبير ‎<code>#define</code> لتسمية أسماء الأرجل المراد استعمالها عوضًا عن استعمال القيم العددية لها أو تعريف متغير يستهلك جزءًا من الذاكرة:<syntaxhighlight lang="arduino">
مثالٌ على استعمال التعبير ‎<code>#define</code> لتسمية أسماء الأرجل المراد استعمالها عوضًا عن استعمال القيم العددية لها:<syntaxhighlight lang="arduino">
#define ledPin 3
#define ledPin 3
// أينما ذكرت أثناء تفسير الشيفرة ledPin سيبدل المفسر القيمة 3 مكان الكلمة  
// أينما ذكرت أثناء تفسير الشيفرة ledPin سيبدل المفسر القيمة 3 مكان الكلمة  
</syntaxhighlight>
</syntaxhighlight>
 
==ملاحظات وتحذيرات==
== ملاحظات وتحذيرات ==
لاحظ أنه لا يوجد فاصلة منقوطة في نهاية نهاية التعبير <code>‎#define</code>. إن وضعت واحدة، فسيرمي المفسِّر أخطاءً مبهمةً أثناء تفسير الشيفرة وإرسالها إلى اللوحة.<syntaxhighlight lang="arduino">
لاحظ أنه لا يوجد فاصلة منقوطة في نهاية نهاية التعبير <code>‎#define</code>. إن وضعت واحدة، سيرمي المفسِّر أخطاء مبهمة أثناء تفسير الشيفرة وإرسالها إلى اللوحة.<syntaxhighlight lang="arduino">
#define ledPin 3;    // سيرمي هذا خطأً
#define ledPin 3;    // سيرمي هذا خطأً
</syntaxhighlight>بشكل مشابه، إضافة إشارة تساوي بين اسم الثابت وقيمته في التعبير <code>‎#define</code> سيرمي خطأً مبهمًا أثناء تصريف الشيفرة وكتابتها على اللوحة.<syntaxhighlight lang="arduino">
</syntaxhighlight>بشكل مشابه، سيؤدي إضافة إشارة تساوي بين اسم الثابت وقيمته في التعبير <code>‎#define</code> إلى رمي خطأ مبهم أثناء تصريف الشيفرة وكتابتها على اللوحة.<syntaxhighlight lang="arduino">
#define ledPin  = 3  // سيرمي هذا خطأً
#define ledPin  = 3  // سيرمي هذا خطأً
</syntaxhighlight>
</syntaxhighlight>
 
==انظر أيضًا==
== انظر أيضًا ==
*التعبير <code>[[Arduino/include|‎#include]]</code>: يُستعمَل لتضمين مكتبات خارجية في شيفرتك.
* التعبير <code>‎#include</code>:
*الرمز <code>[[Arduino/semicolon|;]]</code>: يُستعمَل لإنهاء كل تعبير برمجي في لغة أردوينو C.
* الكلمة المفتاحية <code>[[Arduino/const|const]]</code>:
*الأقواس <code>[[Arduino/curlybraces|{}]]</code>: هي جزء لا يتجزأ من لغة C وتستعمل في بُنى عديدة مثل بنى التحكم وغيرها.
* الرمز <code>;</code>:
*الكلمة المفتاحية <code>[[Arduino/const|const]]</code>:
* الأقواس <code>{}</code>:
*الثوابت في أردوينو.
* استعمال التعليقات الكتلية في أردوينو.
*[[Arduino/blockcomment|استعمال التعليقات الكتلية في أردوينو.]]
* استعمال التعليقات السطرية في أردوينو.
*[[Arduino/singlelinecomment|استعمال التعليقات السطرية في أردوينو.]]
* الثوابت في أردوينو.
==مصادر==
 
*[https://www.arduino.cc/reference/en/language/structure/further-syntax/define/ صفحة التعبير ‎#define في توثيق أردوينو الرسمي.]
== مصادر ==
[[تصنيف: Arduino]]
<span> </span>
[[تصنيف: Arduino Syntax]]
* [https://www.arduino.cc/reference/en/language/structure/further-syntax/define/ صفحة التعبير ‎#define في توثيق أردوينو الرسمي.]

مراجعة 11:24، 9 أكتوبر 2018

التعبير ‎#define هو أحد العناصر المفيدة في C، إذ يسمح بإعطاء اسمٍ لقيمةٍ ثابتةٍ قبل أن يُفسَّر البرنامج. الثوابت المعرَّفة باستعمال هذا التعبير في أردوينو لا تحتل أيَّة مساحةٍ من ذاكرة البرنامج على الشريحة (chip). سيبدِّل المفسِّر (compiler) القيمة المعرَّفة مكان المراجع التي تشير إلى هذه الثوابت أثناء عملية تصريف الشيفرة.

انتبه إلى أنَّ استعمال التعبير ‎#define في تعريف الثوابت كما ذُكِر آنفًا له آثار جانبية غير مرغوبة مثل استعمال اسم ثابت عُرِّف في ‎#define مع اسم ثابت أو متغير آخر؛ في هذه الحالة، سيُستبدَل باسم الثابت المعرَّف عبر ‎#define القيمة المعطاة أينما وُجِدَ في الشيفرة وهذا سيؤدي إلى أخطاء عند تنفيذها.

عمومًا، يفضل استعمال الكلمة const المفتاحية لتعريف الثوابت التي يستعاض بها عن استعمال ‎#define.

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

#define constantName value

ملاحظة: لا تنسَ إضافة الرمز # لأنه ضروري.

أمثلة

مثالٌ على استعمال التعبير ‎#define لتسمية أسماء الأرجل المراد استعمالها عوضًا عن استعمال القيم العددية لها أو تعريف متغير يستهلك جزءًا من الذاكرة:

#define ledPin 3
// أينما ذكرت أثناء تفسير الشيفرة ledPin سيبدل المفسر القيمة 3 مكان الكلمة

ملاحظات وتحذيرات

لاحظ أنه لا يوجد فاصلة منقوطة في نهاية نهاية التعبير ‎#define. إن وضعت واحدة، فسيرمي المفسِّر أخطاءً مبهمةً أثناء تفسير الشيفرة وإرسالها إلى اللوحة.

#define ledPin 3;    // سيرمي هذا خطأً

بشكل مشابه، سيؤدي إضافة إشارة تساوي بين اسم الثابت وقيمته في التعبير ‎#define إلى رمي خطأ مبهم أثناء تصريف الشيفرة وكتابتها على اللوحة.

#define ledPin  = 3  // سيرمي هذا خطأً

انظر أيضًا

مصادر