article

حلقه for و while در جاوا اسکریپت (JavaScript)

javascript-for-while

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

حلقه ها (Loops) در جاوا اسکریپت چه کاربردی دارند؟


اگر بخواهیم به زبان ساده کاربرد حلقه ها (Loops) را توضیح دهیم باید بگوییم حلقه ها در زبان های برنامه نویسی و از جمله در جاوا اسکریپت برای تکرار اجرای قسمتی از کدها (بلاکی از کدها) در حین پردازش برنامه کاربرد دارند، به فرض اگر نمرات تحصیلی 7 دانش آموز را به صورت آرایه در اختیار داشته باشیم و بخواهیم معدل آنها را حساب کنیم می توانیم با حلقه while کدی بنویسیم و در دور تکرار مجموع نمرات دانش آموزان را بدست آورده و درنهایت معدل را حساب کنیم، از لحاظ ساختار برنامه نویسی حلقه ها عموما نیاز به وجود یک شرط دارند و تا زمانی که آن شرط درست (true) باشد دور حلقه ادامه پیدا می کند، به عنوان نمونه شرط می تواند به این صورت باشد:
تا زمانی که (while) تعداد دور به 7 نرسیده (7 > var) تکرار را انجام بده:
<script>
var student = new Array(20, 13, 18, 12, 15, 10, 19);
var all = 0;
var average = 0;
var i = 0;
while(i < 7){
    all += student[i];
    i++;
}
average = (all / student.length).toFixed(2);
alert(average);
</script>
نتیجه اجرای کد بالا به صورت زیر خواهد بود:
15.29
که معدل نمرات فرضی دانش آموزان است.

حلقه for در جاوا اسکریپت (JavaScript for Loop)


از حلقه for در جاوا اسکریپت مشابه با دیگر زبان های برنامه نویسی برای انجام فرآیندها در دور تکرار استفاده می شود، مقدار تکرار حلقه از قبل مشخص است و معمولا برای پایان دادن به آن باید شرط حلقه false شود، شاید در نگاه نخست درک نحوه کارکرد دستور for کمی پیچیده به نظر برسد اما با کمی موشکافی خواهیم دید که حداقل ساختار و عملکرد اولیه آن بسیار ساده است، شیوه نگارش حلقه for به صورت نمونه زیر است:
<script>
for(i = 0; i < 10; i++) {
}
</script>
توضیح:
- در کد ساده بالا حرف i یک متغیر پیش فرض است که برای بررسی و کنترل دورهای حلقه کاربرد دارد.
- در قسمت اول دستور for، متغیر i را برابر صفر قرار می دهیم چون می خواهیم حلقه را از صفر شروع کنیم (i = 0).
- در قسمت دوم دستور، تعیین می کنیم که حلقه for تا چه زمانی تکرار شود (تا زمانی که i < 10 باشد).
- در قسمت سوم حلقه، به ازای هر دور تکرار متغیر i را یک واحد افزایش می دهیم و تا زمانی که i کوچکتر از 10 باشد این تکرار ادامه می یابد (دور اول 1 + 0، دور دوم 1 + 1، دور سوم 1 + 2 و...).
- در بخش چهارم حلقه، خروجی یا محاسبات را در هر دور بین علامت های {} انجام می دهیم.
در مثال زیر نمونه متغیرهایی را تعریف و در حلقه for از آنها خروجی فرضی گرفته ایم:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | حلقه for در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<style>
body {
    direction: rtl;
    font-size: 12px;
    font-family: Tahoma, Geneva, sans-serif;
}
</style>
</head>
<body>
<div class="rtl">
<noscript>جاوا اسکریپت در مرورگر شما پشتیبانی نمی شود یا غیرفعال است!</noscript>
<script>
var br = '<br>';
document.write("شروع حلقه for:<br>");

var loop = 1;
for(i = 0; i < 10; i++) {    
    document.write("مقدار i در دور " + loop + " برابر است با: " + i);
    document.write(br);
    loop++;
}

