«بلاک کد» به اینجا هدایت می شود. برای IDE، برنامه نویسی بلوکی به Code::Blocks مراجعه کنید. برای برنامه نویسی مبتنی بر بلوک، به زبان برنامه نویسی ویژوال مراجعه کنید.
این متن به منابع بیشتری برای معتبر بودن نیاز دارد. لطفاً با افزودن نقل قول به منابع معتبر به بهبود این مقاله کمک کنید. اطلاعات بدون مرجع ممکن است مشکل ایجاد کرده و پاک شوند.
یافتن منابع: برنامه نویسی "بلاک" - اخبار · روزنامه ها برنامه نویسی بلوکی · کتاب ها · محقق · JSTOR (مه 2010) (با نحوه و زمان حذف این پیام آشنا شوید)
در برنامه نویسی کامپیوتر، بلوک یا بلوک کد یا بلوک کد، ساختار واژگانی کد منبع است که با هم گروه بندی می شود. بلوک ها از یک یا چند بیانیه و بیانیه تشکیل شده اند. زبان برنامه نویسی که اجازه ایجاد بلوک ها، از جمله بلوک های تو در تو در داخل بلوک های دیگر را می دهد، زبان برنامه نویسی ساختار بلوکی نامیده می شود. بلوک ها برای برنامه نویسی ساختاریافته اساسی هستند، جایی که ساختارهای کنترلی از بلوک ها تشکیل می شوند.
بلوکها دو کارکرد دارند: گروهبندی عبارات بهگونهای که برنامه نویسی بلوکی بتوان آنها را بهعنوان یک دستور در نظر گرفت و محدودههایی را برای نامها تعریف کرد تا آنها را از همان نامی که در جاهای دیگر استفاده میشود متمایز کند. در یک زبان برنامه نویسی با ساختار بلوکی، اشیایی که در بلوک های بیرونی نامگذاری شده اند در داخل بلوک های داخلی قابل مشاهده هستند، مگر اینکه توسط یک شی اعلام شده با همان نام پوشانده شوند.
تاریخ
ایده های ساختار بلوک در دهه 1950 در طول توسعه اولین برنامه نویسی بلوکی کدهای خودکار توسعه یافت و در گزارش های Algol 58 و Algol 60 رسمیت یافت. الگول 58 مفهوم «گزاره مرکب» را معرفی کرد که صرفاً مربوط به جریان کنترل بود.[1] گزارش اصلاح شده بعدی که نحو و معناشناسی الگول 60 را تشریح کرد، مفهوم بلوک و محدوده بلوک را با بلوکی متشکل از "توالی از اعلان ها به دنبال دنباله ای از عبارات و محصور بین شروع و پایان..." معرفی کرد. که «[e]هر اعلان در یک بلوک به این شکل ظاهر میشود و فقط برای آن بلوک معتبر است».[2]
نحو
بلوک ها از نحو متفاوتی در زبان های مختلف استفاده می کنند. دو خانواده بزرگ عبارتند از:
خانواده ALGOL که در آن بلوک ها با کلمات کلیدی برنامه نویسی بلوکی "شروع" و "پایان" یا معادل آن مشخص می شوند. در C، بلوک ها با مهاربندهای فرفری - "{" و "}" مشخص می شوند. ALGOL 68 از پرانتز استفاده می کند.
پرانتز - "(" و ")"، در زبان دسته ای MS-DOS استفاده می شود
تورفتگی، مانند پایتون
s-expressions با یک کلمه کلیدی نحوی مانند prog یا let (مانند خانواده Lisp)
در سال 1968 (با ALGOL 68)، سپس در زبان فرمان حفاظت شده Edsger W. Dijkstra در سال 1974، بلوک کد شرطی و تکراری به طور متناوب با کلمه رزرو شده برعکس خاتمه می یابد: به عنوان مثال if ~ then ~ elif ~ else ~ fi, case ~ in ~ out ~ esac و برای ~ در حالی که ~ انجام ~ od
محدودیت ها
برخی از زبانهایی که از بلوکهایی با اعلانها پشتیبانی برنامه نویسی بلوکی میکنند، به طور کامل از همه اعلانها پشتیبانی نمیکنند. به عنوان مثال، بسیاری از زبان های مشتق شده از C اجازه تعریف تابع در یک بلوک (توابع تودرتو) را نمی دهند. و برخلاف جد خود، پاسکال از استفاده از بلوکها با اعلانهای خود در ابتدا و انتهای یک بلوک موجود پشتیبانی نمیکند، فقط عبارتهای مرکب را قادر میسازد که توالیهایی از دستورات را در if، while، تکرار و سایر دستورات کنترل گروهبندی کنند.
معناشناسی پایه
معنای معنایی بلوک دو گونه است. اولاً، راهی را برای برنامه نویس فراهم می کند تا ساختارهای خودسرانه بزرگ و پیچیده ای را ایجاد کند که بتوان آنها را به عنوان واحد در نظر گرفت. ثانیاً، برنامه نویس را قادر می سازد تا دامنه متغیرها و گاهی اوقات دیگر اشیاء اعلام شده را محدود کند.
در زبان های اولیه مانند Fortran IV و BASIC، هیچ بلوک برنامه نویسی بلوکی بیانیه یا ساختار کنترلی به جز اشکال ساده حلقه ها وجود نداشت. شرط ها با استفاده از دستورات goto شرطی اجرا شدند:
C LANGUAGE: ANSI STANDARD FORTRAN 66
C مقادیر اولیه را برای محاسبه قرار دهید
COUNTRYTX = .FALSE.
کشور = .FALSE.
مالیات = 0.0
SUPTAX = 0.0
ج اگر کارمند آستانه مالیاتی کمتری به دست آورد، از کسر مالیات صرفنظر کنید
IF (WAGES .LE. TAXTHR) GOTO 100
COUNTRYTX = .TRUE.
مالیات = (دستمزد - TAXTHR) * BASCRT
ج اگر کارمند کمتر از آستانه SUPERTAX درآمد دارد، از کسر مالیات صرف نظر کنید
IF (WAGES .LE. SUPTHR) GOTO 100
کشور = واقعی.
SUPTAX = (WAGES - SUPTHR) * SUPRAT
100 TAXED = WAGES - TAX - SUPTAX
ساختار منطقی برنامه در زبان منعکس نمی شود و تجزیه آموزش برنامه نویسی کودکان و نوجوانان و تحلیل زمانی که یک دستور داده شده اجرا می شود می تواند دشوار باشد.
بلوکها به برنامهنویس اجازه میدهند تا گروهی از عبارات را بهعنوان یک واحد در نظر بگیرد، و مقادیر پیشفرض که باید در مقداردهی اولیه در این سبک برنامهنویسی ظاهر میشد، با ساختار بلوکی، میتوانند نزدیکتر به تصمیم قرار گیرند:
{ زبان: جنسن و ویرث پاسکال }
اگر دستمزد > tax_threshold پس
شروع
مالیات کشور := درست است;
مالیات := (دستمزد - آستانه_ مالیات) * نرخ_ مالیات
{ ساختار بلوک دیدن این که کد چگونه می تواند را آسان تر می کند
برای وضوح دوباره ساخ Block programming ته شود و همچنین انجام آن را آسان تر می کند،
زیرا ساختار inne