ايران ويج

نسخه‌ی کامل: اعداد جنی !!!!!!!!!!!
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
NabiKAZ نوشته است:
Payman62 نوشته است:x = 20 + 20
x = 200 + 200
x = 2000 + 2000
x = 20000 + 20000
x = 200000 + 200000
x = 2000000 + 2000000
x = 20000000 + 20000000
x = 200000000 + 200000000
x = 2000000000 + 2000000000
x = 20000000000 + 20000000000

در اين مورد ميخواستم بگم شايد مثلا تا موقعي كه اعداد 5 رقمين اندازه اينتجر فضا ميده. ولي تعداد اعداد كه زياد ميشه اندازه دوبل و لانگ فضا ميده. ولي اگه از همون اول x رو لانگ هم تعريف كنيد سر 20000+20000 خطاي سر ريز ميده.

من که با استدلال شما مخالفم ! به خاطر اینکه مبنای کامپیوتر و برنامه های کامپیوتری تعداد ارقام نیست . بلکه بایت حافظه است. و به عنوان مثال فرضاً در مورد متغییر های integer اصلا ویژوال بیسیک تفاوتی بین 3 و 33 و 333 و 3333 قائل نیست چون در محدوده حافظه مجاز هستند و اونها رو مجاز میدونه ولی بین اونها و عدد 33333 تفاوت قائل میشه ، البته تفاوت ناشی از تعداد زیاد ارقام نیست! بلکه در میزان فضای غیر مجاز اشغالی است.

در مورد مثال بالا هم که بنده عرض کردم عجیب است! واقعا عجیب است!

تشکر
نبی
منم همين متظور رو داشتم. ولي خودموني بيان كردم. خودمم كه در ادامه گفتم اشتباه است.
نقل قول: اگر standard Programming را رعایت کنیم هیچ وقت این مشکلات پیش نمی آید.
این حرف شما درسته
بلاخره وی بی رو برای افراد که می خوان برنامه نویسی رو شروع کنن ساختن
خیلی چیزا رو توش شل گرفتن مثل معرفی متغییر و ... ( کاری با Option Explicit نداریم )
درکل قدرت کامل در برنامه نویسی رو در اختیار آدم نمی زاره
یه نمونش همین مدیریت حافظه هست
نقل قول: کسی فهمید حامد چی گفت ؟!
اشتباه برداشت نشه . اشکال کار از IQ بنده است. شرمنده ....

پ.ن: راستی مبارکه میبینم که مدیر انجمن موبایل شدی . جدی جدی حالا خوره ای تو این زمینه ؟ من میخوام برا p910i برنامه بنویسم میتونی کمکم کنی؟

چاکریم
کسی فهمید حامد کیه؟
هیچی بابا می گم 20000 اینتیجر هست ولی جمعش با خودش اینتیجر نیست برای همین سرریز می کنه وی بی برای تشخیص نوع عدد اینتیجر یا لانگ یا استرینگ به اعداد نگاه می کنه چون اینااینتیجر هستند کل رو اینتیجر می گیره که سر ریز می کنه ولی مثلا تو عدد بعدی دیگه اینتیجر نیست مثلا می شه لانگ که مشکل نداره تا اونجا که خودش لانگ باشه جمعش لانگ نباشه
خوب شد گفتی مدیر شدم برم ببینم این انجمن کجاست ;) اگه سیمبین سا جاوا بنویسی شاید
esmaeily-hosein نوشته است:به نظر من این عبارت را فکر میکنم از نوع رشته در نظر میگیرد .
چون دقیقا این عمل برای رشته نیز میتواند انجام شود .
راه حل :x=val(20000)+val(20000) میباشد همین .
علامت تقسیم : سبب میشود اعداد را به صورت رشته در نظر نگیرد .

به نظر من این مشکل نیست این بستگی به نوع طراح کامپایلر دارد .
که اعداد را چگونه تشخیص دهد .

در ضمن بیلی سلطان برنامه نویسی جهان میباشد هر برنامه نویس
وظیفه دارد به او احترام بگذارد.

اگر standard Programming را رعایت کنیم هیچ وقت این مشکلات پیش نمی آید.


من فکر میکردم تنها زمانی که از "" استفاده بشه عبارت رو رشته ای فرض میکنه !

تازه به صورت رشته هم که در نظر بگیره دلیل بر خطای سرریز نمیشه !

