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

مشاهدة النسخة كاملة : [وثائقيات وعلوم] تحويل الأنواع (علوم حاسوب)



_MasterPiece
30-3-2012, 06:07 AM
http://images.msoms-anime.net/images/06349795783127753336.jpg



السلام عليكم ورحمة الله وبركاته،


واو! ثالث مواضيعي في هذا المنتدى المفيد. فرحان :)

طبعًا، نعتذر في البداية عن تأخرنا، فقد حدث وانشغل بعض الأعضاء، ولا زال بعضهم في انشغال. لكن ومع هذا، إن شاء الله نمطركم بمواضيع وترجمات ممتابعة!

هذا الموضوع يتحدث عن تحويل الأنواع في البرمجة (Type Conversion). ومع أنه موضوع مخصص في مجال محدود لا أظن كثيرًا سيقرؤنه، ولكن إن شاء الله تستفيدون. ما دفعني لكتابته هو عدم احتواء الويكيبيديا العربية لهذا الموضوع بتاتًا، بل لا تحتوي كثيرًا عن مواضيع الحاسوب، ونحاول ما استطعنا أن نترجم.

أود أن أشكر حقيقة فريق وثائيات وعلوم فردًا فردًا، وأشكر لميغا تعبه في متابعة أمور الفريق وتحمل أعبائه حين غاب الكثيرون، وإن شاء الله سنحاول تعوض جزء من ذلك.

خلاص، بلا فلسفة. شدوا الأحزمة، وانطلقوا.

في الأخير، إن وجدتم خطأً فأعلمونا، وسنكون شاكرين لكم :)



http://images.msoms-anime.net/images/77499532419945644689.jpg



تحويل الأنواع "Type conversion"، وأحيانًا يسمى بقولبة الأنواع، بأنه تغيير ماهية نوع معين من البيانات الحاسوبية إلى ماهية نوع آخر
سواءٌ كانت هذه العملية صريحة "من قبل المبرمج" أو ضمنية"من قبل المصرف".
تتم هذه العملية بالاستفادة من تسلسل الأنواع، فمثلاً في لغة السي، إن كان لدينا نوع قصير "short" والذي يتكون بايتين اثنين،
فإنه يمكن أن تُعاد صياغته ليكون من نوع رقم صحيح "integer" دون خسران أي بيانات.
وفي البرمجةكائنية التوجه، فإن تحويل الأنواع يمكن البرامج من أن تتعامل مع الكائنات "object" كما لو كانت
واحدة من أسلافها بالاستفادة من ميزة الوراثة "inheritance".



http://images.msoms-anime.net/images/26382753574245343834.jpg
تفاسير مختلفة لذات البيانات أو ما يعرف بالقولبة.


------------------------

في اللغات البرمجية خوارزمية البناء "Algol-based" كباسكال والتي تدعم تعريف الدوال المتداخلة فإن عبارتي قولبة وتحويل مختلفتان في المعنى.
فالتحويل هنا يعني أن تصاغ الأنواع بشكل آخر يغير في متطلبات تخزينها،
وقد يحدث فيها أيضًا فقدانٌ لدقة البيانات خاصة الكبيرة والصغيرة منها.
أما قولبة فتعني أن تفسر الأنواع بشكلٍ آخر دون تغييرها،
فعدد صحيح من بايتين يمكن تفسيره كستة عشر نوع من بولْيِن "Boolean" أو كنوعين من المحارف.
أما في لغة السي وشاكلاتها فإن قولبة تعبر عن تحويل صريح والتحويل يعبر عن تحويل ضمني دون تدخل المبرمج.



http://images.msoms-anime.net/images/59278381594693754960.jpg



تحول الأنواع في العبارات البرمجية التي تحتوي على أنواع مختلفة إلى النوع الأكبر بينها حسب أولوية التنفيذ.
لتوضيح كيفية حدوث هذا الأمر، انظر إلى هذا الكود البرمجي:






http://images.msoms-anime.net/images/28508652581955026915.jpg




