#1
|
|||||||||||||||||||||
|
|||||||||||||||||||||
الدرس الثاني : المتغيرات - دورة CSharp 2005
الدرس الثاني المتغيرات في الدرس الأول تعلمنا أن كل شيئ في الحاسوب يعتبر كائن وفي الحقيقة هناك نوعين من الكائنات : كائنات حقيقية: وهي التي لها صفات وأفعال ويمكن أن يكون لها تمثيل مرئي متغيرات : وهي متغيرات لا تحتوي على صفات أو أفعال وإنما تحتوي على قيمة محددة ولا تكون مرئية أي انه من الممكن أن يحتوي الكائن "المتغير" X على قيمة مخزنة في ذاكرة الحاسوب ومن الممكن أن تكون قيمة المتغير أما رقم أو نص أو حرف أو رقم عشري أو.... وإذا أردنا أن ننشئ متغير في ذاكرة الحاسوب فيجب أن نحدد نوع القيمة التي سيحملها المتغير مع العلم أننا نختار إسم الكائن كما نشاء مادام الإسم يحقق الشروط التالية: 1-أن يكون اسم المتغير حروف أو ارقام لاتينية 2-أن لا يكون أول حروف الإسم رقم , فهذا الإسم غير مسموح 5int بينما هذا مسموح int5 3-أن لا يحتوي الإسم على علامات أواشارات مثل # أو $ أو * أو + , الإشارة المسموحة فقط هي _ وهذه الشروط تنطبق على أسماء الكائنات أو المتغيرات التي سنقوم بإنشائها إذاً المتغير هو كائن يستخدم لتخزين قيمة من نوع محدد مثلاً إذا أردنا أن نعرف متغير اسمه x من نوع رقم سيكون الكود كالتالي: كود PHP:
الكود السابق معناه أنا عرفنا متغير اسمه x سيحمل قيمة من نوع عدد صحيح لاحظ أنك تستطيع تغيير اسم المتغير كما تشاء المهم أن تراعي شروط التسمية الثلاثة وإذا أردنا تحميل هذا المتغير قيمة محدد يكون الكود كالتالي: كود PHP:
لاحظ الكود التالي: كود PHP:
وفي السطر الأخير حملنا المتغير الثاني قيمة المتغير الأول أي أن المتغير الثاني يحمل أيضاً القيمة 10 ملاحظة مهمه:في لغات البرمجه معامل التساوي ليس تبادلي يعني أن Var2=Var1 لا تساوي أبداً Var1=Var2 لإن معامل = في لغات البرمجة يقوم بنقل قيمة المتغير في اليمين إلى المتغير في اليسار فلو عكسنا المعاملات في السطر الأخير من الكود السابق هكذا : كود PHP:
ولكن المتغير Var2 لا يحتوي على أي قيمة لذلك سيظهر لنا الخطأ بعض أنواع المتغيرات وكيفية تعريفها: رقم صحيح int نص أو كلمة string رقم حقيقي "رقم يقبل الكسور العشرية مثل 41.51" double حرف char تاريخ أو وقت DateTime قيمة بوليانية bool معنى القيمة البوليانية أي أن المتغير يحمل قيمة صح أو خطأ , للتوضيح: كود PHP:
بينما المتغير من نوع نص أو حرف يحتاج إلى علامتي إقتباس المتغير من نوع bool يحمل أما قيمة true أو false ماذا لو جربنا الكود التالي: كود PHP:
بينما المفروض أن يحمل قيمة من نوع رقم كما عرفناه وأيضاً هذا الكود خاطئ لنفس السبب كود PHP:
ماذا لو كان لدينا هذا الكود: كود PHP:
لأن المترجم لا يعرف أن w يحمل رقم , فهو يعتبر كل ما هو بين علامتي اقتباس على أنه نص وبالتالي فالمترجم لن يقبل أن يحمل k قيمة نصية لأن من المفروض أن يحمل رقم للتغلب على هذه المشكلة يوجد في بيئة التطوير كائن للتحويل ما بين الأنواع وهذا الكائن يقوم بتحويل القمية إلى أي نوع فإذا اردنا تنفيذ الكود السابق بإستخدام كائن التحويل: كود PHP:
لاحظ أننا للوصول إلى أفعال أو صفات الكائن نكتب اسم الكائن ثم نقطة ثم فعل أو صفة الكائن فالكائن Convert يحتوي على فعل ToInt32 لذلك كتبنا اسم الكائن ثم نقطه ثم فعل الكائن ووضعنا بين القوسين المدخلات , ومن أفعال الكائن Convert: ToInt32 للتحويل إلى رقم صحيح كما رأينا في المثال السابق ToString للتحويل إلى نص ToDouble للتحويل إلى عدد عشري ToChar للتحويل إلى حرف ToBoolean للتحويل إلى قيمة بوليانية ملاحظة: الرقم الأخير من المتغير ToInt32 يعني حجمة في الذاكرة, مثلاً int16 حجمه 16 بت و int32 حجمة 32 بت ويوجد أيضاً 64, وكل نوع له مدى محدد لا يستطيع يتجاوزه, مثلاً int16 يستطيع خزن أي رقم من – 32,768 إلى 32,767 و int32 يستطيع خزن أي رقم من – 2,147,483,648 إلى 2,147,483,647 و int64 له مدى أكبر بكثير, لذلك إخترنا int32 كحل وسط , لأنه يخزن أرقام كبيرة , ولا يستهلك مكان كبير في الذاكرة التطبيق: أفتح مشروع التطبيق الذي طبقنا عليه في الدرس الماضي غير النص الكتوب في الزر من "ترحيب" إلى "اظهار قيمة x" من خلال تعديل الصفة Text من جدول الصفات انقر نقراً مزدوجا على الزر لتنتقل إلى شفرة الزر .. ثم قم بحذف سطر الأوامر التالي: كود PHP:
كود PHP:
في السطر الثاني حملنا المتغير x قيمة 50 في السطر الثالث كتبنا أمر اظهار الرسالة , لاحظ أننا وضعنا x بدل نص الرسالة حيث أن المترجم سيقوم بإظهار رسالة ويكتب داخلها القيمة المحملة على x قبل تجربة البرنامج , هل تعتقد أن هناك خطأ في الشفرة السابقة؟ نعم هناك خطأ فلو جربت تشغيل البرنامج ثم الضغط على الزر ستظهر لك رسالة خطأ وسبب الخطأ أن كائن MessageBox.Show يحتاج إلى مدخلات من نوع نص ليظهرها في الرسالة وقد مررنا x على أنه المدخلات ولكنه من نوع رقم صحيح ربما يتسائل البعض ما أدراني أن الكائن MessageBox.Show يحتاج إلى مدخلات من نوع نص وليس من نوع رقم الأمر بسيط جداً , إذا كنت تريد ان تعرف نوع المدخلات التي يحتاجها الكائن سيظهر لك ذلك في رسالة صغيرة بمجرد أن تفتح القوس الأول كما في الصورة: [IMG][/IMG] عندما انتهيت من كتابة القوس الأول ظهر صندوق المعلومات وأظهر اسماء وانواع المدخلات التي يحتاجها الكائن السهم يشير إلى الكلمة التاليه:
الجزء الأول من الكلمة السابقة يعني نوع المدخل وهو string أي نص والجزء الثاني هو أسم المدخل text وهذا سنشرحه فيما بعد , ولكن ما يهمنا هو الجزء الأول لنعرف نوع المدخل الذي يحتاجه الكائن ملاحظة:بعض الكائنات ومنها كائن MessageBox.Show يمكن أن تقبل مدخلات متعدده فيمكن أن تقبل مدخل واحد وهو نص الرسالة كما رأينا في الدرس السابق و يمكن أن تقبل أكثر من مدخل الكائن MessageBox.Show يقبل 21 نوع من المدخلات ومن الممكن أن تتجول بين أنواع المدخلات الممكنه للكائن بالضغك على زر الأسهم فوق وتحت في لوحة المفاتيح عند ظهور صندوق معلومات المدخلات كما في الصورة: ولكن ما يهمنا حالياً من أنواع المدخلات هو النوع رقم 15 الذي يحتاج فقط لنص الرسالة نعود إلى الكود السابق الذي أظهر لنا خطأ نتيجة تضارب انواع البيانات لحل مشكلة التضارب نستخدم كائن التحويل لتحويل قيمة x إلى نص ثم تمريرها إلى الكائن MessageBox.Show لأنه كما قلنا لا يقبل إلا مدخلات من نوع نص و x من نوع رقم الكائن الذي يحول من رقم إلى نص هو Convert.ToString وبالتالي سيصبح الكود الصحيح هكذا: كود PHP:
وهكذا تغلبنا على مشكلة تضارب البيانات .. لتوسيع التطبيق سنستخدم كائن آخر من كائنات البيئة وهو مربع النص اضغط على زر Design أسفل الشفرة لترجع إلى نافذة التصميم الآن قم بسحب كائن مربع النص وأفلته فوق النافذة كما سحبت الزر في الدرس الأول ليصبح شكل النافذة هكذا: تأكد من إختيار مربع النص واذهب إلى جدول الصفات إبحث عن الصفة (Name) ستجد مكتوباً أمامها textBox1 غيرها إلى t1 لاحظ أنا غيرنا إسم الكائن من textBox1 إلى t1 وذلك لسهولة التعامل معه في الشفره كما سنرى لاحقاً الآن اضغط مزدوجاً على الزر لترجع إلى الشفرة أمسح السطر الثاني من الكود السابق وأكتب بدل منه هذا الكود كود PHP:
معنى الكود السابق أن المترجم سيقوم بأخذ ما هو مكتوب في مربع النص المسمى t1 ويحمله للمتغير x أي أن الكود كاملأ سيصبح هكذا: كود PHP:
ستظهر لك نافذة بجميع اعمال وصفات الكائن ففي المثال السابق بمجر د كتابة تكتب t1 ثم نقطة سيظهر لك هذا الصندوق : وبمجرد أن تكتب حرف t من كلمة Text سينقل الإختيار في الصندوق إلى كلمة Text: وللإختصار اضغط على زر Tab لكي تكتب كلمة Text آلياً لاحظ في الصورة السابقة أن نوع صفة Text هو string أي نص وبالتالي لو حاولت تنفيذ البرنامج وضغط الزر سيظهر خطأ لأننا حاولنا أن نحمل المتغير x قيمة نصيه بينما يجب أن نحملة رقم , يأتي دور كائن التحويل مرة أخرى ولكن هذه المرة من نص إلى رقم فيصبح الكود الكامل والصحيح هكذا: كود PHP:
وفي السطر الثاني حملنا هذا المتغير القيمة المكتوبة في مربع النص وحولناها إلى رقم وفي السطر الثالث لم نغير شيء الآن نفذ البرنامج , وقبل أن تضغط الزر أكتب أي رقم في مربع النص ثم اضغط الزر ستظهر لك رسالة بالرقم الذي كتبته تأكد انك ستكتب رقم وليس حرف وإلا ظهرت لك رسالة خطأ .. لتوسيع التطبيق أضف متغيرين آخرين y,z وأضف مربع نص آخر وسمه t2 غير النص المكتوب على الزر وأكتب بدلاً منه "اظهار ناتج الجمع" ليكون شكل النافذة هكذا: الآن اذهب إلى الشفرة وعدلها إلى التالي: كود PHP:
في السطر الرابع حملنا x الرقم المكتوب في t1 وفي السطر الخامس حملنا y الرقم المكتوب في t2 وفي السطر السادس حملنا z مجموع x وy وفي السطر السابع أظهرنا قيمة z في الرسالة , لاحظ أنا وضعنا z بدل x في السطر الأخير الآن قم بتنفيذ البرنامج , وأكتب عدداً صحيحاً في كل مربع نص وأضغط الزر ستظهر لك نافذة مجموع العددين : اغلق الرسالة وجرب أن تضع في أحد مربعات النص رقماً حقيقياً مثل 41.25 واضغط على الزر ستظهر لك رسالة خطأ لأن المتغيرات xوyوz تحمل متغيرات من نوع رقم صحيح وأنت حاولت أن تحملها رقم حقيقي اضغط على زر Continue في رسالة الخطأ ليتم إيقاف تنفيذ البرنامج: إذهب إلى الشفرة وحاول أن تجد الحل للقيام بجمع أعداد حقيقية, وذلك هو الواجب تلميح:نعرف أن double تعني رقم حقيقي والكائن Convert.ToDouble يحول إلى رقم حقيقي ما عليك إلا أن تضع double بدل من int وتضعConvert.ToDouble بدل من Convert.ToInt32 لحظة , لم ينتهي الواجب بعد أضف إلى البرنامج ثلاثة أزرار إضافية للقيام بباقي العمليات الرياضية 1-اظهار ناتج الطرح 2-اظهار ناتج الضرب 3-اظهار ناتج القسمة ليصبح شكل النافذه هكذا: .نهاية الدرس الثاني. .. 7oma حماة النهضة
|
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس الثاني والستون : ADO.net - الجزء الثاني - دورة .net 2008 | khaledbelal | دورة .NET 2008 من منتدى فيجوال بيسك للعرب | 3 | 05-03-2011 11:37 PM |
الدرس 3: المتغيرات والثوابت (دورة الـ c#) | khaledbelal | دورة CSharp 2008 من منتدى فيجوال بيسك للعرب | 1 | 10-29-2010 06:44 AM |
نبذه مختصرة عن الهدف من الدورة - دورة CSharp 2005 | microtop | دورة CSharp 2005 من منتديات المشاغب | 2 | 03-10-2010 09:32 PM |
الدرس الاول : مفهوم لغات البرمجة - دورة CSharp 2005 | microtop | دورة CSharp 2005 من منتديات المشاغب | 0 | 03-09-2010 05:45 PM |
الدرس الخامس : المتغيرات - دورة سي شارب 2008 | khaledbelal | دورة CSharp 2008 من منتديات حور العين الاسلامية | 0 | 02-22-2010 09:06 PM |