while وdo-while: متى تستخدم كلًّا منهما
اكتب حلقات while وdo-while وتعرّف على حالات استخدام كلٍّ منهما.
while وdo-while: متى تستخدم كلًّا منهما درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
نوعان من حلقات while
توفر Kotlin كلًا من while (اختبار مسبق) وdo-while (اختبار لاحق). والفرق هو أن do-while تنفّذ الجسم مرة واحدة على الأقل دائمًا.
حلقة while الأساسية
تتحقق while من الشرط قبل كل تكرار. وإذا كان الشرط خاطئًا منذ البداية، فلن يُنفّذ الجسم مطلقًا.
fun main() {
var count = 0
while (count < 3) {
println("count = $count")
count++
}
}حلقة do-while الأساسية
تنفّذ do-while الجسم أولًا، ثم تتحقق من الشرط. لذلك يُنفّذ الجسم مرة واحدة على الأقل دائمًا.
fun main() {
var n = 10
do {
println("n = $n")
n--
} while (n > 7)
}القراءة حتى قيمة حارسة
تُعد حلقات while مثالية عندما لا تعرف عدد التكرارات المطلوبة — مثل القراءة حتى الوصول إلى قيمة حارسة.
fun main() {
val data = listOf(3, 7, 0, 9)
var i = 0
while (i < data.size && data[i] != 0) {
println("got ${data[i]}")
i++
}
println("stopped at index $i")
}البحث في قائمة
استخدم while للبحث مع الخروج المبكر، بحيث تتوقف بمجرد تحقق الشرط.
fun main() {
val nums = listOf(2, 4, 7, 8, 10)
var i = 0
while (i < nums.size && nums[i] % 2 == 0) i++
println("first odd at index $i = ${nums[i]}") // 2 = 7
}استخدام do-while للتحقق من الإدخال
استخدم do-while عندما يجب تنفيذ إجراء (عرض مطالبة أو قراءة أو محاولة) قبل إمكانية اختبار النجاح.
fun main() {
val validInputs = listOf("y", "n", "y")
var idx = 0
var input: String
do {
input = validInputs[idx++]
println("user typed: $input")
} while (input != "n" && idx < validInputs.size)
}عداد مع إنقاص
تتعامل حلقات while بكفاءة مع العدادات التي تنقص حتى تصل إلى الصفر.
fun main() {
var lives = 3
while (lives > 0) {
println("Lives left: $lives")
lives--
}
println("Game over")
}حلقة لا نهائية مع break
استخدم while (true) مع break لكتابة شيفرة بأسلوب حلقة الأحداث عندما يكون شرط الخروج معقدًا.
fun main() {
val items = listOf(1, 2, 3, -1, 4)
var i = 0
while (true) {
if (i >= items.size || items[i] < 0) break
println("ok: ${items[i]}")
i++
}
}مقارنة while وfor
إذا كنت تعرف عدد التكرارات مسبقًا، ففضّل for. واستخدم while عندما يعتمد عدد التكرارات على حالة وقت التشغيل.
fun main() {
// for: known bounds
for (i in 1..3) print("$i ")
println()
// while: state-driven
var n = 1
while (n <= 3) { print("$n "); n++ }
println()
}حلقة بمتغيرين
يمكن لحلقات while تتبّع عدة متغيرات، وهذا مفيد لخوارزميات مثل Fibonacci.
fun main() {
var a = 0
var b = 1
while (b < 50) {
print("$b ")
val next = a + b
a = b
b = next
}
println() // 1 1 2 3 5 8 13 21 34
}تنفّذ do-while مرة واحدة دائمًا
حتى إذا كان الشرط خاطئًا منذ البداية، يُنفّذ جسم do-while مرة واحدة. قد يكون هذا ما تريده تمامًا أحيانًا — وقد يكون خطأً في أحيان أخرى.
fun main() {
var x = 100
do {
println("x = $x") // prints once
x--
} while (x > 1000) // false immediately
}تحقق سريع
أي حلقة تضمن تنفيذ جسمها مرة واحدة على الأقل بغض النظر عن الشرط؟
مراجعة
استخدم while عندما يعتمد عدد التكرارات على شرط وقت التشغيل. واستخدم do-while عندما يجب تنفيذ الجسم مرة واحدة على الأقل (مثل التحقق وإعادة المحاولة). وفضّل for إذا كان عدد التكرارات معروفًا.
الأسئلة الشائعة
هل درس «while وdo-while: متى تستخدم كلًّا منهما» مجاني؟
نعم — نص درس «while وdo-while: متى تستخدم كلًّا منهما» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «while وdo-while: متى تستخدم كلًّا منهما»؟
اكتب حلقات while وdo-while وتعرّف على حالات استخدام كلٍّ منهما. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «while وdo-while: متى تستخدم كلًّا منهما»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حلقة for على النطاقات والمجموعات
- while وdo-while: متى تستخدم كلًّا منهما
- forEach وrepeat وforEachIndexed
- break وcontinue وعمليات الإرجاع المسمّاة