دستور goto در برنامه نویسی C مدیر ارشد رایشمند / شنبه, 07 اسفند,1395 / دستهها: آموزش برنامه نویسی, آموزش زبان برنامه نویسی سی C دوست عزیز برنامهنویس، توی این آموزش میخوایم دستور جالب goto رو در زبان C بررسی کنیم؛ ابزاری برای پرش در جریان اجرای برنامه. البته استفادهش باید با دقت باشه، چون اگه بیرویه استفاده بشه، کدت رو گیجکننده و سختخوان میکنه! goto در C: پرش فوری به یه نقطه خاص! وقتی برنامه به دستور goto میرسه، فوراً جریان اجرا رو به برچسب (label) مشخصشده منتقل میکنه؛ یعنی بدون شرط و مقدمه، میپره یه جای خاص از کد و از اونجا اجرا رو ادامه میده. ساختارش سادهست: goto label; // ... label: // کدهایی که باید اجرا بشه اسم label باید یه شناسه معتبر باشه که با : تعریف شده باشه. وقتی به اون پرش میکنی، برنامه از همونجا ادامه پیدا میکنه. مثال: محاسبه مجموع و میانگین تا وقتی عدد منفی وارد نشه این برنامه از کاربر عدد میگیره و مجموع و میانگینشون رو حساب میکنه؛ ولی اگه عدد منفی وارد بشه، با دستور goto از حلقه خارج میشه و مجموع فعلی رو نشون میده: // محاسبه مجموع و میانگین تا وقتی کاربر عدد منفی وارد نکرده #include <stdio.h> int main() { const int maxInput = 100; int i; double number, average, sum = 0.0; for (i = 1; i <= maxInput; ++i) { printf("%d. Enter a number: ", i); scanf("%lf", &number); // اگر عدد منفی بود، پرش به برچسب jump if (number < 0.0) { goto jump; } sum += number; } jump: average = sum / (i - 1); printf("Sum = %.2f\n", sum); printf("Average = %.2f\n", average); return 0; } نمونه خروجی: 1. Enter a number: 3 2. Enter a number: 4.3 3. Enter a number: 9.3 4. Enter a number: -2.9 Sum = 16.60 Average = 5.53 به محض وارد شدن عدد منفی مثل -2.9، برنامه فوراً با دستور goto به برچسب jump میره و بقیه کدها اجرا میشن. چرا معمولاً از goto استفاده نمیکنن؟ هرچند goto گاهی مفیده، ولی اغلب باعث پیچیدگی و غیرقابل پیگیری شدن جریان برنامه میشه. برای مثال: one: for (i = 0; i < number; ++i) { test += i; goto two; } two: if (test > 5) { goto three; } // ... three: // کدی غیرمعلوم! تو این مثال، پرشهای متعدد میتونه ردیابی و درک برنامه رو سخت کنه. مخصوصاً اگه از چند جای مختلف به یه برچسب پرش شده باشه، فهمیدن ترتیب اجرا خیلی سخت میشه! پس بالاخره استفاده کنیم یا نه؟ 🤔 اگه واقعاً راه سادهتری وجود نداره، مثلاً وقتی بخوای از چند حلقه تو در تو یهباره خارج بشی، goto میتونه کمککننده باشه. ولی بهتره تا جایی که میتونی از ساختارهایی مثل break، continue و توابع استفاده کنی و از پرش مستقیم اجتناب کنی. به قول بجارن استروستروپ (خالق C++): “این واقعیت که goto میتونه هر کاری انجام بده، دقیقاً همون دلیله که نباید ازش استفاده کنیم.” امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است. لیتیم راهنمای کامل دستور switch در زبان C پرینت 60 رتبه بندی این مطلب: بدون رتبه کلمات کلیدی: آموزش زبان برنامه نویسی سی مدیر ارشد رایشمندمدیر ارشد رایشمند سایر نوشته ها توسط مدیر ارشد رایشمند تماس با نویسنده مطالب مرتبط کلاسهای حافظه در C — چهار سبک نگهداری متغیرها با مثالهای واضح توابع بازگشتی در C — چطور تابع خودش را صدا میزند؟ چهار روش تعریف تابع در C برای بررسی عدد اول — با مثالهای مرحلهبهمرحله توابع تعریفشده توسط کاربر در زبان C به همراه آموزش و مثال تابع در برنامهنویسی C آموزش کامل به همراه مثال نوشتن یک نظر نام: لطفا نام خود را وارد نمایید. ایمیل: لطفا یک آدرس ایمیل وارد نمایید لطفا یک آدرس ایمیل معتبر وارد نمایید نظر: لطفا یک نظر وارد نمایید موافقم این فرم نام، ایمیل، آدرس IP و محتوای شما را جمعآوری میکند تا بتوانیم نظرات درج شده در وبسایت را پیگیری کنیم. برای اطلاعات بیشتر خطمشی رازداری و شرایط استفاده< /a> که در آن اطلاعات بیشتری در مورد مکان، چگونگی و چرایی ذخیره داده های شما دریافت خواهید کرد. شما باید این قوانین را بخوانید و قبول کنید. افزودن نظر
دوست عزیز برنامهنویس، توی این آموزش میخوایم دستور جالب goto رو در زبان C بررسی کنیم؛ ابزاری برای پرش در جریان اجرای برنامه. البته استفادهش باید با دقت باشه، چون اگه بیرویه استفاده بشه، کدت رو گیجکننده و سختخوان میکنه! goto در C: پرش فوری به یه نقطه خاص! وقتی برنامه به دستور goto میرسه، فوراً جریان اجرا رو به برچسب (label) مشخصشده منتقل میکنه؛ یعنی بدون شرط و مقدمه، میپره یه جای خاص از کد و از اونجا اجرا رو ادامه میده. ساختارش سادهست: goto label; // ... label: // کدهایی که باید اجرا بشه اسم label باید یه شناسه معتبر باشه که با : تعریف شده باشه. وقتی به اون پرش میکنی، برنامه از همونجا ادامه پیدا میکنه. مثال: محاسبه مجموع و میانگین تا وقتی عدد منفی وارد نشه این برنامه از کاربر عدد میگیره و مجموع و میانگینشون رو حساب میکنه؛ ولی اگه عدد منفی وارد بشه، با دستور goto از حلقه خارج میشه و مجموع فعلی رو نشون میده: // محاسبه مجموع و میانگین تا وقتی کاربر عدد منفی وارد نکرده #include <stdio.h> int main() { const int maxInput = 100; int i; double number, average, sum = 0.0; for (i = 1; i <= maxInput; ++i) { printf("%d. Enter a number: ", i); scanf("%lf", &number); // اگر عدد منفی بود، پرش به برچسب jump if (number < 0.0) { goto jump; } sum += number; } jump: average = sum / (i - 1); printf("Sum = %.2f\n", sum); printf("Average = %.2f\n", average); return 0; } نمونه خروجی: 1. Enter a number: 3 2. Enter a number: 4.3 3. Enter a number: 9.3 4. Enter a number: -2.9 Sum = 16.60 Average = 5.53 به محض وارد شدن عدد منفی مثل -2.9، برنامه فوراً با دستور goto به برچسب jump میره و بقیه کدها اجرا میشن. چرا معمولاً از goto استفاده نمیکنن؟ هرچند goto گاهی مفیده، ولی اغلب باعث پیچیدگی و غیرقابل پیگیری شدن جریان برنامه میشه. برای مثال: one: for (i = 0; i < number; ++i) { test += i; goto two; } two: if (test > 5) { goto three; } // ... three: // کدی غیرمعلوم! تو این مثال، پرشهای متعدد میتونه ردیابی و درک برنامه رو سخت کنه. مخصوصاً اگه از چند جای مختلف به یه برچسب پرش شده باشه، فهمیدن ترتیب اجرا خیلی سخت میشه! پس بالاخره استفاده کنیم یا نه؟ 🤔 اگه واقعاً راه سادهتری وجود نداره، مثلاً وقتی بخوای از چند حلقه تو در تو یهباره خارج بشی، goto میتونه کمککننده باشه. ولی بهتره تا جایی که میتونی از ساختارهایی مثل break، continue و توابع استفاده کنی و از پرش مستقیم اجتناب کنی. به قول بجارن استروستروپ (خالق C++): “این واقعیت که goto میتونه هر کاری انجام بده، دقیقاً همون دلیله که نباید ازش استفاده کنیم.” امیدواریم این آموزش براتون مفید بوده باشه! این مقاله توسط سایت علمی رایشمند برای شما آماده شده است.