document.write("پایان حلقه for.<br>");
</script>
<hr>
- می توانیم متغیری را در خارج از حلقه تعریف کرده و مقادیر آن را در هر دور بر اساس نیاز برنامه تغییر دهیم، در این مثال متغیر loop به همین صورت به کار رفته است.<br><br>
- اگر از امکان View Source در مرورگرها استفاده کنیم (معمولا با کلیک راست در دسترس است)، خروجی دستورات جاوا اسکریپت در سورس متداول صفحه دیده نمی شود اما در HTML DOM وجود دارد و با ابزارهای توسعه دهندگان (قسمت Developer Tools معولا با زدن دکمه F12 در دسترس است) در مرورگرهای مختلف قابل روئیت و استخراج است.
</div>
</body>
</html>
پیش نمایش آنلاین
اگر بخواهیم به صورت ساده ساختار حلقه را در نمونه کد بالا بررسی کنیم، در دور اول متغیر loop برابر 1، متغیر i برابر صفر و خروجی دور اول به این صورت خواهد بود:
مقدار i در دور 1 برابر است با: 0
اگر در کدها دقت کنیم در انتهای هر دور حلقه متغیر loop یک واحد اضافه می شود و بر این اساس در دور دوم loop برابر است با 2 و i نیز یک مقدار افزایش یافته (به وسیله بخش سوم حلقه ++i) و نتیجه برابر 1 می شود، خروجی دور دوم برابر است با:
مقدار i در دور 2 برابر است با: 1
این ساختار به همین شکل ادامه می یابد تا زمانی که متغیر i کوچکتر از مقدار 10 باشد (i < 10) که این شرط حلقه است که در قسمت دوم آن تعریف شده است.

حلقه while در جاوا اسکریپت (JavaScript while Loop)


همانطور که دیدیم در دستور for متغیری تحت عنوان i را در ساختار حلقه بررسی و مقدار آن را افزایش (یا کاهش) می دهیم، اما اگر بخواهیم با توجه به متغیری خارج از ساختار حلقه خروجی داشته باشیم نیاز به دستوری دیگر تحت عنوان while است، while در لغت برابر است با "مادامی که، تا زمانی که" و در برنامه نویسی هنگامی که بخواهیم یک فرآیند تا زمان برقرار بودن یک شرط اجرا شود از آن استفاده می کنیم، به طور مثال تا زمانی که تعداد دانش آموزان به 10 نرسیده است دور تکرار حلقه ادامه داشته باشد، مثال زیر گویا است:
<script>
var num = 0;
while(num < 10) {
num++;
}
</script>
توضیح:
- معمولا در ساختار while متغیری خارج از حلقه تعریف و در شرط ارزیابی می شود، تا زمانی که رابطه درست (true) و برقرار باشد دستورات داخل حلقه پردازش و زمانی که رابطه نادرست (false) بود دور تکرار حلقه while به پایان می رسد.
- در حلقه while الزاما دور تکرار از قبل مشخص نیست و ممکن است با توجه به فرآیندها حلقه در نقطات متفاوتی خاتمه یابد.
- در کد بالا ابتدا متغیری فرضی با عنوان num را تعریف و مقدار آن را برابر صفر قرار داده ایم، سپس در حلقه ی while تا زمانی که متغیر num کوچکتر از 10 است میزان num را در هر دور با عملگر ++ یک واحد افزایش می دهیم (++num).
در مثال زیر نمونه متغیرهایی را تعریف و در حلقه while از آنها خروجی فرضی گرفته ایم:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | حلقه while در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<style>
body {
    direction: rtl;
    font-size: 12px;
    font-family: Tahoma, Geneva, sans-serif;
}
</style>
</head>
<body>
<div class="rtl">
<noscript>جاوا اسکریپت در مرورگر شما پشتیبانی نمی شود یا غیرفعال است!</noscript>
<script>
var br = '<br>';
document.write("شروع حلقه while:<br>");

var loop = 1;
var i = 0;
while(i < 10) {    
    document.write("مقدار i در دور " + loop + " برابر است با: " + i);
    document.write(br);
    loop++;
    i++;
}

