Unity Loops

حلقه‌ها در سکرپیت نویسی یونیتی

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

for (initialization; condition; update) {
    // Code block to be executed.
}

البته این یه لوپه که بهش می‌گن فُر لوپ یا همون انگلیسیش for loop که مهمترین نوع لوپه. در این نمونه for یه کلید واژه یا کلمه‌ی کلیدیه حالا هر کدوم رو دوست داشتید بگید فرقی نمی‌کنه. کارش اینه که هم به ما و هم به سیستمتون بگه که اینجا داره یه لوپ شروع میشه. برای اینکه لوپ شروع به کار کنه قبلش باید یه چیزهایی مشخص باشه که اونها رو داخل پرانتزهای بعد از فُر قرار می‌دیم.

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

بعدیش condition ﻪ که یه شرطه. این شرط باید برقرار باشه که لوپ کار کنه هم بار اول و هم بارهای بعدی که یه طرف این شرط تعداد کل قابلمه‌ها قرار می‌گیره و طرف بعدی اون مقدار جاری شمارنده. چون اول کار مقدار شمارنده صفره یعنی هنوز هیچ کدوم از قابلمه‌ها چک نشدن و تعداد قابلمه‌ها پنج تاست پس شرط برقراره و لوپ شروع به کار می‌کنه و کدهای داخل خودش رو اجرا می‌کنه تموم که شد و چیزی برای اجرا نموند برمیگرده بالا و یکی به شمارنده در update اضافه می‌کنه که سومین قسمت داخل پرانتزهاست.

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

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

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

for (int i = 0; i < 5; i++)
    {
        // Code block to be executed.
    }

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

i++
i+=1
i=i+1

یه مورد خیلی مهم در مورد قسمت شرط در لوپه. در مثال بالا چون ما می‌دونستیم که کلا پنچ قابلمه برای چک کردن داریم واسه همین شرط ما شد: تا وقتی که شمارنده‌ی ما از تعداد پنج کمتر باشه، ولی در خیلی از موارد ما تعداد قابلمه‌ها رو نداریم چون تعداد اونها داخل یه آرایه ذخیره شده (آرایه رو اینجا توضیح دادم). حالا باید چکار کنیم؟ خب باید کاری کنیم که آرایه بیاد بگه که چه تعداد قابلمه‌ در خودش ذخیره کرده که برای این کار مثل نمونه زیر اول اسم آرایه بعد نقطه و بعد تعداد عناصر آرایه را وارد می‌کنیم.

for (int i = 0; i < myTestArray.Length; i++)
    {
        // Code block to be executed.
    }

بزودی این نوشته رو با توضیح درباره بقیه‌ی انواع لوپ بروز رسانی می‌کنم.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *