۰
subtitle
ارسال: #۱
  
تشخیص خطاهای وابسته به متن در برنامه
خطاهای وابسته به متن زیر توسط چه قسمتی و در چه زمانی تشخیص داده میشود؟
۱/ خارج از محدوده بودن اندیس آرایه
۲/دسترسی به آرایه دو بعدی با ۳ اندیس
۳/اعلان دوباره یک شناسه: مثلا int x رو داریم و دوباره Char x رو تعریف کنیم.
۴/دسترسی به یک شناسه خارج از بلوک آن
اولی رو سیستم عامل نمیتونه تشخیص بده و توسط کدهایی که توسط خود کامپایلر تولید میشه کشف میشه ولی زمانش رو نمیدونم موقع اجرا هست یا کامپایل.
۲و۳و۴هم به نظر میرسه باید توسط تحلیلگر معنایی در زمان کامپایل باشه.
نظر شما چیه؟
۱/ خارج از محدوده بودن اندیس آرایه
۲/دسترسی به آرایه دو بعدی با ۳ اندیس
۳/اعلان دوباره یک شناسه: مثلا int x رو داریم و دوباره Char x رو تعریف کنیم.
۴/دسترسی به یک شناسه خارج از بلوک آن
اولی رو سیستم عامل نمیتونه تشخیص بده و توسط کدهایی که توسط خود کامپایلر تولید میشه کشف میشه ولی زمانش رو نمیدونم موقع اجرا هست یا کامپایل.
۲و۳و۴هم به نظر میرسه باید توسط تحلیلگر معنایی در زمان کامپایل باشه.
نظر شما چیه؟
۰
ارسال: #۲
  
RE: تشخیص خطاهای وابسته به متن در برنامه
(۲۸ دى ۱۳۸۹ ۱۲:۲۶ ق.ظ)sepid نوشته شده توسط: خطاهای وابسته به متن زیر توسط چه قسمتی و در چه زمانی تشخیص داده میشود؟
۱/ خارج از محدوده بودن اندیس آرایه
۲/دسترسی به آرایه دو بعدی با ۳ اندیس
۳/اعلان دوباره یک شناسه: مثلا int x رو داریم و دوباره Char x رو تعریف کنیم.
۴/دسترسی به یک شناسه خارج از بلوک آن
اولی رو سیستم عامل نمیتونه تشخیص بده و توسط کدهایی که توسط خود کامپایلر تولید میشه کشف میشه ولی زمانش رو نمیدونم موقع اجرا هست یا کامپایل.
۲و۳و۴هم به نظر میرسه باید توسط تحلیلگر معنایی در زمان کامپایل باشه.
نظر شما چیه؟
اولی هم توسط تحلیلگر معنایی تشخیص داده می شه و قطعا در زمان اجرا. چون زمان ترجمه که مشخص نیست محدوده ارایه و اندیسها چی هست و کل کنترلها در زمان اجرا انجام می شه.
در مورد ۲ و ۳و ۴ باهات موافقم گمونم حق با تو باشه... اما مطمئن نیستم
۰
ارسال: #۳
  
تشخیص خطاهای وابسته به متن در برنامه
به نظر من قسمت چهار سوال زمان اجرا کشف میشه
به این دلیل که به مدیریت حافظه میتونه ربط داشته باشه
خودتون قضاوت کنید !
البته اطلاعات دامنه متغییرها در جدول نمادها ذخیره میشه و میتونه زمان کامپایل هم کشف بشه
به این دلیل که به مدیریت حافظه میتونه ربط داشته باشه
خودتون قضاوت کنید !
البته اطلاعات دامنه متغییرها در جدول نمادها ذخیره میشه و میتونه زمان کامپایل هم کشف بشه
۰
ارسال: #۴
  
RE: تشخیص خطاهای وابسته به متن در برنامه
بچهها یک سوال مرتبط با موضوع:
چرا برای این سوال که برای سال ۸۲ هست ننوشته در زمان اجرا توسط تجزیه کننده مفهومی و نوشته توسط خود برنامه حاوی دستورات فوق.
چه فرقی بینشون هست؟
چرا برای این سوال که برای سال ۸۲ هست ننوشته در زمان اجرا توسط تجزیه کننده مفهومی و نوشته توسط خود برنامه حاوی دستورات فوق.
چه فرقی بینشون هست؟
۰
ارسال: #۵
  
