Tag Archives: دستور goto

لیبل Label

لیبل یا Label چیست؟

واژه لیبل (Label) به طور کلی به معنای برچسبی است که برای کمک به توصیف یا شناسایی یک شئ یا محتوای آن به کار می‌رود. با اینحال این واژه در حوزه‌های مختلف رایانه از زبان های برنامه نویسی گرفته تا واسط های کاربری گرافیکی، دستورات خط فرمان و … مفاهیم و کاربردهای ویژه‌ای دارد.

کاربردها و مفاهیم تخصصی Label

در حوزه زبان های برنامه نویسی، لیبل به دنباله‌ای از کاراکترها گفته می‌شود که مکانی را در سورس کد مشخص می‌کند. مشخصه (Identifier) این لیبل‌ها معمولا به یک نماد کلن یا : ختم می‌شود. در اغلب زبان‌ها از این قابلیت برای مشخص نمودن مقصد دستور GOTO استفاده می‌شود. به همین دلیل مشخصه‌ای که برای تعریف یک لیبل استفاده می‌شود می‌بایست در کل بلاک مربوط به تابع دربرگیرنده آن منحصربفرد باشد.

در قطعه کد زیر که به زبان C++ نوشته شده است نحوه ایجاد لیبل و استفاده از آن در دستور GOTO نمایش داده شده است:

...
label:
...
goto label;
...

label در برخی از سیستم عامل ها (از جمله DOS و Microsoft Windows)، به عنوان یک دستور خط فرمان شناخته می‌شود که از آن برای ایجاد یا تغییر برچسب یک پارتیشن استفاده می‌شود. در مثال زیر نحوه استفاده از این دستور برای تغییر برچسب پارتیشن D به Software نمایش داده شده است:

label D: Software

در زبان HTML نیز تگی به نام <label> وجود دارد که از آن برای تعریف و اختصاص دادن یک برچسب به برخی از المان‌های دیگر نظیر <input> و <textarea> استفاده می‌شود. در مثال زیر، نحوه استفاده از این تگ نمایش داده شده است:

لیبل label
نمونه استفاده از تگ label در یک قطعه کد HTML

نتیجه اجرای قطعه کد فوق را می‌توانید در ادامه مشاهده کنید:


 

به علاوه Label در حوزه واسط های کاربری گرافیکی نیز عنوان نوعی المان یا کنترل (Control) است که معمولا برای نمایش برچسب یک کنترل دیگر (نظیر text box) به کار می‌رود. در تصویر زیر دو کنترل Label با متن‌های Name و Mail را مشاهده می‌کنید. این برچسب ها همانند آنچه در مثال مربوط به المان‌های HTML گفته شد به کاربر کمک می‌کنند تا متوجه شود المان متناظر با هر برچسب برای چه کاربردی در نظر گرفته شده است.

کنترل لیبل Label Control
نمونه‌ای از دو کنترل Label که برچسب‌هایی به دو کنترل Text box اختصاص داده‌اند. کاربر با توجه به این برچسب ها متوجه می‌شود در فیلد متنی اول می‌بایست نام و در فیلد دوم نشانی ایمیل خود را وارد نماید.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

اسپاگتی کد Spaghetti Code

اسپاگتی کد یا Spaghetti Code چیست؟

اسپاگتی کد (Spaghetti Code) یا کد درهم تنیده اصطلاحی در حوزه برنامه نویسی رایانه ای است و به سورس کدهایی گفته می‌شود که فاقد ساختار مناسب بوده و به علت پیچیدگی غیرضروری، فهم و نگه داری آن به امری دشوار تبدیل می‌شود. این درهم تنیدگی و پیچیدگی می‌تواند ناشی از عوامل مختلفی از جمله نبود قوانین مناسب برای استایل‌های برنامه نویسی و تجربه یا دانش ناکافی فرد برنامه نویس باشد.

