زبان برنامه نویسی سی/دستور goto: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۵۴:
'''استفاده دیگر عمومی goto'''
 
دستور goto در زبان C و خانواده آن و تمام زبان‌هایی که از زبان C الگو گرفته‌اند وجود دارد . اما بسیاری از زبان‌های خیلی سطح بالا امکاناتی دارند که نیاز به استفاده از goto را از میان بر می‌دارند . ولی استفاده goto فقط محدود به خارج شدن از حلقه‌های تو در تو نیست ؛ بلکه جلوی کد نویسی اضافه و اشغال حجم زیاد فایل برنامه را به نحو دیگری همانند خروج از حلقه‌ها می‌گیرد . برای یک مثال ملموس مجبوریم کمی به مباحث نرم‌افزاری بپردازیم . در دنیای نرم‌افزار فرمت‌ها ( Format ) ی مختلفی برای تصاویر رستر ( Raster ) که بر اساس پیکسل تعریف می‌شوند و یا تصاویر وکتور ( Vector ) که با خطوط و اشکال تعریف می‌شوند ، فرمت‌های مالتی مدیا ( چند رسانه‌ای ) مثل فرمت‌های صوتی MP2 یا MP3 یا FLAC یا AIFF یا AC3 یا AAC و یا فرمت‌های ویدئویی MPEG4 و یا ماتروسکا که پسوند mkv ذخیره می‌شود وجود دارند که شما در نوشتن برنامه‌های خود به خواندن و نوشتن آنها احتیاج دارید . اصلاً گاهی ممکن است خودتان بخواهید یک فرمت مخصوص به خود را تعریف کنید ( برای برنامه‌های تجاری ، حسابداری و ... ) این فایل‌ها که هر کدام فرمت خاص خود را دارند یک هدر دارند که به عنوان شناسه آن فرمت مطرح می‌شوند . مثلاً فایل‌های بیت‌مپ ( Bitmap ) که با پسوند bmp در ویندوز وجود دارند توسط مایکروسافت ابداع شده است و هدر ( Header ) آن BM می‌باشد . یعنی بایت اول آن ، کاراکتر B و بایت دوم آن کاراکتر M است . حال فرض کنید شما می‌خواهید یک برنامه Raster Image Editor مثل فتوشاپ ( Adobe Photoshop ) یا پینت‌شاپ پرو ( Corel PaintShop Pro ) یا گیمپ GIMP بنویسید . نه وظیفه شما است و نه در حوصله شما که اگر فایلی که کاربر می‌خواهد باز کند ناخوانا باشد را تعمیر و یا احیا کند ( Repair و یا Recovery ) به این گونه فایل‌ها که به هر دلیلی آسیب دیده‌اند و خوانا نیستند فایل‌های خراب ( فاسد یا Corrupted ) گفته می‌شود . بنابراین شما در برنامه خود تعریف می‌کنید تا اگر کاربر فایل مورد حمایت شما را باز کرد اما خوانا نبود پیغام بدهد Your File Is Corrupted یعنی فایل شما خراب ( فاسد ) است . به انواع و اقسام ممکن است فایل ایراد داشته باشد و شما در کدنویسی اگر بخواهید از اتلاف وقت وقت و کد زدن جلوگیری کنید در تابع خود در پایان آن یک برچسب می‌سازید و می‌نویسید Your File Is Corrupted و پس از شروع به خواندن فایل با شروط مختلف هر جا چیزی جز استاندارد وجود داشت با دستور goto ادامه برنامه را به یک برچسب ارجاع می‌دهید که پیغام خطا می‌دهد که فایل شما فاسد است . و دیگر نیازی ندارید مرتب کد بزنید که پیغام خطا چاپ شود که فایل شما فاسد است . یک بار آن را در یک برچسب می‌نویسید و با شروط ، در کتابخانه و یا Codec خود که فرمت یا فرمت‌های مورد نظر شما را می‌خواند و می‌نویسد کد می‌زنید تا فایل را بخواند و مثلاً نمایش دهد یا در صورت ناخوانا بودن با هر دلیل فقط یک پیغام چاپ کند که فایل شما فاسد است
 
به صورت سمبلیک می‌توانید این گونه کد نویسی را در خطوط زیر مشاهده کنید :
 
{{چپ‌چین}}
<code>
int reading()
{
 
if(conditon)//header exists
goto showimage;
else
goto corrupted;
if(condition)//needed data for reading format exist
goto showimage;
else
goto corrupted;
if(condition)//body contents of format
goto showimage;
else
goto corrupted;
showimage:
/*Codes for translating image file to show on monitor
.
.
*/
corrupted:
printf("Your file is corrupted\n");
 
}
</code>
{{پایان چپ‌چین}}
 
در خطوط بالا که شبه‌کد هستند به صورت نمادین و سمبلیک نمایش داده‌ایم که تابعی به نام reading به معنی خواندن تعریف شده‌است که بررسی می‌کند هدر و سرآیند فایل گرافیکی وجود دارد یا خیر . اگر وجود دارد با دستور goto برود به برچسب showimage که کدهایی دارد که فایل گرافیکی را بر روی مانیتور نمایش می‌دهد و در غیر این صورت به برچسب corrupted می‌رود که چاپ می‌کند فایل شما فاسد است . دوباره با دستورهای شرطی بررسی کرده‌ایم که داده‌های مورد نیاز برای تعیین بدنه فایل ( مثل ابعاد عکس ، تعداد رنگ‌ها و ... ) وجود دارد یا نه . اگر وجود داشت می‌رود به showimage و اگر نه می‌رود به corrupted و در نهایت بدنه فایل گرافیکی بررسی می‌شود که طبق استاندارد و داده‌های فایل است یا خیر . اگر بود می‌رود به showimage و اگر نه می‌رود به برچسب corrupted و در نهایت در پایان در برچسب showimage یک بار کدهای نمایش فایل گرافیکی را می‌نویسیم و در برچسب corrupted فقط می‌نویسیم فایل شما فاسد است
 
گاهی نیز در شرایط مختلف ممکن است تابع مثلاً مقدار 0 را برگرداند و در شرایط دیگری مقدار 1 را در این مواقع نیز با دستور goto برنامه‌نویسی خود را خلاصه می‌کنیم . شروط بررسی می‌کنند و در صورت صدق کردن با دستور goto به برچسب مثلاً zero و یا one می‌روند و تابع با دستور return مقدار 0 یا 1 را باز می‌گرداند
 
[[رده:زبان برنامه نویسی سی]]