أنواع البيانات - Data Types


10. أنواع البيانات الجزء الأول - Data Types :
--------------------------------------------------


الــ Computer عامة لما بيخزن أى بيانات فيه لازم يعرف نوع البيانات لأن كل نوع له طريقة تخزن ومساحة تخزين معينة بيشغلها فى الــ Memory ... وبالتالى لازم أحدد نوع البيانات لما اعرف متغير جديد ..
. ودا علشان أقول للجهاز احجزلى مكان فى الــ Memory وهخزن فيه بيانات من النوع الفلانى و بالتالى هيحجزلك مكان بالمواصفات الى انت طالبها 

وأنواع البيانات هيا أول كلمة بنكتبها لما نعرف متغير جديد ... الى هيا زى كلمة int مثلا فى ;int age = 20

بشكل عام عندنا نوعين رئيسيين لأنواع البيانات :
1. Primitive Built-in Data Types : دول أنواع البيانات المعتارف عليهم
2. Compound Data Types : دى أنواع أنا بعملها من الــ Primative DT

1. Primitive Built-in Data Types : 
------------------------------------
هما الأنواع الرئيسية الى الــ Computer عارفهم وعارف إزاى يخزنهم ولما هنتكلم على كل نوع فيهم هنقول الاسمه و نوع البيانات الى بيخزنها
الاسم : نوع البيانات
1. char : حروف أو رموز زى مثلا : a ί┼ãÀ↑¸é 
2. bool : قيمة منطقية - Boolean - (0 أو 1) - (ture or false)
3. int : للقيم الصحيحة زى مثلا 1 أو 50- وهكذا 
4. float : للقيم العشرية زى مثلا 2.5 أو 12.9- وهكذا
5. double : للقيم العشرية بردو بس للقيم الكبيرة زى مثلا 8^10*3
6. void : حاجة كدا لا تحمل قيمة ولا تحمل نوع - زى ما تقولوا كدا مجهول  
7. wchar_t : زى الــ char بس بتقدر تمثل بيه عدد أكبر من الرموز والحروف

طيب النقطة الى بعد كدا هنتكلم فيها على المساحة الى ممكن يشغلها كل نوع من دول فى الــ Memory والــ Range أو عدد القيم الى أقدر أمثلها فى المتغير دا يعنى أقصى قيمة و أقل قيمة .... بس قبلها هنتكلم على حاجة مهمة اسمها الــ Modifiers ودى عبارة عن كلمة ممكن نضيفها قبل المتغير ودى بتتحكم فى القيمة الى ممكن نخزنها و الــ Range بتاع المتغير 
والــ Modifiers إلى عندنا 4 أنواع :
1. signed : معناها إن المتغير ينفع أخزن فيه قيم موجبة وسالبة 
2. Unsigned : معناها إن المتغير بيحمل قيم موجبة فقط
3. short : بيقلل مساحة التخزين والــ Range للنص 
4. long : بزود مساحة التخزين والــ Range الضعف

طيب تعالوا نطبق الكلام دا على المتغيرات ونشوف النوع و المساحة و الــ Range بتاع كل واحد مع الـ Modifiers

Type ::::: Typical Bit Width ::::: Typical Range
-------------------------------------------------
1. char ::::: 1byte ::::: -127 to 127 or 0 to 255
2. unsigned char ::::: 1byte ::::: 0 to 255
3. signed char ::::: 1byte ::::: -127 to 127
4. int ::::: 4bytes ::::: -2147483648 to 2147483647
5. unsigned int ::::: 4bytes ::::: 0 to 4294967295
6. signed int ::::: 4bytes ::::: -2147483648 to 2147483647
7. short int ::::: 2bytes ::::: -32768 to 32767
8. unsigned short int ::::: Range ::::: 0 to 65,535
9. signed short int ::::: Range ::::: -32768 to 32767
10. long int ::::: 4bytes ::::: -2,147,483,647 to 2,147,483,647
11. signed long int ::::: 4bytes ::::: same as long int
12. unsigned long int ::::: 4bytes ::::: 0 to 4,294,967,295
13. float ::::: 4bytes ::::: +/- 3.4e +/- 38 (~7 digits)
14. double ::::: 8bytes ::::: +/- 1.7e +/- 308 (~15 digits)
15. long double ::::: 8bytes ::::: +/- 1.7e +/- 308 (~15 digits)
16. wchar_t ::::: 2 or 4 bytes ::::: 1 wide character
ممكن نشوفهم فى الصورة دى هتكون أوضح شوية :


