• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

جاوا اسکریپت-آشنایی با حلقه for و while

sky boy

متخصص بخش برنامه نویسی
در مطلب گذشته دیدیم که چگونه از مقایسه (Comparison) و شرط (If و Else) استفاده کنیم
و تفکری که در ذهن داریم را در بستر مفسر جاوا اسکریپت پیاده سازی کنیم،
حال در ادامه آشنایی با عنصری دیگر به نام حلقه (loop) و دو نوع پرکاربرد آن یعنی for و while به کمک مثال.

حلقه های for و while در جاوا اسکریپت چه کاربردی دارند؟


اگر بخواهیم به زبان ساده کاربرد حلقه ها را توضیح دهیم،
باید بگویم حلقه ها در زبان های برنامه نویسی (عموما) و به طور خاص در جاوا اسکریپت برای محاسبات تکراری با مقادیر متفاوت کاربرد دارند،
مثلا اگر نمرات 100 دانش آموز را داشته باشیم و بخواهیم معدل آنها را حساب کنیم، به جای نوشتن کد برای تک تک آنها، یک کد به صورت حلقه می نویسیم
و تنها در هر دور محاسبه، مقادیر را با نمرات و اسامی دانش آموزان جایگزین می کنیم؛
از لحاظ برنامه نویسی حلقه ها نیاز به یک شرط دارند و تا زمانی که آن شرط درست باشد (true باشد)،ادامه پیدا خواهند کرد،
به عنوان نمونه، در مثالی که پیش تر ذکر شد، شرط می تواند این باشد: تا زمانی که (while) تعداد دانش آموزان به 100 نرسیده (100 > var) محاسبه را انجام بده.



 

sky boy

متخصص بخش برنامه نویسی

حلقه for در جاوا اسکریپت (javascript for loop):


از حلقه for در جاوا اسکریپت (مثل دیگر زبان های مشابه) برای خروجی گرفتن یک عنصر در دور تکرار، با مقادیر افزایشی یا کاهشی استفاده می شود،
شاید در نگاه نخست درک نحوه کارکرد for کمی پیچیده به نظر برسد اما با کمی تامل و موشکافی خواهید دید که حداقل موارد ابتدایی و اولیه آن بسیار ساده است،
شیوه نگارش یک حلقه for به صورت زیر است.
کد:
<script type="text/javascript">
for (i=0;i<10;i++){
}
</script>

توضیح:
- در کد ساده بالا، حرف i یک متغیر پیش فرض است که می تواند به فرض معیار یک دانش آموز باشد (هر دانش آموز را یک i فرض می کنیم!).
- در قسمت اول i را برابر صفر قرار می دهیم، چون می خواهیم از صفر شروع کنیم (i=0).
- در آرگومان (argument) دوم، به حلقه for می گوییم که تا چه زمانی تکرار شود (تا زمانی که i<10 باشد).
- در قسمت سوم حلقه، به ازای هر یک دور تکرار، متغیر i را یک واحد افزایش می دهیم و تا زمانی که i کوچکتر از 10 باشد این تکرار ادامه می یابد (دور اول = 0+1 دور دوم = 1+1 دور سوم = 2+1 و...).
- در بخش چهارم حلقه، خروجی یا محاسبات را بین {} انجام می دهیم.
در مثال زیرمتغیر هایی تعریف و در یک حلقه از آنها خروجی گرفته شده.

کد:
[LEFT]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>حلقه for در جاوا اسکریپت</title>
<style type="text/css">
body{
 direction:rtl;
 font-size:12px;
 font-family:Tahoma, Geneva, sans-serif;
}
</style>
<script type="text/javascript">
//<![CDATA[
var br = '<br />';
document.write("شروع حلقه for <br />");
for (i=0;i<10;i++){
 var loop = i + 1;
 document.write("مقدار i در دور " + loop + " = " + i);
 document.write(br); 
}
document.write("پایان حلقه for <br />");
//]]>
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr />
 مقادیر متغیر در حلقه for در درون آن تعریف می شود.
</body>
</html>
[/LEFT]

