المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس السابع انواع التحويل بين البيانات



س ا يوسف
18-03-2009, 01:48 PM
التحويل بين الانواع المختلفة للبيانات
لو عندنا قيمة حرفية "123" تخزن في String وتحتاج 3 خلايا ولا نستطيع اجراء العمليات الحسابية عليه
اما القيمة العدد 123 فيمكن ان تخزن في Byte وتحتاج الي خليه واحدة ونستطيع اجراء العملية الحسابية عليها
تعلمنا ان المدخل يتم عن طريق Text box وهو حرفي ولاجراء عمليه عليه لابد من تحويله الى عددي
اي القيمة الحرفية "123" لابد من تحويلها الى عددي 123
ازاي
اولا تحويل البيانات الحرفية الي بيانات عددية
لتحويل البيانات الحرفية الى عددية نستخدم Parse Method
الشكل العام لــ Parse Method
لتحويل قيمة حرفية الي عدد صحيح Integer نستخدم (القيمة الحرفية ) Integer.Parse
لتحويل قيمة حرفية الى عدد عشرى Decimal نستخدم (القيمة الحرفية ) Decimal.Parse
لاحظ ان القيمة الحرفية قد تكون خاصية اداة متغير حرفي او ثابت اما نتيجة قيمة التحويل فهي قيمة عددية
اذا صادفت Parse Method اي حرف-علامة لا يمكن تحويلها لرقم فان التحويل يتتوقف ويظهر رسالة خطأ
ثانيا تحويل البيانات العددية الي بيانات حرفية
لاظهار النتائج يتم اظهارها في الاداة Label او TextBox وعليه لابد ان تكون حرفية اي تتحول من عددي الى حرفي باستعمال() ToString وما بين القوسين يسمي معامل الدالة argument وفي حالة عدم وجود شئ داخل الاقواس يكون البيان غير مصاغ unformatted
الصيغة العامة هي() txtResult.Text=xInteger.ToString
ثالثا التحويل بين انواع البيانات العددية : -
***التحويل المباشر ( التلقائى )
- يستخدم عند تحويل من نوع عددى ذا سعة تخزينية صغيرة الى نوع عددى ذا سعة تخزينية اكبر
- نعنى بالسعة التخزينية هنا عدد خلايا لذاكرة
يعني byte يتحول الي short , integer , long , single , double , decimal
Short يتحول الى integer , long , single , double , decimal
ولا يتحول الي byte بالطريقة المباشرة
Integer يتحول الي long , single , double , decimal
Long يتحول الي single , double , decimal
Single يتحول الي double , decimal
Double يتحول الي decimal
التحويل الغير مباشر
- يتم استخدامه عندما نحول نوع ذوسعة تخزينية كبيرة الى نوع اقل فى السعة التخزينية
- اى يستخدم بين البيانات العددية التى لايمكنك اجراء التحويل المباشر عليها مثل تحويل النوع Double الى اى نوع اخر من انواع البيانات
- و لتسهيل عملية التحويل الغير مباشر يتيح البرنامج للمبرمجين Class يسمى Convert Class يحتوى على وسائل Methods تبدأ اسماؤها بـ To للتحويل بين الانواع المختفلة

Short نستخدم ToInt16
Integer نستخدم ToInt32
Long نستخدم ToInt64
Decimal نستخدم ToDecimal
Single نستخدم ToSingle
Double نستخدم DoubleTo

sabagh
18-03-2009, 05:13 PM
الاخ العزيز طبعا في البداية شكرا للمجهود الذي تبذلة وانا تابعت كل المواضيع ولكن هنا ذكرت الاتي :

Long يتحول الي single , double , decimal
Single يتحول الي double , decimal
Double يتحول الي decimal

طبعا الكلام دا فيه خطا وهو ان النوع double لا يمكن تحويله الى decimal كما هو مكتوب
وايضا النوع single لا يمكن تحويلة الى decimal

التحويل المباشر لا يصلح فى حالتين :
1.تحويل البيانات من النوع Double الى اى نوع اخر
2.تحويل البيانات التى تحتوى على كسور ( Single , Double ) الى النوع Decimal
وفى هذه الحالات نستخدم التحويل غيرالمباشر

س ا يوسف
18-03-2009, 05:53 PM
الاخ العزيز طبعا في البداية شكرا للمجهود الذي تبذلة وانا تابعت كل المواضيع ولكن هنا ذكرت الاتي :

Long يتحول الي single , double , decimal
Single يتحول الي double , decimal
Double يتحول الي decimal

طبعا الكلام دا فيه خطا وهو ان النوع double لا يمكن تحويله الى decimal كما هو مكتوب
وايضا النوع single لا يمكن تحويلة الى decimal

التحويل المباشر لا يصلح فى حالتين :
1.تحويل البيانات من النوع Double الى اى نوع اخر
2.تحويل البيانات التى تحتوى على كسور ( Single , Double ) الى النوع Decimal
وفى هذه الحالات نستخدم التحويل غيرالمباشر

شكرا اخي الكريم على مرورك
النوع double سعته 8 وعدد الخانات 15
النوع decimal سعته 16 وعدد الخانات 29
والتحويل المباشر ينفع من ذو السعة التخزينية الاصغر الي الاكبر

