Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - درجات الحرارة

جزء من قسم البرمجة كائنية التوجه في رحلة R على Coddy. الدرس 6 من 57.

challenge icon

التحدي

متوسط

أنشئ فئة S3 ‏temperature في الملف Temperature.R. درجة الحرارة هي رقم ذو سمة unit ‏(C أو F).

  • تتحقق new_temperature(value, unit) من الأنواع باستخدام stopifnot() وتُرجع structure(value, unit = unit, class = "temperature").
  • تتوقف validate_temperature(x) مع الرسالة unit must be C or F، أو مع الرسالة below absolute zero عندما تكون القيمة أقل من -273.15 C أو -459.67 F.
  • تحوّل temperature(value, unit = "C") القيمة باستخدام as.double()، وتحول الوحدة إلى أحرف كبيرة، ثم تُرجع درجة حرارة تم التحقق منها.
  • تُرجع format.temperature() القيمة 21.5 C بمنزلة عشرية واحدة، وتطبع print.temperature() القيمة Temperature: 21.5 C وتُرجع invisible(x).
  • تُرجع convert_to(t, unit) درجة حرارة بالوحدة المحددة (القيمة نفسها عندما تكون الوحدة مطابقة بالفعل).

استخدم call. = FALSE في كل استدعاء لـ stop(). يقرأ الكود المقدم الأسطر 21.5 c F (القيمة، والوحدة، والوحدة المستهدفة)، ويطبع درجة الحرارة والدرجة المحوّلة، أو error: والرسالة.

ضع الكود في Temperature.R. يحتوي main.R على كود الإدخال/الإخراج المقدم ولا يمكن تعديله.

جرّب بنفسك

source("Temperature.R")

# كود الإدخال/الإخراج المُقدَّم: اتركه كما هو
input <- suppressWarnings(readLines(file("stdin")))
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  result <- tryCatch({
    t <- temperature(p[1], p[2])
    print(t)
    print(convert_to(t, p[3]))
    NULL
  }, error = function(e) cat("error: ", conditionMessage(e), "\n", sep = ""))
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم R عبر الإنترنت