تالار گفتمان مانشت

نسخه‌ی کامل: سوال از خطاها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
نمیدونم سوال زیر جز سوالهای کامپایلر یا برنامه سازی.... به هر حال ممنون میشم جواب سوال رو بدین:

استفاده از + به جای = در عبارت زیر، در زبان C چه نوع خطایی محسوب می شود؟
;a + b-c


۱) نحوی(زمان کامپایل)
۲) ازمون نوع (زمان اجرا)
۳) معنایی(زمان کامپایل)
۴) منطقی(زمان اجرا)
به نظرم گزینه 1 درسته
اگه درست میگم که بگید تا تو همین پست توضیحات رو بنویسم
اگه نه هم که هیچی Undecided
(16 بهمن 1392 11:33 ب.ظ)hosshah نوشته شده توسط: [ -> ]به نظرم گزینه ۱ درسته
اگه درست میگم که بگید تا تو همین پست توضیحات رو بنویسم
اگه نه هم که هیچی Undecided
نظر خودمم روی گزینه یک هست به علت اینکه درخت پارس می تونه متوجه بشه که به جای مساوی به اضافه اومده! اما با توجه به سوال پارسال شک کردم! که اینجا خطای منطقی نیست؟!!
(16 بهمن 1392 05:33 ب.ظ)fulgent نوشته شده توسط: [ -> ]سلام
نمیدونم سوال زیر جز سوالهای کامپایلر یا برنامه سازی.... به هر حال ممنون میشم جواب سوال رو بدین:

استفاده از + به جای = در عبارت زیر، در زبان C چه نوع خطایی محسوب می شود؟
;a + b-c


۱) نحوی(زمان کامپایل)
۲) ازمون نوع (زمان اجرا)
۳) معنایی(زمان کامپایل)
۴) منطقی(زمان اجرا)

سوال مربوط ب درس برنامه سازی هست و احتمال زیاد گزینه 1.
(16 بهمن 1392 11:36 ب.ظ)fulgent نوشته شده توسط: [ -> ]نظر خودمم روی گزینه یک هست به علت اینکه درخت پارس می تونه متوجه بشه که به جای مساوی به اضافه اومده! اما با توجه به سوال پارسال شک کردم! که اینجا خطای منطقی نیست؟!!

Dodgy
البته سوال پارسال رو من از روی تجربه پاسخ دادم که درست بود اما این بر اساس دانشه و اطمینان زیادی نداره Big Grin
برای کجاست این سوال
اگر همه با گزینه 1 موافق هستید پس یعنی میشه گفت سوالی هم که پارسال داده بودند در مورد == در شرط If ، اگر در گزینه ها خطای نحوی داشت جواب خطای نحوی می شد؟
اگر بله، یعنی نحوی نتونسته بود این خطا رو بگیره که در زمان اجرا به عنوان خطای منطقی مطرح شد؟
اگر خیر، چرا؟ و چطور این خطای نحوی میشه و اون نمیشه؟
دچار تناقض عجیب غریبی شدم!!!Undecided
نحوی که قطعا نبود ولی حالا معنایی رو نمیدونم چجور نقض کنم
چون ما میتونیم با استفاده از پارسری که داریم a=b رو هم کاهش بدیم
یعنی این هم یک عبارت مجاز توی زبانمون هست
(16 بهمن 1392 11:45 ب.ظ)fulgent نوشته شده توسط: [ -> ]اگر همه با گزینه ۱ موافق هستید پس یعنی میشه گفت سوالی هم که پارسال داده بودند در مورد == در شرط If ، اگر در گزینه ها خطای نحوی داشت جواب خطای نحوی می شد؟
اگر بله، یعنی نحوی نتونسته بود این خطا رو بگیره که در زمان اجرا به عنوان خطای منطقی مطرح شد؟
اگر خیر، چرا؟ و چطور این خطای نحوی میشه و اون نمیشه؟
دچار تناقض عجیب غریبی شدم!!!Undecided

سوال پارسال رو کسایی ک ب برنامه سازی C++ و ساختمان مسلط بودن خیلی راحت می تونستن تشخیص بدن ک خطای منطقی هست.
البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای معنایی تلقی بشه.
این سوال به نظرم 1 میشه. همون تحلیل خودت به نظرم درسته. اساسا ربطی هم به خطاهای معنایی نداره.
ولی سوالت در مورد = و == قدیما اینجا توضیح داده بودم :
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
(17 بهمن 1392 12:07 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای نحوی تلقی بشه.

در اون صورت هم من میگم خطا نحوی نبود بلکه خطای مفهومی یا معنایی بود
(17 بهمن 1392 12:10 ق.ظ)hosshah نوشته شده توسط: [ -> ]
(17 بهمن 1392 12:07 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای معنایی تلقی بشه.

در اون صورت هم من میگم خطا نحوی نبود بلکه خطای مفهومی یا معنایی بود

مرسی___اشتباه تایپی بود . اصلاح شدSmile
(17 بهمن 1392 12:14 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]مرسی___اشتباه تایپی بود . اصلاح شدSmile

قربون تو Wink
من رشتم کامپیوتر نیست ولی امیدوارم کمکتون کرده باشم

خطای syntax اگه کد برنامه به صورت گرامری اشتباه باشه این خطا رو داریم
جا 3=x+1 بنویسیم 3+1+x

خطای logical برنامه اجرا میشه ولی جواب مورد نظر بدست نمیاد یعنی موقعه کامپایل مشخص نیست
جا 3=x+1 بنویسیم 3=x*1

خطای run time برنامه کامپایل میشه ولی خطای رخ میده و برنامه متوقف میشه مثله اینکه یه جا تقسم صفر بنویسیم

این خطای که شما میگین Syntax هست خطای معنایی نحوی قاعدی ... گزینه دو جواب میشه
سوال برنامه سازی فصل 3هست
+ برا زمان کامپایله؛اگر میگفت کامپایل؛ میشد ترجمه اما الان گفته زمان کامپایل ینی موقع پیاده سازی؛میدونیم + برا پیاده سازیه.پس تا اینجا 2و 4 حذف ؛بعد چون ساختار برنامه رو عوض کردیم خطای syntax یا همون نحوی میده گزینه 1درسته
در کمال شگفتی الان با یه کتاب چک کردم! گفته عبارت مثلا ;i+j طبق تعریف نحو زبان C یک عبارت درست است. و اساسا این خطای منطقی میشه.
یادم نمیاد تا حالا همچین کدی نوشته باشم ، برلندم باز نشد کدشو بزنم. ولی میگه درسته دیگه!

[تصویر:  247049_81001903554240048336.jpg]

[تصویر:  247049_46260054318761361119.jpg]
صفحه‌ها: 1 2
لینک مرجع