از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - نسخهی قابل چاپ |
از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 18 شهریور ۱۳۹۵ ۱۲:۳۱ ب.ظ
با سلام. در نظر داریم اگر دوستان حمایت کنن از ۲۹شهریور هر روز یک سوال از کنکور سراسری یا سوالات تالیفی و سوالات آزاد خوب رو بررسی کنیم. Cool به این صورت که اول هر هفته ۷ تا سوال قرار داده میشه و دوستان فرصت دارند جواب سوالاتی که می دونند رو ظرف یک هفته ارسال کنند. اما ما هر شب فقط یک سوال رو بررسی می کنیم. لازم به ذکر است پست هایی که پاسخ سوال نباشند حذف خواهند شد. |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 25 شهریور ۱۳۹۵ ۰۲:۴۲ ب.ظ
. ۷سوال هفته ی اول در روز ۲۸ام در تاپیک قرار خواهند گرفت. .هر سوالی که پاسخ آن را به صورت کامل قرار دهید امتیاز مثبت دارد. .مهلت حل سوال اول تا ساعت ۱۱شب ۲۹ام و سایر سوالات به همین ترتیب خواهد بود. البته زودتر حل کنید که چه بهتر. .ترجیحا جواب سوالات را به صورت تایپ شده بفرستید. |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 28 شهریور ۱۳۹۵ ۰۷:۵۶ ب.ظ
هفته ی اول / روز اول / تمرین۱ / مبحث: مقدمات کامپایلر برای حل هر سوال نهایتا یک روز فرصت دارید. پاسخ تمامی سوالات هر تمرین را در قالب یک پست ارسال نمایید. ۱-استفاده از = به جای == در شرط زبان C، چه نوع خطایی محسوب می شود؟ [سراسری ۹۲] ۱) ساختاری (Syntactic) ۲) معنایی (Semantic) ۳) منطقی (Logical) ۴) لغوی (Lexical) ۲- خطاهای زیر در برنامه های یک زبان برنامه سازی متعارف مفروض است. کدام دسته از خطاها توسط پارسر قابل کشف هستند؟ [سراسری ۹۳] a) نابرابری تعداد اندیس های یک آرایه با تعداد ابعاد تعریف شده در آرایه b) ناهمخوانی متغیر های A و B در عبارت A+B c) نابرابری تعداد پارامترهای فراخوانی یک تابع، با تعداد پارامترهای تعریف شده برای آن d) ناهمخوانی نوع یک پارامتر در فراخوانی یک تابع، با نوع تعریف شده ی آن در تابع ۱) a و c ۲) b و d ۳) همه ی موارد ۴) هیچ کدام. ۳- مزیت کد میانی (Intermediate Code) در کامپایلر کدام است؟ [سراسری ۷۹] ۱- سهولت کشف خطای برنامه ۲- سهولت تعمیر و نگهاداری کامپایلر ۳- سرعت کد اجرایی برنامه ۴- کاهش حافظه ی مورد نیاز در زمان اجرا |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 31 شهریور ۱۳۹۵ ۱۲:۲۶ ق.ظ
هفته ی اول / تمرین۱ / مبحث: مقدمات کامپایلر گویا دوستان امکان ارسال پست ندارن. انشاالله مشکل حل میشه زود. پاسخ سوال اول: گزینه ی ۳ از نظر لغوی: هیچ مشکلی نداره. چون = هم یک توکن از نوع عملگر هست و کاملا درست هست. از نظر نحوی: توی زبان C بر اساس قاعده ی تعامد که وجود داره (یعنی امکان ترکیب ویژگی های زبان با همدیگه) توی شرط if میتونه عملگر انتصاب هم بیاد. پس یک چنین ساختاری کاملاََ قابل قبول هست و از نظر نحوی مشکلی نداره. از نظر معنایی هم با توجه به توضیحی که در بالا دادیم کاملا معنای درستی داره. اما از این نظر که ما اشتباهاََ از = به جای == استفاده کردیم یعنی از نظر منطقی مشکل داره و هدف ما انتساب نبوده. کامپایلر این رو خطا نمیگیره. (طبق پوران: ممکن هست که یک هشدار فقط بده) توجه: توی بعضی از زبان ها مثل پاسکال توی شرط if امکان استفاده از عملگر انتساب رو نداریم و اگه به کار برده بشه خطای نحوی محسوب میشه چون چنین ساختاری اشتباه هست در پاسکال. (کلاََ زبان C از زبان پاسکال متعامدتر هست) [tex]if(x=y)\{...\}[/tex] به این معنا هست که y رو در x بریزه و اگه مقدارش ۰ نبود (شرط if غیر صفر بود) اون دستورالعمل بعدش رو اجرا کنه. این درست هست توی زبان C. پاسخ سوال دوم: گزینه ی ۴ پارسر تحلیل گر نحوی است که قادر است خطاهای نحوی موجود در برنامه را تشخیص دهد. a: نابرابری تعداد اندیس های یک آرایه با تعداد تعریف شده خطای معنایی است که در زمان کامپایل مشخص می شود. b: دو عملوند که type های گوناگونی دارند نمی توانند با هم جمع شوند و این از نظر معنایی خطا دارد. چون از نظر ساختاری عمل جمع و کل دستور درست می باشد. این خطا توسط پارسر کشف نمی شود. بلکه توسط کامپایلر در کنترل معنایی ایستا در compile time (و نه زمان اجرا) مشخص می شود. c: نابرابری تعداد پارامترهای فراخوانی یک تابع با تعداد پارامترهای تعریف شده برای آن نیز خطای معنایی است که به صورت ایستا( compile time) مشخص می شود. d: این مورد نیز کنترل نوع متغیر هست که خطای نحوی حساب نمی شود چون از لحاظ ساختاری مشکل ندارد و معنایش غلط است. پس توسط پارسر مشخص نمی شود. هر چهار گزینه ی فوق خطای معنایی بوده و توسط کامپایلر به صورت ایستا (یعنی در زمان اجرا نه) کشف می شوند. (کلا کنترل نوع کار پیچیده ای است که برای پیاده سازی آن نیاز به زبان حساس به متن است. در حالی که پارسر بر اساس زبان مستقل از متن نوشته شده است. هیچ کدام. مهلت ارسال پاسخ سوال سوم: ۱۱شب ۲ مهر |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - mmm1374 - 04 مهر ۱۳۹۵ ۰۹:۰۸ ب.ظ
پاسخ سوال سوم ۳: گزینه ی ۲ گر چه روش ها و تکنیک های زیادی رو میتونیم بر روی کد میانی انجام بدیم از قبیل سرعت کد اجرایی برنامه و کاهش حافظه ی مورد نیاز در زمان اجرا ولی مهمترین مزیت اون میتونیم بگیم تعمیر و نگهداری کامپایلر هستش که باعث دوام کد سطح میانی میشه |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 11 مهر ۱۳۹۵ ۰۹:۳۹ ب.ظ
با تشکر از دوستانی که به تمرین قبل پاسخ دادند. امتیاز این دوستان در پست اول قرار داده شد. تمرینات مربوط به ۱۲مهر تا ۱۶مهر ۹۵ مبحث: فصل اول، مقدمات، تحلیل نحوی مهلت ارسال پاسخ هر تمرین ۱روز سوال۳:کدام یک از گزاره های زیر در مورد زبان های برنامه نویسی C و پاسکال صحیح است؟ [سراسری ۸۴] ۱) هر دو از نوع حساس به متن هستند و به کمک گرامرهای حساس به متن تعریف شده اند. ۲) هر دو از نوع حساس به متن هستند ولی به کمک گرامرهای مستقل از متن تعریف شده اند. ۳) هر دو از نوع مستقل از متن بوده و به همین دلیل بوسیله ی گرامر های مستقل از متن تعریف شده اند. ۴) زبان پاسکال از نوع مستقل از متن و زبان C از نوع حساس به متن است و هر کدام توسط گرامری از نوع مربوطه تعریف شده اند. |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 12 مهر ۱۳۹۵ ۱۰:۲۷ ب.ظ
تمرین سری۲-سوال اول سوال۱: می دانیم که هر زیربرنامه می تواند دارای تعدادی پارامتر باشد و هنگام فراخوانی زیربرنامه تعداد آرگومان ها باید با تعداد پارامتر ها مطابقت داشته باشد. اگر در برنامه ای این مطابقت رعایت نشده باشد، خطای مربوطه در کدام یک از مراحل ردیابی می شود ؟ [سراسری ۸۴] ۱) زمان اجرا (Run Time) ۲) تحلیل نحوی (Syntax Analysis) ۳) تحلیل معنایی (Semantic Analysis) ۴) تولید کد (Code Generation) پاسخ سوال اول-گزینه ی ۳ کنترل تعداد و تطابق پارامتر های ظاهری و پارامتر های واقعی توابع وظیفه ی تحلیل گر معنایی است. در زمان تحلیل نحوی اگر تعداد پارامترهای واقعی و ظاهری یکسان نباشد این خطا، خطای نحوی نیست. چون ساختار تعریف درست است. پیش از زمان اجرا و در زمان کامپایل توسط تحلیل گر معنایی تعداد پارامترهای واقعی و ظاهری توابع کنترل می شود. در زمان تولید کد هم که کامپایلر این امکان را ندارد که چنین چیزی را تشخیص دهد. |
RE: از ۲۹شهریور هر روز بررسی یک تست کنکور سراسری/تالیفی کامپایلر - Pure Liveliness - 14 مهر ۱۳۹۵ ۰۱:۳۹ ق.ظ
تمرین سری دوم-سوال۲ سوال۲: کدام یک از دلایل زیر موجب می شوند که کامپایلر مجبور به داشتن بیشتر از یک گذار(Pass) باشد؟ [سراسری ۷۲] ۱) کمبود حافظه ی اصلی در کامپیوتر میزبان کامپایلر ۲) مجاز بودن برنامه ساز به آوردن دستورات اعلانی (Declaration) پس از دستورات اجرایی در برنامه ی ورودی کامپایلر ۳) بهینه سازی (Optimization) برنامه های ورودی توسط کامپایلر ۴) هر سه مورد ۱ و ۲ و ۳ پاسخ سوال۲-گزینه ی ۳برای اعمال بهینه سازی نیاز است که کامپایلر بیش از یک گذر داشته باشد. توضیح بیشتر: به هر بار خواندن از ابتدای برنامه ی ورودی تا انتهای آن یک گذر گفته می شود. فایل ورودی می تواند فایل برنامه ی منبع(عموماََ به زبان سطح بالا) یا کد میانی باشد. برای ایجاد تبدیل های بهینه سازی معمولا برنامه ی میانی از ابتدا تا انتها خوانده و تحلیل می شود، سپس بر اساس نتیجه ای که در این گذر از تحلیل به دست آمد، تبدیلات بهینه سازی روی آن صورت می گیرد. برای تحلیل سایر گزینه ها به معنای گذر توجه شود. |