document.write("پایان حلقه while.<br>");
</script>
<hr>
- استفاده از عملگر افزایشی ++ تنها یکی از شیوه های متداول در تعریف ساختار حلقه ها است و محدودیتی از این لحاظ وجود ندارد، به طور مثال در صورت نیاز برنامه می توانیم از عملگر کاهشی -- استفاده کنیم، نکته مهم این است که حلقه باید در جایی خاتمه یابد در غیر این صورت باعث ایجاد دور بینهایت شده و مفسر مرورگر به طور دائم مشغول خواهد بود که نتیجه کندی یا از کار افتادن کامل سیستم است.
</div>
</body>
</html>
پیش نمایش آنلاین
توضیح:
- در این مثال نیز متغیرهایی را به صورت فرضی تعریف و در حلقه ی while مقادیر را پردازش کرده ایم، ساختار دستور while شباهت زیادی به دستور for دارد، لذا از توضیحات مربوط به for تا حدود زیادی می توانیم در مورد while نیز استفاده کنیم.
- توجه کنیم حتما باید حلقه خود را طوری تعریف کنیم که پایان پذیر باشد!، یک اشتباه کوچک ممکن است موجب بی نهایت شدن دور شود که در نتیجه موجب از کارافتادن مرورگر می شود، به طور مثال در کد بالا اگر مقدار num را در هر دور یک واحد افزایش ندهیم حلقه تا بی نهایت ادامه می یابد چرا که شرط ادامه حلقه کوچکتر بودن num از 10 است و واضح است که مقدار صفر همیشه از 10 کوچکتر است و شرط while همیشه true و برقرار است.

حلقه do while در جاوا اسکریپت (JavaScript do while Loop)


در زبان های برنامه نویسی و از جمله در جاوا اسکریپت شکل دیگری از حلقه while وجود دارد که با عبارت do در ابتدا همراه است، در این نوع حلقه قسمت مربوط به do صرف نظر از برقرار بودن یا نبودن شرط آن حداقل برای یک بار اجرا می شود و در دورهای بعدی شرط حلقه اعمال شده و ارزیابی می شود، شیوه نگارش دستور do while به صورت کلی به شکل زیر است.
<script>
var num = 12;
do {
    alert('num: ' + num);
    num--;
} while(num > 10);
</script>
در صورت اجرای این نمونه کد دو پیام هشدار با متن زیر نمایش داده خواهد شد:
num: 12
num: 11
در این مثال از علامت کاهشی -- برای پایان دادن به برقراری شرط حلقه استفاده کرده ایم.

استفاده از دستور break و continue در حلقه


زمانی که در برنامه نویسی از حلقه ها صحبت می کنیم باید اشاره ای نیز به دستور break و continue داشته باشیم، همان طور که از معنی این عبارات مشخص است از دستور break برای پایان دادن به دور تکرار حلقه استفاده می کنیم، در هر قسمت از حلقه که break را درج کنیم مفسر جاوا اسکریپت اجرای ادامه دستورات حلقه را در همان نقطه خاتمه داده و به دور تکرار حلقه نیز پایان می دهد، به طور مثال:
<script>
var num = 12;
do {
    if(num == 11){
        break;
    }
    
    alert('num: ' + num);
    num--;
} while(num > 10);
</script>
اگر کد بالا را در صفحه وب درج کرده و در مرورگر اجرا کنیم، نتیجه پیام هشداری به صورت زیر خواهد بود:
num: 12
همان طور که مشخص است با تعریف شرط if و بررسی مقدار متغیر num تعیین کرده ایم که اگر این متغیر برابر با مقدار 11 بود حلقه do...while خاتمه یابد.
دستور continue در بخشی مشابه break عمل می کند و اجرای ادامه دستورات حلقه در همان نقطه که continue را درج کرده ایم در دور جاری خاتمه می یابد با این تفاوت که بر خلاف break حلقه به دور بعد می رود و فرآیند تکرار ادامه می یابد، به طور مثال:
<script>
var num = 12;
do {
    if(num == 12){
        num--;
        continue;
    }
    
    alert('num: ' + num);
    num--;
} while(num > 10);
</script>
اگر کد بالا را در صفحه وب درج کرده و در مرورگر اجرا کنیم، نتیجه به صورت زیر خواهد بود:
num: 11
همان طور که مشخص است در اولین دور حلقه با شرط if مقدار متغیر num را بررسی کرده ایم که اگر برابر 12 بود دور جاری حلقه خاتمه پیدا کرده و حلقه به دور بعد می رود، در این مثال در دور اول متغیر num برابر 12 است لذا باید دقت کنیم که قبل از درج دستور continue مقدار num را یک واحد کاهش دهیم و حلقه را به دور بعد بفرستیم، اگر این کاهش صورت نگیرد شرط if همواره برقرار و حلقه تا بینهایت و بدون پایان تکرار خواهد شد!
sectionدسته بندی: آموزش مقدماتی » JavaScript
related مطالب بیشتر:
» تعریف و استفاده از متغیر (Variable) در جاوا اسکریپت (JavaScript)
» دستورات شرطی (Conditional Statements) در جاوا اسکریپت (JavaScript)
» دستور switch و case در جاوا اسکریپت (JavaScript)
» توابع (Functions) در جاوا اسکریپت (JavaScript)
» کار با تاریخ و زمان در جاوا اسکریپت (JavaScript)
commentنظرات (۱۳ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: محمد حسین
۱۱:۰۹ ۱۳۹۲/۰۸/۱۴
ببخشید ، چرا جواب من رو نمی دید؟
اگه نظرم رو منتقل کردید ، لطفا ادرسش رو بگید.
ممنون.
پاسخ: 
لطفا نظرتان را با این مطلب تطبیق دهید، در صورت غیر مرتبط بودن احتمالا نظر شما حذف شده است! در صورت تمایل می توانید از بخش تماس با ما موارد متفرقه را مطرح کنید.
نویسنده: مهدی خدامرادی
۱۲:۲۸ ۱۳۹۲/۱۱/۱۶
ممنون سایت خوبی دارید
نویسنده: mohsen
۱۵:۰۳ ۱۳۹۳/۰۱/۲۶
سلام و عرض خسته نباشید من یه مشکل کوچیک دارم اونم اینه که مثلا ما میخوایم یه جدول html داشته باشیم که تعداد سطراش به تعداد کاربران سایتمون باشه ولی ما نمی دونیم چه تعداد کاربر در سایتمون عضو هست با چه روشی باید این جدول رو بسازیم؟ اینم بگم که گرفتن اطلاعات کاربران از سمت سرور رو می دونم بحثم فقط روی طراحی جدول در جاوا اسکریپته
پاسخ: 
باید تعداد ردیف ها را با توابعی مانند mysql_num_rows حساب کرده و در حلقه while یا for به صورت داینامیک تگ های td را برای جدول تولید کنید (این مبحث به جاوا اسکریپت ارتباطی ندارد و باید به بخش PHP و MySQL مراجعه کنید).
نویسنده: سورن
۱۲:۲۸ ۱۳۹۳/۰۶/۲۳
عالی بود خیلی ممنون
نویسنده: محسن
۱۱:۱۷ ۱۳۹۴/۰۶/۰۱
سلام خسته نباشید
مشکل این کد کجاست؟
البته با document.write درست کار میکنه ها ولی میخاسم با دکمه باشه هر کاری کردم نمیشه میشه شما بگید
ممنون
<script type="text/javascript">
function heding()
{
var i;
for(i=1;i<=6;i++)
{
document.getElementById("hed").innerHTML="<h"+i+">this is heding"+i+"</h"+i+">";
}
}
</script>
<button onclick="heding()">انواع سرفصل</button>
<p id="hed" style="margin-top:200px"></p>
پاسخ: 
برای اینکه مقدار جدید به مقدار قبلی اضافه شود، در متد innerHTML از علامت
+=
به جای
=
استفاده کنید!
نویسنده: سعید
۱۱:۲۱ ۱۳۹۴/۰۶/۱۷
سلام
یه سوال
چطوری میتونم به جای عدد، از حروف استفاده کنم؟
مثلا به این صورت:
for(i=a;i<f;i++){document.write(i);}
یعنی میخوام از حرف a تا f یکی یکی بیاره
و خروجیش این طوری بشه:
abcdef
اگه جوابم رو بدید خیلی ممنون میشم
اموزشاتونم خیلی خوبه، من الان حلقه for رو اموختم،خیلی ممنون
پاسخ: 
برای استفاده از حروف به جای اعداد در حلقه for می توانید از یکی از نمونه توابع زیر استفاده کنید:
<script>
function iterateAlphabet(){
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(var i=0; i<str.length; i++){
var next_char = str.charAt(i);
document.write(next_char.toLowerCase() + '<br>');
}
}
iterateAlphabet();
document.write('<hr>');
function loopAlphabet(){
var charCodeRange = {
start: 65,
end: 90
}
for(var cc = charCodeRange.start; cc <= charCodeRange.end; cc++){
document.write(String.fromCharCode(cc).toLowerCase() + '<br>');
}
}
loopAlphabet();
</script>
نویسنده: سعید
۱۶:۳۳ ۱۳۹۴/۰۹/۲۱
سلام
من این متد forEach رو نفهمیدم
میشه توضیحش بدین؟
پاسخ: 
متد forEach در جاوا اسکریپت در اکثر مرورگرها پشتیبانی نمی شود، از متد for استفاده کنید!
نویسنده: سعید
۲۱:۴۶ ۱۳۹۴/۰۹/۲۷
سلام
پس این متد call و apply رو توضیح بدین
خیلی ممنون، نوکرتم
پاسخ: 
این متدها جزء مباحث نسبتا پیشرفته در جاوا اسکریپت هستند که برای آموزش آنها باید در مطالبی جداگانه و مفصل صحبت کرد، صرفا جهت آشنایی و در حد یک پاسخ، برای درک این متدها باید پیش زمینه ای از شی گرائی (Object-oriented programming یا OOP) داشته باشید و با مفهوم متد و شی (this) آشنا باشید، کاربرد متد call و apply تقریبا مشابه است و هر دو برای فراخوانی تابع و انتقال آرگیومنت (چندگانه) به آن استفاده می شوند، البته شیوه پذیرش آرگیومنت apply با call متفاوت است، متد apply در آرگیومنت دوم می تواند شامل یک آرایه یا آبجکت شبه آرایه باشد، اما در متد call آرگیومنت ها باید با علامت ویرگول (,) از هم جداسازی شوند، به همین دلیل برای مواقعی که تعداد آرگیومنت ها مشخص است، متد call مناسبتر و برای مواردی که تعداد مشخص نیست، استفاده از apply گزینه بهتری است، آرگیومنت اول هر دو متد، شی this (یا مواردی مانند null یا undefined است که در این صورت یعنی هیچ پارامتری برای آرگیومنت اول وجود ندارد)، اطلاعات بیشتر:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
نکته: همان طور که گفتیم استفاده از این متدها همیشه نباید به همراه this باشد و می تواند در موارد معمولی نیز استفاده شوند، مثال:
<script>
function showName(name){
for(var i = 0; i < name.length; i++){
alert('Name: ' + name[i]);
}
}
var array = new Array(['Hamid', 'Mohammah', 'Mina']);
showName.apply(null, array);
</script>
نویسنده: Mahdi
۰۰:۵۱ ۱۳۹۴/۱۱/۱۵
سلام
دستورات جاوا اسکریپت رو از کجا پیدا کنم؟؟
مثلا من میخوام بدونم نحوه ورودی که کاربر باید وارد کنه چیه توی سی scanf و توی سی پلاس پلاس cin
این دستورات رو منبعی نیست من پیدا کنم؟
تشکر میکنم بابت سایت خوب تون
پاسخ: 
منظور سوالتان دقیقا مشخص نیست! جاوا اسکریپت متدهای خاص خودش را دارد و در صورت گذراندن آموزش های مقدماتی و استفاده از یک IDE مناسب (به فرض PhpStorm یا Adobe Dreamweaver و...) جهت اسکریپت نویسی، اغلب لیست متدها به صورت الفبایی مرتب شده اند، همچنین می توانید به سایت های مرجع توسعه دهندگان وب مانند لینک زیر مراجعه کنید:
https://developer.mozilla.org/en-US/docs/Web/JavaScript
نکته: در جاوا اسکریپت به جهت ماهیت کار، معادل خاصی برای این دستورات وجود ندارد و در هر مورد باید متد خاص آن استفاده شود، به طور مثال برای دریافت مقدار عددی یک رشته باید از متد parseInt استفاده کرد.
نویسنده: NEGAR
۱۷:۰۲ ۱۳۹۵/۰۱/۱۳
چطور میتونم با حلقه for برنامه بنویسم که خروجیش این باشه
1
12
123
1234
12345
پاسخ: 
برای این منظور باید از دو حلقه for استفاده کنید، مثال:
<?php
for ($i = 1; $i <= 5; $i++) {
for ($j = 1; $j <= $i; $j++) {
echo "$j";
}
echo "<br>";
}
?>
نویسنده: احمد
۲۰:۳۱ ۱۳۹۵/۱۱/۱۳
سلام
میبخشید مزاحم شدم
من چطوری میتونم این ارایه را با جاوااسکریپت و حلقه نمایش بدم.
[{"id":"1","title_fa":"\u062f\u0648\u0648\u0645 4","text":"","date":"0000-00-00 00:00:00"},
{"id":"2","title_fa":"\u062f\u0648\u0648\u0645 4","text":"","date":"0000-00-00 00:00:00"}]
اینا دو تا از پست های سایت هستند مثلا !
میخوام بصورت دو تا پست جدا از هم تو سایت نمایش بدم اما نمیدونم چطور باید انها رو استخراج کنم لطفا کمکم کنید.
راستی اونارو با کد زیر تولید کردم:
$query = mysql_query("SELECT * FROM ps_post WHERE id!='' Limit 2");
for($i=0;$res = mysql_fetch_object($query);$i++)
{
$out[] = $res;
}
die(json_encode($out));
لطفا کمک کنید ممنون
پاسخ: 
بدین منظور می توانید از متد JSON.parse استفاده کنید، مثال:
http://jsfiddle.net/X6y5B/
نویسنده: mahdi
۱۵:۰۹ ۱۳۹۸/۱۲/۰۴
سلام استاد ، لینک آموزش مقدماتی جاوا اسکریپت توی منوی بالایی خرابه ، به وظیفه شهروندیم عمل کردم :)
پاسخ: 
سپاس فراوان از اطلاع رسانی، اصلاح شد.
نویسنده: امیررضا جانبازفرد
۲۱:۳۳ ۱۳۹۹/۰۹/۲۴
سلام خوبین میخواستم بدونم چجوری میشه با استفاده از ترکیب حلقه ی for و if اعداد اول رو پیدا کنم میشه کامل توضیح بدین؟
پاسخ: 
برای بررسی اول بودن یا چاپ اعداد اول می توانیم از تابع زیر استفاده کنیم (توضیحات در تابع ذکر شده):
تابع در زبان JavaScript:
<script>
//عدد اول (Prime Number) عددی طبیعی بزرگتر از ۱ است که نتوان آن را به صورت ضرب دو عدد طبیعی کوچکتر نوشت
function isPrime(num) {
//عدد 1 اول نیست
if(num === 1) {
return false;
}

//2 تنها عدد زوج اول است
if(num === 2) {
return true;
}

//اگر عدد بر 2 بخش پذیر باشد اول نیست (اعداد زوج)
if(num % 2 === 0) {
return false;
}

//عدد را به بالا گرد کرده و ریشه مربع آن را به دست می آوریم
var ceil = Math.ceil(Math.sqrt(num));

//در حلقه بخش پذیر بودن یا نبودن عدد بر 2 بررسی می شود (شروع دور حلقه از 3)
for(var i = 3; i <= ceil; i = i + 2) {
if(num % i === 0) {
return false;
}
}

return true;
}
//قراخوانی
var num = 251;
if(isPrime(num)) {
document.write(num + ' is Prime!');
} else {
document.write(num + ' is Not Prime!');
}
document.write('<br>');
for(var i = num; i > 0; i--){
if(isPrime(i)){
document.write(i + ' => Prime<br>');
}
}
</script>
تابع در زبان PHP:
<?php
//عدد اول (Prime Number) عددی طبیعی بزرگتر از ۱ است که نتوان آن را به صورت ضرب دو عدد طبیعی کوچکتر نوشت
function isPrime($num) {
//عدد 1 اول نیست
if($num == 1) {
return false;
}

//2 تنها عدد زوج اول است
if($num == 2) {
return true;
}

//اگر عدد بر 2 بخش پذیر باشد اول نیست (اعداد زوج)
if($num % 2 == 0) {
return false;
}

//عدد را به بالا گرد کرده و ریشه مربع آن را به دست می آوریم
$ceil = ceil(sqrt($num));

//در حلقه بخش پذیر بودن یا نبودن عدد بر i بررسی می شود (شروع دور حلقه از 3 و افزایش 2 واحدی i در هر دور)
for($i = 3; $i <= $ceil; $i = $i + 2) {
if($num % $i == 0) {
return false;
}
}

return true;
}
//فراخوانی
$num = 251;
if(isPrime($num)) {
echo $num . ' is Prime!';
} else {
echo $num . ' is Not Prime!';
}
echo '<br>';
for($i = $num; $i > 0; $i--){
if(isPrime($i)){
echo $i . ' => Prime<br>';
}
}
?>
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





