تالار گفتمان مانشت
روال های مفهومی - نسخه‌ی قابل چاپ

روال های مفهومی - zibaziba - 24 دى ۱۳۹۱ ۰۵:۲۷ ب.ظ

سلام.سوال ۹۰ تو ۲۵% چهارم پارسه از کجا فهمید ۴ تا روال لازم داره؟اگه کسی بلده لطفا توضیح بده
stmt-->for (expr;expr;expr)stmt

روال های مفهومی - azad_ahmadi - 25 دى ۱۳۹۱ ۰۱:۴۹ ب.ظ

سلام.
اگه سوال رو کامل بگذارید بهتره.
موفق باشید.

RE: روال های مفهومی - zibaziba - 26 دى ۱۳۹۱ ۰۱:۳۰ ق.ظ

متن کامل سوال:
در صورتی که بخواهیم با استفاده از تجزیه LR1 برای جمله تکرار for زیر در زبان C در حین تجزیه در طی یک گذر کد سه آدرسه تولید کنیم به حداقل چند قاعده تولید که در مجموع معادل این قاعده تولید است،نیاز است؟
stmt-->for(expr;expr;expr)stmt
۱- ۳
۲- ۴
۳- ۵
۴- ۱
جواب پارسه:گزینه ۲- با توجه به نحوه عملکرد حلقه for حداقل ۴ روال مفهومی یا به عبارتی نماد کنشی لازم است.

روال های مفهومی - azad_ahmadi - 26 دى ۱۳۹۱ ۰۲:۲۵ ق.ظ

من اینطور به نظرم میرسه، البته شاید درست نباشه، دوستان دیگه هم نظر بدن. ممنون.

برای تولید کد ۳ آدرسه حلقه for کارهای زیر لازمه :
۱ - ابتدا مقدار اولیه باید در یک مکان از حافظه ذخیره بشه.
۲ - شرط حلقه تست بشه که از مقدار اولیه کوچکتر باشه.
۳ - اگه شرط درست نبود، به بعد از حلقه for مراجعه کنه (پرش شرطی)
(اگه شرط درست باشه، محتویات حلقه رو اجرا کنه. اجرای اونا روال مفهومی حساب نمیشه چون سوال به این قسمت کار نداره).
۴ - یکی به مقدار اولیه اضافه میکنه (مثلا درصورتی که گام حرکت ++ باشه).
۵ - یک پرش بدون شرط به ابتدای حلقه برای تست شرط حلقه. (این مرحله بعد از اجرای محتویات انجام میشه).

این کمترین روال مفهومی هست که بکار برده شده، مطمئنید که ۴تاست؟

RE: روال های مفهومی - mahsa.tsi - 26 دى ۱۳۹۱ ۰۶:۱۳ ب.ظ

(۲۶ دى ۱۳۹۱ ۰۲:۲۵ ق.ظ)azad_ahmadi نوشته شده توسط:  من اینطور به نظرم میرسه، البته شاید درست نباشه، دوستان دیگه هم نظر بدن. ممنون.

برای تولید کد ۳ آدرسه حلقه for کارهای زیر لازمه :
۱ - ابتدا مقدار اولیه باید در یک مکان از حافظه ذخیره بشه.
۲ - شرط حلقه تست بشه که از مقدار اولیه کوچکتر باشه.
۳ - اگه شرط درست نبود، به بعد از حلقه for مراجعه کنه (پرش شرطی)
(اگه شرط درست باشه، محتویات حلقه رو اجرا کنه. اجرای اونا روال مفهومی حساب نمیشه چون سوال به این قسمت کار نداره).
۴ - یکی به مقدار اولیه اضافه میکنه (مثلا درصورتی که گام حرکت ++ باشه).
۵ - یک پرش بدون شرط به ابتدای حلقه برای تست شرط حلقه. (این مرحله بعد از اجرای محتویات انجام میشه).

این کمترین روال مفهومی هست که بکار برده شده، مطمئنید که ۴تاست؟

سلام
فکر می کنم قسمت ۲ و ۳ یکی باشن.بنابراین همون ۴ درست میشه.نه؟

روال های مفهومی - azad_ahmadi - 27 دى ۱۳۹۱ ۰۱:۴۶ ق.ظ

اما باید شرط درست بودن هم در یک مکان حافظه ذخیره بشه، و بعد اگه درست باشه ادامه بده.
این چیزی که من می گم براساس کتاب آل شیخ هست، اونجا یک حلقه for رو بررسی کرده، وحداقل ۵ روال مفهومی براش نوشته. تو قسمت ۲، منظور این هست که نتیجه شرط حلقه در یک مکان حافظه ذخیره بشه، اما قسمت ۲ میگه که اون شرط رو که در اون مکان از حافظه قرار داره، بررسی کنه (انشعاب شرطی) که اگه اشتباه بود پرش کنه به بعد از for.
حالا دوستان اگه اطلاع بیشتری دارن، ممنون میشیم راهنمایی کنید.

روال های مفهومی - zibaziba - 27 دى ۱۳۹۱ ۰۸:۲۰ ب.ظ

اگه به جای درست بودن شرط بیایم false بودن رو چک کنیم تعدادش میشه ۴ تا؟

RE: روال های مفهومی - StudentSE - 28 دى ۱۳۹۱ ۱۱:۴۳ ق.ظ

اگه فقط درست نبودن شرط رو بررسی کنیم و بفرستیم به بیرون حلقه میشه ۴تا.
اگه شرط برقرار باشه خودش وارد حلقه میشه.