آموزش انواع دستور برنامه‌نویسی

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

قصد دارم در این بخش از آموزش مبانی برنامه‌نویسی در مورد انواع دستورها صحبت کنم. هر چیزی که در فرآیند کدنویسی می‌نویسیم جزء یکی از این انواع خواهد بود.

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

ابتدا در مورد دستورهای ساده و پیچیده صحبت می‌کنم تا شما یک دید کلی از مجموعه دستورات داشته باشید. پس از آن ۷ نوع اصلی دستورهای برنامه نویسی را با هم بررسی می‌کنیم.

انواع دستور در برنامه نویسی

اگر بخواهیم همه دستورات برنامه‌نویسی را در دو بخش دسته‌بندی کنیم؛ دو دسته ساده و مرکب را خواهیم داشت:

  • دستورهای ساده (Simple Statements)
  • دستورهای پیچیده (مرکب یا Compound Statements)

دستورات ساده برای انجام عملیات‌های ساده تعریف می‌شوند. این دستورها معمولاً یک خطی هستند. عملیات‌های انتساب، تعریف متغیر، محاسباتی مثل جمع و ضرب از جمله دستورات simple در برنامه نویسی هستند.

دستورهای پیچیده (مرکب) معمولاً اجرای سایر دستورها را کنترل کرده یا روی روند اجرای آن‌ها تأثیر می‌گذارند.

اجازه دهید با یه مثال خیلی ساده، این دو نوع را از هم تفیکیک کنم. فرض کنید من به شما می‌گویم «برنامه‌نویسی یاد بگیر!» این یک دستور ساده است. شما به راحتی حرف من را متوجه می‌شوید و آن را انجام می‌دهید. (البته امیدوارم 🙂 )

اما اگر بگویم «اگر دوست داری کارهای خارق‌العاده کنی، برنامه‌نویسی یاد بگیر!» چه تفاوتی در اجرای آن ایجاد می‌شود ؟

شما ابتدا بررسی می‌کنید که آیا دوست دارید کارهای خارق‌العاده انجام دهید یا خیر. در صورتی که خواسته شما این بود، شروع به یادگیری برنامه‌نویسی می‌کنید.

جمله‌ای که همراه با شرط به شما گفتم، یک دستور پیچیده است.

در زبان‌های برنامه نویسی موارد زیر را جزء دستورات پیچیده در نظر می‌گیرند:

  • بلوک‌های کد (برای ساماندهی دستورات یا تعریف مجموعه‌ای از دستورات)
  • دستورات شرطی
  • حلقه‌های تکرار

دستورهای برنامه‌نویسی

حالا که با دو نوع اصلی دستورها در برنامه نویسی آشنا شدید، باید با ۷ نوع اصلی که هر کدام در یکی از این دسته‌بندی‌ها قرار می‌گیرد آشنا شوید.

پنج مورد اول دستورات ساده و دو مورد آخر (شرط و تکرار) دستورهای مرکب هستند.

تقریباً درصد بسیار زیادی از کدهایی که در هر برنامه و به هر زبانی می‌نویسیم، جزء این هفت مورد هستند.

دستور فراخوانی

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

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

این جمله امری می‌تواند پارامتر یا پارامترهای دیگری نیز بگیرد. مثلاً ممکن است بگوییم «نقاشی من را بکش» یا «یک نقاشی رنگی از منظره بکش».

در برنامه‌نویسی هم می‌توانیم برای دستورهای فراخوانی پارامتر تعیین کنیم.

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

دستورهای فراخوانی زیادی در برنامه نویسی وجود دارد. برخی از آن‌ها جزء زبان برنامه نویسی و برخی دیگر جزء ویژگی‌های سیستم عامل است.

تعریف تابع در برنامه‌نویسی

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

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

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

بخش زیادی از دستورات فراخوانی در برنامه نویسی به صورت عملیات های ورودی یا عملیات خروجی هستند. یعنی با انجام فراخوانی معمولاً به دنبال گرفتن یک ورودی یا انجام یک کار در خروجی سیستم هستیم.

دستور تعریف در برنامه‌نویسی

من به شما می‌گویم فرض کنید عدد x یک عدد مثبت است. در ذهن شما یک x تعریف می‌شود بدون اینکه مقدار خاصی داشته باشد. فقط یک ویژگی از آن دارید و یک اسم.

به این عملیات، عملیات تعریف می‌گوییم. به آن اسم اصطلاحاً متغیر گفته و به شیوه تعریف این متغیر دستور تعریف (Declaration یا Definition) کفته می‌شود.

در برنامه‌نویسی هم ممکن است گاهی یک متغیر را بدون اینکه به آن مقداری تخصیص بدهیم تعریف کنیم.

دستور تخصیص یا انتساب

پس از آنکه با دستور تعریف یک متغیر را ایجاد کردیم، در هر زمان ممکن است مقداری را به آن اختصاص دهیم. به این کار انتساب (Assignment) گفته می‌شود.

ممکن است بارها و بارها در زمان‌های مختلف، مقادیر مختلفی به یک متغیر تخصیص دهیم. این کار معمولاً با گذاشتن عملگر مساوی بین نام متغیر و مقدار آن انجام می‌شود. مثلاً با نوشتن x = 16 عدد 16 را به متغیر ایکس انتساب می‌دهم.

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

