اغلق هذه النافذة  أنت غير مسجل بشبكة ابن الخليج; للتسجيل اضغط هنا; للمساعده وشرح طريقة التسجيل اضغط هنا

شبكة ابن الخليج

Sitemap | Archive | Tag Could
التسجيلالبحثمشاركات اليوماجعل جميع المنتديات مقروءةالأرشيف

منتديات نظرة حب - ينتهي الاعلان بتاريخ 8\12\2008جديد برامج وأخبار الالعابمنتديات جنرال العين - ينتهي الاعلان بتاريخ 23\11\2008

التحويل العلني- Explicit Conversion

مناقشة موضوع التحويل العلني- Explicit Conversion في دروس لغات البرمجة; التحويل العلني- Explicit Conversion في الدرس السابق تعرفنا على أول طريقة من طرق تحويل الأنواع، وهي طريقة التحويل الضمني، وذكرنا بأنه يستخدم لتحويل المتغير إلى نوع يحتاج لمساحة تخزينية أكبر مما هو عليه! ...

العودة شبكة ابن الخليج> منتديات تعليمية> دروس لغات البرمجة


رد
 
LinkBackأدوات الموضوعطرق مشاهدة الموضوع
قديم 05-28-2006, 01:58 مساءً   #1 (permalink)
اسرة ابن الخليج
 
الصورة الرمزية الهوى ماهو كلام
 
تاريخ التسجيل: Jul 2005
الدولة: *K S A*
المشاركات: 4,867
معدل تقييم المستوى: 657الهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيطالهوى ماهو كلام نشيط
إرسال رسالة عبر مراسل ICQ إلى الهوى ماهو كلامإرسال رسالة عبر مراسل MSN إلى الهوى ماهو كلامإرسال رسالة عبر مراسل Skype إلى الهوى ماهو كلام
التحويل العلني- Explicit Conversion


التحويل العلني- Explicit Conversion
في الدرس السابق تعرفنا على أول طريقة من طرق تحويل الأنواع، وهي طريقة التحويل الضمني، وذكرنا بأنه يستخدم لتحويل المتغير إلى نوع يحتاج لمساحة تخزينية أكبر مما هو عليه!
أما في النوع الثاني الذي سنتعرف عليه في هذا الدرس، فيستخدم للتحويل إلى نوع يحتاج لمساحة تخزينية أقل مما هو عليه! ولكن بشرط أن يكون حجم المتغير مناسب للمساحة الجديدة. ومثال الكتاب في الدرس السابق يوضح فكرة هذه الطريقة جيداً.
من الجدولين 1 و 2 في درس أنواع البيانات، نجد أن المساحة التخزينية المتاحة لمتغير من النوع int هي 2 بايت، ويشمل هذا جميع الأعداد الصحيحة 2147483648- وحتى 2147483647 ولمتغير من النوع long هي 4 بايت ويشمل هذا جميع الأعداد الصحيحة من 9223372036854775808 - وحتى 9223372036854775807.
وهذا يؤكد إمكانية تحويل أي متغير long إلى int ولكن بشرط أن تكون قيمة المتغير long ضمن نطاق المتغير int. ولكن التحويل هنا علني أي يحتاج لكتابة كود إضافي كما في المثال التالي:
int a;long b;
b=20;
a=(int) b;
Console.WriteLine("a = {0}", a);
Console.WriteLine("b = {0}", b);
هذا المثال عكس المثال السابق، فقد حولنا من long إلى int، وذلك بنقل القيمة الموجودة في المتغير b من النوع long إلى المتغير a من النوع int، وهذا ممكن حيث أن القيمة 20 موجودة ضمن نطاق النوعين long و int، ويتم ذلك بكتابة نوع المتغير الذي نريد التحويل إليه بين قوسين كما هو موضح أعلاه.
هذا في حال أن القيمة موجودة ضمن نطاقي المتغيرين، ولكن ماذا لو كانت القيمة أكبر من نطاق المتغير الذي نود التحويل إليه؟
كأن نحول من النوع short (مساحته التخزينية 2 بايت ويشمل هذا أي عدد صحيح ضمن النطاق من 32768- إلى 32767) إلى النوع byte (مساحته التخزينية 1 بايت ويشمل هذا أي عدد صحيح ضمن النطاق من 0 إلى 255) وذلك بنقل القيمة 257 من متغير نوعه short إلى متغير نوعه byte ؟
طبّق معنا هذا المثال لنرى النتيجة:
byte val1;short val2;
val2=257;
val1= (byte) val2;
Console.WriteLine("val1 = {0}", val1);
Console.WriteLine("varl = {0}", val2);
لاحظ أن النتيجة ستظهر كالتالي:
 دروس بيسك   دروس اسمبلي   دروس C  التحويل العلني- Explicit Conversion  دروس سي شارب   دروس السي   دروس اسمبلي   دروس فيجوال سي ++   دروس #C
نلاحظ أن القيمة قد تغيرت بعد نقلها إلى المتغير val1، أي بعد تحويلها من النوع short إلى النوع byte، ومن البديهي أن يحصل مثل هذا الأمر، والذي يعتبر من خطأ المبرمج وليس خطأ الكومبيوتر!
فكما عرفنا أن الكومبيوتر يحتفظ بالبيانات في صورتها الرقمية، أي في صورة سلسة من 0 أو 1 والتي يتم تخزين كل منها في خانة عشرية bit.
والنوع byte يحجز مساحة قدرها 1 بايت أي 8 خانات عشرية (1 بايت = 8 خانات عشرية) لتخزين قيمة المتغير من النوع byte فيها، بينما النوع short فيحجز مساحة قدرها 2 بايت أي 16 خانة عشرية لتخزين قيمة المتغير من النوع short فيها.
 دروس C++   دروس سي شارب   دروس فيجوال سي ++  التحويل العلني- Explicit Conversion   دروس تعليمية   دروس C   دروس بيسك
المساحة التخزينية المحجوزة للمتغير val1
من النوع byte
 دروس BASIC   دروس بيسك   دروس ASSEMBLY  التحويل العلني- Explicit Conversion دروس تعليمية   دروس علمية   دروس Visual Basic   دروس Visual C++   دروس Visual C++
المساحة التخزينية المحجوزة للمتغير val2
من النوع short
في المثال السابق، قمنا بتخزين القيمة 257 في المتغير val2 وهو من النوع short وتم تخزينه كما يلي في ذاكرة الكومبيوتر:
 دروس اسمبلي   دروس لاب فيو   دروس بيسك  التحويل العلني- Explicit Conversion  دروس Visual Basic  دروس تعليمية   دروس جافا   programming language tutorial   دروس BASIC
وعند نقل هذه القيمة إلى المتغير val1 وهو من النوع byte يتم تخزين البيانات بدءً من اليمين إلى اليسار وحتى 8 خانات فقط وهي المساحة التخزينية المتاحة لهذا النوع! كالتالي:
 دروس برمجه   دروس سي ++    دروس لاب فيو  التحويل العلني- Explicit Conversion  دروس جافا   دروس دلفي   دروس السي   دروس C   دروس ASSEMBLY
وهذه القيمة الثنائية مساوية للواحد، ولهذا فالنتيجة ظهرت مساوية للواحد بعد نقل القيمة للمتغير val1 في المثال السابق.
هذا الأمر قد يسبب مشاكل في البرنامج، إذا لم ينتبه المبرمج لذلك أثناء البرمجة!
وأفضل طريقة لتجنب حدوث مثل هذا الأمر من دون انتباه المبرمج، هي إضافة الأمر التالي لتنبيه المستخدم برسالة خطأ إذا انتقلت القيمة بصورة غير كاملة إلى متغير ذو مساحة تخزينية أقل من احتياجه. وهناك طريقتين لذلك؛ كتابة كود إضافي، أو بتفعيل هذه الخاصية ضمن بيئة الدوت نت.
الطريقة الأولى:
checked(expression);
أو العبارة التالية لعدم التنبيه:
unchecked(expression);وهذا المثال السابق بعد استخدام أمر التحقق من أن المتغير الجديد مناسب للقيمة المنقولة إليه:
byte val1;short val2;
val2=257;
val1=checked((byte) val2);
Console.WriteLine("val1 = {0}", val1);
Console.WriteLine("varl = {0}", val2);
بعد تنفيذ هذا الكود ستظهر رسالة الخطأ التالية:
 دروس دلفي   دروس #C   دروس اسمبلي  التحويل العلني- Explicit Conversion  دروس دلفي   دروس #C  دروس تعليمية    دروس LabVIEW
والطريقة الأخرى كما ذكرنا ضمن بيئة VS.NET تجعل المترجم ينبه المبرمج عن هذا الخطأ دون الحاجة لكتابة الأمر السابق، وذلك بالنقر على اسم المشروع في نافذة Window Explorer بالزر الأيمن، وأختيار Properities، لتظهر نافذة جديدة، اختر Configuration Properties من القائمة الموجودة على يسار هذه النافذة، ثم أختر build. ثم من القائمة الموجودة على يمين هذه النافذة غير في خصائص الخاصية Check for Arithmetic Overflow/Underflow واجعلها True كما هو موضح في الشكل التالي:
 دروس BASIC   دروس ASSEMBLY   دروس LabVIEW  التحويل العلني- Explicit Conversion  دروس #C    دروس Pascal   دروس C++   دروس اسمبلي