لاحظ أن السطر الرابع في الكود يقارن بين متغير عدد صحيح كبير وآخر من نوع مضاعف "double"،
في هذه الحالة لا يستطيع الحاسوب المقارنة إلا إذا كان المتغيران من نفس النوع،
حينئذ يحول الصغير "في حالتنا هذه يكون متغير العدد الصحيح الكبير" إلى الأكبر منه"المضاعف".
تجدر الإشارة إلى أن المبرمج يستطيع عكس العملية، ولكن ذلك يعطي خطأً حين التصريف.
وهذا ما عليه السطر الخامس من الكود السابق حين تخزن قيمة مضاعفة تحتل8 بايتات في مساحة عدد صحيح يحتل غالبًا 4 بايتات. "استنادًا إلى نظام ويندوز 32-بت"
أما في السطر الرابع والسادس فلا بأس فيهما لأن ما يُخزن في المتغيرات في نطاق مساحتهما.
ومن المفيد الإشارة إلى أن التحويل من عدد صحيح إلى عدد صحيح كبير لا يعدو كونه
أكثر من نسخ حرفي للبتات "مع الأخذ بعين الاعتبار إشارة الرقم في الأنواع ذوات الإشارتين"كما الحال في السطر السادس،
أما حين التحويل من عدد صحيح"عاديًا كان أو كبيرًا" فإن المصرف يقوم بترجمته إلى صيغة مقابلة في أنواع الفاصلة العائمة "floating-point"،
وغالبًا ما يكون هذا بالاستناد إلى معيار IEEE 754.
إلا أن بعض أنواع الفاصلة العائمة ذات الـ 32 بتَّا لا تستطيع أن تخزن أرقامًا كبيرة من نوع عدد صحيح كبير كما هو ظاهر في الكود أسفلاً.
حيث يظهر أن البرنامج سيطبع حين التنفيذ16777217، و 16777216.0، وحين المقارنة سيساوي البرنامج بينهم!
ما حدث هنا هو أن الفاصلة العائمة لا تستطيع أن تحوي العدد الكبير 16777217 بل أنقصته حتى أكبر عدد صحيح تستيطع تخزينه وهو 16777216،
وأما المساواة بينهما صحيحة لأن المصرف سيحول العدد الكبير إلى نوع فاصلة عائمة بدقة32 بت
والتي بدورها ستنقص قيمة العدد الصحيح حتى أكبر عدد صحيح يمكنها تخزينه وعندها يتساوى المختلفان!






http://images.msoms-anime.net/images/46919500736334362985.jpg





هنالك حالة خاصة من التحويل الضمني وهي التي يقوم فيها الحاسوب بتوسيع بعض الأنواع وجعلها تحتل مساحة أكبر من التي تطلبها لتنفيذ العمليات الحسابية.
غالبًا ما تكون الترقيات لتلك الأنواع ذوات الحجم الأصغر من حجم وحدة الحساب والمنطق الموجودة في الحاسوب،
إلا أن هذا ليس بالحال الدائم، فحتى إن كان أحد الأنواع التي يجرى عليها عمليات حسابية
من نوع عدد صحيح كبير وأخرى من نوع مضاعف فإن المصرف يرقي العدد الصحيح الكبير إلى مضاعف
مع تحويله لصيغة أعداد الفاصلة العائمة المستخدمة في الحاسوب.



http://images.msoms-anime.net/images/91932772285968059835.jpg


التحويل الصريح هو ذلك الذي يقوم به المبرمج به من تلقاء نفسه ولا دخل للمصرف فيه.
أحد أهم الاستخدامات في التحويل الصريح تتمحور حول كيفية الحفاظ على القيمة الناتجة عن العمليات الحسابية المختلفة.
مثلاً، إن قسمنا 3 على 2 مع الأخذ بعين الاعتبار أنهما من نوع عدد صحيح، فإن الناتج سيكون 1،
ومع أنه من المفترض أن يكون الناتج 1.5، إلا أن المصرف يعتقد بأن العملية الحسابية بين نوعين متساويين تنتج نفس النوع فهو يحول 1.5 لتكون عدد صحيح لذلك السبب،
وللاتفاف على هذا تقولب أحد الأنواع كالتالي:




http://images.msoms-anime.net/images/68551246547797990490.jpg



-------------------------




كان معكم :

المترجم: Gh.S
المدقق: ポートガス・D・エース
المصمم: ポートガス・D・エース
المنسق: ポートガス・D・エース
ناشر مسومس: Gh.S
ناشر ويكيبيديا: Gh.S




http://images.msoms-anime.net/images/17073718721658158188.jpg (http://images.msoms-anime.net/)

إكسير الحياة
30-3-2012, 11:22 AM
شكرا أيها العضو الجديد ض1
رفايل يظنك عضو جديد هههه
نسيت أنك غيرت لقبك .. ووضعت القديم في فقرة العاملين على الموضوع =ـ=

القـ{الطموح}ـمر
30-3-2012, 11:31 AM
رائع رائع رائع جداً ما شاء الله
أحببت هذا الموضوع كونه قريب من تخصصي الممتع ~_~
وفقكم الله و بارك في جهودكم

_MasterPiece
30-3-2012, 11:38 AM
شكرا أيها العضو الجديد ض1
رفايل يظنك عضو جديد هههه
نسيت أنك غيرت لقبك .. ووضعت القديم في فقرة العاملين على الموضوع =ـ=

لا بأس. أفضل استخدام الأول مع الفريق :) وأرجو أن تقبلوني عضوًا في الفريق P:



رائع رائع رائع جداً ما شاء الله
أحببت هذا الموضوع كونه قريب من تخصصي الممتع ~_~
وفقكم الله و بارك في جهودكم


إن شاء الله تكوني استفدت ^^

نجمة الإسلام
30-3-2012, 12:56 PM
ماشاء الله ..موضوع مميز و تنسيق جمييل

جزيتم خيرا على المعلومات الفريدة و العمل

ننتظر جديدكم دوما

سميد
14-4-2012, 10:47 AM
وعليكم سلام
ما شاءالله ابداع هنا او هناك
اشكرك على معلومات مثيره عن اللغه جديده في الاوامر
و كمان شكر الى كل من ساهم معك
الله يحفظكم ويبارك فيكم
تحياتي