اطلاعیه

Collapse
No announcement yet.

state machine

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    state machine

    سلام. کسی میدونه state machine چیه و چطوری میتونه در برنامه نویسی کمک کنه؟

    #2
    پاسخ : state machine

    State Machine یک نوع سیستمه که بر اساس Status های ورودی یک خروجی میسازه یا یک عمل دیگه ای انجام میده! براساس این تعریف State machine یه نمودار از روند کلی سیستم به ما میده از مدل های ریاضی و منطقی تشکیل شده.
    یهState Machine همیشه تو یه حالت قرار داره و میتونه از حالتی به حالتی دیگه تغییر کنه و چون در حالت عملی تنها میتونه تعدادی از حالات رو پشتیبانی کنی بهش Finite State Machine میگن یا FSM.

    مثلا اگه درب جائی بازشد و اگر دزدگیر فعال بود آژیر بکشه و الی آخر.......
    از روی این نمودار شما میتونی برنامه رو یه شکل یکجا ببینی و بررسی کنی. یعنی تمام خطهای برنامه خلاصه میشه تو چندتا شکل و یک سری ارتباطات.
    مثل این :

    دیدگاه


      #3
      پاسخ : state machine

      مرسی از توضیح خوبتون... فقط میشه لطفآ یه مثال ملموس تر بزنین؟ مثلآ برای نوشتن برنامه ی روباتی که قراره یه مسیری رو بره ... به هدفش ( یه مکعب که روی هر وجهش یا صفر یا یک نوشته ) که رسید ازش یه عکس بگیره... اگر صفر بود یکش کنه اگه نه که stop کنه.. چطوری میشه state machine و بکار برد؟

      دیدگاه


        #4
        پاسخ : state machine

        با سلام

        آقا ببخشید این IAR visualSTATE هم برای این کار استفاده میشه ؟

        یه سوال دیگه ، منم متوجه نشدم چی شد ، الان با این State Machine میشه یه برنامه نوشت ؟ و اون رو مثلا روی یه میکرو پروگرام کرد ؟

        دیدگاه


          #5
          پاسخ : state machine

          نوشته اصلی توسط negin-bahadori
          مرسی از توضیح خوبتون... فقط میشه لطفآ یه مثال ملموس تر بزنین؟ مثلآ برای نوشتن برنامه ی روباتی که قراره یه مسیری رو بره ... به هدفش ( یه مکعب که روی هر وجهش یا صفر یا یک نوشته ) که رسید ازش یه عکس بگیره... اگر صفر بود یکش کنه اگه نه که stop کنه.. چطوری میشه state machine و بکار برد؟
          ببینید State Machine به دو حالت کاربرد داره یا باید با دست یا تو یه فضای گرافیکی بکشی و کل برنامه رو یکجا طراحی کنی! یا اینکه این State Machine خودش مال یک کامپایلر باشه و توی ساخت نرم افزار کمکن کنه یا اصلا برات نرم افزار و ایجاد کنه (مثل همین IAR VisualSTATE که آفا مجتبی گفت).

          تو حالت اول که خوب همه به نوعی انجام میدن یا می کشن یا تو ذهنشون ترسیم میکنن که تنها کمکی که به ما منکنه اینه که باعث میشه فرک کلی برنامه رو از اول درست طراحی کنیم و فکر همه جاشو بکنیم.
          ولی در حالت دوم که هی با نرم افزار در حال Synchronous (هماهنگ) شدنه میتونه همزمان که نمودار تغییر میکنه نرم افزار هم تغییر کنه و حتی نتیجه رو روی سخت افزار نشون بده.

          مثلآ برای نوشتن برنامه ی روباتی که قراره یه مسیری رو بره ... به هدفش ( یه مکعب که روی هر وجهش یا صفر یا یک نوشته ) که رسید ازش یه عکس بگیره... اگر صفر بود یکش کنه اگه نه که stop کنه.. چطوری میشه state machine و بکار برد؟
          اول باید بدونی که از State Machine چه انتظاری داری و یکی از دو نوع بالا رو انتخاب کنی!
          میتونی اول تمام حالت هایی (Status) که روبات ممکنه باهاش روبرو بشه در هر موقعیتو اول لیست کنی بعد یکی یکی برای اونها بک عکس العمل طراحی کنی بعد دوباره بعد از عکس العمل حالت های جدید و به همین شکل تا انتها ....
          مثلا اول روبات روشن میشه و راه اندازی می کنه قسمت های مختلف و حالا قراره یه مسیرو بره . حالت های مختلف :
          1- روبات تو مسیره ----> حرکت در جهت مسیر (بعد حات هایی که تو مسیر پیش میاد مثل پیچ به چپ و راست، انتهای مسیر ، مسیر گم میشه و ....)
          2- رویات مسیر و میبینه ولی توش نیست -----> مسلما به سمت مسیر حرکت کنه
          3- روبات مسیرو نمی بینه ----> باید مسیرو پیدا کنه

          طبق این یک نمودار ایجاد میشه که توش کلی شرط و روال داره که تو یه تیم این روالها تقسیم میشه و باز طبق این نمودار روال ها به هم مرتبط میشن.

          نوشته اصلی توسط mojtaba_led
          با سلام
          آقا ببخشید این IAR visualSTATE هم برای این کار استفاده میشه ؟
          یه سوال دیگه ، منم متوجه نشدم چی شد ، الان با این State Machine میشه یه برنامه نوشت ؟ و اون رو مثلا روی یه میکرو پروگرام کرد ؟
          با این برنامه میشه یه خروجی شبیه برنامه اصلی که میخوای ایجاد کنی تولید میکنه و کلی تو نوشتن برنامه کمکت میکنه و بقیشو میتونی با Edit کردن برنامه ایجاد شده خودت انجام بدی
          http://www.iar.com/en/Products/IAR-visualSTATE/
          اینم یه مثال ازش :

          دیدگاه


            #6
            پاسخ : state machine

            من فکر میکردم دستورهای خاصی داره مثلآ توی C.. پس یه جورائی فقط الگوریتم نویسیه...اما من هنوزم متوجه نشدم که چه ویژگی منحصر به فردی داره که همه ی برنامه نویسای حرفه ای پیشنهادش میکنن؟! من که آماتور هستم هم روی کاغذ قطعآ اول طراحی میکنم و بعد شروع میکنم به کد نویسی..

            دیدگاه


              #7
              پاسخ : state machine

              مهمترین ویژگی اون اینه که تو طراحی کمکت میکنه ! :redface: خیلی راحت تره وقتی تمام سطوح برنامه یا یک روال رو یک جا رو کاغذ میبینی.
              علاوه بر این او توی کم کردن Bug های برنامت و همچینین عکس العمل های بی معنی هم خیلی کمکت میکنه !
              می دونی باید خودت نیازشو احساس کنی وقتی 2 3 بار دیدی آخر برنامت که همچی تمومه یهو میفهمی یه چیزیو یادت رفته. با State Machine اگه اون یادت رفته باشه دیگه جلوی چشته و می فهمی ولی تو برنامه باید اول Error بده بعد کلی بگردی و Debug کنی بعد تازه پیداش کنی! قبول دارم تا حدی برای برنامه های کوچیک شاید نیاز نباشه ولی از اصول اولیه طراحیه. هم تو الکترونیک هم تو سایر علوم مخصوصا مدیریت .

              دیدگاه


                #8
                پاسخ : state machine

                جناب خوانساری عزیز

                شما الان با چه نرم افزاری برای این State Machine کار میکنید ؟ میشه ، یه استارتی در رابطه با آموزشش بزنید تا ماهم راه بیوفتبم ؟

                ممنون

                دیدگاه


                  #9
                  پاسخ : state machine

                  نوشته اصلی توسط mojtaba_led
                  جناب خوانساری عزیز
                  شما الان با چه نرم افزاری برای این State Machine کار میکنید ؟ میشه ، یه استارتی در رابطه با آموزشش بزنید تا ماهم راه بیوفتبم ؟
                  ممنون
                  دوست عزیز من خودم چون اکثر پروژه هام مدولاره زیاد State Machine نرم افزاری به من کمکی نمی کنه. از من میشنوی دنبال State Machine نرم افزاری نباش چون ممکنه که از نرم افزار نویسی عمقی دور بشی ! تقرسبا مثل تفاوت Bascom می مونه و CodeVision ! امیدوارم منظورم و خوب گرفته باشی !
                  State Machine رو اکثرا رو کاغذ میکشن و تحلیل میکنن ! (بیشتر هم تو کار تیمی)


                  ولی اگه مصری رو مدل نرم افزاریش، همونی که خودت گفتی تنها گزینته فعلا ! (پیشنهاد میکنم تنها باهاش آشنا شو کاربرد اونطوری برات نخواهد داشت )

                  دیدگاه


                    #10
                    پاسخ : state machine

                    ممنون از همه درباره توضیحات درباره State Machine
                    من با توجه به توضیحاتی که در این باره دادین
                    یک نرم افزار پیشنهاد می کنم البته به کار برنامه نویسی میکرو نمی یاد
                    برای برنامه نویسی lموبایل تحت جاوا است و الگوریتم آن براساس State Machine که توضیح دادین است.اسمش netbeans است
                    هم کتاب و هم جزوه اینترنتیش به راحتی یافت می شود.
                    شمای برنامه netbeans

                    دیدگاه

                    لطفا صبر کنید...
                    X