خانه
گاما

بلاک کد و تورفتگی: گروهی از دستورها با فاصله ابتدای خط یکسان که محدوده اجرای شرط یا حلقه را مشخص می‌کند.

دسته بندی:کپسول آموزشی
بروزرسانی شده در:1405/04/13
تعداد بازدید90
بلاک کد و تورفتگی: گروهی از دستورها با فاصله ابتدای خط یکسان که محدوده اجرای شرط یا حلقه را مشخص می‌کند.

بلاک کد و تورفتگی؛ نظم پنهان در برنامه‌نویسی

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

بلاک کد چیست و چطور تشکیل می‌شود؟

فرض کنید در حال نوشتن یک دستور شرطی هستید که می‌گوید: «اگر نمره‌ی دانش‌آموز از 12 بیشتر بود، به او بگو قبول شدی و یک پیام تبریک هم برایش بنویس.» اینجا دو دستور داریم که هر دو فقط وقتی اجرا می‌شوند که نمره از 12 بیشتر باشد. برای اینکه کامپیوتر بفهمد هر دوی این دستورها به شرط مربوط می‌شوند، آن‌ها را به‌صورت یک بلاک کد می‌نویسیم. یعنی هر دو دستور را با فاصله‌ی یکسان از سمت چپ صفحه شروع می‌کنیم. به این فاصله‌ی ابتدای خط، «تورفتگی» می‌گویند. در بسیاری از زبان‌های برنامه‌نویسی مثل پایتون، این فاصله‌ها کاملاً ضروری هستند و اگر رعایت نشوند، برنامه با خطا مواجه می‌شود. در زبان‌هایی مثل جاوااسکریپت یا سی‌پلاس‌پلاس، از آکولاد ({ }) برای مشخص کردن بلاک استفاده می‌شود، اما تورفتگی همچنان به خواناتر شدن کد کمک می‌کند.

بیایید یک مثال ساده بزنیم. فرض کنید می‌خواهیم برنامه‌ای بنویسیم که اگر سن کاربر از 18 بیشتر بود، ابتدا پیام «ورود مجاز است» را چاپ کند، سپس «خوش آمدید» را هم بنویسد. اگر این دو دستور را با تورفتگی یکسان بنویسیم، هر دو جزو بلاک شرط هستند. اما اگر دستور دوم را بدون تورفتگی بنویسیم، دیگر جزو شرط نیست و همیشه اجرا می‌شود، حتی اگر سن کاربر کمتر از 18 باشد. این تفاوت کوچک در ظاهر، تأثیر بزرگی در رفتار برنامه دارد. به همین دلیل، برنامه‌نویسان به تورفتگی و بلاک‌بندی کد خود خیلی دقت می‌کنند تا اشتباهات ناخواسته پیش نیاید.

نکته: به گروه دستورهایی که با فاصله‌ی یکسان از چپ نوشته می‌شوند، «بلاک» می‌گوییم. این بلاک‌ها محدوده‌ی اجرای شرط‌ها، حلقه‌ها و توابع را مشخص می‌کنند.

چرا تورفتگی مهم است و چه کاربردی دارد؟

تورفتگی فقط برای زیبایی کد نیست؛ بلکه یک ابزار قدرتمند برای سازماندهی و خوانایی برنامه است. وقتی کد شما چندین شرط و حلقه‌ی تو در تو دارد، تورفتگی به شما کمک می‌کند ببینید هر دستور در کدام سطح از برنامه قرار دارد. مثلاً اگر یک حلقه‌ی for داریم که داخل آن یک شرط if نوشته شده، دستورهای مربوط به شرط باید یک تورفتگی بیشتر از دستورهای مربوط به حلقه داشته باشند. این کار باعث می‌شود وقتی کد را چند روز بعد دوباره می‌خوانید، به‌راحتی متوجه ساختار آن شوید. همچنین وقتی چند برنامه‌نویس روی یک پروژه کار می‌کنند، رعایت تورفتگی یکسان باعث می‌شود کد برای همه قابل‌فهم باشد.

