PDA

View Full Version : دستور const



programmermp
شنبه 07 مهر 1386, 20:46 عصر
با سلام

یه سئوال تو کلاس توسط استاد مطرح شد که من برای اطلاعات بیشتر اینجا مطرحش می کنم این نوع داده رو برای چی ما در دستور const معین می کنیم مثلا به شکل زیر



const float pc=3.14


می دونم واسه اینه که نوع متغیر pc باید مشخص بشه ولی اطلاعات کاملتر و علمی تر

می خواهم

اگه راهنماییم کنید ممنون می شم

با تشکر فراوان

emad_67
شنبه 07 مهر 1386, 20:59 عصر
وقتی یه متغیری رو از نوع const تعریف میکنی یعنی اینکه مقدار ثابتی داره و نمیشه اونو تغییر داد. در مثال بالا به دلیل اینکه 3.14 یه عدد ثابت هست و جهت اینکه در برنامه تغییر پیدا نکنه اونو const تعریف میکنن.

Nima_NF
شنبه 07 مهر 1386, 21:27 عصر
به تعبیری می توان گفت تا زمانی که برنامه شما در حال اجراست اطلاعات آن بخش از حافظه برای برنامه شما قفل می شود و اگر اشتباها دستکاری شود حال یا به دلیل اجرای توابع مشخص شما و یا توابعی که شما اطلاعات پیاده سازی آن را نمی دانید (مثلا تغییر مقدار آن پس از ورود به صورت یک آرگومان به تابع ) در اینجا به شما پیغام خطا داده می شود.
و فرق آن در این است که این خطا ، خطای run-time نیست یعنی قبل از اجرا و در حین کامپایل مشخص می شود و حتی اگر دستکاری آن ثابت در بخشی ار کدهای شما باشد که فعلا با اجرای برنامه اجرا نمی شود در هنگام کامپایل خطا اعلام می شود .

آراد
یک شنبه 08 مهر 1386, 09:50 صبح
اگر شما از یه Const هم استفاده نکنید و در برنامه هر جایی که Pc رو نیاز داشتید همون عدد 3.14 رو وارد میکردید هم برنامه شما بدون مشکل کار میکرد و امکان تغییر عدد برای شما وجود نداشت چون 3.14همیشه مقدار 3.14داره دلیل عمده استفاده از const استفاده ی مجدد تو برنامه هست.
شما فرض کن یه برنامه نوشتی که تو جاهای مختلف مثلا 1000 جا میخواهی اعداد رو ضرب در 5 کنی. حالا بعد از یه مدت تصمیم میگیری به جای 5 اعداد رو در 6 ضرب کنی و این یعنی فاجعه ...
1000 جای برنامه باید بری همه 5 ها رو تبدیل به 6 کنی تازه اگر جایی چیزی از قلم نیوفته و باگ منطقی به وجود نیاد که این هم خودش یه فازیه واسه خودش.
به جای اون شما میای تو برنامه این خط رو مینوسی

const int zarib = 5
از این به بعد هر وقت عددی قرار بود در 5 ضرب بشه اون عدد رو در zarib ضرب میکنی. حالا اگر خواستی مقدار رو از 5 به 6 تغییر بدی فقط تو خط اول مقدار 5 رو 6 میکنی و برنامه رو مجدد کامپایل میکنی. زحمت اون 1000 خط رو کامپایلر میکشه.
موفق باشید

emad_67
یک شنبه 08 مهر 1386, 10:14 صبح
هم برنامه شما بدون مشکل کار میکرد و امکان تغییر عدد برای شما وجود نداشت چون 3.14همیشه مقدار 3.14داره

وقتی یه متغیر رو به صورت معمولی تعریف میکنیم، امکان تغییر اون وجود داره دیگه، این طور نیست؟


دلیل عمده استفاده از const استفاده ی مجدد تو برنامه هست.

علت تعریف متغیر از نوع const تغییر نکردن اون متغیر در برنامه هست. چون جهت استفاده مجدد میشه بدون const هم متغیر رو تعریف و استفاده کرد.

آراد
یک شنبه 08 مهر 1386, 12:37 عصر
وقتی یه متغیر رو به صورت معمولی تعریف میکنیم، امکان تغییر اون وجود داره دیگه، این طور نیست؟
اگر از نوع معمولی تعریف کنیم حرف شما کاملا متین ولی const زمانی تعریف میشه که از یک عدد ثابت(البته صرفا عدد نه) تو برنامه بخوایهم بارها استفاده کینم و در چنین شرایطی ما از cost استفاده میکنیم.
عماد جان درسته که این کار رو با متغیر معمولی هم میشه انجام داد و همونطور که گفتید متغیر معمولی ممکنه تغییر کنه.
ولی دلیل اصلی استفاده از const موردی هست که قبلا ذکر شد یعنی ثابتی که بارها در برنامه استفاده میشه.
سوالی که پرسیده شده درباره دلیل استفاده از const هست که من به دلیلش اشاره کردم ولی فقط خواندنی بودن جزء خواص const میباشد و نه دلیل استفاده.
موفق باشید.

oVERfLOW
یک شنبه 08 مهر 1386, 13:13 عصر
یه بهینه سازی در زمان کامپایل هست که با استفاده از اون وقتی شما از ثابت (Const) استفاده می‌کنید به جای اینکه مقدار اون از توی حافظه خونده بشه که چند سیکل اضافی هست
مستقیم مقدار ثابت در اونجا قرار داده می‌شه و کامپایل انجام می‌شه

درست مثل اینکه شما خود عدد رو استفاده کرده باشید

و به علاوه وقتی که بعدا خودتون یا یه نفر دیگه داره کد رو می‌خونه فهمیدن یه اسم خیلی ساده‌تر از اینه که یه عدد رو ببینید و متوجه نشید که چرا این عدد اینجا هست

در مثال بالا بهتر بود به جای pc از نام Pi استفاده می‌شد تا معلوم باشه که مقدار موجود در این ثابت عدد پی هست نه یه کامپیوتر !

بنابراین به دلایل سرعت و افزایش قدرت ویرایش و خوانایی برنامه توصیه شده که تا جایی که می‌تونید از ثابت‌ها برای نگهداری مقادیر استفاده کنید

---

ali1160kh
سه شنبه 24 اردیبهشت 1392, 15:11 عصر
با سلام خدمت دوستان
آقا یه سوال دارم؟ اصلا ً از چه Type هائی می توان const ایجاد کرد و از کدامشان نمی توان ؟
به عنوان مثال از Int ، Double، char و... می توان Const ایجاد کرد. من خودم فکر می کنم از Built in Data type ها می توان Const ایجاد نمود اما از User define Data type ها نمی شود.
آیا کسی هست منو راهنمائی کنه؟