هنتكلم شوية عن المتغيرات من النوع char :
-----------------------------------
الــ Computer شاطر أوى فى تخزين الأرقام

بس لما بيجى عندا الحروف مش بيعرف يخزنها بطريقة مباشرة زى الأرقام .... فعلشان يقدروا يخزنوا الحروف فى الــ Memory قالوا هندى كل حرف رقم معين وبدل ما نخزن الحرف لأ هنخزن الرقم المقابل للحرف .... طبعا الكلام دا مش على الحروف بس لأ أى رمز معين أو الحروف الإغريقية مثلا أو الرموز إلى بتكون موجودة على الحروف فى اللغة الفرنسية و هكذا .... وجمعوا الحروف بالأرقام المقابلة ليهم فى قائمة كبيرة سموها الــ ASCII Character Set ووصل عدد الحروف الى بنمثلها فى الــ ASCII حوالى 256 حرف ورمز
علشان تمثل حرف فى الــ ASCII كنا بنكتب الرقم المقابل للحرف مثلا 77 الرقم دا بالنظام العشرى وممكن كمان أكتبه بالنظام السداسى عشر - Hexadecimal مثلا x2D\
يعنى مثلا :
1. حرف زى الــ A الرقم بتاعه بيساوى 65
2. حرف زى الــ a الرقم بتاعه بيساوى 97
3. حرف زى الــ M الرقم بتاعه بيساوى 77

مثال بالكود :
;'char ch1 = 'a
;char ch2 = 77
cout<<"The Char 1 = <<ch1; // Output : The Char 1 = a
cout<<"The Char 2 = <<ch2; // Output : The Char 2 = M
هنلاحظ إن الــ cout حولت الرقم 77 إلى الحرف وطبعته فى الخرج

بعد كدا الــ wchar_t :
----------------------
مع مرور الوقت فيه رموز بتظهر جديدة و أشكال جديدة محتاجين إننا نستعملها ... علشان كدا عملوا Character Set تانية بس هتكون أكبر من الــ ASCII ويقدروا يمثلوا فيها حروف ورموز أكتر طيب علشان اخزن العدد دا عملوا نوع متغيرات أكبر علشان يقدروا يخزنوا فيها الرقم المقابل للحرف وبالتالى ظهر الــ wchar_t - Wide Character Type ودا بيقدر يشيل حوالى 65536 حرف ورمز .... بس التعامل مع الــ wchar_t بيكون ليه دوال مختلفة عن الــ cout و cin العاديين زى مثلا wcout و wcin للإدخال والإخراج ولازم استعمل معاه حرف الــ L زى المثال
a wide-character constant//
;'wchar_t bob = L'P
outputting a wide-character string//
;wcout << L"tall" << endl

بعد كدا الــ char16_t و char32_t :
----------------------------------
بردو العدد دا مش كفاية لأن بردو فيه رموز عايزين يضيفوها زى اللغة العربية و اليابانية مثلا .... وبالتالى عملوا أنواع أكبر من المتغير char تقدر تمثل رموز أكتر زى الــ char16_t و char32_t وسموا مجموعة الرموز دى بالــ Unicode - ISO 10646 والـــ Character Set دى تقدر بمثل حوالى 4 مليون و300 ألف حرف ورمز

حاجة كدا ليك وللزمن



فى Unicode علشان نمثل الحرف أو الرمز باستخدام الــ u أو U زى المثال كدا
basic character in 16-bit form//
;'char16_t ch1 = u'q
universal character name in 32-bit form//
;'char32_t ch2 = U'\U0000222B

بردو فيه شكل تانى ممكن اشوفه فى الأكواد وهو أنى استخدم u\ أو U\
;"cout << "Let them eat g\u00E2teau.\n
Output : Let them eat gâteau//


طبعا الــ Character Sets دى ليلة لوحدها وانا حبيت أدى فكرة عنها علشان لو قرينا عنها فى كتاب أو سمعنا اللفظ فى فيديو مثلا نكون فاهمينه .... وطبعا انا لو عايز استعمل رمز معين هاعمل Search عليه واجيب الــ Code بتاعه واشتغل بيه مباشرة