من مواضيع الهوى ماهو كلام في المنتدى

الهوى ماهو كلام غير متواجد حالياً   رد مع اقتباس
قديم 10-22-2006, 03:52 مساءً   #2 (permalink)
اسرة ابن الخليج
 
الصورة الرمزية مبحرفى ذكرياتي
 
تاريخ التسجيل: Jun 2006
الدولة: ذكرياتي
المشاركات: 1,946
معدل تقييم المستوى: 1565مبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيطمبحرفى ذكرياتي نشيط
مشاركة: التحويل العلني- Explicit Conversion

مشكور أخوي ويعطيك العافية وجزاك الله خيرا ...





من مواضيع مبحرفى ذكرياتي في المنتدى
__________________
مبحرفى ذكرياتي
مبحرفى ذكرياتي غير متواجد حالياً   رد مع اقتباس
رد

العبارات الدلالية
التحويل



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
طرق مشاهدة الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG]متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

المواضيع المتشابهه
الموضوعكاتب الموضوعالمنتدىمشاركاتآخر مشاركة
[درس] تحويل منتدى phpBB الى منتدى VBn.a.r.u.t.oهاكات وشروحات vBulletin 3.[6-5].X3808-19-2008 02:55 صباحاً
طلب هاك التحويل للوصلات الخارجيهM.A.F.مشاكل وحلول الـ مواقع506-12-2008 07:54 مساءً
عملية تجميل الجفن العلويالأسرة والصحةجمال و أناقة و مستحضرات تجميل008-06-2007 07:02 صباحاً
استسفار بخصوص تحويل قاعدة البياناتmiroworldمشاكل وحلول الـ مواقع605-07-2007 02:41 مساءً
تحويل الأنواع - التحويل الضمنيالهوى ماهو كلامدروس لغات البرمجة110-22-2006 03:52 مساءً


منتديات شبكة ابن الخليج

ثقافة روسية الشيخ محمود علي البنا شعر عن الوطن كتب سياسية معجم المحكم لابن سيده فوائد الرياضة ابطال اوروبا الدوري الأسبانيالدوري الإيطاليالدوري البرتغاليaudi صور غريبة العاب و مسابقات ثقافية قمصان نوم روعه الكبد والمرارة شهيتك مكياج شانيل قوالب شوكولاته أفكار ديكور قمصان نوم برامج مونتاج برامج ايقونات ادوات الوصول الى الملفات اخبار تقنية تبادل خبرات في البرامج وطريقة التعامل معها ممثلين اجانب تحميل افلام افلام خيال علمى مسلسلات خليجية احلى انمي العاب اكشن الغاب بي سي game بلاي ستيشن تو البنية التحتية ترافيان تدرجات صور ورود كاميرات رقمية وتقنية صور Nokia 7610 نغمات قمصان نوم دروس عامه للمبتدئين دروس ادوب بريمير دروس رسم بالفوتوشوب دروس ايميج ريدي Adobe ImageReadyدروس افتر افكت Adobe After Effect تحميل ادوبي بريمر تحميل adobe illustrator cs3 3D Studio دروس ابعاد ثلاثية دروس swish متقدمة دروس SQL دروس Excel دروس Network أنظمة التشغيل وندوز WINDOWS دروس C++ قمصان نوم vb3.6.6 vb368 قسم ستايلات vBulletinمجلة المنتديات mkPortalقسم ستايلات مجلة المنتديات mkPortal Stylesسكربتات وادوات تطوير المواقعمشاكل وحلول الـ مواقع اشهار مواقع فوتوشوبCinema 4Dخامات فوتوشوبفرش فوتوشوباكشن فوتوشوباشكال فوتوشوبمنتديات اماراتيةدليل مواقعاكتشف شخصيتكاخبارموسوعة الأطفالبوربوينتtorrentاختصار الروابطPageRankتوقيع لاميلكصانع القليترGlitter


الساعة تعتمد على توقيت جرينتش +3. الساعة الآن 05:29 صباحاً.
Search Engine Optimization by vBSEO 3.1.0

Valid XHTML 1.0 Transitional Valid CSS!Powered by vBulletin® Version 3.7.1,
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
Feeds:   XML   JS   RSS   RSS Feed