شبهکد
شبهکد (به انگلیسی: pseudocode)روشی سریع، فشرده و غیررسمی برای توضیح یک الگوریتم کامپیوتری است که از ساختارهای معمول بعضی از زبانهای برنامه نویسی استفاده میکند که برای خوانده شدن توسط انسان و نه ماشین طراحی شدهاست. شبه کد معمولاً فاقد جزئیاتی است که کامپیوتر بتواند بدون آنها الگوریتم را بفهمد مثل تعریف متغیرها، کدهای وابسته به سیستم (سیستمعاملهای مختلف یا غیره) و زیرروالها. در شبه کدها معمولاً برای راحتی از زبان محاوره معمولی یا علامتهای ریاضی نیز استفاه میکنند. هدف از استفاه از شبه کد این است که فهم آن سادهتر از زبانهای برنامه نویسی است.
کاربرد
کتابهای درسی و منتشرات علمی مربوط به کامپیوتر و محاسبات عددی غالباً از شبه کد برای بیان الگوریتمها استفاده میکنند، تا برنامه نویسان آنها را بفهمند، حتی اگر آنها تمام آن زبان برنامه نویسی را بلد نباشند. در کتابهای درسی، معمولاً بخشی برای معرفی قراردادها و توضیح ویژگی کدها و سبک کدنویسی وجود دارد تا خواننده بتواند منظور نویسنده را به سادگی متوجه شود و در طول مطالعه کتاب مشکلی با کدهای نوشته شده در کتاب نداشته باشد. میزان جزئیات این زبانها ممکن است در برخی موارد به زبانهای همه منظوره رسمی نزدیک باشد –برای مثال، کتاب مرجع کنوت " هنر برنامهنویسی کامپیوتر" الگوریتمها را در زبان اسمبلی کاملاً صریح که برای ریزپردازنده ناموجود است نوشته شدهاست.
برنامهنویسی که میخواهد الگوریتم مشخصی را پیاده کند، مخصوصاً الگوریتمی که با آن آشنایی ندارد، غالباً با توضیح شبه کد آن شروع خواهد کرد، و سپس آن شرح را به سادگی به زبان برنامهنویسی هدف ترجمه خواهد کرد و سپس آن را تغییر خواهد داد تا به درستی با سایر قسمتهای برنامه هماهنگی داشته باشد. برنامه نویسان ممکن است همچنین یک پروژه را با بیان کلیات آن به صورت شبه کد و بر روی کاغذ شروع کنند و سپس آن را به زبان واقعی بنویسند، به عنوان یک روش حل ساختاری بالا به پایین.
گرامر
همانگونه که از اسم آن مشخص است، شبه کد معمولاً از گرامر هیچ زبان مشخصی پیروی نمیکند، و هیچ فرم سیستماتیک استاندارد یا ساخت یافتهای وجود ندارد، هرچند هر نویسندهای ممکن است بهطور کلی سبک و گرامر زبان خاصی را استفاده کند برای مثال ممکن است برای بیان کدهای درون یک بلوک مانند زبانهای برنامه نویسی C و جاوا از گیومه استفاده کند یا اینکه صرفاً مانند زبان برنامهنویسی پایتون از فاصلهها استفاده کند. انتخاب روش نوشتن شبه کد قراردادی است که نویسنده دارد و میتواند مستقل از یک زبان برنامهنویسی خاص باشد. اما نویسندگان معمولاً از گرامر و سبک زبانهای محبوب و معروفی مثل پاسکال، بیسیک، C،C++، جاوا، لیسپ و ALGOL استفاده میکنند. تعریف متغیرها در یک شبه کد ذکر نمیشود. صدا کردن توابع و بلوکها برای مثال کدهای درون حلقه غالباً با کد یک خطی طبیعی جایگزین میشوند. در نتیجه وابسته به نویسنده، شبه کد ممکن است در سبک و سیاق گستردگی زیادی داشته باشد، از پیادهسازی تقریباً دقیق یک زبان مشخص در یک سو تا توصیف توضیحی کد به زبان انسانی در سوی دیگر.
مثالها
<variable> = <expression>
if <condition>
do stuff
else
do other stuff
while <condition>
do stuff
for <variable> from <first value> to <last value> by <step>
do stuff with variable
function <function name>(<arguments>)
do stuff with arguments
return something
<function name>(<arguments>) // Function call
برای دیدن مثالهای بیشتر میتوانی به مقالات با مثالهای شبه کد مراجعه کنید.
شبه کد ریاضی گونه
در محاسبات عددی، شبه کد غالباً شامل نماد گذاری ریاضی است، نوعاً از مجموعه و تئوری ماتریس، ترکیب شده با یک زبان قراردادی، و شاید توضیحات زبان طبیعی. این یک نماد گذاری فشرده و غالباً غیررسمی است که تعداد زیادی از ریاضی آموختگان میتوانند آن را متوجه شوند، و یک روش بسیار متداول است برای بیان آلگوریتمهای ریاضی.
معمولاً حروف چینی غیر اسکی برای معادلات ریاضی مورد استفاده قرار میگیرد، برای مثال به وسیله Tex یا MathML یا ویرایشگران فرمول اختصاصی.
شبه کدهای ریاضی گاهی اوقات کد دست وپا شکسته(pidgin) نامیده میشوند، برای مثال pidgin ALGOL، pidgin fortran، pidgin basic، pidgin pascal، pidgin C، pidgin Ada.
کامپایل ماشین یا تفسیر
غالباً پیشنهاد میشود که زبانهای برنامهنویسی آینده بیشتر از زبانهای متداول امروز به زبان طبیعی و زبان انسان نزدیک باشند؛ نکته اینجاست که با رو به افزایش بودن سرعت کامپیوترها و پیشرفتهای حاصل در زمینه کامپایل کردن به کامپیوترها این اجازه را خواهد داد که از توضیح الگوریتمها برنامه را ایجاد کنند، به جای اینکه نیاز داشته باشند تا انسان تمام جزئیات را پیاده کند.
دستور زبان طبیعی در زبانهای برنامه نویسی
تلاشهای گسترده برای وارد کردن دستور زبان طبیعی به زبانهای برنامهنویسی منجر به ایجاد زبانهای برنامهنویسی از قبیل HyperTalk، Lingo، AppleScript، SQL و Inform شدهاست. در این زبان ها، پرانتزها و کاراکترهای خاص با حروف اضافه جایگزین شدهاند تا کد به زبان طبیعی نزدیک تر باشد. این کار باعث میشود که انسانی که با زبان آشنایی ندارد متوجه کد شود و حتی یک زبان را نیز بیاموزد. در هر حال، شباهت به زبان طبیعی بیشتر جنبه زیبایی دارد تا اصالت. قواعد گرامری دقیقاً مانند زبانهای برنامهنویسی قراردادی محض و رسمی هستند، و لزوماً نوشتن برنامهها را آسان تر نمیکنند.
زبانهای برنامهنویسی ریاضی
یک جایگزین برای استفاده شبه کد ریاضی (شامل نظریه مجموعهها و عملیات ماتریسی) برای مستند سازی الگوریتمها استفاده از یک زبان برنامهنویسی ریاضی وار است که از ترکیبی از نمادگذاری ریاضی غیر اسکی و ساختارهای کنترل برنامه باشد. سپس کد میتواند توسط ماشین تجزیه و تفسیر شود.
چند زبانهای خصوصیات رسمی نماد گذاری نظریه مجموعهها را با کمک کاراکترهای ویژه شامل میشوند. برای مثال:
نماد گذاری Z