ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14
  1. #1
    2009/09/27
    1,128
    37

    حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    سلام دوستان.
    فرض کنید ما تو برنامه مون یک متغیر سراسری به اسم a تعریف کردیم (نوعش مهم نیست). حالا یک یا چند تابع هم نوشتیم که داخلشون متغیر محلی به اسم a درست کردیم.
    1- کامپایلر a رو چظور تشخیص میده که محلی هست یا سراسری ؟
    2-اصلا کار درستی هست این کار رو انجام بدیم؟
    3- متغیری که به صورت volatile تعریف میشه چه تفاوتی با حالت عادی داره ؟
    4- فرض کنید قصه بالا طوری باشه که فقط متغیر سراسری به صورت volatile تعریف کنیم، جواب سوالات 1 و 2 چه تفاوتی خواهند داشت؟
    ممنون.
    ---------
    .
    .
    ...........
  2. #2
    2009/10/21
    تهران
    2,501
    205

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    1- متغير هاي محلي داخل پشته و متغير عمومي داخل heap قرار ميگيرند. حوزه ديد هر تابع متغيرهاي داخل خودش هست (يعني وقتي داخل تابع بنويسي a از متغير محلي استفاده ميشه ) و در اين حال براي استفاده از متغير عمومي a بايد از دستور تعريف حوزه ديد استفده كني كه در ويژوال سي بصورت a:: نوشته ميشه
    2- بهترين كار اينه كه نامگذاريهاتون رو درست انجام بدين (a اسم خوبي براي يه متغير نيست)
    3- كلمه كليدي volatile به كامپايلر ميفهمونه كه مقدار داخلي اين متغير ممكنه چيز ديگه اي (مثلا تايمر) تغيير كنه و لزوما داخل نرم افزار اين تغيير انجام نميشه (يا قابل ديد نيست) در نتيجه مثلا كامپايلر از قضاوت در مورد مقدار داخلي متغير و كامپايل هوشمندانه دست برداره
    4- ؟!
  3. #3
    2009/09/27
    1,128
    37

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    خیلی ممنون از توضیحاتتون.
    a رو مثال زدم.
    volatile میشه یک مثال بزنید. چون وقتی متغیر رو سراسری تعریف کنیم همه جا امکانش هست اون متغیر تغییر کنه.
    4- می خواستم بدونم وقتی متغیر volatile تعریف میشه، امکان تداخل متغیر با متغیر محلی وجود داره یا نه؟
    ---------
    .
    .
    ...........
  4. #4
    2006/02/09
    154
    3

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    در ادامه توضیح دوست قبلی در مورد متغیر volatile :
    وقتی متغیری بانام a بصورت غیر volatile تعریف کنید مقدار a یکبار خوانده شده در پردازش آن روتین مورد استفاده قرار میگیرد حال اگر در این حالت وقفه ای رخ دهد و متغیر a در وقفه استفاده شده باشد و چون در روتین عادی هنوز حاصل عملیات در a قرار نگرفته در نتیجه مقداری که از a در روتین وقفه خوانده می شود مقدار اولیه ( قبل از پردازش در روتین عادی ) می باشد و باعث خطا در کار می شود .

    ولی با تعریف a بصورت volatile به کامپایلر میگویید در هر قسمت از پردازش هر بار مقدار را از a بخوانید چون ممکن است در حین پردازش ، این متغیر در روتین وقفه مورد استفاده قرار گرفته و مقدارش تغییر کرده باشد.
  5. #5
    2009/09/27
    1,128
    37

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    یک مثال میزنم ببینید درست متوجه شدم
    [code=c]int a,b,c;
    .
    .
    a=2;
    b=3;
    .
    .
    c=a*b ;
    .
    .
    .[/code]
    تو خط 4 متغیر a مقدار 2 رو داره و تو خط 8 مقدار c از مقدار a به دست میاد. حالا اگر در این حین (یعنی خط 4 تا 8) حتی اگر مقدار a توی یک وقفه عوض بشه و بشه مثلا 3، باز هم c با مقدار قبلی a یعنی 2 محاسبه میشه و نتیجه میشه 6 در حالی که باید بشه 9.
    درست متوجه شدم ؟

    اضافه شده در تاریخ :
    دوستان به نظرتون این حرفی که من زدم، درسته ؟
    ---------
    .
    .
    ...........
  6. #6
    2013/09/03
    1,984
    633

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    وقتی یه محاسبه قراره انجام بشه مقدار متغیر از حافظه خونده میشه...پس آخرین تغییرات رو اون متغیر اهمیت داره..حالا هر کجا ک میخاد باشه...مهم نیس...
    قانون سوم نیوتون میگه برای اینکه بخوای به چیزی برسی باید از یه چیزی دل بکنی...

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  7. #7
    2008/08/13
    اهواز
    674
    163

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟


    ببین دوست من یک مثال الکترونیکی میزنم
    فرض کن شما یک متغیر رو به صورت volatile تعریف کردید . و در حلقه main متغیر در حال استفاده است . از طرفی شما در برنامه تون یک وقفه دارید که مثلا هر 1 میلی ثانیه به زیر روتین وقفه سر میزنید و به برنامه اصلی برمیگردید . خب اگر در زیر روتین وقفه همون متغیر مقدارش تغییر کنه یا تغییر داده بشه ، در اون صورت در هنگام باز گشت به برنامه اصلی مقدار جدید متغیر ، در نظر گرفته میشه و پردازش روی اون مقدار جدید انجام میشه .
    امیدوارم کمک کرده باشم
  8. #8
    2009/09/27
    1,128
    37

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    نقل قول نوشته اصلی توسط سايمون
    ببین دوست من یک مثال الکترونیکی میزنم
    فرض کن شما یک متغیر رو به صورت volatile تعریف کردید . و در حلقه main متغیر در حال استفاده است . از طرفی شما در برنامه تون یک وقفه دارید که مثلا هر 1 میلی ثانیه به زیر روتین وقفه سر میزنید و به برنامه اصلی برمیگردید . خب اگر در زیر روتین وقفه همون متغیر مقدارش تغییر کنه یا تغییر داده بشه ، در اون صورت در هنگام باز گشت به برنامه اصلی مقدار جدید متغیر ، در نظر گرفته میشه و پردازش روی اون مقدار جدید انجام میشه .
    امیدوارم کمک کرده باشم
    میشه نظرتون رو در مورد مثالی که زدم بگید.
    مگر وقتی ما متغیر رو global تعریف کنیم، هر جا (چه تو توابع دیگه مثل توابعی که خودمون تعریف کردیم یا وقفه یا ...) مقدارش عوض بشه، تو محاسبات این اتفاق نمی افته ؟
    ---------
    .
    .
    ...........
  9. #9
    2013/08/28
    539
    12

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    با سلام
    نقل قول نوشته اصلی توسط Des_B
    میشه نظرتون رو در مورد مثالی که زدم بگید.
    مگر وقتی ما متغیر رو global تعریف کنیم، هر جا (چه تو توابع دیگه مثل توابعی که خودمون تعریف کردیم یا وقفه یا ...) مقدارش عوض بشه، تو محاسبات این اتفاق نمی افته ؟
    بحث بر سر بهینه سازی یا optimization هست، مقدار معلومه عوض میشه، اما وقتی قرار کد به کد ماشین تبدیل بشه شاید از مقدار اون متغیر صرف نظر بشه، مثلا
    [code=c]
    int a = 10;
    while( a == 10 ){
    //some work
    }
    [/code]
    اگه کامپایلر بیاد کد بالا رو بهینه کنه، جاش اینو میزاره
    [code=c]
    while( true ){
    //some work
    }
    [/code]
    چون از دید کامپایلر چیزی که a رو تغییر بده وجود نداره و a برابر 10 هست، اما اگه a رو volatile تعریف کنیم به کامپایلر فهموندیم چیزی هست که این متغیر رو بدون اینکه بفهمی تغییر میده پس لطف کن و کد رو همین جوری تبدیل کن و بهینه نکن
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.
  10. #10
    2009/09/27
    1,128
    37

    پاسخ : حالت volatile چه تاثیری روی متغیر در برنامه نویسی دارد؟

    نقل قول نوشته اصلی توسط hessam2013
    با سلامبحث بر سر بهینه سازی یا optimization هست، مقدار معلومه عوض میشه، اما وقتی قرار کد به کد ماشین تبدیل بشه شاید از مقدار اون متغیر صرف نظر بشه، مثلا
    [code=c]
    int a = 10;
    while( a == 10 ){
    //some work
    }
    [/code]
    اگه کامپایلر بیاد کد بالا رو بهینه کنه، جاش اینو میزاره
    [code=c]
    while( true ){
    //some work
    }
    [/code]
    چون از دید کامپایلر چیزی که a رو تغییر بده وجود نداره و a برابر 10 هست، اما اگه a رو volatile تعریف کنیم به کامپایلر فهموندیم چیزی هست که این متغیر رو بدون اینکه بفهمی تغییر میده پس لطف کن و کد رو همین جوری تبدیل کن و بهینه نکن
    ممنون.
    چه راه هایی هست که بشه فهمید کامپایلر میخواد دوستی خاله خرسه دربیاره ؟
    اصلا میشه فهمید که کی قراره بهینه سازی کار مارو خراب کنه ؟
    ---------
    .
    .
    ...........
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوعات مشابه

  1. پاسخ: 2
    آخرين نوشته: 2015/11/28, 18:16
  2. تخمین متغیر حالت سیستم با فیلتر کالمن
    توسط namdar soleiman netaj در انجمن سيستم هاي كنترلي
    پاسخ: 0
    آخرين نوشته: 2015/02/09, 21:37
  3. پاسخ: 3
    آخرين نوشته: 2013/01/19, 12:24
  4. اين برنامه چه مشکلي دارد؟
    توسط alirf در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2012/01/18, 12:09
  5. برنامه شناسایی که آیا فولدر وجود دارد یا نه.
    توسط feshwari در انجمن برنامه نويسي و اينترفيس
    پاسخ: 6
    آخرين نوشته: 2011/07/03, 18:27

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •