برای دیدن نسخه اصلی کلیک کنید
پنجشنبه ۶ بهمن

برنامه نویسی

دفعات بازدید ۳۵۴

جلسه پنجم آموزش برنامه نویسی زبان جاوااسکریپت دستور حلقه for


۱

جلسه ۵ جاوا اسکریپت
دستور for
در جلسه قبل در مورد دستور while صحبت کردیم و اشاره کردیم که تقریبا هر کاری را می توان با دستور while انجام داد. ولی در عمل برنامه نویس به دنبال راحتی است. در نتیجه به دنبال یادگیری دستورات متفاوتی است که راحتی بیشتری را در موقعیت های متفاوت برایش تامین کنند.
حالت عادی دستور for برای زمانی است که شما میخواهید به تعداد مشخصی یک دستور را اجرا کنید. همه چیز در اینجا بر اساس یک گام شمار خواهد بود. نقطه شروع حرکت، نقطه پایان و گام های حرکت باید مشخص شود. برای مثال شما مشخص می کنید از ۰ تا ۱۰ یک قدم یک قدم دستورات را اجرا کنید. برا این کار به صورت زیر عمل می کنیم.

for( let i=0; i<10; i++)
{
}

در این دستور مشخص می کنیم که یک متغیر با هر نامی دلخواهی انتخاب می کنیم. نقطه شروع آن را مشخص می کنیم که اینجا صفر است. بخش بعدی را با یک ; از بخش قبلی جدا میکنیم. نقطه پایانی را مشخص می کنیم که شرط مادامی ادامه پیدا کند که شمارنده ما کمتر از ۱۰ باشد. مجددا این بخش را با یک ; دیگر می بندیم و در قسمت آخر مشخص میکنیم که در هر بار اجرای دستورات این شمارنده چگونه تغییر کند.
این دستور را می توانستیم با دستور while به صورت زیر بنویسیم.

let i=0;
while(i++<10)
{
}

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

for(let i=10; i>0 ; i--)
{

}

تنها نکته مهم این است که حلقه بی نهایت ایجاد نکنیم و حتما اجرای برنامه در جایی متوقف شود. برای مثال حلقه زیر باعث اجرای بی نهایت عدم اتمام برنامه می شود.

for (let i=0;i<10;i--)
{

}

البته این ادعا کاملا درست نیست چرا که وقتی مقدار متغیر i به کمترین حالت خود برسد دچار سرریز می شود دوباره از یک عدد بسیار بزرگ شروع می شود و کاهش پیدا می کند و در نهایت متوقف می شود. اما به هر حال احتمال زیادی وجود دارد که برنامه نویس در این جا دچار اشتباه شده است.
در مورد متغیرها صحبت کردیم که دچار سرریز یا overflow می شوند. اعداد در برنامه نویسی حد مشخصی دارند. اینگونه نیست که هر مقداری را بتوان در آن ها ذخیره کرد. چرا که این اعداد در حافظه ذخیره می شود و حافظه نیز محدود است. برای مثال بزرگترین عدد در زبان js برابر است با 1.7976931348623157e+308 .این عدد خیلی بزرگ است ولی به هر حال بینهایت نیست و از آن بزرگتر هم خواهد بود. لازم به حفظ کردن این عدد نداریم. شما میتوانید برای دسترسی به این عدد از متغیر Number.MAX_VALUE استفاده کنید.
نوع دوم دستور for برای دسترسی به کلید های یک آرایه یا آبجکت است.
برای مثال فرض کنید یک متغیر داریم از نوع آرایه یا آبجکت . اگر بخواهیم دستوری بنویسیم که به ازای کلید های موجود در این متغیر تکرار شود می توانیم از این دستور استفاده کنیم. مثال بهتر شاید دفترچه تلفن باشد. فرض کنید متغیری شامل دفترچه تلفن باشد که کلید نام فرد و مقدار ها شماره تلفن باشد . برای اینکه در دفترچه تلفن بگردید و شماره فرد مورد نظر را پیدا کنید از این دستور استفاده می کنید.

let phoneBook={saeed:'092031',Ali:'0912',kazem:'0935',hadi:'0922'}
for(let name in phoneBook)
{
	console.log(name)
}

در مثال بالا یک دفترتلفن داریم که نام و شماره فرضی افراد را دارد. برای چاپ نام های در این دفترچه از حلقه for استفاده می کنیم. ولی به جای اینکه حد شروع و پایان و گام ها را مشخص کنیم ، تنها می گوییم یک متغیر نام تعریف کن که در دفترچه تلفن بگردد. کلمه کلیدی در اینجا in می باشد.در حقیقت در هر بار حلقه نام فرد را در متغیر name می گذارد و یکبار دستور را اجرا می کند که در این مثال آن را در کنسول چاپ می کند.
نوع دیگر دستور forبرای زمانی است که ما به مقدار اعضای آرایه نیاز داشته باشیم.نه کلید آن. البته در مثال قبل از آبجکت استفاده کردیم نه آرایه . ولی این نوع دستور for صرفا برای آرایه هاست و نمی توان برای اشیا از آن استفاده کرد.
فرض کنید لیست اسامی یک کلاس در یک آرایه آماده است و شما میخواهید آن را چاپ کنید. به مثال زیر توجه کنید.

let names=['Ali','saeed','kazem','ahmad','meisam']
for(let name of names)
{
console.log(name)
}

در این مثال نام ها در متغیر names ذخیره شده اند. حالا از دستور for استفاده می کنیم ولی این بار به جای کلمه in از کلمه of استفاه می کنیم. در نتیجه نام ها را در هر بار اجرای حلقه در متغیر name می گذارد و سپس ما با استفاده از دستور console.log آن را چاپ می کنیم. دقت داشته باشیم که در آرایه کلید ها از صفر شروع می شوند و بیشتر می شوند . یعنی اگر در این مثال از کلمه in استفاده می کردیم اعداد ۰و ۱ و … چاپ می شد نه نام ها.