متغيرات الأعداد الصحيحة في السي بلس بلس

متغيرات الأعداد الصحيحة في C++

المتغيرات هي الجزء الأساسي في أيه لغة , والمتغير هو أسم رمزي يمكن أن يأخذ قيما متغيرة . وتختزن المتغيرات في أمكان معينة في ذاكرة الحاسوب , وحين يعطي المتغير قيمة ما , فإن هذه القيمة تخزن في المكان المخصص لهذا المتغير في الذاكرة . وأغلب للغات الشائعة تستخدم في الأنواع العامة من المتغيرات , مثل متغيرات الأعداد الصحيحة ومتغيرات الأعداد الكسرية ( المسماة " النقطة العائمة floating point" ) والمحرف characters وعلي ذلك فمن المحتمل أن يكون هذا الموضوع مألوف لديك .
ومتغيرات الأعداد الصحيحة تمثل الأعداد غير الكسرية , مثل 1 , 30000 , 27- . وهكذا .

تعريف المتغير من الأعداد الصحيحة

توجد متغيرات الأعداد الصحيحة علي حجوم , أشهرها ذات النوع int , وهذا النوع يحتاج لعدد 2 بايت لتخزينه ( في الحاسبات التي تعمل تحت الدوس , في غيرها يمكن أن يحتل أكثر من ذلك ) ويمكن أن يخزن به الأعداد الموجبة من صفر إلي 32767 والسالبة من
-1 إلي -32768 . ويبين الشكل متغيرا من نوع int مخزن بالذاكرة .
Variable of type float in memory
شكل متغير من نوع int مخزن بالذاكرة
وإليك برنامجا يستخدم عدة متغيرات من النوع int :
Inverse.cpp
intvars.cpp
 
// intvars.cpp
// demonstrates integer variables
#include <iostream.h>
 
void main()
   {
   int var1;               // define var1
   int var2;               // define var2
 
   var1 = 20;              // assign value to var1
   var2 = var1 + 10;       // assign value to var2
   cout << "var1+10 is ";  // output text
   cout << var2;           // output value of var2
   }



وفي هذا البرنامج , يعرف أثنان من الأعداد الصحيحة بالعبارتين :

ولذا فتسمي العبارتان "تعريف" , ويجب أن ينهيا بفاصلة منقوطة ,كشأن كل عبارات اللغة .

فقبل أن تستخدم متغيرا , عليك بتعريفه أولا , ولكن يمكن أن تقوم بالتعريف في أي مكان , ولا يشترط أن يكون ذلك قبل أول عبارة قابلة للتنفيذ في البرنامج ( علي عكس السي التقليدية ولغات أخري ) .

الإعلان والتعريف


فلنتوقف قليلا للتمييز بين مصطلحي الإعلان declaration " والتعريف definition " .

فالإعلان يخطر بوجود متغير ما , ويبين نوعه , فإذا ما تضمن ذلك تخصيص مساحة له في الذاكرة أيضا , سمي الإعلان تعريفا , ومن ذلك التعريفان المبينان في مثالنا هذا . وسنقصر اهتمامنا في الغالب علي الإعلان الذي يتضمن تعريفا علي هذا النحو , ولكنا في الفصل الخامس عشر ؛ حين نتعرض للبرامج متعددة الملفات , عشر سوف نري أمثلة لإعلانات ليست تعاريف .

أسماء المتغيرات


يحمل البرنامج المعطي في مثالنا أسماء لمتغيرات مثل var1, var2 , فما قواعد تسمية هذه المتغيرات ؟ يمكن إستخدام الأحرف الصغيرة أو الكبيرة , والأرقام من 0 إلي 9 , والشرطة السفلية . ويجب أن يبدأ الإسم بحرف أو شرطة سفلية . ويمكن أن يطول الاسم كما تشاء , ولكن فقط الاثنان والثلاثون حرفا الأول هي التي ستؤخذ في الإعتبار . ويميز المترجم بين الأحرف الكبيرة والأحرف الصغيرة , لذا فهو يعتبر أن المتغير var يختلف عن Var , وهو نفس المتبع في السي .

علي أنه ليس لك أن تستخدم الكلمات المحجوزة للغة , مثل class, if, while وهكذا . ويمكن الرجوع لنشرات بورلاند لمعرفة الكلمات المحجوزة , وهي أيضا مبينة في الملحق ب . ويجري العرف استخدام الأحرف الكبيرة للثوابت دون المتغيرات .

