سلام
نمیدونم سوال زیر جز سوالهای کامپایلر یا برنامه سازی.... به هر حال ممنون میشم جواب سوال رو بدین:
استفاده از + به جای = در عبارت زیر، در زبان C چه نوع خطایی محسوب می شود؟
;a + b-c
۱) نحوی(زمان کامپایل)
۲) ازمون نوع (زمان اجرا)
۳) معنایی(زمان کامپایل)
۴) منطقی(زمان اجرا)
به نظرم گزینه 1 درسته
اگه درست میگم که بگید تا تو همین پست توضیحات رو بنویسم
اگه نه هم که هیچی
(16 بهمن 1392 11:33 ب.ظ)hosshah نوشته شده توسط: [ -> ]به نظرم گزینه ۱ درسته
اگه درست میگم که بگید تا تو همین پست توضیحات رو بنویسم
اگه نه هم که هیچی
نظر خودمم روی گزینه یک هست به علت اینکه درخت پارس می تونه متوجه بشه که به جای مساوی به اضافه اومده! اما با توجه به سوال پارسال شک کردم! که اینجا خطای منطقی نیست؟!!
(16 بهمن 1392 05:33 ب.ظ)fulgent نوشته شده توسط: [ -> ]سلام
نمیدونم سوال زیر جز سوالهای کامپایلر یا برنامه سازی.... به هر حال ممنون میشم جواب سوال رو بدین:
استفاده از + به جای = در عبارت زیر، در زبان C چه نوع خطایی محسوب می شود؟
;a + b-c
۱) نحوی(زمان کامپایل)
۲) ازمون نوع (زمان اجرا)
۳) معنایی(زمان کامپایل)
۴) منطقی(زمان اجرا)
سوال مربوط ب درس برنامه سازی هست و احتمال زیاد گزینه 1.
(16 بهمن 1392 11:36 ب.ظ)fulgent نوشته شده توسط: [ -> ]نظر خودمم روی گزینه یک هست به علت اینکه درخت پارس می تونه متوجه بشه که به جای مساوی به اضافه اومده! اما با توجه به سوال پارسال شک کردم! که اینجا خطای منطقی نیست؟!!
البته سوال پارسال رو من از روی تجربه پاسخ دادم که درست بود اما این بر اساس دانشه و اطمینان زیادی نداره
برای کجاست این سوال
اگر همه با گزینه 1 موافق هستید پس یعنی میشه گفت سوالی هم که پارسال داده بودند در مورد == در شرط If ، اگر در گزینه ها خطای نحوی داشت جواب خطای نحوی می شد؟
اگر بله، یعنی نحوی نتونسته بود این خطا رو بگیره که در زمان اجرا به عنوان خطای منطقی مطرح شد؟
اگر خیر، چرا؟ و چطور این خطای نحوی میشه و اون نمیشه؟
دچار تناقض عجیب غریبی شدم!!!
نحوی که قطعا نبود ولی حالا معنایی رو نمیدونم چجور نقض کنم
چون ما میتونیم با استفاده از پارسری که داریم a=b رو هم کاهش بدیم
یعنی این هم یک عبارت مجاز توی زبانمون هست
(16 بهمن 1392 11:45 ب.ظ)fulgent نوشته شده توسط: [ -> ]اگر همه با گزینه ۱ موافق هستید پس یعنی میشه گفت سوالی هم که پارسال داده بودند در مورد == در شرط If ، اگر در گزینه ها خطای نحوی داشت جواب خطای نحوی می شد؟
اگر بله، یعنی نحوی نتونسته بود این خطا رو بگیره که در زمان اجرا به عنوان خطای منطقی مطرح شد؟
اگر خیر، چرا؟ و چطور این خطای نحوی میشه و اون نمیشه؟
دچار تناقض عجیب غریبی شدم!!!
سوال پارسال رو کسایی ک ب برنامه سازی C++ و ساختمان مسلط بودن خیلی راحت می تونستن تشخیص بدن ک خطای منطقی هست.
البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای معنایی تلقی بشه.
این سوال به نظرم 1 میشه. همون تحلیل خودت به نظرم درسته. اساسا ربطی هم به خطاهای معنایی نداره.
ولی سوالت در مورد = و == قدیما اینجا توضیح داده بودم :
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
(17 بهمن 1392 12:07 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای نحوی تلقی بشه.
در اون صورت هم من میگم خطا نحوی نبود بلکه خطای مفهومی یا معنایی بود
(17 بهمن 1392 12:10 ق.ظ)hosshah نوشته شده توسط: [ -> ] (17 بهمن 1392 12:07 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]البته ممکن بود این خطا در سوال پارسال در یک زبان دیگه ک عملگر مساوی مقدار برگشتی نداشت ، خطای معنایی تلقی بشه.
در اون صورت هم من میگم خطا نحوی نبود بلکه خطای مفهومی یا معنایی بود
مرسی___اشتباه تایپی بود . اصلاح شد
(17 بهمن 1392 12:14 ق.ظ)AEM4949 نوشته شده توسط: [ -> ]مرسی___اشتباه تایپی بود . اصلاح شد
قربون تو
من رشتم کامپیوتر نیست ولی امیدوارم کمکتون کرده باشم
خطای 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 یک عبارت درست است. و اساسا این خطای منطقی میشه.
یادم نمیاد تا حالا همچین کدی نوشته باشم ، برلندم باز نشد کدشو بزنم. ولی میگه درسته دیگه!