3 × 5
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form کوثر رحیمی
در:
سلام ا ز راهنماییتون ممنونم من تازه وبلاگم رو درست کردم ۱۲ سالمه هر کاری می کنم فیلم در اون قرار نمیگیره همش این خطا...
۱۳۹۹/۱۰/۲۹

form متین
در:
سلام و خسته نباشید من بخوام داده ای که از قبل موجوده رو با متد پست به یک فایل ارسال کنم چجور میشه؟ یعنی...
۱۳۹۹/۱۰/۲۷

form روشنا
در:
سلام ما یه وبلاگ گروهی داریم مختص املاک فایل های جدید و حتی قالب جدید اصلا اعمال نمیشه . حتی راهنمایی که کرده...
۱۳۹۹/۱۰/۲۷

form علی
در:
من در یک سایت سازی سایت ساختم یه بخش داره به نام اسکریپت دلخواه می خوام یه اسکریپتی بذارم که مثلا یه موسیقی وقتی کاربر...
۱۳۹۹/۱۰/۲۷

form امیرحسین
در:
بله استاد خیلی ممنون، نمیدونستم خودش Optimize رو انجام میده در کل من بعد از ایندکس گذاری ها همیشه سعی کردم جوری که با...
۱۳۹۹/۱۰/۲۶

