Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

C++أنواع البيانات

  • مفهوم أنواع البيانات في C++
  • أنواع البيانات الأولية في C++
  • تحديد خصائص أنواع البيانات في C++

مفهوم أنواع البيانات في C++

أي شيء تتعامل معه في C++ له نوع محدد و له طريقة خاصة للتعامل معه فيها; فمثلاً الأرقام لها طريقة للتعامل معها, النصوص لها طريقة للتعامل معها, الدوال لها طريقة للتعامل معها و هكذا.

في C++ يوجد أنواع بيانات بسيطة و جاهزة يمكنك التعامل معها سنطلعك عليها في هذا الدرس, و يوجد أنواع أخرى جاهزة ستتعلمها لاحقاً في الدورة لأنك غير مستعد لها بعد, كما تستطيع تعريف أنواع جديدة و هذا الأمر ستتعلمه لاحقاً أيضاً.


أنواع البيانات في C++

البيانات في C++ تنقسم لثلاث أقسام رئيسية كما في الصورة التالية.

أنواع البيانات الأساسية التي سنتعرف عليها و سنبدأ بالتعامل معها من الآن هي الأنواع الأولية ( Primary ) و التي تعتبر نفسها في أغلب لغات البرمجة.
و نود الإشارة إلى أننا سنتعرف على جميع الأنواع الأخرى المذكورة لاحقاً في الدورة عندما نصبح مستعدين لها.


قد تجد مسميات أخرى تطلق على أنواع البيانات و هذا شيء طبيعي جداً, فمثلاً قد تجد أنواع البيانات الأولية ( Primary ) يقال لها أنواع بدائية ( Basic Data type ) أو أنواع تأتي ضمن اللغة مباشرةً ( Built-in ) و غير ذلك و لكن الفكرة هي نفسها و هذه كلها إختلافات غير مهمة على الإطلاق.

أنواع البيانات الأولية في C++

أهم أنواع البيانات الأولية في C++ و أكثرها استخداماً هي:
int - float - double - bool - char


النوع int

يستخدم هذا النوع لتخزين عدد صحيح, أي عدد لا يحتوي على فاصلة عشرية.

مثال

int x = 10;


النوع float

يستخدم هذا النوع لتخزين عدد يمكن أن يحتوي على فاصلة عشرية.
يمكن لهذا العدد أن يحتوي على 7 أرقام بعد الفاصلة.

مثال

float x = 12.5;


النوع double

يستخدم هذا النوع لتخزين عدد يمكن أن يحتوي على فاصلة عشرية.
يمكن لهذا العدد أن يحتوي على 15 رقم بعد الفاصلة لهذا يعتبر أكثر دقة من النوع float في العمليات الحسابية الدقيقة.

مثال

double x = 12.5;


النوع bool

يستخدم هذا النوع لتخزين إما القيمة true و إما القيمة false.

مثال

bool x = true;


النوع char

يستخدم هذا النوع لتخزين حرف أجنبي أو لتخزين عدد صحيح قيمته تمثل حرف نسبةً لرقم الآسكي كود ( ASCII Code ) الخاص به.
فمثلاً char x = 65; نفسها تماماً إن كتبت char x = 'A';.
سبب تحول الرقم 65 إلى الحرف 'A' في الذاكرة هو أنه في نظام ASCII الرقم 65 يمثل الحرف 'A'.

مثال

char x = 'A';

النوع char يمكنه تخزين أي حرف أجنبي بدون مشاكل لأن الحرف الأجنبي يحتاج مساحة 1Byte من الذاكرة فقط حتى يتم تخزينه.
بينما الحرف العربي يحتاج مساحة 2Bytes من الذاكرة حتى يتم تخزينه بشكل صحيح.

لهذا السبب, عند التعامل مع الأحرف العربية يستحسن تخزين الحرف الواحد كمصفوفة نوعها char تتألف من عنصرين أو كنص عادي نوعه string.
لا داعي للقلق بشأن تخزين الأحرف العريبة لأن ما ذكرناه الآن سيمر معك في دروس لاحقة.

تحديد خصائص أنواع البيانات في C++

في C++ يوجد مجموعة كلمات يقال لها Data Type Modifiers يمكنك استخدامها لتحديد خصائص القيم التي يمكن تخزينها, مثل هي يمكن أن تكون قيم أصغر من صفر أم لا, بالإضافة إلى تكبير حجم المساحة التي يتم تخصيصها لكل نوع في الذاكرة مما يجعلك قادر على تخزين قيم أكبر.

الأنواع char و int و double يمكن تحديد خصائص القيم التي يمكن تخزينها فيها إذا أضفنا معها إحدى الكلمات التالية:

  • signed نضيفها لأحد الأنواع السابقة إذا أردنا تحديد أن قيمة المتغير لا يهم إن كانت أكبر, أصغر أو تساوي صفر.
  • unsigned نضيفها لأحد الأنواع السابقة إذا أردنا تحديد أن قيمة المتغير لا يمكن أن تكون أصغر من صفر.
  • short نضيفها لأحد الأنواع السابقة إذا أردنا تحديد أن حجم الذاكرة التي سيتم تخصيصها للمتغير هو 2Byte.
  • long نضيفها لأحد الأنواع السابقة إذا أردنا تحديد أن حجم الذاكرة التي سيتم تخصيصها للمتغير هو 8Byte.

معلومة تقنية

إفتراضياً الأنواع char - int - float - double جميعا تعتبر signed حتى لو لم تحدد ذلك بنفسك لهذا السبب تستطيع تخزين قيم أصغر من صفر فيها.


خصائص أنواع البيانات

الجدول التالي يوضح المساحة التي يحتاجها كل نوع في الذاكرة و القيم التي يمكن تخزينها فيه سواء تم استخدام النوع لوحده أو تم تحديد خصائصه.

النوع الحجم في الذاكرة القيمة التي يمكن تخزينها
char 1Byte بين -128 و 127
unsigned char 1Byte بين 0 و 255
short int 2Bytes بين -32768 و 32767
unsigned short int 2Bytes بين 0 و 65535
int 4Bytes بين -2147483648 و 2147483647
unsigned int 4Bytes بين 0 و 4294967295
long int 4Bytes بين -2147483648 و 2147483647
unsigned long int 4Bytes بين 0 و 4294967295
long long int 8Bytes بين -9223372036854775808 و 9223372036854775807
unsigned long long int 8Bytes بين 0 و 18446744073709551615
float 4Bytes بين 1.17549e-038 و 3.40282e+038
double 8Bytes بين 2.22507e-308 و 1.79769e+308
long double 12Bytes بين 3.3621e-4932 و 1.18973e+4932

في حال أردت استخدام أي نوع مع تحديده خصائصه فيمكنك استخدام أي نوع تم ذكره في الجدول كالتالي.

مثال

// short int هنا استخدامنا النوع
short int x = 4545;

// long long int هنا استخدامنا النوع
long long int y = -50050012;

// unsigned long int هنا استخدامنا النوع
unsigned long int = 880045023;

هناك الكثير من الأنواع الجاهزة التي يمكنك استخدامها و لكننا تطرقنا لأشهرها و الأكثر استخداماً من بينها. و نود الإشارة إلى أن خصائص الأنواع المذكورة قد تختلف قليلاً بحسب المترجم المستخدم لتفسير كود لغة C++ للحاسوب و لكن هذا الأمر ليس شيء عليك القلق بشأنه خاصةً في هذه المرحلة.


في الدرس التالي ستتعلم جميع الأساليب التي تستطيع اتباعها لتعريف متغيرات تستخدم أنواع البيانات التي تعلمناها في هذا الدرس.