اهلا وسهلا بك فى بوابة الثانوية العامة ... سجل الان

العودة   بوابة الثانوية العامة المصرية > القسم الإداري > أرشيف المنتدى

أرشيف المنتدى هنا نقل الموضوعات المكررة والروابط التى لا تعمل

مشاهدة نتائج الإستطلاع: هل تريد البرنامج المقرر Visual Basic 2008 express
نعم أريدة وأحتاجة 74 86.05%
لا شكراً غير مهم 12 13.95%
المصوتون: 86. أنت لم تصوت في هذا الإستطلاع

 
 
أدوات الموضوع ابحث في الموضوع انواع عرض الموضوع
  #1  
قديم 24-05-2013, 01:12 PM
الصورة الرمزية MR : ABO BATTA
MR : ABO BATTA MR : ABO BATTA غير متواجد حالياً
معلم الحاسب الآلى
 
تاريخ التسجيل: Jan 2009
المشاركات: 14,295
معدل تقييم المستوى: 31
MR : ABO BATTA will become famous soon enough
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
الغريب أن نوع بيان المعاملات first و second يؤثر فى مكان حدوث الخطأ
فعندما يكون نوع بيان المعاملات first و second نفس نوع بيان الدالة وهو byte يحدث الخطأ عند الأمر total = first + second
و عندما يكون نوع بيان المعاملات first و second نفس نوع بيان القيمة الراجعة total وهو مثلاً short يحدث الخطأ عند الأمر return total
هو ده الكلام المظبوط والاستنتاج الصحيح يا مستر حسن
__________________
يارب ارفع عنَّا وعن مصر الفتن ما ظهر منها وما بطن
واحفظ بلاد المسلمين من كل شر وسوء يا أرحم الراحمين
  #2  
قديم 25-05-2013, 06:20 PM
سيف سالم سيف سالم غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Jul 2008
العمر: 57
المشاركات: 4,642
معدل تقييم المستوى: 22
سيف سالم is on a distinguished road
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
الغريب أن نوع بيان المعاملات First و second يؤثر فى مكان حدوث الخطأ
فعندما يكون نوع بيان المعاملات First و second نفس نوع بيان الدالة وهو Byte يحدث الخطأ عند الأمر total = First + second
و عندما يكون نوع بيان المعاملات First و second نفس نوع بيان القيمة الراجعة total وهو مثلاً Short يحدث الخطأ عند الأمر Return total
فعندما يكون نوع بيان المعاملات First و second نفس نوع بيان الدالة وهو Byte يحدث الخطأ عند الأمر total = First + second
لماذا لا تفسر هكذا
فعندما يكون نوع بيان المعاملات First و second نفس نوع بيان الدالة وهو Byte يحدث الخطأ عند الأمر total = First + second لانه لايمكن التخزين في نوع مغاير الا هو نوع المتغير داخل الدالة
اما
و عندما يكون نوع بيان المعاملات First و second نفس نوع بيان القيمة الراجعة total وهو مثلاً Short يحدث الخطأ عند الأمر Return total
تفسر هكذا
و عندما يكون نوع بيان المعاملات First و second مغايرنوع بيان الدالة وهو Byte ومتفق مع نوع بيان المتغير داخل الدالة total وهو مثلاً Short يحدث الخطأ عند الأمر Return total لانه ليس نوع بيان الدالة byte
  #3  
قديم 25-05-2013, 06:48 PM
tigerload tigerload غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Oct 2010
المشاركات: 12
معدل تقييم المستوى: 0
tigerload is on a distinguished road
افتراضي

[QUOTE=سيف سالم;5289582]سؤال نرجو الرد عليه مع التفسير
Public Class Form1


Function Sum(ByVal First As Byte, ByVal second As Byte) As Byte
Dim total As Short
total = First + second
Return total

End Function

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