تشخیص خطاهای وابسته به متن در برنامه
همه موارد ۱و۳ و۴ جزو Semantic analysis هستند.
مورد ۱ تنها در زمان اجرا قابل کشف هست. دلیلش هم واضح هست flow برنامه مشخص می کنه که کی index چه مقداری می گیره. و میشه گفت توسط کد هایی که کامپایلر در لابه لای کد مقصد قرار میده کشف میشه.
مورد ۴و۲و۳ در مان کامپایل قابل کشف هست.
در مورد سوال سال ۸۲:
گزینه ۴ درست هست( به نظر من!). فرق بین گزینه ۳ و۴ اینه که گزینه ۳ میگه در زمان کامپایل خطا تشخیص داده میشه که این درست نیست. وقتی کامپایلر به چنین مواردی بر می خوره که اطلاع کافی برای بررسی نداشته باشه کد هایی برای بررسی در زمان اجرا تولید می کنه که این کدها در زمان اجرا بررسی می کنن که خطایی رخ نداده باشه.
مورد ۱ تنها در زمان اجرا قابل کشف هست. دلیلش هم واضح هست flow برنامه مشخص می کنه که کی index چه مقداری می گیره. و میشه گفت توسط کد هایی که کامپایلر در لابه لای کد مقصد قرار میده کشف میشه.
مورد ۴و۲و۳ در مان کامپایل قابل کشف هست.
در مورد سوال سال ۸۲:
گزینه ۴ درست هست( به نظر من!). فرق بین گزینه ۳ و۴ اینه که گزینه ۳ میگه در زمان کامپایل خطا تشخیص داده میشه که این درست نیست. وقتی کامپایلر به چنین مواردی بر می خوره که اطلاع کافی برای بررسی نداشته باشه کد هایی برای بررسی در زمان اجرا تولید می کنه که این کدها در زمان اجرا بررسی می کنن که خطایی رخ نداده باشه.
ارسال: #۶
  
RE: تشخیص خطاهای وابسته به متن در برنامه
(۳۰ دى ۱۳۸۹ ۰۱:۲۴ ق.ظ)_Milad_ نوشته شده توسط: همه موارد ۱و۳ و۴ جزو Semantic analysis هستند.
مورد ۱ تنها در زمان اجرا قابل کشف هست. دلیلش هم واضح هست flow برنامه مشخص می کنه که کی index چه مقداری می گیره. و میشه گفت توسط کد هایی که کامپایلر در لابه لای کد مقصد قرار میده کشف میشه.
مورد ۴و۲و۳ در مان کامپایل قابل کشف هست.
در مورد سوال سال ۸۲:
گزینه ۴ درست هست( به نظر من!). فرق بین گزینه ۳ و۴ اینه که گزینه ۳ میگه در زمان کامپایل خطا تشخیص داده میشه که این درست نیست. وقتی کامپایلر به چنین مواردی بر می خوره که اطلاع کافی برای بررسی نداشته باشه کد هایی برای بررسی در زمان اجرا تولید می کنه که این کدها در زمان اجرا بررسی می کنن که خطایی رخ نداده باشه.
درسته.
در واقع سوال من اینجاست که وقتی گفته میشه کامپایلر کد میزاره، منظور از کامپایلر کدوم قسمتش هست؟
خوب کامپایلراز قسمتهایی مختلفی تشکیل شده که ما همه رو میشناسیم.
آیا تحلیلگر معنایی این کار رو انجام میده؟
۰
ارسال: #۷
  
تشخیص خطاهای وابسته به متن در برنامه
کامپایلر در واقع کدهایی شبیه try و catch داخل کد شما میگذاره. البته این کار هزینه سربار زیادی داره و برخی اوقات کامپایلرها بیخیالش میشن (مثل کامپایلرهای ++c)
در پاسخ دادن به این سوالات زمان bind رو در نظر داشته باشید. اعمالی که زمان bind اونها در زمان اجرای برنامه است رو تحلیلگر معنایی کاریش نمیتونه بکنه.
در پاسخ دادن به این سوالات زمان bind رو در نظر داشته باشید. اعمالی که زمان bind اونها در زمان اجرای برنامه است رو تحلیلگر معنایی کاریش نمیتونه بکنه.
۰
ارسال: #۸
  
تشخیص خطاهای وابسته به متن در برنامه
خطای خارج از محدوده بودن اندیس آرایه هم در زمان اجرا و هم در زمان کامپایل قابل شناسایی است
اگر مثلاً [۱۱] a در برنامه داشته باشیم و کل آرایه ۱۰ عنصر داشته باشد این در زمان کامپایل شناسایی میشود
ولی اگر مثلاً i=11 باشد و داشته باشیم a[i ] آنگاه این خطا در زمان اجرا کشف میشود.
در مورد تست هم گزینه ۴ درست است
اگر مثلاً [۱۱] a در برنامه داشته باشیم و کل آرایه ۱۰ عنصر داشته باشد این در زمان کامپایل شناسایی میشود
ولی اگر مثلاً i=11 باشد و داشته باشیم a[i ] آنگاه این خطا در زمان اجرا کشف میشود.
در مورد تست هم گزینه ۴ درست است
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close