آموزش زبان کاتلین – درس ۱۰ (حلقۀ while و do…while)

نویسنده : سید ایوب کوکبی ۱۰ آبان ۱۳۹۷

آموزش زبان کاتلین – درس 10 (حلقۀ while و do...while)

در زبان‌های برنامه‌نویسی، برای تکرار قطعه‌ای کد از حلقه استفاده می‌شود. در واقع عامل جذابیت کامپیوتر همین بحث حلقه است. تصور کنید بخواهید یک جمله را ۵۰ بار در صفحه‌نمایش چاپ کنید. بله، بدون حلقه هم می‌توان این کار را انجام داد ولی اگر قرار بود یک میلیون بار این جمله را چاپ می‌کردید چه؟ اینجاست که ساختار حلقه یا loop به یک نیاز ضروری تبدیل می‌شود. در این درس با دو حلقه while و do…while در زبان کاتلین آشنا خواهید شد. در صورتی که قبلاً در جاوا از این حلقه‌ها استفاده کرده باشید، اینجا نیز فرق چندانی وجود ندارد.

حلقه while در کاتلین

سینتکس این حلقه:

while (testExpression) {
// codes inside body of while loop
}

 

طرز کار حلقه while

عبارت تست که داخل پرانتز وجود دارد، یک عبارت Boolean است. اگر مقدار این عبارت به true ارزیابی شود، دستورات داخل حلقه اجرا می‌شود، سپس بار دیگر این عبارت ارزیابی می‌شود. این کار تا زمانی که مقدار ارزیابی شده true باشد ادامه پیدا می‌کند. به محض false شدن، حلقه while به پایان می‌رسد.

فلوچارت حلقه while

فلوچارت حلقه while در کاتلین

مثال:

// Program to print line 5 times

fun main(args: Array<String>) {

var i = 1

while (i <= 5) {
println(“Line $i”)
++i
}
}

 

خروجی:

Line 1
Line 2
Line 3
Line 4
Line 5

 

به i++ در داخل حلقه توجه کنید. بعد از ۵ دور مقدار متغیر i به ۶ می‌رسد. در چنین شرایطی مقدار عبارت i<=5 به false تغییر می‌کند و حلقه به پایان می‌رسد. در صورتی که حلقه فقط شامل یک دستور باشد نیازی به استفاده از آکولاد باز و بسته نیست. البته پیشنهاد شده است که همیشه از آکولاد استفاده کنید چون ممکن است بعدها بدون توجه به اینکه آکولادی وجود ندارد، دستور دیگری به حلقه اضافه کنید که اشتباه است. این موضوع می‌تواند مشکل‌ساز شود و به همین خاطر اغلب سفارش می‌کنند که همیشه از آکولاد استفاده کنید حتی اگر حلقۀ شما تنها یک دستور داشته باشد.

بخوانید  آموزش زبان کاتلین - درس 2 (متغیرها و انواع داده‌ اولیه)

خروجی

sum = 5050

 

در کد بالا متغیر sum ابتدا مقدارش ۰ و i نیز ۱۰۰ است. در هر دور از حلقۀ while یک واحد به متغیر sum اضافه می‌شود (sum+=i) و مقدار متغیر i تا رسیدن به مقدار صفر پله به پله کاهش می‌یابد:

۱st iteration: sum = 0+100 = 100, i = 99
۲nd iteration: sum = 100+99 = 199, i = 98
۳rd iteration: sum = 199+98 = 297, i = 97
… .. …
… .. …
۹۹th iteration: sum = 5047+2 = 5049, i = 1
۱۰۰th iteration: sum = 5049+1 = 5050, i = 0 (then loop terminates)

 

حلقۀ do…while در کاتلین

این حلقه نیز مثل while است فقط با این تفاوت که بدنۀ حلقه قبل از ارزیابی یکبار اجرا می‌شود. در واقع حتی اگر عبارت منطقی داخل پرانتز مقدارش false باشد روی اجرای اول حلقه تاثیری ندارد. حلقۀ do…while حداقل یکبار اجرا می‌شود. اگر عبارت داخل پرانتز true شود، یکبار دیگر حلقه اجرا می‌شود و این کار تا زمان false شدن عبارت ادامه خواهد داشت.

چارت حلقۀ do…while

مثال

برنامۀ پایین مجموعه اعداد ورودی کاربر را تا زمان وارد کردن مقدار ۰ محاسبه می‌کند. برای دریافت ورودی از کاربر از تابع ()readline استفاده می‌کنیم. بحث ورودی و خروجی را در درس‌های قبلی توضیح دادم.

fun main(args: Array<String>) {

var sum: Int = 0
var input: String

do {
print(“Enter an integer: “)
input = readLine()!!
sum += input.toInt()

} while (input != “۰”)

println(“sum = $sum”)
}

 

خروجی

Enter an integer: 4
Enter an integer: 3
Enter an integer: 2
Enter an integer: -6
Enter an integer: 0
sum = 3

 

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

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