המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

מסמכים קשורים
תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מהוא לתכנות ב- JAVA מעבדה 3

Slide 1

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבוא למדעי המחשב

מבוא למדעי המחשב

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

תרגול 1

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

שאלהIgal : מערכים דו מימדיים רקורסיה:

PowerPoint Presentation

ייבוא וייצוא של קבצי אקסל וטקסט

שאלהIgal : מערכים דו מימדיים רקורסיה:

תכנות מונחה עצמים א' – תש"ע

מבוא לתכנות ב- JAVA תרגול 7

שאלה 2. תכנות ב - CShell

מבוא למדעי המחשב

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

Slide 1

PowerPoint Presentation

מערכות הפעלה קורס מס'

Microsoft Word - Ass1Bgu2019b_java docx

ex1-bash

Microsoft Word - pitaron222Java_2007.doc

מבוא למדעי המחשב

סדנת תכנות ב C/C++

מבוא לתכנות ב- JAVA תרגול 11

מבוא למדעי המחשב

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

Slide 1

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

תרגיל 1 בקורס תוכנה 1

PowerPoint Presentation

תורת הקומפילציה

Slide 1

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

Slide 1

Microsoft PowerPoint - rec3.ppt

תרגול 3 - מערכים

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

HTML - Hipper Text Makeup Language

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבנה מחשבים ספרתיים

Microsoft Word - lec

תרגול 1

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

Microsoft Word - c_SimA_MoedB2005.doc

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

פייתון

Microsoft PowerPoint - lecture14_networking.ppt

Slide 1

Microsoft PowerPoint - 10_threads.ppt

הנחיות הורדה ותפעול לספרים דיגיטלים. הוצאת כנרת, זמורה ביתן שמחה להגיש לכם, התלמידים, ספר דיגיטלי. הספרים עצמם הינם בקבצי PDF הניתנים להורדה ללא עלות

PowerPoint Presentation

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

PowerPoint Presentation

מבוא למדעי המחשב

מבנה מחשבים ספרתיים

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

PowerPoint Presentation

Microsoft Word B

Slide 1

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Slide 1

הגשה תוך שבוע בשעת התרגול

Slide 1

מערכות הפעלה

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

Tutorial 11

הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב הוראות הגשה: ההגשה בזוגות. הוסיפו שמות, ת.ז., אי-מייל, תא אליו יש להחזיר את התרגיל ואת תשובותיכם לתרג

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

מבוא למדעי המחשב

מבוא לאסמבלי

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

