النوع int في أردوينو

من موسوعة حسوب
مراجعة 14:54، 26 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الأعداد الصحيحة هي نوع البيانات الأساسي المستعمل لتخزين الأعداد.

في لوحات أردوينو Uno (واللوحات التي تعتمد على المتحمات ATmega)، يحجز النوع int حجمًا مقداره 16 بت (2 بايت) من الذاكرة والتي يمكن فيها تخزين أعداد تتراوح بين 32768- (أصغر قيمة وتساوي 15^2-) و 32767 (أكبر قيمة وتساوي 1 - 15^2). أمَّا في لوحات أردوينو Due واللوحات التي تعتمد على متحكمات SAMD (مثل اللوحات MKR1000، و Zero)، يحجز النوع حجمًا بمقدار 32 بت (4 بايت) من الذاكرة لتخزين أعداد تتراوح من 2,147,483,648- (31^2-) إلى 2,147,483,647 (1 - 31^2).

يخزِّن هذا النوع أعدادًا سالبة بتقنية تدعى «المتمم الثنائي» (Two's complement). يحدِّد البت الأعلى الأكثر أهمية (MSB) إن كان العدد سالبًا أو موجبًا، ويسمى في كثير من الأحيان «بت الإشارة» (sign bit). عندما تكون قيمته 1، تُعكَس قيمة جميع البتات المتبقية ويضاف إليها القيمة 1.

تتولى أردوينو مهمة التعامل مع الأعداد السالبة، لذا تُجرَى العمليات الحسابية عليها بشفافية وبالطريقة المتوقعة. على أي حال، قد يكون هنالك بعض التعقيد في التعامل مع معامل الإزاحة <<.

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

int var = val;

يمثِّل var اسم المتغير المراد التصريح به، وتمثِّل val القيمة العددية الصحيحة المراد إسنادها إلى هذا المتغير.

أمثلة

سينشئ المثال التالي متغيرًا يدعى countUp ويسند قيمة أولية إليه؛ سيُستعمَل هذا المتغير كعداد تصاعدي، إذ ستُزاد قيمته خلال حلقة التكرار وستُظهَر على واجهة التخاطب التسلسلية:

int countUp = 0;            // التصريح عن متغير يحوي أعدادًا صحيحة

void setup() {
  Serial.begin(9600);       // تهيئة وبدء المنفذ التسلسلي
}

void loop() {
  countUp++;                // countUp إضافة القيمة 1 إلى المتغير
  Serial.println(countUp);  // طباعة قيمة المتغير الحالية على المنفذ التسلسلي
  delay(1000);
}

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

إن تجاوزت المتغيرات ذات الإشارة القيمة القصوى أو الدنيا للنوع الذي عُرِّفَت به، فستكون حينئذٍ قد وصلت إلى حالة «الطفحان» (overflow)، ولا يمكن آنذاك التنبؤ بقيمتها. وبالتالي، يجب توخي الحذر من جعل متغير يصل إلى حالة الطفحان (إلا إذا كان ذلك مرغوبًا به). أحد مؤشرات وصول المتغير إلى حالة الطفحان هو انتقال المتغير من قيمته القصوى إلى قيمته الدنيا أو العكس؛ انتبه أنَّنا قلنا «أحد المؤشرات» وليس الدليل الوحيد على حصول طفحان، لذا كن حذرًا. إن عرَّفت متغيرًا ولم تكن تنوي استعماله لتخزين قيمة سالبة فيه، فيجب استعمال النسخة عديمة الإشارة من هذا النوع وهي «عدد صحيح عديم الإشارة» (unsigned int) لتقليل احتمالية الوصول إلى حالة الطفحان.

انظر أيضًا

  • النوع array: يمثِّل مصفوفة من المتغيرات الموضوعة في وعاء واحد والتي يمكن الوصول إليها والتعامل معها عبر رقم فهرس كلٍّ منها.
  • النوع bool: يخزِّن المتغير الذي يصرَّح عنه بأنَّه من النوع bool إحدى القيمتين المنطقيَّتين التاليتين: true، أو false عبر حجز بايتٍ واحدٍ من الذاكرة فقط.
  • النوع byte: يُخزِّن عددًا عديم الإشارة بحجم 8 بت؛ أي من القيمة 0 إلى القيمة 255.
  • النوع char: يحجز بايتًا واحدًا من الذاكرة ويخزِّن فيه قيمة محرف.
  • النوع double: يحجز أربعة بايتات (32 بت) من الذاكرة فقط في لوحات أردوينو Uno (والتي تعتمد على متحكمات ATMega) أو ثمانية بايتات (64 بت) في اللوحات Due لتخزين عدد عشري فيها.
  • النوع float: يحجز أربعة بايتات (32 بت) من الذاكرة لتخزين عدد عشري فيها.
  • النوع long: يحجز حجمًا كبيرًا من الذاكرة مقداره 4 بايت يستعمل لتخزين الأعداد الصحيحة التي تتسم بأنَّها طويلة.
  • النوع short: يحجز في جميع لوحات أردوينو (التي تعتمد على المتحكمات ATMega و ARM) حجمًا من الذاكرة مقداره 16 بت (2 بايت) لتخزين عدد قصير فيه.
  • النوع string: يمثِّل سلسلةً نصيةً مؤلفةً من عدة محارف مرتبطة مع بعضها بعضًا. تُستعمَل مصفوفة من المحارف لتخزين هذا النوع من البيانات واستدعائها والتعامل معها لاحقًا.
  • النوع unsigned char: يحجز حجمًا من الذاكرة مقداره 1 بايت فقط.
  • النوع unsigned int: يحجز حجمًا من الذاكرة مقداره 2 بايت في لوحات أردونيو Uno واللوحات التي تعتمد على متحكمات ATMega أو 4 بايت في لوحات أردوينو Due لتخزين عدد صحيح عديم الإشارة فيها.
  • النوع unsigned long: يحجز حجمًا كبيرًا من الذاكرة مقداره 4 بايت يُستعمَل لتخزين الأعداد الصحيحة عديمة الإشارة التي تتسم بأنَّها طويلة.
  • النوع word: يُخزِّن أعدادًا عديم الإشارة بحجم 2 بايت.

مصادر