یک کاربرد دیگر تورفتگی، مشخص کردن دستورهایی است که باید چند بار تکرار شوند. فرض کنید می‌خواهیم 5 بار عبارت «سلام دنیا!» را چاپ کنیم. اگر دستور چاپ را با تورفتگی داخل حلقه‌ی for قرار دهیم، 5 بار اجرا می‌شود. اما اگر اشتباهاً آن را بدون تورفتگی بنویسیم، فقط یک بار چاپ می‌شود و بقیه‌ی تکرارها هیچ کاری نمی‌کنند. پس تورفتگی مشخص می‌کند که کدام دستورها باید تکرار شوند و کدام‌ها فقط یک بار اجرا گردند. این موضوع در حلقه‌های تو در تو اهمیت بیشتری پیدا می‌کند، چون ممکن است چندین سطح تورفتگی داشته باشیم و هر سطح نشان‌دهنده‌ی عمق تو رفتگی در حلقه‌ها و شرط‌هاست.

نوع نوشتار کد نمونه نتیجه‌ی اجرا
تورفتگی درست if age > 18:
print("ورود مجاز است")
print("خوش آمدید")
هر دو پیام فقط در صورت بزرگ‌تر بودن سن از 18 چاپ می‌شوند.
تورفتگی نادرست if age > 18:
print("ورود مجاز است")
print("خوش آمدید")
پیام اول فقط در صورت بزرگ‌تر بودن سن و پیام دوم همیشه چاپ می‌شود.

پرسش‌های کلیدی و اشتباهات رایج درباره‌ی بلاک کد

آیا تورفتگی فقط برای زیبایی کد است؟

خیر، در برخی زبان‌ها مثل پایتون، تورفتگی برای اجرای صحیح برنامه ضروری است و اگر نادرست باشد، برنامه خطا می‌دهد. در زبان‌های دیگر، تورفتگی به خوانایی کمک می‌کند ولی اجرای برنامه را تحت تأثیر قرار نمی‌دهد.

چطور بفهمیم کدام دستورها باید در یک بلاک قرار بگیرند؟

دستورهایی که باید تحت تأثیر یک شرط یا حلقه اجرا شوند، باید با فاصله‌ی یکسان از سمت چپ نوشته شوند. معمولاً این فاصله معادل 4 فاصله یا یک تب است.

آیا می‌توانیم داخل یک بلاک، بلاک دیگری داشته باشیم؟

بله، به این کار «بلاک تو در تو» می‌گوییم. مثلاً می‌توانیم یک شرط را داخل یک حلقه قرار دهیم. در این حالت، دستورهای شرط باید یک تورفتگی بیشتر از دستورهای حلقه داشته باشند.

اگر تورفتگی‌ها را قاطی کنیم چه اتفاقی می‌افتد؟

در زبان‌هایی مثل پایتون، برنامه با خطا متوقف می‌شود. در زبان‌های دیگر ممکن است برنامه به‌درستی اجرا شود اما خواندن و فهمیدن کد برای خودتان و دیگران بسیار سخت می‌شود.

خلاصه‌ی آنچه خواندیم:

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

شهروند الکترونیک: فردی که با استفاده درست از ابزارهای دیجیتال و اینترنت، کارها و ارتباطات خود را ساده‌تر، سریع‌تر و کم‌هزینه‌تر انجام می‌دهد.
کپسول آموزشی

شهروند الکترونیک: فردی که با استفاده درست از ابزارهای دیجیتال و اینترنت، کارها و ارتباطات خود را ساده‌تر، سریع‌تر و کم‌هزینه‌تر انجام می‌دهد.

اینترنت و شبکه رایانه‌ای: بستر ارتباطی رایانه‌ها و شبکه‌های به‌هم‌پیوسته برای تبادل داده و استفاده مشترک از منابع
کپسول آموزشی

