Java/פלט וקלט
מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.
כאשר כותבים תוכנית, קרוב לוודאי שנזדקק למידע אותו ייתן המשתמש, כמו גם אפשרות להעביר מידע אל המשתמש. המונחים פלט וקלט הם מונחים בסיסיים במדעי המחשב: קלט הוא מידע אותו מקבל המחשב מהמשתמש באמצעים כמו מקלדת, עכבר וכדומה. פלט הוא המידע אותו נותן המחשב למשתמש באמצעים כמו מסך המחשב, מדפסת וכדומה. בפרק זה נעסוק בצורות הבסיסיות של הקלט והפלט, דהיינו - קליטת נתונים פשוטים באמצעות המקלדת, והדפסת נתונים על המסך.
תוכן עניינים |
[עריכה] פלט
כבר בפרקים הקודמים נתקלתם בפקודה System.out.println(...), שמדפיסה על המסך את מה שנמצא בין הסוגריים. פקודה דומה היא System.out.print(...), שמבצעת פעולה זהה, אך בלא להעביר שורה לבסוף. המשתמע מכך הוא ששורות הקוד
System.out.print("World");
יציגו את התוצאה
ולא
World
שהייתה מושגת אם היינו משתמשים בפקודה System.out.println. בשלב זה נסתפק בשתי פקודות פשוטות אלו.
[עריכה] קלט
ישנן דרכים רבות לקבל קלט: קריאה מקבצים, פעולות עכבר שמבצע המשתמש, וכן הלאה. בשלב זה נשתמש בקלט בסיסי שנותן המשתמש משורת הפקודה, כלומר - בשלב בו אמור המשתמש לתת קלט, תחכה התוכנית שהמשתמש יכתוב קלט רצוי, ואחרי שהוכנס - תמשיך את פעולתה (בדרך כלל - תוך שימוש בקלט). אם עובדים עם Java משורת הפקודה של מערכת ההפעלה הדבר ברור. כאשר עובדים עם eclipse, יש לעבור לחלון ה-Console (המקביל לשורת הפקודה), בזמן ריצת התוכנית, ושם להכניס את הקלט הרצוי. כדי ליישם זאת נצטרך ללמוד מספר מונחים חדשים:
[עריכה] ייבוא מחלקות
בדומה ל-C, גם Java בנויה בצורה מודולרית ומציעה חבילות רבות המרחיבות את ההיצע הקטן של הפקודות המובנות. עם הזמן נכיר חבילות רבות. כרגע נשתמש בחבילה בסיסית הנקראת java.util, ובפרט - במחלקה בשם Scanner. כדי להשתמש במחלקה זו, אפשר לייבא אותה באמצעות הפקודה
. אפשר גם לייבא את כל חבילת java.util בפקודה אחת, באמצעות
|
כדאי לדעת: יש גם דרך נוספת להשתמש במחלקה חיצונית מבלי לייבא אותה, באמצעות פנייה ישירה למחלקה. במקרה זה היא לא נוחה ולא נשתמש בה, אך נעסוק בה בהמשך. |
את פקודת הייבוא יש לכתוב בראש התוכנית, עוד לפני ההכרזה על המחלקה (כלומר, לפני הפקודה public class ...).
[עריכה] אובייקטים ובנאים
בשלב זה עדיין לא נעסוק באובייקטים ובבנאים (Constructors), ובשורות הבאות נשתמש בלי להבין לגמרי את משמעותן. בתוך מתודת ה-main נכתוב את השורות הבאות:
שורה זו מאתחלת אובייקט מטיפוס Scanner בשם s, המקבל כפרמטר את זרם הקלט. כאמור - בשלב זה עדיין לא נמצאים בידינו הכלים להבין שורה זו.
i = s.nextInt();
השורה הראשונה כבר מוכרת לנו: היא מאתחלת משתנה מטיפוס int בשם i. השורה השנייה קולטת לתוך i את הערך אותו מכניס המשתמש.
|
שימו לב: מה לדעתכם יקרה אם יכניס המשתמש מספר לא שלם, או גרוע מכך - אות? בדקו! |
[עריכה] צורות שימוש
לאחר אתחול אובייקט Scanner, ניתן לקלוט בעזרתו סוגים שונים של משתנים. בדוגמה הקודמת ראינו כיצד קולטים משתנה מטיפוס int. באופן זהה ניתן לקלוט גם משתנים מטיפוסים אחרים. בהנחה שאתחלנו אובייקט Scanner בשם s:
- הפקודה s.next() תחזיר מחרוזת, כלומר - תאפשר לנו לקלוט משתנה מטיפוס String.
[עריכה] דוגמה
נציג כעת תוכנית קצרה המשתמשת בפקודות הקלט והפלט שלמדנו עד כה:
import java.util.*;
public class IOExample {
public static void main(String[] args) {
int a, b, c;
Scanner s = new Scanner(System.in);
System.out.println("Enter a number: ");
a=s.nextInt();
System.out.println("Enter another number: ");
b=s.nextInt();
c=a+b;
System.out.println(c);
}
}
|
עכשיו תורך: מה לדעתכם עושה התוכנית? כיצד תוכלו לשנות אותה כך שהיא תקלוט מהמשתמש שלושה משתנים ותציג את מכפלתם? |
[עריכה] נספח
| הפרק הקודם: משתנים |
פלט וקלט | הפרק הבא: מחרוזות |