repeat و break
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 49 من 64.
repeat تُعيد تشغيل جسمها مرة تلو الأخرى حتى يوقف break الموجود بداخلها الحلقة. وهي تناسب حلقة لا يُعرَف شرط خروجها إلا في منتصف الجسم:
n <- 1
repeat {
n <- n * 2
if (n > 50) break
}
print(n)الناتج:
[1] 64تُعدّ متتالية كولاتز مثالًا: اقسم الأعداد الزوجية إلى النصف، وحوّل الأعداد الفردية إلى 3n + 1، وتوقّف عند 1. عدد الخطوات غير معروف مسبقًا:
n <- 6
steps <- 0
repeat {
if (n == 1) break
n <- if (n %% 2 == 0) n / 2 else 3 * n + 1
steps <- steps + 1
}
print(steps)المخرجات:
[1] 8تتخطى next بقية التكرار الحالي وتبدأ التكرار التالي. وهي تعمل في حلقات repeat وwhile وfor:
for (x in 1:8) {
if (x %% 3 == 0) next
cat(x, "")
}
cat("\n")الإخراج:
1 2 4 5 7 8 حلقة repeat من دون تعليمة break يمكن الوصول إليها لا تنتهي أبدًا. احتفظ بعدّاد كحدّ أمان عندما يعتمد الخروج على البيانات:
total <- 0
tries <- 0
repeat {
tries <- tries + 1
total <- total + tries
if (total >= 20 || tries == 100) break
}
print(c(tries, total))الناتج:
[1] 6 21التحدي
سهلأكمل digital_root(n). استبدل n بمجموع أرقامه حتى يتبقى رقم واحد، وأعد <result> after <steps> steps: تعطي 9875 القيمة 2 after 3 steps (9875، 29، 11، 2). الرقم الذي يتكون من رقم واحد بالفعل يحتاج إلى 0 خطوات.
تجمع sum(as.numeric(strsplit(as.character(n), "")[[1]])) أرقام n.
يقرأ الكود المزوَّد n ويطبع القيمة المُعادة.
جرّب بنفسك
digital_root <- function(n) {
# اكتب الكود الخاص بك هنا
""
}
# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(digital_root(as.numeric(input[1])), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد10تدفق التحكم المتقدم
الدالة switch()ifelse() المتجهةrepeat و breakالدوال التكراريةمراجعة - مُصنِّف الدرجات2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت