زبان برنامه نویسی سی/دستور 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 یعنی فایل شما خراب ( فاسد ) است . به انواع و اقسام ممکن است فایل ایراد داشته باشد و شما در کدنویسی اگر بخواهید از اتلاف
به صورت سمبلیک میتوانید این گونه کد نویسی را در خطوط زیر مشاهده کنید :
{{چپچین}}
<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 را باز میگرداند
[[رده:زبان برنامه نویسی سی]]
|