إضافة الطلاب
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 22 من 64.
في هذا المشروع ستبني سجلًا للدرجات يقرأ الأوامر، أمرًا واحدًا في كل سطر، ويرد على كل منها. على مدى خمس خطوات، سيتعلم إضافة الطلاب، وتسجيل الدرجات، والإبلاغ عن المتوسطات، والعثور على الطالب الأعلى درجة. كل خطوة توسّع الدالة نفسها gradebook(commands).
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPتُحفَظ الدرجات في قائمة مُسمّاة: يُطابَق اسم كل طالب مع متجه رقمي يضم درجات ذلك الطالب. والقائمة مناسبة لأن لكل طالب عدة قيم.
grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))الناتج:
[1] 1
[1] "ada"numeric(0) هو متجه رقمي فارغ. لن ينجح الإسناد باستخدام c() هنا: فهو NULL، وإسناد NULL يحذف عنصرًا من القائمة.
يُقسَّم كل أمر عند المسافات، لذا فإن parts[1] هو الأمر وparts[2] هو الاسم. تحدد سلسلة if / else if ما ينبغي فعله:
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
# عالج ADD
}
}تُجمع الردود باستخدام replies <- c(replies, ...) وتُعاد في النهاية.
التحدي
سهلأكمل gradebook(commands) للأمر الأول:
ADD <name>: إذا كان الطالب جديدًا، فخزّنه دون درجات وأعِدadded <name>. إذا كان الاسم مخزّنًا بالفعل، فأعِد<name> already exists.
يمرّر الكود المزوّد كل سطر من الإدخال إلى gradebook() بوصفه أمرًا واحدًا، ويطبع كل ردّ مُعاد في سطر مستقل. الاسم كلمة واحدة بأحرف صغيرة، ولا يحتوي الإدخال إلا على الأوامر الموضّحة حتى الآن.
جرّب بنفسك
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
# اكتب الكود الخاص بك هنا
}
replies
}
# كود الإدخال والإخراج الموفّر: اتركه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت