© אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה קורס תוכנת מטלב ויישומיה שיעור מס' :5משתני טקסט נתונים טקסטואליים נתונים טקסטואליים מופיעים בהקשרים הבאים: נתונים לתוכנית .לדוגמא :שמות אנשים ,ערים ,מוצרים וכו' וכן טקסטים שלמים למשל ספרים. שמות בקוד עצמו .לדוגמא :שמות משתנים ,קבצים. אנוטציה בגרפיקה :כותרות לצירים ולגרף ,מקרא ,טקסט חופשי. מאפיינים שונים לפעולות בתוכנית .לדוגמא :סימונים לצבעים ולסגנון קו בגרפיקה (פקודת ,)plotפורמט כתיבה לקובץ גרפי (פקודת ,)printוכן פקודות שנראה בהמשך שיעור זה. מהם תווים ומחרוזות תווים תו הוא יחידת -מידע שמתייחסת לסימן גרפי .דוגמה פשוטה לתו היא אחת מאותיות האלפבית .תווים כוללים גם את סימני הספרות, סימני פיסוק ,סימנים מיוחדים (למשל @ או ,)$וכן סימן רווח .תווי -בקרה הם תווים שאינם ניתנים לקריאה אבל מסמנים הוראות להצגה של תווים אחרים ,לדוגמא :מעבר לשורה חדשה ,קפיצה (סימן טאב) ,חזרה אחורה מקום אחד ועוד. במחשב תווים מיוצגים ע"י קודים ,שהם ערכים מספריים .ההתאמה בין התווים לקודים שלהם נקראת קידוד .קיימות כיום מערכות קידוד רבות ,ביניהן קוד UTF8 ,asciiועוד .בגירסאות מוקדמות של מטלב הוכר רק קידוד .asciiכיום ניתן לעבוד עם כל קידוד המוכר ע"י המערכת ,כאשר ניתן גם לשנות את ברירת המחדל לקידוד. מחרוזת תווים היא שורה מסודרת של תווים .דוגמא פשוטה היא שורת-טקסט .במטלב מחרוזת תווים היא מערך חד-ממדי של תווים( .במטלב ניתן ליצור גם מערכי תווים רב-ממדיים). מטלב מציין קבועי -מחרוזת (מחרוזות שהן חלק מן התוכנית עצמה) בצבע ייחודי. עבודה עם משתני טקסט יצירת מחרוזות בדומה לנתונים מספריים ,אפשרות אחת ליצירת משתני מחרוזת היא קריאה מקובץ (על כך בהמשך). ליצירת מחרוזות בתוך התוכנית ,הצורה הנפוצה ביותר היא ע"י כתיבת האותיות בין גרשיים. '!' = mychar = mychar ! 'mysay = 'This is a string = mysay This is a string )char(80 = ans P )char(40:50 = ans ()*+,-./012 )blanks(n ליצירת תו בודד: ליצירת מחרוזת: יצירת תו מתוך הקידוד שלו יצירת מחרוזת מתוך סדרת קודים יצירת מחרוזת של nתווי רווח המרה ממספר למחרוזת ,כלומר :מחרוזת התווים שמייצגת באופן קריא את המספר עמ' 1מתוך 9 שיעור 5 )num2str(x אפריל 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ )num2str(x,n לכלול לא יותר מ n-ספרות משמעותיות: )int2str(x המרה למחרוזת של החלק השלם בלבד של מספר (החלק השברי מושמט) פעולות -מערך על מחרוזות מאחר שמחרוזות הן מערכים ,כל הפעולות המוגדרות במטלב על מערכים מוגדרות גם על מחרוזות. ]yoursay = [mysay mychar = yoursay !This is a string ;x = 3.5 ' msg = ['The value of x is: ])num2str(x = msg The value of x is: 3.5 למשל שרשור: כך יש לבנות טקסט להצגת מספר: )yoursay(3:7 = ans is is ]' names=['Ruthi';'Moshe';'Avram';'Dana = names Ruthi Moshe Avram Dana שליפת חלק ממחרוזת: ניתן ליצור גם מערכי תווים דו-ממדיים, אבל רק אם כל המחרוזות באותו אורך. (אם לא ,ניתן "לרפד" את המחרוזות הקצרות יותר ברווחים .צורת עבודה זו פחות נוחה ובהמשך נכיר סוגי משתנים שמתאימים יותר לעבודות עם קבוצות של מחרוזות). ◄דוגמא :1שרשרת DNAבנויה משני "גדילים" המחוברים ביניהם לאורכם .כל "גדיל" בנוי מסדרה של בסיסים שמסומנים באותיות .G,A,T,Cהגדילים מאורגנים כך שמול הבסיס Gבגדיל אחד נמצא הבסיס Cבגדיל שני ,מול Cנמצא ,Gמול Aנמצא T ומול Tנמצא .Aהסקריפט d5pairsמייצג שרשרת DNAבאורך nע"י שתי שורות של אותיות (כל "גדיל" בשורה) כלומר מערך . 2xnאת השורה הראשונה "מגרילים" באופן אקראי ,ואת השורה השנייה בונים בהתאם לשורה הראשונה. n=30; d5pairs = DNA GCCAAACAGCAGAGGCCTGGACGGGTTTAT CGGTTTGTCGTCTCCGGACCTGCCCAAATA פקודות לטיפול במחרוזות קיימות פקודות רבות לטיפול במחרוזות .לרשימה מלאה ,יש לחפש בתיעוד לפי .stringsלהלן כמה מן הפקודות השכיחות: הסרת כל הרווחים לפני הסימן הראשון ואחרי הסימן האחרון שאינם רווחים( .משאירה רווחים )strtrim(strng בין הסימנים שאינם רווחים). )'str2double('5.1e-3 = ans 0.0051 )str2num(strng המרה ממחרוזת למספר אחד. אם המחרוזת לא מצייגת מספר ,מתקבל .NaN המרה ממחרוזת למספר/ים (יכול לפענח גם סדרה של מספרים). חיפוש מחרוזת substrבתוך מחרוזת אחרת .strallאם נמצא ,מתקבל האינדקס בתוך strall שבו נמצא התו הראשון של ( . substrאם יותר מפעם אחת ,מתקבל מערך של אינדקסים). השוואה בין שתי מחרוזות .מתקבל trueאם שתי המחרוזות זהות false ,אחרת. )strfind(strall,substr )'strfind(mysay,'is = ans 3 6 )strcmp(str1,str2 שאלה :מדוע לא מספיקה השוואה == ויש להשתמש בפקודת ?strcmp עמ' 2מתוך 9 שיעור 5 אפריל 15 קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ עבודה עם קבצים קובץ הוא אוסף של נתונים שהמערכת מתייחסת אליהם כאל יחידה אחת. לקובץ מספר מאפיינים ,לדוגמא: שם הקובץ תוכן הקובץ -המידע הנמצא על אמצעי האכסון. גודל הקובץ -מס' הבתים שתופס באמצעי-האכסון. תאריכים (יצירה ,שינוי). הרשאות (אילו משתמשים רשאים לעשות בו פעולות שונות). מידע על מיקום הקובץ באמצעי האכסון :מידע זה שקוף למשתמש ,ונמצא בניהול המערכת. תיקייה היא סוג מיוחד של קובץ ,שכולל מידע על קבצים אחרים .קבצים אלה שייכים לתיקייה (נמצאים בתוכה) .חלק מן הקבצים יכול להיות תיקיות. קיים סימון של המערכת ל"שיוך" של קובץ לתיקייה :הסימן \ במערכת Windowsוהסימן /במערכת .Linuxלדוגמא c:\lib1\lib2\myfile.txtפירושו שהתיקייה lib1נמצא ברמה העליונה של דיסק ,Cהתיקייה lib2נמצאת בתיקייה lib1והקובץ myfile.txtנמצא בתיקייה .lib2 pathהוא ה"מסלול" שמוביל מהרמה העליונה של אמצעי האכסון לתיקייה שבה נמצא קובץ ,במקרה שלמעלה c:\lib1\lib2 שם מלא של קובץ כולל גם את השם וגם את ה ,path-כלומר c:\lib1\lib2\myfile.txt פקודות מערכת לטיפול בקבצים לרשימה המלאה של פקודות לטיפול בקבצים ,יש לחפש filesבתיעוד .להלן כמה פקודות שימושיות. הארגומנטים של קלט ו/או פלט בכל הפקודות הבאות הם מחרוזות תוים (שמות של קבצים): pwd ה path-המלא לתיקייה בה נמצאים. cd mydir מעבר לתיקייה .mydirאם אין pathמלא ,מטלב מחפש את mydirתחת התיקייה הקיימת. delete myfile מחיקת קובץ myfile copyfile ffrom fto העתקת קובץ ffromלקובץ fto בניית שם מלא של קובץ מחלקיו ,תוך הכנסת סימן התיקייה המתאים למערכת (,Windows fullfile fdir fname fullfile data-files pictures pic1.png = ans data-files\pictures\pic1.png Linuxוכו') .לדוגמא: פורמט פונקציה לעומת פורמט פקודה במטלב אפשר לכתוב פקודות בשתי צורות: פורמט פונקציה פורמט פקודה command arg1 arg2 הארגומנטים מפוענחים כטקסט )command(arg1,arg2 מה שלא מוגדר בין גר שיים ,מפוענח כקלט רגיל :אותיות כשמות משתנים ,מספרים כמספרים. לא מתקבל פלט שניתן לשמור במשתנה. פלט יתקבל לפי הגדרת הפקודה. שמות ספציפיים הם חלק מן הפקודה. מאפשר גמישות כאשר שמות ניתנים ע"י משתני מחרוזת. עמ' 3מתוך 9 שיעור 5 אפריל 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה פורמט פונקציה פורמט פקודה save results.txt alltab -ascii )'save(myfile,'alltab','-ascii המשתנה alltabייכתב לקובץ ששמו הוא המחרוזת במשנה תמיד יווצר קובץ בשם results.txt .myfile load acid.txt )spectra = load(myfile ייקרא תוכנו של הקובץ ששמו הוא המחרוזת שבמשתנה תמיד יווצר משתנה בשם acid.txt .myfileאחרי הקריאה הנתונים נשמרים במשתנה .spectra print myplot.pdf -dpdf )'print(myplot,'-dpdf הפלוט יישמר בפורמט PDFבקובץ ששמו הוא המחרוזת שבמשתנה .myplot תמיד יווצר קובץ בשם .myplot.pdf cd mydir )cd(mydir מעבר לתיקייה ששמה הוא המחרוזת שבמשתנה .mydir מעבר לתיקייה .mydir copyfile a.txt b.txt )copyfile(file_a,file_b הקובץ ששמו הוא המחרוזת במשתנה file_aיועתק לקובץ תמיד יועתק קובץ a.txtלקובץ .b.txt ששמו הוא המחרוזת במשתנה .file_b בחירת קובץ מתוך רשימה הפקודות הבאות מציגות למשתמש רשימה של קבצים לפי קריטריון מסוים ( ,)patternועוצרות את התוכנית עד שהמשתמש בוחר באמצעות העכבר את אחד הקבצים .המשתמש יכול לעבור לתיקיות אחרות ,גם כאלה שנמצאות מעל לתיקייה הנוכחית .מתקבל שם -קובץ (אותו אפשר לשמור במשתנה מחרוזת). בחירת קובץ לקריאה :יש לבחור שם קובץ קיים. )[FName,PName] = uigetfile(pattern,title בחירת קובץ לשמירה :ניתן לבחור שם קיים או )[FName,PName] = uiputfile(pattern,title להזין שם שאינו קיים. בחירת תיקייה: )Pname = uigetdir(start_path,title בכל הפקודות האלה: שם קובץ (ללא .)path FName שם של תיקייה ,בצורת pathמלא. PName pattern תבנית לבחירה ,בדרך כלל בשילוב * המסמן תווים כלשהם. כדי לאפשר בחירת קובץ כלשהו בתיקייה כלשהי ,יש לציין **. title כותרת ,טקסט על פס-הכותרת של חלונית הבחירה. ניתן להשמיט titleואז תופיע כותרת ברירת -מחדל. ניתן להשמיט Pnameואז ידוע רק שם הקובץ (לא מומלץ ,מאחר שאין לצפות את תגובת המשתמש). ◄דוגמא :2הסקריפט d5plot_ecologyמבצע את הדברים הבאים: א .נותן למשתמש לבחור קובץ מתוך רשימת קבצי .LGDW*.mat ב .קורא את הקובץ ,ומשרטט את אוכלוסיות האנטילופות והעשב כפונקציה של הזמן. ג .מוצא את נקודת המינימום של אוכלוסיית האנטילופות ומוסיף על הגרף ליד נקודה זו את ערכי הזמן והאוכלוסייה. ד .כותב ככותרת לגרף פרמטרים נוספים של המערכת. ה .שומר את הציור לקובץ ,PDFכאשר שם הקובץ זהה לשם קובץ הנתונים. עמ' 4מתוך 9 שיעור 5 אפריל 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה Water supply = 4.02, W0 = 20.05, L0 = 20 65 deer grass 60 55 50 population 45 40 35 30 )(29.4685,28.2276 100 90 80 70 60 50 time 30 40 20 0 10 25 קלט/פלט קלט מן המשתמש קלט מן המקלדת :פקודת inputמציגה מחרוזת תווים , promptעוצרת את ביצוע התכנית ומאפשרת למשתמש להקיש על המקלדת .לאחר שהמשתמש מקיש על > ,<ENTERכל מה שהוקש מהצגת ה prompt-ועד מקש זה ,מתקבל כפלט של הפקודה. קיימות שתי צורות לפקודה: )resp = input(prompt קלט מפוענח :מטלב מנסה לפענח את התווים שהוקשו כאילו הוקלדו בחלון הפקודות ,והתוצאה נשמרת במשתנה .resp )'raw = input(prompt,'s קלט גולמי :התווים מועברים למשתנה rawכפי שהוקשו. בחירת אפשרות מתוך תפריט :פקודת menuמציגה חלונית עם עמודה של כפתורים ,עוצרת את ביצוע התוכנית ומאפשרת למשתמש להקיש על אחד מן הכפתורים עם העכבר .הפלט nשל הפקודה הוא המספר הסידורי של הכפתור עליו הוקש. אופן השימוש בפקודה: )n = menu(title,b1,b2,...,bN title כותרת ,טקסט שיופיע מעל עמודת הכפתורים. b1, b2, ...bN מחרוזות טקסט ,כל אחת תווית על כפתור בתפריט. ◄דוגמא :3הסקריפט d5birthsמבצע את הדברים הבאים: 13000 feb aug א .קורא נתוני לידות מקובץ ומציג כפונקציה של הזמן את נתוני כל החודשים. 12000 11000 ב .נותן למשתמש לבחור עמודה ,צבע ומרקר. 10000 ג .חוזר על הבחירה עבור חודש נוסף. 9000 ד .מנקה את הפלוט ,מצייר רק את נתוני שני החודשים שנבחרו ,עם 8000 הצבעים והמרקרים שנבחרו ,ומציג מקרא. 7000 6000 2005 עמ' 5מתוך 9 שיעור 5 2000 1995 1990 1985 1980 1975 5000 1970 אפריל 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה קלט/פלט מפורש עד כה הכרנו פקודות שמבצעות קלט/פלט על קובץ שלם ,בצורה שקופה לתוכנית .הפקודות בהמשך מאפשרות לקרוא או לכתוב לקובץ בשלבים. כל קובץ מסתיים בסימן end-of-fileהמציין למערכת את קצה הנתונים בקובץ( .זה אינו מספר או אחד מן הסימנים האפשריים כחלק מן הנתונים). בכל רגע נתון בטיפול בקובץ ,המערכת קוראת או כותבת למקום מסוים בקובץ .המערכת עוקבת אחרי מקום זה באמצעות הfile - .pointer בדרך כלל ,פעולת כתיבה או קריאה בודדת לא מתבצעת ישירות לאמצעי-האכסון ,אלא ל"חוצץ" ( :)bufferאזור שבו המערכת מכינה את הנתונים הנקראים/נכתבים לקובץ .במטלב פעולה זו שקופה למשתמש. הליך קריאה או כתיבה לקובץ כולל את השלבים הבאים: פתיחת הקובץ :מציאת הקובץ לפי שם מלא ,איסוף מידע (מקום פיסי של הקובץ ומאפיינים נוספים) ,הקצאת ה,buffer- הצבת ה file pointer-בהתחלת הקובץ .כל המידע הזה שקוף למשתמש ,וניתן לגשת לקובץ רק ע"י מציין File-IDשמצביע על אוסף המידע שהמערכת שומרת לגבי הקובץ בכל זמן עיבודו. כתיבה או קריאה לקובץ (אפשר יותר מפעולה אחת). סגירת הקובץ :כתיבת ה buffer-לאמצעי האכסון ,כתיבת ( end-of-fileאם רלוונטי). תוכנית שמשתמשת בקלט/פלט מפורש כוללת פקודות המבצעות את השלבים האלה .הפקודות לפתיחה וסגירה של קובץ הן: )fID = fopen(filename, action פתיחת קובץ: fID מציין לקובץ (להתייחסות בהמשך) filename שם הקובץ action הפעולה/ות לביצוע בקובץ אפשרויות עבור :action קריאה (ברירת מחדל) ''r כתיבה (גם על קובץ קיים) ''w הוספה לקובץ קיים (אם יש) ''a אפשרויות נוספות מפורטות בתיעוד של הפקודה. סגירת קובץ: סגירת כל הקבצים הפתוחים: )fclose(fID )'fclose('all קלט/פלט מקבצי טקסט קבצי טקסט כוללים רק קודים של תווים .למרות שהקבצים מוצגים "בצורה דו ממדית" כלומר כאוסף של שורות זו מתחת לזו ,כל קובץ הוא סדרה אחת של תווים .השורות מופרדות ביניהן בקובץ ע"י סימן newlineשמצויין בתוכנית מטלב ע"י '.'\n הערה :בטיפול בקבצי טקסט במערכת ,Windowsלפעמים יש להוסיף מציין ' 'tל action-בפקודת fopenלקובץ טקסט כדי שתוכנת NotePadתקרא את הקובץ כהלכה .לדוגמא ,במקום ' 'rלכתוב '( .'rtבקבצי טקסט ב Windows-יש ' '\n\rכלומר גם חזרה לראשית השורה במקום רק ' '\nכלומר מעבר לשורה חדשה). עמ' 6מתוך 9 שיעור 5 אפריל 15 ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה © אגף התקשוב ,אוניברסיטת בר אילן קריאה של שורת טקסט )strng = fgetl(fID קריאת מחרוזת תווים מהמקום הנוכחי בקובץ ועד סוף השורה. strng אם נקראו תווים :מחרוזת תווים (לאחר קידוד אך ללא פענוח תוכן). אם ה file pointer-הקובץ :מספר = .-1 קריאה וכתיבה של טקסט לפי פורמט הפורמט מציין את אופן ההמרה בין ייצוג פנימי (בינארי) של משתנים במטלב לטקסט קריא (מחרוזות תווים) .פקודת format במטלב שהכרנו בשיעורים קודמים מגדירה כמה צורות המרה נתונות ,לצורך הצגה בחלון הפקודות .קלט/פלט מפורש מאפשר ציון מגוון רחב יותר של פורמטים. פורמט במטלב הוא מחרוזת תווים .המחרוזת יכולה לכלול "תווים חופשיים" אשר לא מתפענחים (נקראים או נכתבים כפי שהם מופיעים בפורמט) ,וכן "שדות" שכל אח ד מהם מגדיר צורת המרה לגודל סקלרי (מספר או מחרוזת) אחד .בתוך הפורמט ,מזהים את התחלת השדה בסימן %ואת סוף השדה לפי קוד ההמרה .כמו -כן אפשר לציין את רוחב השדה wשהוא מספר התווים שהשדה יתפוס לאחר המרה ,וכן מאפיינים נוספים הרלוונטיים לכל סוג. במידה ורוחב השדה עולה על מספר התווים הנוצרים מן ההמרה ,התווים מיושרים לימין ו"מרופדים" בתווי רווח משמאל. להלן כמה סוגי שדות ומאפיינים נפוצים: תו בודד %c מחרוזת תווים %s רוחב שדה w %ws %d מספר (עשרוני) שלם רוחב שדה w "ריפוד" באפסים במקום בתווי רווח. %wd %0wd %f מספר עשרוני עם נקודה קבועה. רוחב שדה ,wמתוכו pספרות אחרי הנקודה "ריפוד" באפסים במקום בתווי רווח. %w.pf %0w.pf %e מספר עשרוני עם נקודה צפה. רוחב שדה ,wמתוכו pספרות אחרי הנקודה "ריפוד" באפסים במקום בתווי רווח. %w.pe %0w.pe כתיבה ע"י פורמט )fprintf(fID,format,A1,...,An הפקודה לכתיבה לקובץ היא: fID מציין לקובץ .אם מושמט ,הפלט נכתב לחלון הפקודות. format מחרוזת הפורמט ערכים להמרה .יכולים להיות ביטויים כלשהם (לא רק שמות משתנים). A1,A2, ...An מטלב עובר על כל הערכים במשתנים (לפי הסדר שבו הם מופיעים בפקודה) ובהתאמה על כל השדות שבפורמט .כל ערך מומר בהתאם למאפייני השדה המתאים בפורמט. אם משתנה הוא מערך ,אז קודם ממירים את כל האיברים שלו ורק אז עוברים למשתנה הבא .במקרה של מערך עם 2ממדים או יותר ,עוברים על כל האברים בסדר שבו הם נמצאים בזיכרון -לפי עמודות. עמ' 7מתוך 9 שיעור 5 אפריל 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה אם השדו ת בפורמט "נגמרים" לפני שהומרו כל הערכים שבמשתנים ,מטלב עושה בפורמט "שימוש חוזר" .לדוגמא: )rnd = rand(3,4 ;'fmt = ' Col < %5.3f %5.1e %5.2f >\n = rnd )fprintf(fmt,rnd 0.0357 0.7922 0.1419 0.9572 > 0.80 Col < 0.957 4.9e-01 0.8491 0.9595 0.4218 0.4854 > 0.92 Col < 0.142 4.2e-01 0.9340 0.6557 0.9157 0.8003 > 0.66 Col < 0.792 9.6e-01 > 0.93 Col < 0.036 8.5e-01 קריאה ע"י פורמט ניתן לקרוא רק משתנה אחד .אם כל הנתונים בקובץ מאותו סוג ,ניתן לקרוא מערך בפקודה אחת. )A = fscanf(fID,format הנתונים שנקראו מהקובץ נשמרים במשתנה .A )A = fscanf(fileID, format, sA ציון מספר האיברים (לכל היותר) לקריאה. ציון הממדים של m :Aשורות n ,עמודות .אם n=Infאז קוראים עד סוף הקובץ. )]A = fscanf(fileID, format, [m,n במקרה שהפורמ ט כולל תווים מפורשים ,מטלב מחפש את התווים האלה בקובץ ,מדלג עליהם וממשיך לפענח את הקובץ לפי השדה שאחרי התווים. ◄דוגמא :4הסקריפט d5write_ecologyמבצע את הדברים הבאים: א .נותן למשתמש לבחור קובץ מתוך רשימת קבצי קבצי .LGDW*.mat ב .מכין שם -קובץ זהה לקובץ הנתונים ,אבל עם סיומת .txt ג .כותב לקובץ בשם זה שורת כותרת הכוללת ערכי פרמטרים של המערכת. ד .בשורה הבאה כותב כותרות לזמן ולאוכלוסיית האנטילופות ,ובשורות הבאות את ערכי הזמן והאוכלוסיה. ◄דוגמא :5הסקריפט d5read_ecology file: LDGW15.txt, Water supply: 4.02 מבצע את הדברים הבאים: 50 א .נותן למשתמש לבחור קובץ מתוך רשימת 45 קבצי .LDGW*.txt ב .פותח את הקובץ לקריאה ,ומדלג על 40 השורה הראשונה. 35 ג .מן השורה השנייה ,מחלץ את ערך lions deer grass water אספקת המים. ד .מדלג על שתי השורות הבאות. 25 ה .משרטט גרף של כל האוכלוסיות ומוסיף population 30 20 מקרא. 15 ו .מוסיף כותרת לגרף :שם הקובץ המקורי + 10 ערך אספקת המים. 5 100 עמ' 8מתוך 9 90 80 שיעור 5 70 60 50 time 40 30 20 10 0 אפריל 15 © אגף התקשוב ,אוניברסיטת בר אילן ד"ר סמדר שץ קורס תוכנת מטלב ויישומיה קריאה וכתיבה לקבצים בינאריים קובץ בינארי כולל ייצוג בינארי של נתונים מסוגים שונים ,באופן סדרתי. בקריאה וכתיבה לקובץ בינארי קוראים בכל פעם נתונים מסוג מסוים .מספר הבתים שנקרא או נכתב עבור כל נתון תלוי בסוג הנתון. להלן כמה סוגי נתונים ומספר הבתים הכתובים בקובץ לכל נתון: מספר בתים מספר בתים סוג סוג 4 int, int32 4 single,float 2 int16,integer*2 8 double,float64 1 int8 1 char*1 1 uint8 תלוי בקידוד char סוגים נוספים נמצאים בתיעוד על פקודות . fread,fwriteאם לא מציינים את הסוג בגוף הפקודה ,ברירת המחדל היא .uint8 בכתיבה וקריאה של מערך ,הנתונים נכנסים למערך לפי עמודות. פקודות כתיבה )fwrite(fID, A כתיבת כל האיברים של Aלקובץ. Aיכול להיות גם ביטוי (לא רק שם של משתנה). ציון סוג הנתונים dType דוגמא: )fwrite(fID, A, dType )'fwrite(fID,rand(5),'double פקודות קריאה )A = fread(fID קריאת כל התוכן של הקובץ למערך-עמודה .A )A = fread(fID,sA ציון מספר הנתונים לקריאה. )]A = fread(fID,[m,n ציון ממדי המערך ( Aכמו בפקודת .)fscanf ציון סוג הנתונים. )A = fread(fID,[m,n],dType עמ' 9מתוך 9 שיעור 5 אפריל 15
© Copyright 2024