بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
كلنا نعرف قيمة البيانات وأهميتها ، وفي الأكواد التي نكتبها نحتاج إلى بيانات من المستخدم حيث يقوم الكود بإجراء عمليات حسابية عليها لإنتاج معلومات جديدة للمستخدم ، وكل عمل في البرمجة يتضمن العمل مع البيانات بشكل أو باخر
في هذا الدرس سنتكلم بتفصيل أكبر عن أنواع المتغيرات التي يمكن أن تخزن قيم مختلفة من البيانات.
The variable's type determines what kink of data it can store
(نوع المتغير تحدد نوع البيانات التي يمكن استخدامها)
هناك 15 نوع من انواع البيانات في السي شارب
(built-in value types)
وكل نوع يخزن أنواع مختلفة من البيانات.
في الدروس السابقة استخدمنا بعض الأنواع وعرفنا كيفية استخدامهم ، لكن هناك أخرى لم نستخدمها بعد
value types you'll use all the time
( المتغيرات الأكثر شيوعا)
*int
تخزن الأرقام الصحيحة بين(2.147.483-2.147.483-)
*string
تستطيع تخزين **** بأي طول ، متصمنا الفراغات " " .
*bool
لديها قيمتان منظقيتان "True-False"
float *
تخزن أرقام تحتوي على كسور
ملاحظة : float اختصار للكلمة الانجليزية
floating point
More types for whole numbers
(أنواع أخرى للأرقام الصحيحة )
سوف نروي قصة قصيرة قبل أن نبدأ بذكر الأنواع ...كان يامكان ، في قديم الزمان، وسالف العصر والأوان ، كانت ذاكرة الحاسوب غالية جدا ، وكانت المعالجات في غاية البطئ ، وصدقوا أو لاتصدقوا ...مجرد استخدام نوع خاطئ من البيانات ممكن يسبب بطئ شدييييد للجهاز ، لذلك كان من المهم جدا الحرص على استخدام النوع الصحيح .. وبعد زمن تغير الحال الحمد لله ، وأصبح بإمكاننا في أغلب الأحيان استخدام النوع int في كثر من الحالات ليلبي لنا احتياجنا ، لكن في حال أردت استخدام رقم أكبر أو رقم أصغر ، c# وفرت لناهذه الخيارات
*byte
تخزن ارقام موجبة بين 255-0
*Sbyte
تخزن ارقام بين 128-127-
*short
تخزن أرقام بين 32.767-32.767-
*Ushort
تخزن أرقام موجبة بين 65.535-0
ملاحظة :"U" اختصار للكلمة Unsigned (بدون إشارة)
*long
تخزن أرقام بين billion billion+_
Ulong*
تخرن أرقام بين billion billion 18 -0
Types for storing really HUGE numbers
أنواع لتخزين قيم كبيرة جدا
في الأنواع السابقة مر ت علينا أنواع تستوعب أرقام كبيرة جدا قد تصل الى 38 صفر على اليمين
لكن هذا الرقم قد يكون غير كافي في بعض التطبيقات العلمية مثلا ، لذا وفرت السي شارب الأنواع التالية:
double *
decimal*
a few more useful built-in value
أنواع أخرى مهمة
مررنا بالنوع byte وقلنا أنه يخزن 256 قيمة ، هناك نوع خر يخزن نفس الرقم لكن من نوع character
* char
اذا هذا النوع يخزن بيانات من نوع character كما ذكرنا ودائما نضع الكاركتر داخل تنصيص مفرد، مثال : ' a'
ويمكن تضمين escape sequence مثل : '\ n ' لعمل سطر جديد ، أو ' /t' لعمل tap , وهناك نوع اخر هام جدا من أنواع البيانات وهو ****** وسوف نتطرق له بشكل مفصل بالدرس التالي إن شاء الله تعالى .
Casting
casting هذا المصطلح يعني تحويل البيانات من نوع إلى اخر .
نستطيع تمثيل أنواع البيانات في السي شارب بهذه الصورة ، نمثلها
وبعد أن عرفنا أنواع البيانات بقي أن نعرف أن البيانات يجب أن تتوافق عند استخدامها ، لنفترض هذا المثال :
كود |
int big = 20000;
short small= big
|
القيمة 20,000 ممكن أن تخزن في النوع short ،
لكن نحن خزنا الرقم أولا في النوع int ،
الكومبايلر سوف يرى الحجم كنوع int ويعتبر أنك
تحاول وضع محتوى الكوب الكبير في الكوب الصغير ،
وبالتالي لن ينفذ الكود وسوف يعطينا خطأ :
إذا حتى لو كان الحجم صحيحا ، لايمكن أن نعطية لأي متغير ، لاحظوا هذا المثال أيضا:
كود |
decimal myDicimalValue = 10;
int myIntValue = myDicimalValue;
|
نعرف أن 10 يمكن أن تخزن في ال interger لكن هذا الكود لن ينفذ ، ونحصل على الخطأ التالي:
ويمكن أن نتخلص من الخطأ بعمل الإقتراح الموجود في الرسالة casting
كود PHP:
كود |
decimal myDicimalValue = 10;
int myIntValue =(int) myDicimalValue;
|
هذا الكود سينفذ بدون أخطاء ، هنا قام الكومبايلر بعمل إجراء توافق بين النوعين بطريقة معينة
نوضح الأمر بمثال :
في هذا الكود ، نريد أن ندخل قيمة ابتدائية لعدادا السيارة وقيمة نهائية، بحيث يقوم الكود بحساب عدد الأميال التي قطعتها السيارة في رحلة ، ويحسب المبلغ التعويضي المستحق من الشركة التي يعمل لديها الشخص( تقوم الشركة بدفع مبلغ 39.$ مقابل كل ميل في الرحلة)
نفتح مشروع جديد ، ونسحب الأدوات التالية:
two buttons
two NumbericUpDown
four lables
ونغير خاصية ال **** كما في الصورة :
ونغير خاصيل ال visible لل lable 4 الذي أمام amountOwed إلى false
نعرف المتغيرات التالية بعد الكلاس مباشرة وقبل عمل أي كود :
كود PHP:
كود |
int StartngMileage;
int endingMileage;
double mileTraveled;
double veimburseRate = .39;
double amountOwed;
|
نضغط على زر
caluculate مرتين لكتابة الكود التالي :
كود PHP:
كود |
StartngMileage = (int)numericUpDown1.Value;//casting
endingMileage = (int)numericUpDown2.Value;
if (StartngMileage <= endingMileage)
{
mileTraveled = endingMileage - StartngMileage;
amountOwed = mileTraveled * veimburseRate;
label4.**** = "$" + amountOwed;
label4.Visible = true;// make the lable
}
else
{
MessageBox.Show("The sarting mileage number", "can not calculate mileage");
|
وفي زر Display نكتب الكود التالي حتى يعرض لنا الكود عدد الأميال
كود |
MessageBox.Show(mileTraveled + "miles", "Mile Travled");
|
تنفيذ الكود
أدخلنا الرقم 60 كقيمة ابتدائية للعداد ،
و 90 كقيمة نهائية
عند الضغط على الزر calculate، ظهر لنا مبلغ 11.7 دولا قيمة التعويض
وعند الضغط على زر Display ظهر لنا المسافة التي قطعتها السياة وهي 30 ميل
الكود سهل ولايحتاج إلى شرح أكثر ، ووضحت كل النقاط المهمة في الكود نفسه
لكن أي سؤال ، لاتتردوا بطرحه ، وكلنا موجودون هنا لإجابة أسئلتكم
أتمنى أن أكون وفقت في الشرح ، دمتم في رعاية الله