Menu
CoddyTech

קריאת קלט באמצעות readline()

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 29 מתוך 78.

עד כה למדת איך להציג פלט. עכשיו הגיע הזמן להפוך את התוכניות שלך לאינטראקטיביות באמצעות קריאת קלט מהמשתמש. הפונקציה readline() מאפשרת לך ללכוד את מה שהמשתמש מקליד.

name <- readline()
cat("Hello,", name, "\n")

כאשר הקוד הזה פועל במפגש אינטראקטיבי של R (מסוף R או RStudio),‏ R ממתין שהמשתמש יקליד משהו וילחץ על Enter. כל מה שהוא מקליד נשמר במשתנה name. אם המשתמש מקליד "Alice", הפלט יהיה: Hello, Alice

בפלטפורמה הזאת הקוד שלך פועל כסקריפט באמצעות Rscript, ולכן readline() לא ממתינה: היא מחזירה מחרוזת ריקה "" מיד. לכן קוד הפתיחה של האתגר בשיעור הזה קורא את הקלט שלו באמצעות readLines() במקום זאת.

חשוב לדעת: readline() תמיד מחזירה מחרוזת, גם אם המשתמש מקליד מספר. אם מישהו מזין "25", הערך נשמר כטקסט "25", ולא כמספר 25. בשיעור הבא תלמד איך להמיר בין טיפוסים.

אפשר לקרוא כמה קלטים באמצעות שימוש ב־readline() כמה פעמים:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

במ session אינטראקטיבי, כל קריאה ל־readline() ממתינה לשורת קלט נפרדת מהמשתמש.

כשמשלבים טקסט עם משתנים באמצעות cat(), בין כל פריט שמופרד בפסיק מופיע רווח. לפעמים צריך לחבר טקסט בלי רווח, למשל כדי להצמיד סימן פיסוק ישירות למילה. כאן paste0() שימושית. היא משרשרת מחרוזות בלי מפריד ביניהן:

city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")

כאן, paste0(city, "!") מחברת את הערך של city ואת "!" יחד ללא רווח, כך שאם המשתמש מקליד "Paris", הפלט הוא: Welcome to Paris!

challenge icon

אתגר

קל

קראו שתי שורות קלט והציגו הודעת ברכה אישית.

תקבלו שני קלטים:

  1. שם פרטי
  2. שם של עיר

קוד הפתיחה כבר קורא את שני הקלטים לתוך name ו-city באמצעות readLines(), כי readline() פועלת רק בהפעלה אינטראקטיבית, וכאן היא לא מקבלת דבר. הציגו הודעה בפורמט הבא:

Welcome, [name] from [city]!

השתמשו ב-cat() כדי להפיק את הפלט. הקפידו לכלול סימן קריאה בסוף ותו ירידת שורה \n.

לדוגמה, אם הקלטים הם Emma ו-Paris, הפלט צריך להיות:

Welcome, Emma from Paris!

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO: כתבו את הקוד שלכם למטה כדי להציג את הודעת הברכה
# השתמשו ב-cat() כדי להציג: Welcome, [name] from [city]!
# אל תשכחו את תו השורה החדשה \n בסוף
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר R אונליין