total = First + second
مع سطر اعلان الدالة
Function Sum(ByVal First As Byte, ByVal second As Byte) As Byte
تمام
2 - وقال ان الخطأ overflow تمام
نوضح
انت جمعت byte + byte وخصصته في short تمام
ورجعت ال Short ل byte تمام
لحد هنا عادي
بس لما تستخدم قيم تعدي الحد بتاع الدالة byte لن يستطيع المترجم تحويلها ضمنيا كما في التخصيص العادي : - إزاي تحط مثلا 2 لتر في ازازة 1 لتر مثلاً ماشي الحال
عشان كدة المترجم علملك على سطر الجمع وظللك بالرصاصي سطر اعلان الدالة عشان يقلك خلي بالك انت معلن ايع وجا تخصص ايه
فين بقى القيمة overflow ؟
فين طبعا في سطر التخصيص
عشان كدة علملك عليه اصفر وقالك overflow مع سطر الاعلان عشان طلاحظ الي انت اخطأته كأنه بيقلك متصحى يا عم انت نايم خلي بالك
وشكراً
أخوكم سعد
  #4  
قديم 25-05-2013, 09:14 PM
سيف سالم سيف سالم غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Jul 2008
العمر: 57
المشاركات: 4,642
معدل تقييم المستوى: 22
سيف سالم is on a distinguished road
افتراضي

[QUOTE=tigerload;5292797]
اقتباس:
المشاركة الأصلية كتبت بواسطة سيف سالم مشاهدة المشاركة
سؤال نرجو الرد عليه مع التفسير
Public Class Form1


Function Sum(ByVal First As Byte, ByVal second As Byte) As Byte
Dim total As Short
total = First + second
Return total

End Function

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

total = First + second
مع سطر اعلان الدالة
Function Sum(ByVal First As Byte, ByVal second As Byte) As Byte
تمام
2 - وقال ان الخطأ overflow تمام
نوضح
انت جمعت byte + byte وخصصته في short تمام
ورجعت ال Short ل byte تمام
لحد هنا عادي
بس لما تستخدم قيم تعدي الحد بتاع الدالة byte لن يستطيع المترجم تحويلها ضمنيا كما في التخصيص العادي : - إزاي تحط مثلا 2 لتر في ازازة 1 لتر مثلاً ماشي الحال
عشان كدة المترجم علملك على سطر الجمع وظللك بالرصاصي سطر اعلان الدالة عشان يقلك خلي بالك انت معلن ايع وجا تخصص ايه
فين بقى القيمة overflow ؟
فين طبعا في سطر التخصيص
عشان كدة علملك عليه اصفر وقالك overflow مع سطر الاعلان عشان طلاحظ الي انت اخطأته كأنه بيقلك متصحى يا عم انت نايم خلي بالك
وشكراً
أخوكم سعد
نشكر الاستاذ سعد
يعنى تقصد الجهاز بيقولك انك اخطأت لان short ليس هو نوع القيمة الراجعة وان نوع القيمة الراجعة هو byte
  #5  
قديم 24-05-2013, 09:18 AM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile الدالة والقيمة الراجعة (Return Value)

ورد لي سؤال على البريد الخاص وليس من صلاحياتي الرد لأن مشاركاتي أقل من 500 مشاركة ولذلك أطرحه حتى نتشارك الإستفادة
كان نص السؤال
سؤال نرجو الرد عليه مع التفسير

Public Class Form1
Function Sum(ByVal First As Byte, ByVal second As Byte) As Byte
Dim total As Short
total = First + second
Return total
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Sum(255, 1))
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim total As Short
total = 255 + 1
MsgBox(total))
End Sub

End Class
عند الضغط على button2 ماذا يحدث

عند الضغط على button1 ماذا يحدث
طبعا مع التفسير


  #6  
قديم 24-05-2013, 09:45 AM
الصورة الرمزية hassanalhawy
hassanalhawy hassanalhawy غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 17
hassanalhawy is on a distinguished road
افتراضي

ممكن حضرتك الإنتقال للرابط التالى حيث تم إثارة الموضوع وبه العديد من المناقشات
مطلوب الحل فورا
__________________
يخطئ من يظن أن للذئاب ديناً
  #7  
قديم 24-05-2013, 10:00 AM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile

1- يجوز الإعلان عن متغير أو غيره نوع بيانه يختلف عن نوع بيان الدالة ثم نجعله القيمة الراجعة (Value)
2- عندما تستقبله الدالة عند استدعائها يتم تحويله لنفس نوع بيان الدالة
حيث أن الدالة Sum نوع بيانها Byte وتم استخدام المتغير Total المعلن في نطاق الدالة Sum بنوع بيان Short كقيمة راجعة

