אתר ללימוד מקיף> פרק 7 - קלט/ פלט
פרק 7 - קלט/ פלט
הנושאים בפרק זה:
7.1.
קריאה
7.2.
כתיבה
7.3.
File ports
7.3.1.
פתיחה וקריאה אוטומטית של File ports
7.4.
String ports
7.5.
טעינת קבצים
ל-Scheme פרוצדורות קלט/ פלט המאפשרות לקרוא מ-port המשמש לקלט או לכתוב ל-port המשמש לפלט.
ports יכולים להיות מקושרים ל-console לקבצים או למחרוזות.
7.1 קריאה
פרוצדורות הקריאה ב-Scheme מקבלות ארגומנט port קלט אופציונלי. אם ה- port אינו מצוין בפירוש - מניחים
שהכוונה היא ל-port הקלט הנוכחי (בד"כ ה-console).
קריאה יכולה להיות על בסיס תו, שורה או ביטוי. בכל פעם שמתבצעת קריאה, מצב ה-port משתנה כך שבקריאה
הבאה ייקרא חומר עוקב לחומר שכבר נקרא. אם ל-port אין יותר חומר לקרוא, פרוצדורת הקריאה מחזירה נתון
מסוים הנקרא סוף-הקובץ (end-of-file) או אובייקט eof. נתון זה הוא הערך היחיד המספק את פרדיקט
?eof-object.
הפרוצדורה read-char קוראת את התו הבא מה-port.
read-line קוראת את השורה הבאה ומחזירה אותה כמחרוזת. (ירידת השורה האחרונה אינה נכללת).
הפרוצדורה read קוראת את הביטוי הבא.
7.2 כתיבה
פרוצדורות הכתיבה ב-Scheme מקבלות את האובייקט שאמור להיכתב ואת ארגומנט port הפלט האופציונלי.
אם ה-port אינו מצוין במפורש - מניחים שהכוונה ל-port הפלט הנוכחי. (בד"כ ה-console).
כתיבה יכולה להיעשות על בסיס תו או ביטוי.
הפרוצדורה write-char כותבת את התו הנתון (ללא #/) ל-port.
הפרוצדורות write ו-display כותבות את הביטוי הנתון ל-port בהבדל אחד:
write מנסה להשתמש במבנה מנגנון קריאה בעוד ש-display אינה עושה זאת.
לדוגמא, write משתמשת במרכאות כפולות עבור מחרוזות ובתחביר ה-#/ עבור תווים. display אינה עושה זאת.
7.3 File ports
פרוצדורות קלט/ פלט ב- scheme לא נזקקות לארגומנט ה- port אם אותו port הוא אמצעי הקלט/הפלט הסטנדרטי.
בכל מקרה, אם צריכים portים אלו במפורש - הפרוצדורות ללא ארגומנטים current-input-port
ו-current-output-port מספקות אותם. לפיכך, בשתי השורות הבאות קורה אותו הדבר בדיוק.