زبان برنامه نویسی سی/دستور goto: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
خط ۳:
==دستور بروبه goto==
دستور « برو به ... » که به انگلیسی میشود « ... go to » و با کلیدواژه goto نوشته میشود روند اجرای برنامه را از جایی که کلیدواژه نوشته شود به بخش دیگری از برنامه که با برچسب « label » مشخص شده است انتقال میدهد . هر برچسب دارای یک نام یا شناسه است که همانند نام یا همان شناسه متغیرها میباشد و باید اختصاصی و انحصاری باشد . یعنی شما نمیتوانید دو برچسب را با یک نام بنویسید یا نام برچسب را نام ( یا همان شناسه ) یک متغیر انتخاب کنید . نحوه نوشتن یک برچسب ( label ) بدین شکل است :
خط ۲۳:
در اینجا result یک برچسب است با شناسه و نام result که اگر بنویسید ;goto result روند اجرای برنامه به برچسب result میرود و خطبهخط از آنجا به بعد ادامه یافته و کدها اجرا میشوند . برچسب میتواند پس از goto یا قبل از goto نوشته شده باشد .
در مجموع سعی کنید
مثال برای ایجاد یک حلقه :
خط ۴۱:
i++;
if(i<10)
goto label;
return 0;
سطر ۵۰ ⟵ ۴۸:
{{پایان چپچین}}
در مثال بالا بعد از ضمیمه نمودن فایل سرآیند stdio جهت استفاده از تابع کتابخانهای printf ( که داخل آن تعریف شده است
'''دقت کنید :''' ما با قطعه کد بالا ، یک حلقه ساختیم ، اما این حلقه توسط کامپایلر به یک حلقه که یک instruction پردازشگر ( CPU ) که سرعت بسیار بالایی در تکرار دارد ، ترجمه نمیشود . بنابراین برنامه ، درست مثل این اجرا میشود که شما ۱۰ بار حکم چاپ اعداد و شکستن خط را نوشته و در نهایت اجرا کنید . سرعت این شبهحلفه بسیار کمتر از حلقهای است که توسط دستورهایی مثل for یا while مینویسید و توسط کامپایلر به کدهای سیستمعامل و یا ماشین ترجمه میشوند ( مخصوصاً اگر قصد ایجاد حلقههای تو در تویی داشته باشید که مخاسبات سنگینی را انجام دهند و دادههای حلقهها - معمولاً شرطها - را ارزیابی نمایند )
'''استفاده دیگر عمومی 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 خود که فرمت یا فرمتهای مورد نظر شما را میخواند و مینویسد کد میزنید تا فایل را بخواند و مثلاً نمایش دهد یا در صورت ناخوانا بودن با هر دلیل فقط یک پیغام چاپ کند که فایل شما فاسد است
[[رده:زبان برنامه نویسی سی]]
|