קריאת קלט באמצעות 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!
אתגר
קלקראו שתי שורות קלט והציגו הודעת ברכה אישית.
תקבלו שני קלטים:
- שם פרטי
- שם של עיר
קוד הפתיחה כבר קורא את שני הקלטים לתוך 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 בסוףהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטריםתרגלו בעצמכם: קומפיילר R אונליין