در بعضی موارد ما عملیات تعریف و تخصیص را به صورت همزمان انجام می‌دهیم. مثلاً من به شما می‌گویم: «عدد x را معادل 16 در نظر بگیر.»

در این حالت همزمان با اینکه متغیر x را در ذهن خود تعریف می‌کنید، مقدارش را هم به آن انتساب می‌دهید. در برنامه‌نویسی هم اکثراً از این روش استفاده می‌شود. یعنی در همان لحظه‌ای که مقدار اولیه برای متغیر مشخص می‌شود، متغیر را نیز تعریف می‌کنیم. (به صورت x = 16)

دستور تعریف و دستور تخصیص در برنامه‌نویسی معمولاً خروجی عملیاتی ندارند. تنها تغییری که این دستورات ایجاد می‌کنند، تغییر در حافظه است. البته منظورم از خروجی، خروجی‌ای است که ما به عنوان کاربر ببینیم وگرنه تغییرات در حافظه هم می‌تواند یک نوع خروجی برای سیستم کامپیوتری باشد.

دستور بازگشت

یکی از مهم‌ترین نوع عملیات در برنامه‌نویسی دستور بازگشت یا return هست.

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

در قسمت دستور فراخوانی برنامه‌نویسی فهمیدیم تابع چیست. معمولاً انتظار داریم توابعی که تعریف می‌کنیم یک خروجی داشته باشند.

معمولاً برنامه‌های بزرگ را به قسمت‌های کوچک تقسیم می‌کنند. هر قسمت کوچک بخشی از کار اصلی را انجام می‌دهند. به این زیر بخش‌ها اصطلاحاً Sub-Program یا Sub-Routine گفته می‌شود. در برنامه اصلی این برنامه‌های ریزتر را اجرا کرده و نتایجشان را استفاده می‌کنیم.

دستور رفتن (GoTo)

از دستور goto در برنامه‌نویسی برای حرکت غیر ترتیبی بین خطوط استفاده می‌شود. فرض کنید برنامه شما در خط 150 قرار دارد ولی می‌خواهید به خط 100 بازگردید و یک کار را دوباره انجام دهید. یا شراطی برقرار شده که باید به خط 200 حرکت بپرید.

این کارها به کمک دستور goto (به معنی «برو به») انجام می‌شود. در حقیقت از این دستور در برنامه‌نویسی برای کنترل جریان اجرا (Flow Control) استفاده می‌شود.

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

دستور شرطی (دستور کنترلی)

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

برای این کار نیاز به بررسی یک وضعیت داریم: اینکه آیا الآن روز است یا شب ؟!

در ساده‌ترین حالت برای ایجاد چنین برنامه‌ای باید بگوییم «اگر الآن روز هست، آنگاه پیام روز بخیر را چاپ کن.» و «اگر الآن شب هست، آنگاه پیام شب بخیر را چاپ کن.»

در حقیقت از یک شرط ساده برای بررسی وضعیت استفاده کرده‌ایم. به این دستور یک دستور یا ساختار شرطی (Conditional) گفته می‌شود. در اکثر زبان‌ها برای تعریف شرط از کلمه کلیدی if به معنای «اگر» استفاده می‌شود.

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

بنابراین برای استفاده از دستورات شرطی برنامه‌نویسی باید یک منطق (Logic) در زبان وجود داشته باشد.

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

اگر هوا معتدل بود آنگاه به پارک می‌روم در غیر اینصورت در خانه می‌مانم.

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

دستور switch و select

در برخی زبان‌ها علاوه بر ساختار شرطی if یک ساختار دیگر تحت نام سوییچ (switch) یا انتخاب (select) داریم. این ساختارها به ما اجازه می‌دهند شرط‌های پیچیده‌تر و طولانی‌تری را ایجاد کنیم.

برای همان مثالی که در مورد وقت بخیر گفتیم، می‌توانیم به کمک ساختار switch یک برنامه با حالت‌های زیر بنویسیم:

  • اگر ساعت 6 تا 11 بود، بگو صبح بخیر
  • اگر ساعت 11 تا 14 بود، بگو ظهر بخیر
  • اگر ساعت 14 تا 18 بود، بگو عصر بخیر
  • اگر ساعت 18 تا 24 بود، بگو شب بخیر
  • در غیراینصورت، بگو نیمه‌شب بخیر

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

مثالی از دستور شرطی در برنامه نویسی
مثالی از دستور شرطی در برنامه نویسی

دستور تکرار در برنامه نویسی

یکی از مزایای استفاده از کامپیوتر این است که کامپیوترها می‌توانند یک کار را بارها و بارها بدون هیچ تفاوتی انجام دهند. یک کار تکراری با دستورهای تکرار در برنامه نویسی انجام می‌شود.

به دستور تکرار اصطلاحاً حلقه (Loop) هم گفته می‌شود. در انگلیسی هم با نام Repetition Statement شناخته می‌شود.

در حالت کلی دو نوع حلقه در برنامه‌نویسی داریم:

  1. حلقه for
  2. حلقه while

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