فکر میکنم به قضیه رشته ای و عددی بودن اونها مربوط نباشه ، یعنی دستور val() قبل از اینکه اونها رو عددی کنه ، داره فضای بیشتری برای مقدار ورودیش اختصاص میده ! یعنی درسته که 20000 اینتجر است ولی val(20000) اینتجر نیست و این به خاطر فضای اضافیست که val() برای عدد در نظر میگیرد.
این نظر شخصی من بود. درسته ؟!

ولی با استدلال ha_60 حال کردم . فکر میکنم حرفش درست باشه . چون این تنها دلیلیه که از بین اون همه عملیات ریاضی که نوشتم ، اجرا نشدن تنها اون دو دستور رو توجیه میکنه ! خط قرمز اول به خاطر اینکه دو عدد اینتجر فرض میشن اما جمعشون از اینتجر بیشتر میشه . خط قرمز دومی به خاطر اینکه دو عدد لانگ هستند ولی جمعشون از لانگ بیشتر میشه !
در واقع زمانی که دو عدد رو به صورت متغییر با هم جمع میکنیم سبب میشه اون دو متغییر نه اینتجر نه لانگ فرض بشه بلکه variant میباشن که جمع دو عدد از نتیجه معمولا بزرگتر نمیشه و حطا نمیگیره . امیدوارم تونسته باشم منظور رو برسونم .


ضمنا ما چاکر بیلی هم هستیم ، قصد توهین نداشتم ، فقط شوخی کردم ؟! حالا راستشو بگو چه نسبتی با تو داره که جوش اوردی ;)

چاکریم
ha_60 نوشته است:
نقل قول: کسی فهمید حامد چی گفت ؟!
اشتباه برداشت نشه . اشکال کار از IQ بنده است. شرمنده ....

پ.ن: راستی مبارکه میبینم که مدیر انجمن موبایل شدی . جدی جدی حالا خوره ای تو این زمینه ؟ من میخوام برا p910i برنامه بنویسم میتونی کمکم کنی؟

چاکریم
کسی فهمید حامد کیه؟
هیچی بابا می گم 20000 اینتیجر هست ولی جمعش با خودش اینتیجر نیست برای همین سرریز می کنه وی بی برای تشخیص نوع عدد اینتیجر یا لانگ یا استرینگ به اعداد نگاه می کنه چون اینااینتیجر هستند کل رو اینتیجر می گیره که سر ریز می کنه ولی مثلا تو عدد بعدی دیگه اینتیجر نیست مثلا می شه لانگ که مشکل نداره تا اونجا که خودش لانگ باشه جمعش لانگ نباشه
خوب شد گفتی مدیر شدم برم ببینم این انجمن کجاست ;) اگه سیمبین سا جاوا بنویسی شاید


اهان حالا گرفتم داستان چی شد !
از استدلالت خوشم اومد. باهات موافقم ! توضیح بیشتر رو تو پست بالایی دادم .

در تایید فرمایشات شما و مثال عملی ، این رو مینویسم:
(میدانیم بزرگترین عدد در نوع اینتجر عدد 32767 می باشد)

x = 32766 + 1
عبارت بالا صحیح می باشد چون دو عدد اینتجر هستند و جمع آنها نیز باید اینتجر شود که هست!


x = 32767 + 1
عبارت بالا صحیح نمی باشد چون دو عدد اینتجر هستند ولی جمع آنها اینتجر نمیشود !!!

x = 32768 + 1
عبارت بالا صحیح می باشد چون بزرگترین عدد اینتجر نیست ! بلکه لانگ فرض شده است در نتیجه حاصل باید در محدوده لانگ شود ، که هست !

---
در مورد سیمبین هم . ترجیح میدم با ویژوال بیسیک بنویسم . یه پلاگین هست که رو وی بی سوار میشه که امکان برنامه نویسی برای موبایل رو به وی بی میده اسمش فکر کنم mobile2vb بود. با این نمیشه کاری کرد؟ من که هر چی کردم دون لودش نتونستم کنم.

چاکریم
تا اونجا که من می دونم این پلاگین ها پولی هستند و کرکشون رو هم راحت پیدا نمی کنی
یکیشون رو هم که من دیدم یه QBasic مجازی بود که اصلا هم قشنگ نبود حالا نمی دونم هر جور راحتی
صفحه‌ها: 1 2