توضیح:
- همانطور که در مطالب قبل گفته شد، در کد بالا عبارت CDATA برای معتبر بودن کد از لحاظ سیستم اعتبار سنجی w3c است.
- در این مثال تمام متغیر ها و مقادیر به صورت دلخواه و فرضی تعریف شده اند.
- در حلقه for، متغیر loop را تعریف کرده ایم که با هر دور حلقه، میزان فعلی i را به اضافه یک می کند.
- سپس با دستور document.write خروجی را به مرورگر داده ایم.
اگر بخواهیم به صورت ساده ساختار حلقه را بررسی کنیم؛
در دور اول i برابر صفر است، متغیر loop برابر صفر + 1 است، پس خروجی دور اول می شود: مقدار i در دور 1 = 0 ،
سپس در دور دوم i یک مقدار افزایش می یابد (به وسیله بخش سوم حلقه ++i) و می شود 1، مقدار متغیر loop می شود i + 1 که نتیجه می شود 2 (1+1)
و خروجی این دور برابر است با: مقدار i در دور 2 = 1 و همین طور این ساختار ادامه می یابد تا زمانی که i کوچکتر از 10 است (i<10).






 

sky boy

متخصص بخش برنامه نویسی
حلقه while در جاوا اسکریپت (javascript while loop):

همانطور که دیدیم، در حلقه loop، مقداری تحت عنوان فرضی i را در خود ساختار حلقه، افزایش (یا کاهش) دادیم،
اما اگر بخواهیم با توجه به متغیری دیگر، خارج از ساختار حلقه، خروجی داشته باشیم، نیاز به while داریم، while به فارسی برابر است با کلمه "مادامی که" یا "تا زمانی که"،
مثلا تا زمانی که تعداد دانش آموزان به 10 نرسیده، حلقه را تکرار کن؛
به کد زیر توجه کنید تا موضوع برایتان روشن شود.
کد:
[/SIZE]
<script type="text/javascript">
var num = 0;
while (num < 10){
 num++;
}
</script>[SIZE=3]

توضیح:
- معمولا در ساختار while، متغیری خارج از ساختار حلقه ارزیابی می شود و تا زمانی که آن رابطه درست (true) باشد،
خروجی حلقه پردازش می شود (خروجی الزاما در مرورگر نشان داده نمی شود).
- در کد بالا، ابتدا متغیری فرضی با عنوان num را تعریف و مقدار آن را برابر صفر قرار داده ایم، سپس به حلقه ی while می گوییم تا زمانی که num کوچکتر از 10 است،
میزان num را در هر دور یک واحد افزایش بدهد (++num).
در مثال زیر، نحوه استفاده از while را ملاحظه می کنید.
کد:
[/SIZE]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> حلقه while در جاوا اسکریپت</title>
<style type="text/css">
body{
 direction:rtl;
 font-size:12px;
 font-family:Tahoma, Geneva, sans-serif;
}
</style>
<script type="text/javascript">
//<![CDATA[
var br = '<br />';
var num = 0;
document.write("شروع حلقه while <br />");
while (num < 10){
 var loop = num + 1;
 document.write("مقدار i در دور " + loop + " = " + num);
 document.write(br);
 num++; 
}
document.write("پایان حلقه while <br />");
//]]>
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr />
 مقادیر متغیر در حلقه while در بیرون آن تعریف می شود.
</body>
</html>[SIZE=3]
توضیح:
- در این مثال نیز متغیرهایی را به صورت فرضی تعریف و در حلقه ی while، مقادیر را پردازش کرده ایم، ساختار while شباهت زیادی به for دارد،
لذا از توضیحات مربوط به for تا حدود زیادی می توانیم در مورد while نیز استفاده کنیم.
- توجه کنید که حتما حلقه خود را طوری تعریف کنید که پایان پذیر باشد!، یک اشتباه کوچک ممکن است موجب بی نهایت شدن دور شود که موجب از کارافتادن مرورگر می شود،
مثلا در کد بالا اگر مقدار num را در هر دور یک واحد افزایش ندهیم، حلقه تا بی نهایت ادامه می یابد
چرا که شرط ادامه حلقه، کوچکتر بودن num از 10 است و واضح است که مقدار صفر همیشه از 10 کوچکتر است (و شرط while همیشه true است).

 
بالا