form امیرحسین
در:
ُسلام وقت بخیر این کووری هم چون اول قسمت WHERE انجام میشه بعد قسمت ON پس این کووری هم با حالت کووری قبلی برابره
۱۳۹۹/۱۰/۲۶

form امیرحسین
در:
سلام استاد وقت بخیر ممنون از پاسخ گویی های قبلی یه سوال دیگه داشتم: این هم هیچ مشکلی نداره و کار میکنه، ایا...
۱۳۹۹/۱۰/۲۵

form محمد بیدل بازه
در:
سلام خسته نباشید ببخشید من توی یک قسمت سایتم تصویری دارم و میخوام سمت راست اون تصویر متن بنویسم ولی نمیشه تا متن رو...
۱۳۹۹/۱۰/۲۵

form سلام
در:
و اینکه یه تگ خوب برای فونت معرفی کنید و یه تگ دیگه که متن رو (تیتر مطلب (تست)) در ادامش بنویسه نه اینکه...
۱۳۹۹/۱۰/۲۴

form سلام
در:
سلام وبسایتم را نگاه کنید از چه تگی استفاده کنم تا فاصله بین تیتر مطلب جدید را کاهش دهم؟ (از خطی به خط...
۱۳۹۹/۱۰/۲۴

form وطن
در:
سلام. خسته نباشید. خیلی گشتم درباره یک خطا یا ایراد فنی که چند روز هست در سایت نوشته شده با پی اچ پی (اسکریپت اولوشن)...
۱۳۹۹/۱۰/۲۴

form حورارمی
در:
سلام. من هنوز نمیدونم تو تنظیمات باید کجا رو بگردم تا قالب وبلاگم رو با عکس مورد علاقه ام تغییر بدم. یا نمیتونم...
۱۳۹۹/۱۰/۲۳

form راشد
در:
این روش خیلی طولانیه در فروشگاه من یک برنامه گرفتم که یه عکس توش اپلود کن بهت یک لینک میده در ظرف چند ثانیه و...
۱۳۹۹/۱۰/۲۱

form باسلام
در:
باسلام خدمت شما عزیز زحمت کش، من مطلب را تا آخر مطالعه کردم. من وبلاگم بازدیدای زیادی داره چون تمام مطالبش رو خودم مینویسم و...
۱۳۹۹/۱۰/۲۱

form محمود
در:
سلام و عرض ادب من در سایتم یک قسمت تب ایجاد کردم، متن ها را که در تب می نویسم پاراگراف بندی نمی شوند....
۱۳۹۹/۱۰/۲۱
form علی آقابیگی
در:
سلام خسته نباشید ببخشید من می خواستم کد جدید در وبلاگم بزارم بعد اشتباهی رفتم در قسمت ویرایش کدها و بعد بیشتر کدها را پاک...
۱۳۹۹/۱۰/۲۰
form محمد
در:
سلام. من میخوام با جاوا اسکریپت یک کدی بنویسم که وقتی کاربر روی یک دکمه ‏ای کلیک کرد، یک کد تصادفی برای شمارش ارسال...
۱۳۹۹/۱۰/۲۰
form پوریا
در:
سلام خسته نباشید، ممنونم بابت توضیحات خوبتون، یه مشکلی داشتم میخواستم ببینم امکانش هست راهنمایی کنید؟ فرض کنید یه اینطور متنی داریم: ...
۱۳۹۹/۱۰/۱۹
form seyedsobhanmansouri
در:
سلام خسته نباشید من سایتمو طراحی کردم اما به این مشکلات بر میخورم اول اینکه هدر سایتم نمایش داده نمیشه اصلا و بعد...
۱۳۹۹/۱۰/۱۹
form رضا
در:
سلام. ممنون بابت مطالب مفیدتون. این نوع جستجو به سئو سایت لطمه نمیزنه؟؟؟ چون در این مدل جستجو، مقدار impression میره بالا ولی...
۱۳۹۹/۱۰/۱۹
form mahdi
در:
سلام استاد عزیز ، پس بنظرتون بجای وقت گذاشتن برای یادگیری لاراول و وردپرس ، وقت بزارم که عمیق تر php و ساختار mvc...
۱۳۹۹/۱۰/۱۹
form علی
در:
سلام و ممنون بابت وبسایت عالیتون داخل بعضی سایت ها دیدید مثلا یه متنی شروع به تایپ شدن می کنه و وقتی کامل شد...
۱۳۹۹/۱۰/۱۸
form محمد
در:
سلام خدمت شما دوست عزیز سوالم این بود میخاستم چندتا مثال از این تابع و چند تابع دیگه از خودتون رو برام مثال بزنید...
۱۳۹۹/۱۰/۱۸
form محمود رنجبر
در:
سلام برادر مشکل من تو همین سایتی هست که فرستادم وقتی گزینه خانه رو کلیک میکنم و بعد دکمه بک گوشی رو میزنم بالای صفحه...
۱۳۹۹/۱۰/۱۷
form mahdi
در:
سلام استاد عزیز ، بعد از آموزس php با لاراول کار کنیم بهتره ؟
۱۳۹۹/۱۰/۱۶
form رضا
در:
آدرس رو براتون گذاشتم دامنه قبلا روی یه وبلاگ میهن بلاگ بود چند ماه میشه که از میهن بلاگ خداحافظی کردم ولی هنوز که هنوزه...
۱۳۹۹/۱۰/۱۴
form نیلو
در:
سلام... ببخشید بعد طراحی قالب قالب شیشه ایم هست یا نه؟؟؟
۱۳۹۹/۱۰/۱۳
form مجتهدزاده
در:
سلام من یه فرمی طراحی کردم که توش قراره تعداد زیاد (حدود 10 الی 50) فیلد رو تو دیتابیس اینسرت کنم. آیا باید...
۱۳۹۹/۱۰/۰۸
form مجتهدزاده
در:
سلام لطفا راهنمایی بفرمایید که چه زمانی قبل از متغیر @ استفاده می شه و کاربردش چیه؟ با تشکر
۱۳۹۹/۱۰/۰۶
form ali
در:
سلام چجوری میشه با php بازی هوب رو طراحی کرد
۱۳۹۹/۱۰/۰۶
form رضا
در:
سلام ممنون از سایت خوبتون ایکون سایتم رو توی دسکتاپ درست نشون میده ولی تو گوشی مشکل داره طبق اموزش شما هم انجام دادم...
۱۳۹۹/۱۰/۰۶
form فرانک دستان
در:
سلام من خیلی دوست دارم روی وبلاگم کد اهنگ بزارم ولی هیچ کدوم نمی یاد بهم گفتن از این کدها دیگه پشتیبانی نمی شه شما...
۱۳۹۹/۱۰/۰۵
form مصطفی
در:
سلام. عملگر @ چه زمانی قبل از یک متغییر میاد؟
۱۳۹۹/۱۰/۰۵
form سما
در:
سلام من وقتی میزنم روی مشاهده وبلاگ صفحه فیلتر برام میاد و نمیتونم وبلاگمو ببینم
۱۳۹۹/۱۰/۰۵
form مجتبی
در:
سلام من وبلاگ بلاگفا دارم کدها و جاوا استیکرها رو میزارم تو قسمتشون ولی همه ی کدها رو یکطرف وبلاگ نشون میده چطوری سمت...
۱۳۹۹/۱۰/۰۵
form matin asadi
در:
سلام ممنون بابت سایت خوبتو من یه مشکلی دارم می خواستم کدی برای این مثال زیر بنویسم ولی بلد نیستم ممنون میشم کمک کنید. ...
۱۳۹۹/۱۰/۰۲
form sahar1999
در:
سلام وقت بخیر چطور میتونم در برنامه نویسی سی شارپ هنگام ایجاد پایگاه داده ی MySql نام پایگاه داده رو از txetbox دریافت کنم؟
۱۳۹۹/۱۰/۰۱
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.