استفاده از دستورات GOTO به عنوان روشی برای جهش (که زبان های برنامه نویسی قدیمی وابستگی بیشتری به آن داشتند و در بسیاری از زبان های امروزی نیز از آن پشتیبانی می‌شود) یکی از شایع ترین دلایل ایجاد کدهای درهم پیچیده و دارای جریان کنترلی (Control Flow) آشفته به شمار می‌رود. به این معنا که ترتیب اجرای دستورات در این سورس کدها برخلاف برنامه نویسی ساخت یافته استاندارد به شکلی واضح و قابل فهم نمی‌باشد و همانند یک بشقاب اسپاگتی دارای رشته‌هایی است که از ابتدا تا انتها با پیچ و خم‌های فراوان همراه می‌شود. طبیعتا دستکاری و تغییر قطعه‌ای از این کدها به گونه‌ای که باعث بروز مشکل در سایر بخش‌های آن نشود کار ساده‌ای نخواهد بود؛ درست مانند جدا کردن یک قاشق از اسپاگتی که معمولا باعث می‌شود رشته‌های دیگری که در بشقاب قرار دارد نیز قطع شوند!

با وجود اینکه امروزه دستور GOTO در سورس کدها کمتر دیده می‌شود و حتی برخی از زبان‌های برنامه نویسی از آن پشتیبانی نمی‌کنند اما همچنان وجود توابع طولانی، انشعابات متعدد و قطعه کدهای نوشته شده با ساختار ضعیف از جمله مواردی به شمار می‌روند که منجربه ایجاد اسپاگتی کد می‌شود. بد نیست بدانید تغییر نامناسب و مکرر سورس کدهایی که سال‌ها پیش نوشته شده‌اند نیز می‌تواند به شکل‌گیری چنین کدهایی بیانجامد.

اسپاگتی کد Spaghetti Code
نمایی مفهومی از روند اجرای دستورات در یک قطعه کد اسپاگتی مملو از جهش همانند رشته‌های موجود در یک بشقاب اسپاگتی!

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

دستور GOTO

دستور GOTO چیست؟

GOTO (به معنای “برو به …”) عنوان دستوری است که در بسیاری از زبان‌های برنامه‌نویسی به منظور انتقال کنترل به خط دیگری از کد مورد استفاده قرار می‌گیرد. مکان‌هایی که با استفاده از این دستور به آن‌ها پرش می‌شود معمولا توسط برچسب (Label) ها یا شماره خطوط مشخص می‌شود. بسته به زبان‌های برنامه‌نویسی مختلف، این دستور به اشکال گوناگونی از جمله GoTo، goto و … مشاهده می‌شود.

دستور GOTO از جمله دستورات جهش یا انشعاب غیر شرطی به شمار می‌رود. با وجود اینکه در گذشته استفاده از این دستور متداول بوده است اما با ظهور برنامه‌نویسی ساخت یافته (Structured Programming)، این دستور آرام آرام به فراموشی سپرده شده است. به عبارت دیگر در زبان‌های امروزی، استفاده از این دستور برای ایجاد برنامه‌ها ضرورتی ندارد و می‌توان از طریق حلقه‌ها، دستورات انتخاب و … نیز به همان عملکرد دستور GOTO دست پیدا نمود.

ساختار کلی این دستور به شکل goto identifier می‌باشد که در آن منظور از identifier برچسب یا شماره خطی است که به آن نقطه قرار است پرش صورت بگیرد. (یک برچسب در واقع دنباله‌ای از کاراکترهاست که در بسیاری از زبان‌ها با علامت : به پایان می‌رسد و یک نقطه معین در سورس کد را مشخص می‌کند). در قطعه کد زیر که به زبان C++ نوشته شده است نحوه استفاده از این دستور نمایش داده شده است:

...
label:
...
goto label;
...

مزایا و معایب استفاده از دستور GOTO

مهم‌ترین انتقادی که نسبت به این دستور بیان می‌شود آنست که استفاده از GOTO در مقایسه با ساختارهای جایگزین باعث می‌شود درک و فهم کد دشوارتر شود. هرچند این انتقاد در بسیاری از موارد قابل قبول است با اینحال از نظر بسیاری از کارشناسان، این دستور می‌تواند در صورت استفاده صحیح مفید واقع شود و نه تنها منجربه پیچیده‌تر شدن کد نشود بلکه خوانایی کد را بهبوده داده، از حجم کد کاسته و مانع از تکرار بخش عظیمی از دستورات شود. به علاوه در برخی از زبان‌ها از جمله C که امکان شکست (Break) چندسطحی وجود ندارد می‌تواند به عنوان راه حلی مناسب و سریع مورد استفاده قرار گیرد. به همین دلیل این دستور در بسیاری از زبان‌های برنامه نویسی پشتیبانی می‌شود و در بسیاری دیگر نیز پشتیبانی نمی‌شود.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا