» נושאי לימוד
» נושאי לימוד
יום ראשון 22 בדצמבר 2024
פעולות עם קבצים
דף ראשי  פרק 4: נושאים מתקדמים בפסקל  קבצים  פעולות עם קבצים גרסה להדפסה

פעולות עם קבצים

 

 

דוגמא:

בקובץ F.TXT  רשומים תווים.כתוב תת תוכנית הקוראת את 100 התווים הראשונים ורושמת לקובץ N.TXT רק את התווים שהם ספרות בלבד.

 

פיתרון:

 

program  FILE_IN_OUT;

var

   F_IN,F_OUT:file of char;

                  (*קובץ פלט וקובץ קלט*)

   I:integer; (*משתנה הלולאה*)

   CH:char; (*התו שקוראים מקובץ הקלט*)

      ·                          

      ·        קטע הבא לפני תת תוכנית זו

      ·       

procedure  READ_WRITE_TO_FILE;

{תת תוכנית לקריאת תווים ולרישום בקובץ אחר רק את התווים שהם ספרות}

begin

   {קשר את שמות הקבצים בתוכנית לקבצים על הדיסק}

   assign(F_IN,'F.TXT');

   assign(F_OUT,'N.TXT');

   {הכנה לקריאה של קובץ הקלט והכנה לכתיבה של קובץ הפלט}

   reset(F_IN);

   rewrite(F_OUT);

   for  I:=1  to 100  do

   {הלולאה}

   begin

      read(F_IN,CH);

      if ( (CH>=0) and (CH<=9)) then

          write (F_OUT,CH);

   end;

   {סגירת הקבצים}

   close(F_IN);close(F_OUT);

end;

    ·                          

    ·        קטע הבא לפני תת תוכנית זו

    ·       

 

 

בהוראה reset,rewrite ו- close ניתן לרשום קובץ אחד בלבד!!!

 

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

 

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

 

var

      FILE_NAME:text;

 

בקובץ מסוג text ניתן לרשום סוגי משתנים שונים.

 

דוגמא:

נתון קובץ מוצפן.הקובץ מכיל סדרה של תו ומספר באופן הבא:

 

מספר

תו

מספר

תו

מספר

תו

                                  תחילת קובץ

 

ע"מ לפענח את הקובץ ,יש להפוך את התו למספר לפי קוד ASCII ולהוסיף לו את המספר שבא אחרי התוו ולהפכו לתו שוב.

 

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

 

פיתרון:

 

program  CODE_FILE;

var

     FILE_IN,FILE_OUT:text; (*הקובץ המוצפן והקובץ המפוענח*)

     I:integer; (*משתנה הלולאה*)

     CH:char; (*התו בקובץ המוצפן והמפוענח*)

     NUM:integer; (*המספר המצפין בקובץ המוצפן*)

 

procedure INIT;

{תת תוכנית לפעולות התחלתיות}

begin

      assign(FILE_IN,'F1');

      assign(FILE_OUT,'F2');

      reset(FILE_IN);

      rewrite(FILE_OUT);

end;

 

procedure  READ_FROM_FILE;

    {תת תוכנית לקריאת התו המוצפן והמספר מהקובץ המוצפן}

begin

 (*לקובץ text המאחסן מספר סוגי נתונים נרשום readln*)      

    readln(FILE_IN,CH);  

    readln(FILE_IN,NUM);

end;

 

procedure  UNCODE_CHAR;

     {תת תוכנית לפענוח התו המוצפן}

begin

       CH:=chr(ord(CH)+NUM);

end;

 

procedure  WRITE_TO_FILE;

     {תת תוכנית לרשום התו המפוענח בקובץ הפלט }

begin

    (*לקובץ text המאחסן מספר סוגי נתונים נרשום writeln*)     

    writeln(FILE_OUT,CH);

end;

procedure  PRINT_CHARACTERS;

     {הדפסת התווים על המסך מהקובץ המפוענח}

begin

       readln(FILE_OUT,CH);

       write(CH);  (*הדפסה למסך*)

end;

 

(**********התוכנית הראשית********)

 

begin

       INIT;

       for I:=1  to 1500  do

       begin

           READ_FROM_FILE; (*קרא תו ומספר מצפין*)

           UNCODE_CHAR;  (*פענח*)

           WRITE_TO_FILE;  (*כתוב תו מפוענח לקובץ חדש*)

       end;

       (*כעת יש לסגור את הקבצים ולפתוח לשימוש חוזר*)

       close(FILE_IN);

       close(FILE_OUT);

       reset(FILE_OUT);

       for  I:=1  to 1500  do 

           PRINT_CHARACTERS;

       close(FILE_OUT);

end.

 

  להורדת הדוגמא לחץ כאן

 

בקובץ מסוג text רצוי להשתמש ב- readln  ו- writeln.

 

בגלל מבנה הקבצים,בקבצים השומרים סוג משתנה אחד בלבד

(כמו integer ,char ,Boolean ,read)   נשתמש ב – read ו- write ואילו בקובץ text ,המאחסן סוגים שונים של משתנים,נשתמש ב-readln  ו-writeln (למרות שאפשר אחרת).

 

לעיתים קרובות איננו יודעים כמה נתונים רשומים בקובץ.עלינו לברר בעצמנו מתי מסתיים הקובץ ולסיים את הקריאה מקובץ זה.

לצורך הטיפול בסוגיה זו, הפסקל מאפשר לנו את השימוש בפונקציה

(eof (end of file.

לאחר ביצוע הפונקציה הזו, נקבל את הערך true אם הקובץ הסתיים או false אם לא הסתיים.

 

לדוגמא:

 

;(if  eof (FILE_IN) then close(FILE_IN

 

כלומר,אם נקרא התו המסמן את סוף הקובץ והתנאי הוא אמת,בצע סגירת הקובץ בשם FILE_INאחרת המשך להוראה הבאה.

 13-03-04 / 19:41  עודכן ,  03-09-03 / 16:00  נוצר ע"י ליזי פרגו'ן  בתאריך 
 קבצים - הקודםהבא - פעולות עם קבצים-המשך 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 13