Menu
Coddy logo textTech

חזרה – טמפרטורות

חלק מהיחידה תכנות מונחה עצמים במסלול ה-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 אונליין