תוכן הגדרת שאלת רב-ברירה ]אמריקאית[...2 הגדרת שאלת נכון\לא נכון...8 שאלות אמריקאיות 1

Microsoft PowerPoint - lec10.ppt

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

מערכות הפעלה

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

הגשה תוך שבוע בשעת התרגול

T01-1page

תמליל:

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return + Line Feed( \r\n - יכולות להתעורר בעיות... זרמים, קוראים וכותבים, והשימוש בהם לצורך עבודה עם קבצים נרצה לכתוב תכנית לתיקון קבצי טקסט בדוגמא תיקון מ- UNIX ל- Windows 2 לא נדבר היום )כמעט( על תכנון פתרון ארגומנטים: קובץ קלט וקובץ פלט קריאה מקובץ הקלט כבר ראינו דוגמא עם,Scanner היום נראה דרכים אחרות החלפת ירידת השורה IO! יצירת קובץ הפלט כתיבת הפלט לא בהכרח בסדר הזה... טיפול בשגיאות היררכיית מחלקות הIO ב- Java 3 4 זרמים )Streams( קלט ופלט בג'אווה משאבי מידע: קבצים,,console רשת, זיכרון, תכנית אחרות ועוד התכנית שלנו צריכה לדעת איך לתרגם את הביטים לעצמים \ טיפוסים פרימיטיביים ובחזרה Tutorial מומלץ: http://docs.oracle.com/javase/tutorial/essential/io/i ndex.html קבוצה של טיפוסים שיודעים לקרוא ולכתוב ממשאבים בצורה סדרתית קוראים \ כותבים bytes הזרימה היא תמיד חד-כיוונית Streams Input לקריאה Streams Output לדוגמא FileOutputStream כותב לקובץ 5 6 1

דוגמאות לזרמים שימושיים שימוש בזרמים כל הזרמים נפתחים עם יצירתם FileOutputStream אפילו יוצר קובץ חדש יכולה להיות שגיאה שימוש סטנדרטי: Open input stream While can read read unit do something Close stream Open output stream While has data to write write unit Close stream קריאה\כתיבה לקבצים: FileInputStream, FileOutputStream BufferedInputStream, BufferedOutputStream קריאה\כתיבה של טיפוסים פרימיטיביים ומחרוזות )בדומה ל- Scanner (: DataInputStream, DataOutputStream 7 8 דוגמא 1 שימוש ב- File IO Streams הפתרון לא יעיל! public class ByteUnixToWindows { FileInputStream fis = new FileInputStream(fromFile); int readbyte; while ((readbyte = fis.read())!= -1) { System.out.write(readByte); System.out.println(); int כדי fis.close(); ארגומנט: המסלול לקובץ קוראים byte בכל פעם. המתודה read מחזירה לסמן את סוף הקובץ ב- 1- כרגע רק כותבים ל- console, לא תיקנו את הבעיה! נרצה לקרוא הרבה בתים בבת אחת נוסיף כתיבה לקובץ תוך שימוש ב- FileOutputStream נקבל כארגומנט שני את המסלול לקובץ הפלט 9 10 דוגמא 2 מערך בתים עבודה עם טקסט public class ByteArrayUnixToWindows { FileInputStream fis = new FileInputStream(fromFile); FileOutputStream fos = new FileOutputStream(toFile); byte[] readbytes = new byte[1000]; int numread; while ((numread = fis.read(readbytes))!= -1) { fos.write(readbytes, 0, numread); הקלט והפלט שלנו הם קבצי טקסט תיקון newline עם bytes אפשרי, אבל לא נוח! היינו רוצים לעבוד עם מחרוזות ו- characters fis.close(); fos.close(); כן: כותבים לקובץ עדין לא: מתקנים את newline numread יקבל את מס' בתים שקראנו בפועל, לכן זה גם מס' הבתים שנכתוב 11 12 2

Reader & Writer והפתרון... מחלקות שקוראות וכותבות רצפים של characters ממשאבים. לדוגמא: FileReader, FileWriter בעיה: )UTF-16( בג'אווה הם עם קידוד מסויים Characters אבל בקבצי המחשב שלנו יש אולי קידוד אחר! בד"כ Java פותרת את הבעיה בעצמה! קידוד ברירת מחדל מוגדר עבור מערכת ההפעלה Java מתרגמת אותו ל- characters שלה 01001000 01100101 01101100 H e l 01001000 01100101 01101100 'H' 'e' 'l' לעתים ניתן להגדיר מה הקידוד הדרוש new InputStreamReader(is, Charset.forName("UTF-8")); 13 14 דוגמא 3 Writer Reader & Stream Wrappers 15 public class CharacterUnixToWindows { FileReader freader = new FileReader(fromFile); FileWriter fwriter = new FileWriter(toFile); char[] charread = new char[1000]; int numread; while ((numread = freader.read(charread))!= -1) { String string = new String(charRead, 0, numread); String windowsstring = string.replaceall("\n", "\r\n"); fwriter.write(windowsstring); הפתרון לא היה עובד בכיוון ההפוך! למה? freader.close(); fwriter.close(); String (line) BufferedReader קיימים זרמים אשר להם פונקציונליות "עוטפים" זרמים אחרים ומוסיפים לדוגמא, רוצים לקרוא מקובץ )FileReader( אבל שורה בכל פעם )BufferedReader( כשניצור את הקורא השני, נעביר לו את הראשון כארגומנט. new BufferedReader(new FileReader(file)) char[] FileReader file 16 איך זה עובד? Stream Wrappers דוגמא נוספת אנחנו נעבוד עם הזרם העוטף החיצוני ביותר BufferedReader( בדוגמא( נשלח לו מהקוד בקשות קריאה או כתיבה כל זרם עוטף מחליט מתי לשלוח בקשת קריאה\כתיבה לזרם הנעטף על-ידו רוצים להדפיס לOutputStream נתון. ב- Writer Stream מאפשר לנו לעטוף OutputStreamWriter (וגם לבחור את הקידוד, כפי שראינו עם )InputStreamReader מאפשר הדפסה בדומה ל- System.out PrintWriter new PrintWriter(new OutputStreamWriter(givenOutputStream)) ומבצע עיבוד על המידע לפני שהוא מעביר אותו הלאה עלינו רק לדאוג לחבר את הזרמים בצורה נכונה PrintWriter char[] OutputStreamWriter byte[] OutputStream 17 18 3

דוגמא 4 Buffered אבל... אין דרך פשוטה יותר? 19 public class BufferedUnixToWindows { BufferedReader bufferedreader = new BufferedReader(new FileReader(fromFile)); BufferedWriter bufferedwriter = new BufferedWriter(new FileWriter(toFile)); String line; while ((line = bufferedreader.readline())!= null) { bufferedwriter.write(line + "\r\n"); readline() "שובר שורות" לפי כל הסוגים bufferedreader.close(); bufferedwriter.close(); האפשריים של newline בכתיבה נוסיף את ירידת השורה הרצויה close() סוגר גם את כל הזרמים הנעטפים קריאה וכתיבה לקבצים הן פעולות סטנדרטיות דיון: אולי צריך BufferedFileReader ו-?BufferedFileWriter היינו רוצים לקרוא את כל הקובץ בפקודה אחת החל מ- 7.0 Java SE יש דרך לעשות זאת! 20 המחלקה java.nio.file.files - Files דוגמאות http://docs.oracle.com/javase/7/docs/api/index. html?java/nio/file/files.html מכילה שירותים שימושיים לעבודה עם קבצים עובדת עם עצמים מסוג java.nio.file.path שמתאימים למסלולי קבצים )בדומה ל- java.io.file (. המחלקה המשלימה java.nio.file.paths מכילה שירותים שימושיים עבור מסלולי קבצים. Paths.get("examples","example.txt") יחזיר אובייקט מסוג examples/example.txt שמתאים למסלול הקובץ היחסי Path copy העתקת קבצים ובדומה delete,move,iswritable,isreadable,isdirectory exists,isexecutable מחזירות פרטים שונים לגבי ה- Path readallbytes אין צורך לפתוח ולסגור זרמים מתאים רק לקבצים קטנים יחסית! קריאת כל הקובץ בבת אחת. 21 22 דוגמא 5 שימוש ב- Files טבלת זרמים שימושיים public class FilesUnixToWindows { String fromfile = args[0]; String tofile = args[1]; byte[] allbytes = Files.readAllBytes(Paths.get(fromFile)); String string = new String(allBytes); String windowsstring = string.replaceall("\n", "\r\n"); Files.write(Paths.get(toFile), windowsstring.getbytes()); Output streams Input streams FileInputStream קריאה מקובץ FileOutputStream כתיבה לקובץ )עוטף( קריאה יותר BufferedOutputStream יעילה דרך buffer )עוטף( קריאת DataOutputStream טיפוסים פרימיטיביים BufferedInputStream DataInputStream PushbackInputStream )עוטף( מאפשר "החזרה" של חלק מהבתים ל- Stream הנעטף SequenceInputStream עוטף רצף של :Streams קורא מאחד, אח"כ מהשני וכו' 23 24 4

לסיכום טבלת זרמים שימושיים - המשך Writers Readers FileReader StringReader קריאה מקובץ FileWriter כתיבה לקובץ קריאה ממחרוזת StringWriter כנ"ל )עוטף( קריאה יותר BufferedWriter יעילה דרך,buffer מאפשר קריאת שורה BufferedReader InputStreamReader כנ"ל OutputStreamWriter עוטף.Stream מאפשר בחירת קידוד PrintWriter LineNumberReader ראינו דרכים שונות לעבודה עם קלט ופלט )עוטף( מאפשר לדעת כמה שורות קראנו ע"י getlinenumber )עוטף( פעולות הדפסה שונות println( למשל( זרמים, קוראים וכותבים, Files,Scanner בעיקר עבודה עם קבצים, אבל לא רק! נשתמש בהם לפי הצורך האם יש צורך בעוד זרמים? שיקולי יעילות ומודולריות לעומת נוחות 25 26 5