متغيرات الأعداد الصحيحة في السي بلس بلس
متغيرات الأعداد الصحيحة في C++
المتغيرات هي الجزء الأساسي في أيه لغة , والمتغير هو أسم رمزي يمكن أن يأخذ قيما متغيرة . وتختزن المتغيرات في أمكان معينة في ذاكرة الحاسوب , وحين يعطي المتغير قيمة ما , فإن هذه القيمة تخزن في المكان المخصص لهذا المتغير في الذاكرة . وأغلب للغات الشائعة تستخدم في الأنواع العامة من المتغيرات , مثل متغيرات الأعداد الصحيحة ومتغيرات الأعداد الكسرية ( المسماة " النقطة العائمة floating point" ) والمحرف characters وعلي ذلك فمن المحتمل أن يكون هذا الموضوع مألوف لديك .
ومتغيرات الأعداد الصحيحة تمثل الأعداد غير الكسرية , مثل 1 , 30000 , 27- . وهكذا .
تعريف المتغير من الأعداد الصحيحة
توجد متغيرات الأعداد الصحيحة علي حجوم , أشهرها ذات النوع int , وهذا النوع يحتاج لعدد 2 بايت لتخزينه ( في الحاسبات التي تعمل تحت الدوس , في غيرها يمكن أن يحتل أكثر من ذلك ) ويمكن أن يخزن به الأعداد الموجبة من صفر إلي 32767 والسالبة من
-1 إلي -32768 . ويبين الشكل متغيرا من نوع int مخزن بالذاكرة .
شكل متغير من نوع 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 ] رقمه جدول الأسكي [ .
شكل متغير من النوع 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
}
تعليقات
إرسال تعليق