النوع single سعته 4 وخاناته 7 وبالتالي اصغر من decimal فيمكن تحويله
اي انه لا يظهر اخطاء ولكن ممكن فقد بعد الخانات من الرقم المحول فقط
وعليه التحويل نستخدمه عندما نتأكد ان الرقم المحول (الخانات) سيتم استعابه كاملا في المحول اليه
اما long لا يحول الي Single ويمكن تحويله الي double مع فقد الخانات التي تزيد عن خانات Double
decimal لا يحول الي اي نوع اخر
دا حسب التعريف للتحويل المباشر من الاصغر الى الاكبر
وفعلا البرنامج لا يعترض ولكن يتم فقد بعد الخانات لا تظهر رسالة خطأ
دا رأي ويحتمل الخطأ
وسوف ابحث عنها واكتب ما يسفر عنه البحث

sabagh
18-03-2009, 09:39 PM
الاخ العزيز راجع كتاب المدرسة تجد الملاحظة اللي انا كتبتها موجوده وهي ان النوع double لا يمكن تحويله تحويل مباشر الى اي نوع اخر برغم ان سعته التخزينية اقل من النوع decimal وطبعا انا قتلت الموضوع بحث ووصلت الى نتيجة لذلك ولكن تلك النتيجة تنسف التعريف الموجود بكتاب المدرسة . وعلي العموم لو وصلت الى نتيجة انا في الانتظار .

س ا يوسف
19-03-2009, 01:18 AM
الاخ العزيز راجع كتاب المدرسة تجد الملاحظة اللي انا كتبتها موجوده وهي ان النوع double لا يمكن تحويله تحويل مباشر الى اي نوع اخر برغم ان سعته التخزينية اقل من النوع decimal وطبعا انا قتلت الموضوع بحث ووصلت الى نتيجة لذلك ولكن تلك النتيجة تنسف التعريف الموجود بكتاب المدرسة . وعلي العموم لو وصلت الى نتيجة انا في الانتظار .

استاذي الفاضل
ما ورد بالكتاب ص 34 ط2008 2009 في الملاحظات
تحويل البيانات التي تحتوي على كسور single او double الي النوع decimal
وهناك فرق بين بيان من النوع single وبيان يحتوي على كسور من النوع single

ص 35
ذكر تحويل غير مباشر من single الي decimal وايضا من decimal الي single
ص6 جدول 1-3
ذكر قيمة 123456.10987654321 تخزن بالكامل في Decimal ولا تخزن بالكامل في single وdouble
لو اعتبرنا ما ورد بالكتاب جدول 1-13 ص 34 صحيح فما سبق يعتبر خطأ
طب لو الطالب سأل وقال من الصفير الى الكبير مباشر طب singleو double اصغر في المساحة من decimal يبقى ازاي لا يتحول
الكلام يناقض نفسه

طب ايه المشاكل الناتجة عن التحويلات الخاطئة
ليس اعتراض المفسر او المترجم ولكن القيمة تفقد اجزاء منا في عملية التقريب
decimal لا يقرب الرقم
single وdouble يقرب الارقام
The Single is safely converted to wider types of Double floats and the
Decimal value type.
Double values can be safely
converted to values of the Decimal value type.

س ا يوسف
19-03-2009, 02:19 AM
الاخ العزيز راجع كتاب المدرسة تجد الملاحظة اللي انا كتبتها موجوده وهي ان النوع double لا يمكن تحويله تحويل مباشر الى اي نوع اخر برغم ان سعته التخزينية اقل من النوع decimal وطبعا انا قتلت الموضوع بحث ووصلت الى نتيجة لذلك ولكن تلك النتيجة تنسف التعريف الموجود بكتاب المدرسة . وعلي العموم لو وصلت الى نتيجة انا في الانتظار .

ممكن لو تكرمت كتابة نتائج البحث
علشان الكتاب به كثير من الاخطاء
وعلى سبيل المثال دائما ما يخلط مابين الرقمي والعددي

س ا يوسف
19-03-2009, 03:23 AM
الاخ العزيز راجع كتاب المدرسة تجد الملاحظة اللي انا كتبتها موجوده وهي ان النوع double لا يمكن تحويله تحويل مباشر الى اي نوع اخر برغم ان سعته التخزينية اقل من النوع decimal وطبعا انا قتلت الموضوع بحث ووصلت الى نتيجة لذلك ولكن تلك النتيجة تنسف التعريف الموجود بكتاب المدرسة . وعلي العموم لو وصلت الى نتيجة انا في الانتظار .

You can see links before reply

دا رابط
برجاء التواصل عما فيه خاصة ص 128 الي 135
اكد على التعريف
وانواع التحويلات وجداولها
وبارك الله فيك اخي الفاضل
وياريت جميع مدرسي الحاسب يكون بينهم نقاش وتبادل الخبرات والاطلاعات لاستفادة اكبر عدد ممكن
وشكرا لسعة صدرك

sabagh
19-03-2009, 11:41 PM
شكرا لك اخي سيف وسوف اطلع اولا علي الكتاب ثم ارد عليك

س ا يوسف
19-03-2009, 11:43 PM
شكرا لك اخي سيف وسوف اطلع اولا علي الكتاب ثم ارد عليك

شكرا اخي الفاضل
ونرجو منكم المشاركة بموضوعتكم وانا على ثقة انها ستفيد الجميع