اینترنت و شبکه رایانه‌ای: بستر ارتباطی رایانه‌ها و شبکه‌های به‌هم‌پیوسته برای تبادل داده و استفاده مشترک از منابع

روش‌های اتصال به اینترنت: خط تلفن ثابت، ADSL، شبکه تلفن همراه و فیبر نوری
کپسول آموزشی

روش‌های اتصال به اینترنت: خط تلفن ثابت، ADSL، شبکه تلفن همراه و فیبر نوری

مودم: وسیله‌ای برای اتصال رایانه یا شبکه خانگی و اداری به اینترنت از طریق تجهیزات مخابراتی.
کپسول آموزشی

مودم: وسیله‌ای برای اتصال رایانه یا شبکه خانگی و اداری به اینترنت از طریق تجهیزات مخابراتی.

پست الکترونیکی: خدمت اینترنتی برای ایجاد، ارسال، دریافت، ذخیره و مدیریت پیام‌ها و اسناد دیجیتال.
کپسول آموزشی

پست الکترونیکی: خدمت اینترنتی برای ایجاد، ارسال، دریافت، ذخیره و مدیریت پیام‌ها و اسناد دیجیتال.

حساب و نشانی پست الکترونیکی: شناسه و فضای اختصاصی کاربر در سامانه ایمیل برای ارسال و دریافت پیام
کپسول آموزشی

حساب و نشانی پست الکترونیکی: شناسه و فضای اختصاصی کاربر در سامانه ایمیل برای ارسال و دریافت پیام

ایمیل (رایانامه): پیام الکترونیکی قابل ارسال و دریافت از طریق پست الکترونیکی
کپسول آموزشی

ایمیل (رایانامه): پیام الکترونیکی قابل ارسال و دریافت از طریق پست الکترونیکی

ارسال و مدیریت ایمیل: کارهایی مانند ارسال گروهی، ذخیره پیش‌نویس، نگه‌داری نامه‌های فرستاده‌شده، حذف و دسته‌بندی پیام‌ها
کپسول آموزشی

ارسال و مدیریت ایمیل: کارهایی مانند ارسال گروهی، ذخیره پیش‌نویس، نگه‌داری نامه‌های فرستاده‌شده، حذف و دسته‌بندی پیام‌ها

پیوست و رونوشت ایمیل: امکانات افزودن فایل، ارسال نسخه آشکار یا ارسال نسخه مخفی پیام به گیرندگان دیگر
کپسول آموزشی

پیوست و رونوشت ایمیل: امکانات افزودن فایل، ارسال نسخه آشکار یا ارسال نسخه مخفی پیام به گیرندگان دیگر

صندوق دریافت و پوشه‌های پست الکترونیکی: بخش‌های نگه‌داری، مشاهده و مرتب‌سازی رایانامه‌ها بر اساس موضوع یا وضعیت.
کپسول آموزشی

صندوق دریافت و پوشه‌های پست الکترونیکی: بخش‌های نگه‌داری، مشاهده و مرتب‌سازی رایانامه‌ها بر اساس موضوع یا وضعیت.

هرزنامه و بدافزار: پیام‌ها و نرم‌افزارهای ناخواسته یا زیان‌آور که می‌توانند به اطلاعات یا رایانه کاربر آسیب بزنند.
کپسول آموزشی

هرزنامه و بدافزار: پیام‌ها و نرم‌افزارهای ناخواسته یا زیان‌آور که می‌توانند به اطلاعات یا رایانه کاربر آسیب بزنند.

ویروس رایانه‌ای: نوعی بدافزار که با آلوده کردن فایل‌ها یا سامانه‌ها، عملکرد رایانه را مختل می‌کند.
کپسول آموزشی

ویروس رایانه‌ای: نوعی بدافزار که با آلوده کردن فایل‌ها یا سامانه‌ها، عملکرد رایانه را مختل می‌کند.