===
هنتكلم على باقى الأنواع شوية

أولا المتغير bool :
--------------------
قلنا قبل كدا انه عبارة عن قيمة من اتنين إما ture أو false .. إما 0 أو 1 ودا هنستخدمه كتير لما نتعامل مع الاختبارات للشروط فى الــ if و الــ while وغيرههم .... بردو مش شرط إن 1 يكون true و false تكون 0 .... القاعدة العامة بتقول إن أى قيمة لا تساوى الصفر تعتبر true حتى وإن كانت سالبة والصفر فقط هو الذى يساوى false
وكمان معلومة على الطاير كدا
grin emoticon
كلمة bool اتسمت تكريما لعالم الرياضيات George Boole إلى وضع قواعد مجال الدواير المنطقية - Laws of Logic والى مبنى عليه تطوير الــ Computers و الــ Smart phone وغيرهم

ثانيا المتغير float :
----------------------
هو نوع من التغيرات بنخزن فيه قيمة عشرية وعندنا شكلين ممكن نمثل بيهم الأرقام العشرية
1. Standrad Decimal-Point Notation :
زى مثلا 12.32 أو 939001.589 أو 0.000036 أو 8.0 أو 0.0
حتى الــ 8.0 أو 0.0 يعتبر float ودا علشان وجود العلامة العشرية
2. Scientific E-Notation :
زى مثلا 2.52E8 = (8^10 * 2.52) أو 9.11e-31 = (31-^10 * 9.11)
زى ما انتو شايفين هنا الــ e أو E هيا عبارة عن 10 أس رقم والنظام دا بنستخدمه لما نمثل أرقام كبيرة وبالذات فى البرامج العلمية

ثالثا هنتكلم على الــ Constants :
-----------------------------
ودى عبارة عن متغير بس بخزن فيه قيمة فى البداية وبتفضل ثابته طول البرنامج ... طيب ليه بنستعمل الثوابت ما انا ممكن استعمل متغيرات عادى ... الفكرة هنا إنى عايز أكون ضامن ان القيمة دى مش هتتغير طول البرنامج
وعندنا طريقتين لتعريف ثابت فى الــ ++C :
1. ;const float PI = 3.14
هو هو نفس تعريف متغير بس بكتب قبله كلمة const
2. define PI 3.14 #
والتعريف بالشكل التانى بيتكتب تحت السطور بتاعت الــ include بره الــ main

رابعا الــ هنتلكم على الــ String :
-----------------------------
الــ String هو عبارة عن أى مجموعة حرف مع بعضها سواء كانت كلمة واحد أو جملة فيها أكتر من كلمة .... ودايما بيكون موجود بين علامات التنصيص Double Quotation " ...أى كلام..."
إن شاء الله هيكون ليه بوست تانى مخصوص و إزاى اعرفه كمتغير واتعامل معاه وكدا ... المهم الى انا عايز اتكلم عليه هنا هو استخدام الــ String فى سطر الــ cout الى هو الكلام الى بيكون بين " " فى الــ cout وبينطبع زى ما هو ... طيب مثلا لو عايزين نشكل الكلام دا بأسلوب معين يعنى نخلى جزء معين على سطر والجزء التانى على سطر تانى أو مثلا نكتب رمز معين فى وسط الكلام وهكذا ..... الكلام دا ممكن نعمل بحاجة اسمها الــ Escape Sequence : ودى عبارة عن حروف معينة بنكتبها وسط الــ String وبيكون ليها تأثير عليه ودايما بتكون عبارة عن \ وبعدين الحرف نفسه زى مثلا
n\ : ودى بتنزل سطر جديد
t\ : بينطبع مكانها 8 مسافات
b\ : بنمسح خاقبلها
x\ : بنكتب بعدها رقم بالــ Hexadecimal
u\ : بنكتب بعدها رمز بالــ Unicode
\\ : بتطبع الــ \
'\ : بتطبع الــ '
"\ : بتطبع الــ "
?\ : بتطبع الــ ؟

مثال : ;"cout<<"I\'m Ahmed\nI eat g\u00E2teau
الخرج هيكون بالشكل دا
I'm Ahmed

I eat gâteau



  متنسوش تعملوا لايك وشير للبوست واعمل منشن لاصحابك
Youtube Channel : youtube.com/user/modoidnet

إرسال تعليق

0 تعليقات