3- عند استدعاء الدالة Sum في نطاق معالج الحدث الخاص ب Button1
تم تخصيص قيمة للوسيط الأول والوسيط الثاني أكبر من مدى نوع بيان الدالة وهذا لا يجوز فيتسبب في خطأ Runtime
منها نخلص
عند استدعاء الدالة لابد من تخصيص قيم من نفس نوع بيان وسائط الدالة أو يمكن تحويلها لهذا النوع وأن تكون في مدى القيم المسموح بها
الإعلان عن الدالة سليم لكن الاستدعاء لم يلتزم بمواصفات الدالة (مجازا)

آخر تعديل بواسطة tmrmsr ، 24-05-2013 الساعة 10:12 AM سبب آخر: تصويب
  #8  
قديم 24-05-2013, 10:06 AM
الصورة الرمزية hassanalhawy
hassanalhawy hassanalhawy غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 17
hassanalhawy is on a distinguished road
افتراضي

255 ليست أكبر من مدى الـ Byte
((MsgBox(Sum(255, 1
__________________
يخطئ من يظن أن للذئاب ديناً
  #9  
قديم 24-05-2013, 10:10 AM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile

اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
255 ليست أكبر من مدى الـ Byte
((MsgBox(Sum(255, 1
معذرة
ناتج الجمع وعند التحويل لنوع بيان الدالةbyte
  #10  
قديم 24-05-2013, 10:08 AM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile

في زر Button 2
تم تخصيص قيمة من خلال ناتج تعبير 255+1
التي هي في حدود نطاق مدى نوع المتغير

لذلك عرضت الرسالة
ولم يحدث خطأ

لكن في زر Button1
المتغير استقبل القيمة لأنها تناسبه لكن عند تحويلها لنوع بيان الدالة القيمة أصبحت خارج نطاق نوع بيان الدالة
فحدث خطأ Overflow
وشكرا
  #11  
قديم 24-05-2013, 10:14 AM
الصورة الرمزية hassanalhawy
hassanalhawy hassanalhawy غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 17
hassanalhawy is on a distinguished road
افتراضي

الخطأ لم يكن فى الأمر Return total ولكنه حدث فى الأمر total = First + second
وكما ذكرت حضرتك فإن
total نوعها Short سوف تستقبل ناتج الجمع دون مشاكل
فكيف يظهر الخطأ فى
total = First + second
__________________
يخطئ من يظن أن للذئاب ديناً
  #12  
قديم 24-05-2013, 11:56 AM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile

اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
الخطأ لم يكن فى الأمر return total ولكنه حدث فى الأمر total = first + second
وكما ذكرت حضرتك فإن total نوعها short سوف تستقبل ناتج الجمع دون مشاكل
فكيف يظهر الخطأ فى total = first + second
الأمر يحتاج لبحث واطلاع امهلني بعض من الوقت
  #13  
قديم 24-05-2013, 01:59 PM
tmrmsr tmrmsr غير متواجد حالياً
عضو ممتاز
 
تاريخ التسجيل: Aug 2012
المشاركات: 303
معدل تقييم المستوى: 14
tmrmsr is on a distinguished road
Smile

اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
الخطأ لم يكن فى الأمر Return total ولكنه حدث فى الأمر total = First + second
وكما ذكرت حضرتك فإن total نوعها Short سوف تستقبل ناتج الجمع دون مشاكل
فكيف يظهر الخطأ فى total = First + second
الخطأ حدث عن تنفيذ السطر total = First + second
بسبب عندما يتم جمع قيمة المتغير First الذي نوعه Byte والمتغير Second الذي نوع Byte
ناتج الجمع يتم تمثيله أيضا في شكل Byte
وبما أن ناتج الجمع أكبر من الحد المسموع يحدث خطأ Runtime

لو القيمة في الحد المسموح يتم تحويل الناتج الذي نوعه Byte إلى Short
ليخزن في المتغير Total

ثم يتم تحويل المتغير Total إلى Byte ويرجع للدالة

وحلا لهذا الوضع
قم بعمل تحويل صريح
total =CShort( First) +CShort ( second)

ستجد الخطأ يظهر في سطر Return Total
  #14  
قديم 25-05-2013, 02:27 PM
سيف سالم سيف سالم غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Jul 2008
العمر: 57
المشاركات: 4,642
معدل تقييم المستوى: 22
سيف سالم is on a distinguished road
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة tmrmsr مشاهدة المشاركة
1- يجوز الإعلان عن متغير أو غيره نوع بيانه يختلف عن نوع بيان الدالة ثم نجعله القيمة الراجعة (Value)
2- عندما تستقبله الدالة عند استدعائها يتم تحويله لنفس نوع بيان الدالة
حيث أن الدالة Sum نوع بيانها Byte وتم استخدام المتغير Total المعلن في نطاق الدالة Sum بنوع بيان Short كقيمة راجعة

3- عند استدعاء الدالة Sum في نطاق معالج الحدث الخاص ب Button1
تم تخصيص قيمة للوسيط الأول والوسيط الثاني أكبر من مدى نوع بيان الدالة وهذا لا يجوز فيتسبب في خطأ Runtime
منها نخلص
عند استدعاء الدالة لابد من تخصيص قيم من نفس نوع بيان وسائط الدالة أو يمكن تحويلها لهذا النوع وأن تكون في مدى القيم المسموح بها
الإعلان عن الدالة سليم لكن الاستدعاء لم يلتزم بمواصفات الدالة (مجازا)
اقتباس:
المشاركة الأصلية كتبت بواسطة tmrmsr مشاهدة المشاركة
في زر Button 2
تم تخصيص قيمة من خلال ناتج تعبير 255+1
التي هي في حدود نطاق مدى نوع المتغير

لذلك عرضت الرسالة
ولم يحدث خطأ

لكن في زر Button1
المتغير استقبل القيمة لأنها تناسبه لكن عند تحويلها لنوع بيان الدالة القيمة أصبحت خارج نطاق نوع بيان الدالة
فحدث خطأ Overflow
وشكرا
اقتباس:
المشاركة الأصلية كتبت بواسطة tmrmsr مشاهدة المشاركة
معذرة
ناتج الجمع وعند التحويل لنوع بيان الدالةbyte
اقتباس:
المشاركة الأصلية كتبت بواسطة tmrmsr مشاهدة المشاركة
الأمر يحتاج لبحث واطلاع امهلني بعض من الوقت
اقتباس:
المشاركة الأصلية كتبت بواسطة tmrmsr مشاهدة المشاركة
الخطأ حدث عن تنفيذ السطر total = First + second
بسبب عندما يتم جمع قيمة المتغير First الذي نوعه Byte والمتغير Second الذي نوع Byte
ناتج الجمع يتم تمثيله أيضا في شكل Byte
وبما أن ناتج الجمع أكبر من الحد المسموع يحدث خطأ Runtime


لو القيمة في الحد المسموح يتم تحويل الناتج الذي نوعه Byte إلى Short
ليخزن في المتغير Total


ثم يتم تحويل المتغير Total إلى Byte ويرجع للدالة

وحلا لهذا الوضع
قم بعمل تحويل صريح
total =CShort( First) +CShort ( second)

ستجد الخطأ يظهر في سطر Return Total
اولا نتوجه بالشكر للاستاذ تامر
"تم تخصيص قيمة للوسيط الأول والوسيط الثاني أكبر من مدى نوع بيان الدالة وهذا لا يجوز فيتسبب في خطأ Runtime"
هل هذا استنتاج ام مسند الى رأي علمى
"المتغير استقبل القيمة لأنها تناسبه"
طبعا المتغير لم يستقبله من الاساس رغم ان القيمة تناسبة تماما ولم تتخطى المدى short
"
حدث عن تنفيذ السطر total = First + second
بسبب عندما يتم جمع قيمة المتغير First الذي نوعه Byte والمتغير Second الذي نوع Byte
ناتج الجمع يتم تمثيله أيضا في شكل Byte
وبما أن ناتج الجمع أكبر من الحد المسموع يحدث خطأ Runtime
"
طبعا ناتج الجمع 256 يناسب النوع short تماما بعكس ما ذكرتم وحدث الخطأ وهذا هو المطلوب تفسيره لماذا لم يقبل النوع short تخزين 256 التى تناسب معه
"لو القيمة في الحد المسموح يتم تحويل الناتج الذي نوعه Byte إلى Short
ليخزن في المتغير Total
"
القيمة 256 في الحد المسموح للمكان التى ستخصص له total
وحلا لهذا الوضع
نحن لا نريد حلا ولكن نريد تفسير ليه متغير يرفض قبول قيمة مسموح بها في نطاقه في مكان ويقبلها في مكان اخر

طبعا الهدف ليس سوى الوصول الصح ايه
هل ما بعد return القيمة الراجعة نوعها هو النوع ما بعد as في تعريف الدالة ام لا

  #15  
قديم 24-05-2013, 10:18 AM
الصورة الرمزية hassanalhawy
hassanalhawy hassanalhawy غير متواجد حالياً
مــٌــعلــم
 
تاريخ التسجيل: Sep 2010
المشاركات: 1,514
معدل تقييم المستوى: 17
hassanalhawy is on a distinguished road
افتراضي

ممكن حضرتك تنظر لتلك المناقشات
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
أولاً بالنسبة للزر الأول قيمة tatal سوف تكون 256 وهذا الرقم تتقبله tatal لأنها من نوع short
ولكن عند تحويل تلك القيمة الراجعة من نوع بيان short إلى نوع بيان byte اللى هوا نوع بيان الدالة sum يصطدم التحويل بأعلى قيمة لمدى الـ byteوهو 255 فيعطى رسالة خطأ وقت التشغيل
ولكن السؤال هنا
إذا كان شرحى هذا صحيح
فلماذا لم يشر للخطأ للسطر return total ؟ ولكنه أشار للسطر السابق له وهو total = first + second
هذا غير مفهوم
عذراً أستاذ / سيف فأنا أسأل وأرد على نفسى
اقتباس:
المشاركة الأصلية كتبت بواسطة سيف سالم مشاهدة المشاركة
اصبت الحقيقة
لماذا الرن تيم في هذا السطر
ولماذا نفذ في button2
البرنامج لم يصل بعد للقيمة الراجعة حتى يصدم بالنوع
اقتباس:
المشاركة الأصلية كتبت بواسطة سيف سالم مشاهدة المشاركة
انت عارف
لو اردنا ان نفسر
لماذا الكمبيوتر لم يستطع تخصيص 256 في النوع short
هو نفس السبب
فسر
1+2=4
اقتباس:
المشاركة الأصلية كتبت بواسطة جعيصه مشاهدة المشاركة
يبقى نوصل الى ان نوع القيمه الراجعه هى نفس نوع الداله برغم اختلاف نوع الاعلان
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
هذا هو التفسير المنطقى لذلك
وحتى لو كتبنا الكود كما يلى سوف يعطى خطأ فى نفس السطر

function sum(byval first as byte, byval second as byte) as
dim total as short
total = first + second
total = total - 1
return total
end function
بالرغم من أن total أصبحت قيمتها فى المدى المسموخ لـ byte
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
أنظر لهذا التعديل وستعجب له
function sum(byval first as short, byval second as short) as byte
dim total as short
total = first + second
return total

end function



private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
msgbox(sum(255, 1))
end sub
ستجد أن الخطأ ظهر فى سطر return total
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
أنظر لهذا التعديل وستعجب له
function sum(byval first as string, byval second as string) as byte
dim total as string
total = first + second
return total

end function



private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
msgbox(sum("255", "1"))
end sub
ستجد أن الخطأ ظهر فى سطر return total
اقتباس:
المشاركة الأصلية كتبت بواسطة hass****hawy مشاهدة المشاركة
الغريب أن نوع بيان المعاملات first و second يؤثر فى مكان حدوث الخطأ
فعندما يكون نوع بيان المعاملات first و second نفس نوع بيان الدالة وهو byte يحدث الخطأ عند الأمر total = first + second
و عندما يكون نوع بيان المعاملات first و second نفس نوع بيان القيمة الراجعة total وهو مثلاً short يحدث الخطأ عند الأمر return total
__________________
يخطئ من يظن أن للذئاب ديناً
 

العلامات المرجعية

الكلمات الدلالية (Tags)
أبوزياد, اتفة الفصل الرابع وورد, شرح الترم الثاني فيديو

أدوات الموضوع ابحث في الموضوع
ابحث في الموضوع:

البحث المتقدم
انواع عرض الموضوع

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

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع


جميع الأوقات بتوقيت GMT +2. الساعة الآن 07:20 AM.