نمایش نتایج 1 تا 30 از 30

نام تاپیک: هوش مصنوعی در برنامه چت با روبات

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    نقل قول نوشته شده توسط quiet_programmer مشاهده تاپیک
    بله دقیقا. ببین فکر کنم اگه اول تو رو با عبارات منظم آشنا کنم بد نیست و میتونه کمک حالت باشه.

    (k)+(h)+(o)+(b)+(i){cout<<"Khobi";}
    این یه عبارت منظمه که میگه اول K بیاد اون علامت + مشخص میکنه که این کاراکتر h یک یا بیشتر بار میتونه تکرار بشه. بعد h هم به همین ترتیب یعنی اصل کاریه اون علامت +ه. و الی آخر
    پس اگه بین o و b یه o دیگه اضافه کنی یعنی بعد o اول حتما باید یه o دیگه هم بیاد.
    در نهایت اگه اون عبارت منظم با رشته ی ورودی مطابقت کرد اونوقت دستور Cout<<"Khobi" اجرا میشه.

    ببین با عبارات منظم میشه هر رشته ای که مد نظرت هست رو تولید کنی.
    علاوه بر علامت + که معنی حداقل یک میده علامتهای دیگه ای هم داریم که معانی مختلفی میده. مثلا اگه بعد از یه کاراکتر علامت * بزاری یعنی اینکه اون کاراکتر میتونه اصلا تو رشته ی ورودی وجود نداشته باشه یا به تعداد بینهایت بار تکرار بشه. یا علامت ? یعنی وجود اون کاراکتر اخیاریه یعنی هم میتونه نیاد و اگر هم میاد به تعداد یکبار بیاد و ...

    هرجا که نوشتم کاراکتر میتونه بجاش رشته هم قرار بدی مثلا

    (ID)*23
    این عبارت با رشته های زیر مطابقت میکنه.

    23
    ID23
    IDID23
    IDIDID23
    IDIDIDID....23

    امیدوارم که متوجه شده باشی.

    هرطور که عبارت منظم منویسی اون شکلی هم جواب میگیری

    اگه تو عبارات منظم مشکل داشته کتاب نظریه زبانها و ماشین (پیتر لینز) رو مطالعه کن.
    بازم اگه سوالی داشتی بپرس تا اگه سوادم قد داد جواب بدم.
    دوست عزیز واقعا ممنون که راهنمایی کردی , امکانش هست یه مثال کوچولو واسه ویژوال بزنی یا راهنمایی کنی چطور میتونم از عبارات منظم تو ویژوال استفاده کنم
    ممنون /

  2. #2
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    فقط قبل از اینکه این مطلب رو بخونی اون مطلبی که قبلا نوشتم رو بخون چون خط اول رو ویرایش کردم.

    ببین تو از عبارات منظم تو هیچ کدوم از زبانها نمیتونی استفاده کنی. فقط باید عبارات منظم رو داخل یه ویرایشگر متنی بنویسی بعد بدی به ابزار Lex تا کد رو تولید کنه. همونطور که قبلا هم گفته بودم از ابزار Lex ورژنهای مختلفی وجود داره. به این شکل که یکی از این ابزارها کد c تولید میکنه یکی کد C#‎ تولید میکنه یکی جاوا تولید میکنه و الی آخر. ولی دقیقا مطمئن نیستم که ابزار Lex برای تولید کد vb6 وجود داره یا نه. ولی VB.Net هست.

    خوب ولی اگه این ابزار برای تولید کد vb6 وجود نداشته باشه باید به یکی از دو روش زیر استفاده کنی

    1. اينکه بياي خودت براي کليه کليدها يه عبارت منظم بنويسي و بعد دياگرام بکشي براش وبعد با استفاده از وبي اون ديگرام رو تبديل به کد کني. (کار آسونيه فقط براي کليدهاي زياد واقعا زمانبره).
    2. اين روش رو من پيشنهاد ميکنم. برنامه CPP رو طوري بنويسي که رشته ي ورودي رو به صورت پارامتر بخونه و رشته مورد نظر رو تو خروجي چاپ کنه. بعد از اين برنامه يه فايل exe توليد کني. اونوقت ميتوني از اين فايل تو برنامه وبي استفاده کني.

    مثلا: اگه فايل exe تو اسم Lexer رو داشته باشه با اجرا به صورت:

    Lexer.exe "Khoooooobiiiiiii"
    تو خروجي چي چاپ ميکنه؟ Khobi

    اونوقت مياي تو برنامه VB اين فايل رو به صورت زير اجرا ميکني.
    shell("Lexer.exe "+""""+SString+""""+" >C:\1.txt",VBHide)
    SString همون کليديه که کاربر وارد کرده. پس اگه کاربر Khoooooooooobbbbbbbbbiiiiiii رو وارد کرده باشه با اجرا به صورت کد بالا تو زبان vb کليد Khobi ميره تو فايل c:\1.txt. بعد ديگه خود بخوان شرح اين ماجرا

    باز اگه خواستی بگو در مورد روش اول و روش دوم توضیح بدم
    آخرین ویرایش به وسیله quiet_programmer : جمعه 01 بهمن 1389 در 18:19 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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