وقتی میخواهیم یک مسئله را با برنامهنویسی حل کنیم، معمولاً قبل از نوشتن کد باید بدانیم که دقیقاً قرار است چه کاری انجام دهیم. شبهکد یکی از ابزارها یا روشهایی است که در همین مرحله به ما کمک میکند. (اینطوری تلفظ میشود: Shebhe Code)
شبهکد یک روش ساده برای نوشتن منطق و مراحل حل یک مسئله بدون وابستگی به یک زبان خاص برنامهنویسی است. یعنی هنوز کد واقعی ننوشتهایم و کامپیوتر هم نمیتواند آن را اجرا کند؛ فقط منطق برنامه را طوری مینویسیم که خودمان یا یک برنامهنویس دیگر بتواند بهراحتی آن را بخواند و مرور کند.
در این آموزش ابتدا یاد میگیریم که شبهکد دقیقاً چه کاری انجام میدهد؛ سپس با یک مثال ساده آن را تحلیل میکنیم. در نهایت نیز تفاوت شبهکد با الگوریتم و کد و از سوی دیگر نکات جانبی آن را با مثال و به زبان ساده آموزش میبینیم.
فهرست محتوای آموزش
فرض کنید که میخواهیم یک میز چوبی بسازیم. قبل از این که اره و چکش را برداریم و ابتدا به برشکاری و ساخت میز کنیم، احتماً مراحل کار را برای خودمان مشخص میکنیم؛ مثلا مینویسیم:
نوشتن این مراحل و حتی محاسباتی که در مرحله اندازهگیری انجام میدهیم، خودِ میز نیستند و فقط مشخص میکنند که چطور قرار است آن میز را بسازیم.
شبهکد هم تقریباً همین نقش را در برنامهنویسی دارد. قبل از اینکه درگیری Syntax و نوشتن کد (به هر زبانی) شویم، ابتدا منطق مسئله را مرحله به مرحله مشخص میکنیم.
در حقیقت میتوان شبهکد (Pseudocode) را بین «فکر کردن درباره راهحل» و «نوشتن کد» در نظر گرفت. با این کار، ابتدا روی حل مسئله تمرکز میکنیم و بعد همان منطق را به زبان برنامه»ویسی موردنظرمان تبدیل میکنیم. فرقی ندارد که با پایتون کد مینویسیم یا PHP، شبهکد در تمام زبانها کاربرد دارد.
نکته مهم این است که شبهکد قرار نیست آنقدر به یک زبان خاص وابسته یا شبیه شود که خودش با کد تبدیل شود. ساختار آن باید برای انسان خوانا و در عین حال به اندازه کافی دقیق باشد تا منطق برنامه ابهام نداشته باشد.
فرض کنید میخواهیم وضعیت قبولی یک دانشجو را طبق نمره مشخص کنیم. منطق آن بسیار ساده است: اگر نمره ۱۲ یا بیشتر بود، دانشجو قبول شده و در غیر اینصورت مردود است.
قبل از اینکه کدش را با یک زبان برنامهنویسی بنویسیم، میتوانیم منطق را به شکلی شبیه به زیر مشخص کنیم:
دریافت نمره
اگر نمره بزرگتر یا مساوی 12 بود:
چاپ passed
وگرنه:
چاپ failed
در شبهکد بالا دقیقا میدانیم قرار است چه اتفاقهایی و به چه ترتیبی بیوفتد:
حالا همین منطق را با زبان برنامهنویسی پایتون مینویسیم:
score = int(input())
if score >= 12:
print("passed")
else:
print("failed")
تفاوت اصلی این دو قطعه کد این است که شبهکد فقط منطق برنامه را شرح میدهد و قابل اجرا نیست؛ اما کد پایتون آن منطق را پیاده کرده و قابل اجراست.
شبهکد زیر را بخوانید. فرقی ندارید که به چه زبان برنامهنویسیای کار میکنید، قطعاً همگی شما متوجه میشوید که منطق قطعه کد زیر چی هست:
for number in 1-10:
print number
یا شاید همین را به فارسی اینطوری بنویسیم:
به ازای هر عدد از 1 تا 10
عدد رو چاپ کن
یک نکته بسیار مهم: هنگام نوشتن شبهکد نباید نگران علامت : یا آکولاد یا نوع متغیر یا هر Syntax و اصول دیگری باشید! مهم این است که منطق برنامه را درست و بدون ابهام مشخص کنید.
ن در کلاسهای حضوریام همیشه به دانشپذیران میگویم که قبل از نوشتن کدهای طولانی، سعی کنید روی کاغذ برای خودتان مراحل و منطق را بنویسید یا نقاشی کنید! این نیز نوعی شبهکد است. خیلی درگیر اینکه چطور Pseudocode بنویسیم یا چطوری For یا While را بنویسیم نشوید. فقط منطبق را طوری که برای خودتان و دیگران واضح باشید توصیف کنید.
شاید هنگام یادگیری برنامهنویسی و آشنایی با مفهوم شبهکد برایتان سؤال شود که «وقتی که قرار است در نهایت کد واقعی بنویسم، چرا یک مرحله دیگر به کارهایم اضافه کنم؟» پاسخ این است که در مسائل ساده و کوتاه حق با شماست؛ میتوانید مستقیماً کدنویسی کنید. اما هرچه مسئله پیچیدهتر میشود، مشخص کردن منطق قبل از دست به کد شدن میتواند بسیاری از خطاهای فکری را زودتر آشکار کند.
این سه مفهوم به هم مرتبط هستند، اما یکی نیستند. بهطور خیلی خلاصه و به زبان ساده اینها را در جدول زیر بیان دادهام:
در واقع میتوان خیلی ساده گفت که الگوریتم راهحل است؛ شبهکد یک روش بیان آن را راهحل است و کد، پیادهسازی آن که قابلیت اجرا دارد.
اولین دلیل این است که قبل از درگیر شدن با Syntax و کدنویسی، روی حل مسئله، مراحل اجرای برنامه و منطق برنامه تمرکز کنیم. این مسئله مخصوصاً برای افراد مبتدی و کسانی که در ابتدای راه برنامهنویسی هستند از اهمیت زیادی برخوردار است؛ چون ممکن است فکرمان همزمان با فکر کردن به راهحل درگیر قواعد و ساختارهای کدنویسی نیز بشود.
دلیل دوم این است که شبهکد به زبان خاصی وابسته نیست. یک منطق واحد را میتواند بعداً با هر زبانی (نظیر پایتون، جاوا، C، جاوا اسکریپت و PHP) پیادهسازی کرد.
دلیل سوم، انتقال سادهتر ایدههاست. وقتی قصد داریم منطق یک برنامه را برای فرد دیگری توضح دهیم، لازم نیست که او حتماً با Syntax زبان مورد استفادهٔ ما آشنا باشد. ما فقط میخواهیم ساختار و روند کد را برای اون تبیین دهیم و لزومی ندارد که شرح کدنویسی را بیان کنیم.
شبهکد Syntax استاندارد و واحدی ندارد. یعنی بر خلاف زبانهای برنامهنویسی، قاونی مشخصی وجود ندارد که همه افراد مجبور باشند دقیقاً با همان ساختار شبهکدهایشان را بنویسند. چیزی که اهمیت دارد، واضح بودن منطق و قابل فهم بودن مراحلش برای انسان است.
شما ممکن است در کتابها یا دورههای آموزشی ساختار، دستورها و قوانینی برای نوشتن شبهکد دیده باشید. نمیگویم که آنها اشتباه است؛ نه! اتفاقاً گاهی اوقات ممکن است مجبور باشیم در ساختار خاصی صحبت کنیم. مثلاً ما در تیم خود قواعدی مشخص میکنیم که شبهکدهایمان نیاز به تبیین نداشته باشد و همگی راحت متوجه شبهکدهای دیگران بشویم.
پس شما آزادید که به هر شکلی و زبانی اما بهطور خوانا و واضح Pseudocode را بنویسید.
مثلاً مثالی که برای چاپ وضعیت قبولی را مردودی دانشجو بهصورت زیر زدم را بهخاطر بیاورید:
دریافت نمره
اگر نمره بزرگتر یا مساوی 12 بود:
چاپ passed
وگرنه:
چاپ failed
ممکن است فردی همان منطق را با ساختاری نزدیکتر به کدنویسی بنویسد:
INPUT score
IF score >= 10: PRINT "passed"
ELSE: PRINT "failed"
یا حتی آن را بهگونهای دیگر بنویسد:
score رو ورودی بگیر
اگر score حداقل 12 بود: چاپ کن passed
وگرنه چاپ کن failed
هر سه مورد بالا صحیح هستند. تفاوت فقط در نحوه بیان منطق است و راهحل هیچ تفاوتی نکرده است.
پس هنگام نوشتن شبهکد نباید بیش از حد درگیر انتخاب کلمات یا شکل دقیق دستورها شوید. نکته مهمی که باید به آن خیلی بیشتر توجه کنید این است که آیا منطبق برنام واضح است و شخص دیگری میتواند بدون حدس زدن متوجه شود که چه اتفاقی قرار است بیوفتد؟
استفاده از شبهکد معمولاً در سه موقعیت مفید است:
یادتان باشد که قرار نیست برای همهی کدهایتان کد حتماً شبهکد بنویسید. از آن زمانی استفاده کنید که میخواهید یک مسئله بزرگ را قبل از کدنویسی برای خودتان واضحتر کنید. در حقیقت Pseudocode کمک میکند که ابتدا فکر کنیم و سپس کدنویسی کنیم. وقتی منطق مسئله مشخص باشد یا برای ما واضح و روشن باشد، نیازی به استفاده از آن نداریم.
در این آموزش با یک مفهوم کاربردی در برنامهنویسی آشنا شدیم. شبهکد یک روش ساده برای بیان مراحل و منطق یک الگوریتم یا ساختار کد بدون وابستگی به زبان خاص است. آن را نمیتوان اجرا کرد و برای درک و فهم بهتر انسان استفاده میشود.
امیدوارم که از این آموزش نهایت استفاده را برده باشید و بتوانید در جایی که لازم است از شبهکد و ساختارهای مشابه استفاده کنید. اگر سؤال یا چالشی دارید، در بخش دیدگاهها مطرح کنید.
این آموزش برای همیشه بدون هزینهه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با سفارش یه فنجون نوشیدنی بهمون انرژی بدید!
برچسب:
نویسنده: استخدام کار