عبارات التخصيص


العبارتان :

var1 = 20 ;

var2 = var1 + 10;

يخصصان قيما للمتغيرين , وهو ما تقوم به علامة التساوي المبينة .

ثوابت الأعداد الصحيحة


العدد 20 يسمي " ثابت من نوع صحيح integer constant" , فقيمته تظل ثابتة طوال البرنامج . ولا يحتوي الثابت من نوع العدد الصحيح علي علامة كسرية , كما يجب أن تكون قيمته في حدود القيمة المخصصة للأعداد الصحيحة . وفي العبارة :

var2 = var1 + 10;

أضيف لقيمة var1 الثابت 10 , ثم خصص الناتج لـ var2 .

الصورة المتغيرة للخرج


العبارة :

Cout << ''var1 + 10 is '';

تقوم بإظهار عبارة نصية علي الشاشة , بينما تقوم العبارة :

Cout << var2;

بإظهار قيمة عددية , هي قيمة المتغير var2 , ففي شاشة الخرج سوف تري :

var1 + 10 is 30

بمعني أن cout والمؤثر التالي لها << يعرفان كيف يعاملان كل نوع بحسب طبيعته , فإذا ما وجه لهما عبارة نصية , أخرجاها كسلسلة من الحروف , وإذا ما وجه لهما عدد من الأعداد , أظهراه كسلسلة من الأرقام . وقد يبدو هذا بديهيا , ولكن الأمر لم يكن كذلك في السي التقليدية , حيث كانت دالة الإظهار printf() تتطلب أن تخبر بطريقة الإظهار , وهو ما يبين مدي تطور لغة السى بلس بلس عن لغة السي . وهذه الإمكانية تبين أيضا مثالا لما يسمي " زيادة التحميل " للمؤثرات .

ولعلك لاحظت أن خرج العبارتين قد ظهرا علي نفس السطر , وإذا ما شغلت البرنامج مرة ثانية ستجد أن خرج التشغيل الثاني علي نفس السطر أيضا , علي النحو التالي :

var1 + 10 is 30var1 + 10 is 30

بمعني أن الإنتقال للسطر التالي لا يتم تلقائيا , بل يجب أن تخبر المترجم بذلك إذا أردت هذا ,كما سنري بعد قليل .

متغيرات المحارف

المتغير int يحجز عدد 2 بايت في الذاكرة , وذلك نوع أخر من المتغيرات هو char يحجز بايت واحدة , وهو العدد المناسب لتخزين المحارف characters ii , حيث إن المحارف تختزن في الذاكرة كأعداد طبقا لترتيبها في جدول الاسكي , وهي بذلك تتراوح بين صفر و 127 ويكفي لذلك بايت واحدة ] تستخدم سبعة بتات فقط منها [ ( الكثير من الحاسبات العاملة مع الدوس تمد هذا المدي إلي 255 ] باستخدام البت الثامنة [ , فتستطيع بذلك أن تحتوي الحروف الأجنبية والعلامات الرسومية ) . ويبين الملحق أ مجموعة المحارف وترتيبها في جدول الأسكي .

ثوابت المحارف


يستخدم لثوابت المحارف علامتي التنصيص المفردة , كما في الأمثلة التالية : 'K' , 'a' , '$' , '3' , وتلاحظ أنها بذلك مختلفة عن العبارات النصية التي تحاط بعلامتي التنصيص المزدوجة . فحينما يقابل المترجم هاتين العلامتين , فإنه يتعرف علي ما تحتوياه كمحرف , ويخزن العدد المقابل له في جدول الاسكي في الذاكرة . ويبين الشكل تخزين الحرف 'a' كعدد 97 ] رقمه جدول الأسكي [ .

Variable of type int in memory

شكل متغير من النوع char

ويمكن أن يخصص لمتغيرات المحارف ثوابت محارف كقيم لها , وهو ما نوضحه بالبرنامج التالي :

charvars.cpp

   }
charvars.cpp
 
// charvars.cpp
// demonstrates character variables
 
#include <iostream.h>      // for cout, etc.
 
void main()
   {
   char charvar1 = 'A';    // define char variable as character
   char charvar2 = '\t';   // define char variable as tab
 
   cout << charvar1;       // display character
   cout << charvar2;       // display character
   charvar1 = 'B';         // set char variable to char constant
   cout << charvar1;       // display character
   cout << '\n';           // display newline character
   }






 
 



التسميات: