[Ç̲ÑÒ]      [Äàë³]       [Íàçàä]      [Ïî÷àòîê ðîçä³ëó]

 

7.8. Ôàéëè

 

      Ñëîâî ôàéë â ïåðåêëàä³ ç àíãë³éñüêî¿ îçíà÷ຠïàïêà. Öå ñëîâî âèêîðèñòîâóþòü äëÿ ïîçíà÷åííÿ äàíèõ, ÿê ïðàâèëî, çíà÷íèõ îá'ºì³â, ùî çáåð³ãàþòüñÿ íà ïðèñòðîÿõ çîâí³øíüî¿ ïàì'ÿò³: ãíó÷êèõ ³ æîðñòêèõ äèñêàõ, ìàãí³òíèõ ñòð³÷êàõ. Òàêà ñïåöèô³êà çàñòîñóâàííÿ ôàéë³â ïåâíèì ÷èíîì â³äáèâàºòüñÿ ó ìàòåìàòè÷íèõ âëàñòèâîñòÿõ ôàéëîâîãî âèêîíàâöÿ, ÿêèé êîðèñíî ïîð³âíÿòè ç ðÿäêîâèì âèêîíàâöåì W (äèâ. ï.5.8).

      Íåõàé À - ìíîæèíà. Ìíîæèíà AC âñ³õ ïîñë³äîâíîñòåé åëåìåíò³â ç À âèçíà÷àºòüñÿ ³íäóêòèâíî:

·         ïîðîæíÿ ïîñë³äîâí³ñòü L íàëåæèòü AC;

·         ÿêùî à Î À, X Î AC, òîä³ Xa Î AC - öå ïîñë³äîâí³ñòü, ùî îòðèìàíà ïðèïèñóâàííÿì à â ê³íåöü ïîñë³äîâíîñò³ X.

      ³äì³òèìî, ùî ChC=W - ìíîæèíà âñ³õ ñë³â â àëôàâ³ò³ Ch.

      Íà ìíîæèí³ âñ³õ ïîñë³äîâíîñòåé AC âèçíà÷åí³ ò³ æ îïåðàö³¿, ôóíêö³¿ òà â³äíîøåííÿ, ùî ³ íà ìíîæèíè W âñ³õ ñë³â.

      Ïåðåðàõóºìî ¿õ:

      1) ç'ºäíàííÿ

 

            _ + _: AC, AC -> AC;

 

      2) äîäàâàííÿ åëåìåíòà äî ïî÷àòêó ïîñë³äîâíîñò³

 

            add(_, _): A, AC -> AC;

 

      3) âèä³ëåííÿ ïåðøîãî åëåìåíòà ïîñë³äîâíîñò³

 

            hd(_): AC -> A;

 

      4) âèêðåñëþâàííÿ ïåðøîãî åëåìåíòà ïîñë³äîâíîñò³

 

            tl(_): AC -> AC;

 

      5) ïðèïèñóâàííÿ åëåìåíòà â ê³íåöü ïîñë³äîâíîñò³

 

            app(_, _): AC, A -> AC;

 

      6) âèä³ëåííÿ îñòàííüîãî åëåìåíòà ïîñë³äîâíîñò³

 

            lst(_): AC -> A;

 

      7) âèêðåñëþâàííÿ îñòàííüîãî åëåìåíòà ïîñë³äîâíîñò³

 

            bgn(_): AC -> AC;

 

      8) äîâæèíà ïîñë³äîâíîñò³

 

      len(_): AC -> íàò;

 

      9) ð³âí³ñòü ïîñë³äîâíîñòåé

 

            _ = _: AC, AC -> áóë;

 

      Ïåðåéäåìî òåïåð â³ä ïîñë³äîâíîñòåé äî ôàéë³â.

 

7.8.1 Ïîñë³äîâí³ ôàéëè

 

      Íåõàé t - öå òèï; Dt - éîãî îáëàñòü; ^ - ìàðêåð, ùî íå íàëåæèòü Dt. Ïîñë³äîâíèì ôàéëîì, ùî ñêëàäàºòüñÿ ³ç çàïèñ³â òèïó t, íàçèâàºòüñÿ òèï äàíèõ tf

 

                   ----------------------

                   ¦ òèï tf = ôàéë ³ç t; ¦

                   L---------------------

 

îáëàñòþ ÿêîãî ñëóæèòü ìíîæèíà Dtf, ùî ñêëàäàºòüñÿ ç òð³éîê (A,^,B): äâîõ ïîñë³äîâíîñòåé, ðîçä³ëåíèõ â òî÷íîñò³ îäíèì ìàðêåðîì

 

      Dtf = {(À,^,Â): À, Â Î DtC}.

 

      Òð³éêó (A,^,B) áóäåìî íàäàë³ ïîçíà÷àòè A^B. ßêùî ïðåäñòàâèòè, ùî ôàéë F=À^Â, òî À íàçèâàºòüñÿ éîãî ïî÷àòêîì (lt(F)),  - éîãî çàê³í÷åííÿì (rt(F)). Ïîñë³äîâí³ñòü À+ íàçâåìî âì³ñòîì ôàéëà (ct(F)). Ãðàô³÷íî öå ìîæíà çîáðàçèòè òàê

 

                   A                     B

          ----Ò---Ò-----Ò---- ^ ----Ò---Ò-----Ò----

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦. .. ¦ r ¦

          L---+---+-----+----   L---+---+-----+----

          ¦                 ¦   ¦                 ¦

          ¦<----- lt(F) --->¦   ¦<----- rt(F) --->¦

 

      Ôàéëîâèé âèêîíàâåöü File(t) çàáåçïå÷óº ïåðåâ³ðêó îäí³º¿ óìîâè òà âèêîíàííÿ íàñòóïíèõ ï’ÿòè ³íñòðóêö³é. Ïåðåðàõîâàí³ âèùå îïåðàö³¿ íàä ïîñë³äîâíîñòÿìè, à òàêîæ ïîçíà÷åííÿ lt, rt òà ct íå ðåàë³çîâàíî: âîíè íàì çíàäîáëÿòüñÿ äëÿ òîãî, ùîá ïîÿñíèòè çíà÷åííÿ íàâåäåíèõ íèæ÷å êîíñòðóêö³é. (Çðîçóì³ëî, í³ùî íå çàâàæຠïðè íåîáõ³äíîñò³ ðåàë³çóâàòè ¿õ ïðîãðàìíî).

      Íåõàé F - çì³ííà òèïó ôàéë ³ç t, õ - çì³ííà òèïó t.

 

      1. ³äíîøåííÿ:

      - ê³íåöü ôàéëà (End of File)

 

            eof(_): ôàéë ³ç t -> áóë

 

çàäàíî òîòîæí³ñòþ eof(F) = (rt(F)=L). Ãðàô³÷íî ³ñòèíí³ñòü óìîâè eof çîáðàçèìî òàê:

 

                    À

          ----Ò---Ò-----Ò---- ^

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L

          L---+---+-----+----

          ¦                 ¦

          ¦<----- lt(F) --->¦

 

      Î÷åâèäíî, ùî â öüîìó âèïàäêó ct(F)=lt(F)=À, rt(F)= L.

 

      2. ²íñòðóêö³¿ âèçíà÷èìî ñâî¿ìè ïåðåä- òà ï³ñëÿóìîâàìè:

 

      - ïî÷àòîê ðîáîòè ç ôàéëîì (ôàéë âæå ³ñíóº)

 

            { ct(F)=Â }

 

            â³äêðèòè (F)

 

            { lt(F)= L & rt(F)=ct(F)=Â };

 

 

                       B

           ^ ----Ò---Ò-----Ò----

       F L   ¦ à ¦ b ¦. .. ¦ r ¦

             L---+---+-----+----

             ¦                 ¦

             ¦<----- rt(F) --->¦

 

      - ñòâîðåííÿ ôàéëà

 

            { ²ñò }

 

            ñòâîðèòè (F)

 

            { lt(F)=rt(F)=ct(F)= L };

 

       F L ^ L

 

      - ÷èòàííÿ îäíîãî çàïèñó ³ç ôàéëà F â çì³ííó õ

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦. .. ¦ r ¦     ¦     ¦

          L---+---+-----+----   L---+---+-----+----     L------

          ¦                 ¦   ¦                 ¦

          ¦<----- lt(F) --->¦   ¦<----- rt(F) --->¦

 

 

            { lt(F)=À & rt(F)=Â & ct(F)=À+Â & Øeof(F) }

 

            ÷èòàòè (F, õ)

 

            { lt(F)=app(À,hd(Â)) & rt(F)=tl(Â) & ct(F)=À+Â };

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---- ^ ----Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦ ð ¦   ¦ q ¦. .. ¦ r ¦     ¦  ð  ¦

          L---+---+-----+---+----   L---+-----+----     L------

          ¦                     ¦   ¦             ¦

          ¦<------ lt(F) ------>¦   ¦<-- rt(F) -->¦

 

      - äîïèñóâàííÿ â ê³íåöü ôàéëà F çíà÷åííÿ çì³ííî¿ õ

 

                     À

          ----Ò---Ò-----Ò---- ^                         -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                       ¦  s  ¦

          L---+---+-----+----                           L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè (F, õ)

 

            { lt(F)=app(À,õ) & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---- ^                     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦   L                   ¦  s  ¦

          L---+---+-----+---+----                       L------

          ¦                     ¦

          ¦<------ lt(F) ------>¦

 

      - çàâåðøåííÿ ðîáîòè ç ôàéëîì

 

            { F = A^Â }

 

            çàêðèòè (F)

 

            { ct(F)=A+Â };

 

      Ðîáîòà ç ôàéëàìè â³äð³çíÿºòüñÿ â³ä ðîáîòè ç ³íøèìè òèïàìè äàíèõ. Òàê ìîæíà ñêàçàòè, ùî äî â³äêðèòòÿ àáî ñòâîðåííÿ ôàéëó à òàêîæ ï³ñëÿ éîãî çàêðèòòÿ ôàéë ÿê òàêèé íåäîñòóïíèé, â³í íå ì³ñòèòü ìàðêåð ³ ìîæíà êàçàòè ò³ëüêè ïðî ïîñë³äîâí³ñòü, ÿêà º âì³ñòîì ôàéëà, àëå íå ïðî ñàì ôàéë.

      Ðîçãëÿíåìî äåÿê³ òèïîâ³ çàäà÷³ îáðîáêè ôàéë³â.

      Ïðè îôîðìëåíí³ ï³äïðîãðàì äëÿ ðîáîòè ç ôàéëàìè íåîáõ³äíî ïàì’ÿòàòè, ùî âíàñë³äîê â³äñóòíîñò³ ïðèñâîºííÿ, ôàéëîâèé ïàðàìåòð ìîæå áóòè ò³ëüêè ïàðàìåòðîì-çì³ííîþ. ²íø³ ñïîñîáè ïåðåäà÷³ ôàéë³â - àðãóìåíòè, ðåçóëüòàòè, ìîäèô³êîâàí³ ïàðàìåòðè - íåäîñòóïí³.

 

      Ïðèêëàä 7.13. Ïî ìàñèâó À, ùî ì³ñòèòü êîåô³ö³ºíòè ìíîãî÷ëåíà

 

                  n      n-1

       Ð (õ) = à õ  + à õ    +. .. + à   õ + à,  à  <> 0,

        n       0      1              n-1     n   0

 

ïîáóäóâàòè ôàéë, ùî ì³ñòèòü ïîñë³äîâí³ñòü éîãî åëåìåíò³â.

 

    ïðîöåäóðà PF ( àðã À: ìàñèâ [0..N] ³ç ä³éñí;

                   çì³í F: ôàéë ³ç ä³éñí ) öå

       çì³í I: íàò;

    ïî÷

       ñòâîðèòè (F);

       äëÿ I<-0 äî N ïîâò

          ïèñàòè (F, À[I])

       êö

    êï.

 

      ×àñò³øå çà âñå ôàéë ñêëàäàºòüñÿ ç âåëè÷èí òèïó çàïèñ. Çâ³äñè, äî ðå÷³, ñòàâñÿ ñàì òåðì³í äëÿ ïîçíà÷åííÿ òèïó äàíèõ, ÿêèé ïðèðîäí³øå áóëî á íàçèâàòè äåêàðòîâèì äîáóòêîì òèï³â.

      Äëÿ ïðîñòîòè ïîçíà÷åíü îáìåæèìîñÿ çàïèñîì, ùî ì³ñòèòü äâà ïîëÿ

 

      òèï t = çàïèñ

                  Êëþ÷: t;                            (7.6)

                  s: q

              êç;

 

ïðè÷îìó t - ïðîñòèé òèï.

 

      Ïðèêëàä 7.14. Îá'ºäíàííÿ äâîõ ôàéë³â ct(Í) = ct(F)+ct(G).

 

    ïðîöåäóðà Union (çì³í F, G, Í: ôàéë ³ç t) öå

       çì³í X: t;

    ïî÷

       â³äêðèòè (F); â³äêðèòè (G); ñòâîðèòè (Í);

       ïîêè Øeof(F) ïîâò

          ÷èòàòè (F, X); ïèñàòè (Í, X)

       êö;

       ïîêè Øeof(G) ïîâò

          ÷èòàòè (G, X); ïèñàòè (Í, X)

       êö;

       çàêðèòè(F);çàêðèòè(G); çàêðèòè(H)

    êï.

 

      Ôàéë F íàçèâàºòüñÿ ïî÷àòêîì ôàéëà G, ÿêùî çíàéäåòüñÿ òàêà ïîñë³äîâí³ñòü À, ùî ct(F)+À = ct(G).

 

      Ïðèêëàä 7.15. Ïî÷àòîê ôàéëà.

 

    ïðîöåäóðà BeginF (çì³í Q: áóë; F, G: ôàéë ³ç t) öå

       çì³í X, Y: t;

    ïî÷

       â³äêðèòè (F); â³äêðèòè (G);

       Q <- ²ñò;

       ïîêè Øeof(F) & Q ïîâò

          Q <- Øeof(G);

          ÿêùî Q òî

             ÷èòàòè (F, X); ÷èòàòè (G, Y);

             Q <- X=Y

          êð

       êö;

       çàêðèòè(F);çàêðèòè(G)

    êï.

 

      Ïðèêëàä 7.16. Ïîøóê çàïèñó çà çíà÷åííÿì êëþ÷à.

 

    ïðîöåäóðà SearchF (àðã K: t;

                       çì³í F: ôàéë ³ç t;

                            Óñï³õ: áóë; Y: q) öå

       çì³í X: t;

    ïî÷

       â³äêðèòè (F); Óñï³õ <- Õèá;

       ïîêè Ø(eof(F) V Óñï³õ) ïîâò

          ÷èòàòè (F, X);

          Óñï³õ <- X.Êëþ÷=K;

       êö;

       ÿêùî Óñï³õ òî Y <- X.s êð;

       çàêðèòè(F)

    êï.

 

7.8.2 Ôàéëè ïðÿìîãî äîñòóïó

 

      Ó äåÿêèõ çàäà÷àõ îáðîáêè ôàéë³â äîö³ëüíî ìàòè ìîæëèâ³ñòü äîñòóïó äî äîâ³ëüíîãî çàïèñó ôàéëà òàê, ÿê öå çðîáëåíî ó ìàñèâàõ. Äëÿ ðîçâ’ÿçêó öèõ çàäà÷ âèêîðèñòîâóþòü ôàéëè ïðÿìîãî äîñòóïó.

      Íåõàé t - öå òèï; Dt - éîãî îáëàñòü; ^ - ìàðêåð, ùî íå íàëåæèòü Dt. Ôàéëîì ïðÿìîãî äîñòóïó, ùî ñêëàäàºòüñÿ ³ç çàïèñ³â òèïó t, íàçèâàºòüñÿ òèï äàíèõ td

 

                   ---------------------------

                   ¦ òèï td = ïðÿì ôàéë ³ç t; ¦

                   L--------------------------

 

Îáëàñòü ôàéëà ïðÿìîãî äîñòóïó âèçíà÷àºòüñÿ àíàëîã³÷íî îáëàñò³ ïîñë³äîâíèõ ôàéë³â.

 

      Dtd = {(À,^,Â): À, Â Î DtC}.

 

³äíîøåííÿ “eofòà ³íñòðóêö³¿ â³äêðèòè, ñòâîðèòè, ÷èòàòè, çàêðèòè çàëèøàþòüñÿ âèçíà÷åíèìè òà ìàþòü òîé æå çì³ñò, ùî é äëÿ ïîñë³äîâíèõ ôàéë³â.

      Äëÿ ³íñòðóêö³¿ çàïèñó ó ôàéë ðîçãëÿäàþòüñÿ 2 âèïàäêè:

 

a)ìàðêåð çíàõîäèòüñÿ â ê³íö³ ôàéëà (çàïèñ ó ôàéë àíàëîã³÷íèé çàïèñó ó ïîñë³äîâíèé ôàéë)

 

                     À

          ----Ò---Ò-----Ò---- ^                         -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                       ¦  s  ¦

          L---+---+-----+----                           L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè (F, õ)

 

            { lt(F)=app(À,õ) & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---- ^                     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦   L                   ¦  s  ¦

          L---+---+-----+---+----                       L------

          ¦                     ¦

          ¦<------ lt(F) ------>¦

 

b)ìàðêåð çíàõîäèòüñÿ âñåðåäèí³ ôàéëà

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦. .. ¦ r ¦     ¦  s  ¦

          L---+---+-----+----   L---+---+-----+----     L------

          ¦                 ¦   ¦                 ¦

          ¦<----- lt(F) --->¦   ¦<----- rt(F) --->¦

 

            { lt(F)=À & rt(F) = B & Øeof(F) }

 

            ïèñàòè (F, õ)

 

            { lt(F)=app(À,s) & rt(F)=tl(B) & Øeof(F) }

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---- ^ ----Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦ s ¦   ¦ q ¦. .. ¦ r ¦     ¦  s  ¦

          L---+---+-----+---+----   L---+-----+----     L------

          ¦                     ¦   ¦             ¦

          ¦<------ lt(F) ------>¦   ¦<-- rt(F) -->¦

 

      Äîäàòêîâî âèçíà÷åí³:

 

      1. Îïåðàö³¿:

      - äîâæèíà ôàéëà (ê³ëüê³ñòü çàïèñ³â ó ôàéë³)

 

            äîâæèíà(_): ïðÿì ôàéë ³ç t -> íàò

 

      - ïîçèö³ÿ ìàðêåðà ó ôàéë³ (íîìåð çàïèñó, ïåðåä ÿêèì ðîçòàøîâàíî ìàðêåð, ïî÷èíàþ÷è ç 0)

 

            ïîçèö³ÿ(_): ïðÿì ôàéë ³ç t -> íàò

 

 ïîçèö³ÿ    0   1   ...  i-1      i

          ----Ò---Ò-----Ò---- ^ ----Ò---Ò-----Ò----

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦. .. ¦ r ¦

          L---+---+-----+----   L---+---+-----+----

          ¦                 ¦   ¦                 ¦

          ¦<----- lt(F) --->¦   ¦<----- rt(F) --->¦

 

      2. ²íñòðóêö³¿:

      - âñòàíîâèòè ìàðêåð ó çàäàíó ïîçèö³þ

 

            0        A   i-1  i                      B

          ----Ò---Ò-----Ò---Ò---Ò-----Ò---Ò ^ ----Ò-----Ò----

       F  ¦ à ¦ b ¦. .. ¦ c ¦ d ¦. .. ¦ e ¦   ¦ q ¦. .. ¦ r ¦

          L---+---+-----+---+---+-----+----   L---+-----+----

          ¦                               ¦   ¦             ¦

          ¦<----------- lt(F) ----------->¦   ¦<-- rt(F) -->¦

 

            { lt(F)=À & rt(F) = B & ct(F) = A+B }

 

            âñòàíîâèòè (F, i)

 

            { len(lt(F))=i & ct(F) = A+B }

 

            0            i-1     i

          ----Ò---Ò-----Ò---Ò ^ ---Ò-----Ò---Ò----Ò-----Ò----

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ d ¦. .. ¦ e ¦ q ¦. .. ¦ r ¦

          L---+---+-----+----   L---+-----+---+---+-----+----

          ¦                 ¦   ¦                           ¦

          ¦<---- lt(F) ---->¦   ¦<--------- rt(F) --------->¦

 

²íñòðóêö³ÿ âñòàíîâèòè (F, i) äຠâ³äìîâó ïðè i>äîâæèíà(F).

 

      Ïðèêëàä 7.17. Çàì³íèòè âñ³ çàïèñè ôàéëà ³ç çíà÷åííÿì êëþ÷à K çàäàíèì çàïèñîì Y (òèï çàïèñ³â ôàéëà t îïèñàíî ó (7.6)).

 

    ïðîöåäóðà ReplaceF (àðã K: t; Y: q;

                        çì³í F: ïðÿì ôàéë ³ç t) öå

       çì³í X: t; I: íàò;

    ïî÷

       â³äêðèòè (F);

       äëÿ I <- 0 äî äîâæèíà(F)-1 ïîâò

          ÷èòàòè (F,X);

          ÿêùî X.Êëþ÷=K òî

            âñòàíîâèòè(F,I); ïèñàòè(F,Y)

          êð

       êö;

       çàêðèòè(F)

    êï.

 

      Õî÷à ôàéëè ïðÿìîãî äîñòóïó íàäàþòü ìîæëèâ³ñòü ïåðåõîäó äî äîâ³ëüíîãî çàïèñó ôàéëà, êîðèñòóâàòèñÿ ö³ºþ ìîæëèâ³ñòþ ñë³ä îáåðåæíî, òîìó ùî âàðò³ñòü ³íñòðóêö³¿ âñòàíîâèòè” º âèñîêîþ.

 

 

7.8.3 Òåêñòîâ³ ôàéëè

 

      Òåêñòîâ³ ôàéëè º ÷àñòêîâèì âèïàäêîì ïîñë³äîâíèõ ôàéë³â. ¯õ âèä³ëÿþòü ó îêðåìèé òèï ÷åðåç âåëèêó ê³ëüê³ñòü çàäà÷, ÿê³ ïîâ’ÿçàí³ ç îáðîáêîþ òåêñò³â. Òåêñòîâèé ôàéë ñêëàäàºòüñÿ ç ñèìâîë³â, ÿê³ ïîä³ëÿþòüñÿ (óìîâíî) íà ðÿäêè çì³ííî¿ äîâæèíè çà äîïîìîãîþ ñïåö³àëüíîãî ñèìâîëà çàâåðøåííÿ ðÿäêà. Öåé ñèìâîë ìè áóäåìî ïîçíà÷àòè ‘#’. Îòæå, îáëàñòþ òåêñòîâèõ ôàéë³â º

 

      Dtxt = {(À,^,Â): À, Â Î ChC}.

 

Îïèñ çì³ííèõ äëÿ òåêñòîâèõ ôàéë³â âèãëÿäຠòàê:

 

      çì³í F: òåêñò;

 

³äíîøåííÿ “eofòà ³íñòðóêö³¿ â³äêðèòè, ñòâîðèòè, çàêðèòè çàëèøàþòüñÿ âèçíà÷åíèìè òà ìàþòü òîé æå çì³ñò, ùî é äëÿ ïîñë³äîâíèõ ôàéë³â.

      Äîäàòêîâî äëÿ òåêñòîâèõ ôàéë³â âèçíà÷åíî:

 

      1. ³äíîøåííÿ:

      - ê³íåöü ðÿäêà

 

            eoln(_): ôàéë ³ç t -> áóë

 

çàäàíî òîòîæí³ñòþ eoln(F) = (hd(rt(F))=’#’). Ãðàô³÷íî ³ñòèíí³ñòü óìîâè eoln çîáðàçèìî òàê:

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---Ò-----Ò----

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ # ¦ q ¦. .. ¦ r ¦

          L---+---+-----+----   L---+---+-----+----

          ¦                 ¦   ¦                 ¦

          ¦<----- lt(F) --->¦   ¦<----- rt(F) --->¦

 

      2. ²íñòðóêö³¿:

      - ÷èòàòè ç òåêñòîâîãî ôàéëà ÷èòàòè(F,x), äå x ñèìâîë àáî ðÿäîê.

 

      a)x - ñèìâîë

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---T---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦ # ¦. .. ¦ r ¦     ¦     ¦

          L---+---+-----+----   L---+---+---+-----+----     L------

          ¦                 ¦   ¦                     ¦

          ¦<----- lt(F) --->¦   ¦<------- rt(F) ----->¦

 

            { lt(F)=À & rt(F) = B & Øeof(F) }

 

            ÷èòàòè (F, õ)

 

            { lt(F)=app(À,hd(B)) & rt(F)=tl(B) & x=hd(B) }

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---- ^ ----T---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦ p ¦   ¦ q ¦ # ¦. .. ¦ r ¦     ¦  p  ¦

          L---+---+-----+---+----   L---+---+-----+----     L------

          ¦                     ¦   ¦                 ¦

          ¦<------ lt(F) ------>¦   ¦<---- rt(F) ---->¦

 

      b)x - ðÿäîê

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---T---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦ # ¦. .. ¦ r ¦     ¦     ¦

          L---+---+-----+----   L---+---+---+-----+----     L------

          ¦                 ¦   ¦                     ¦

          ¦<----- lt(F) --->¦   ¦<------- rt(F) ----->¦

 

            { lt(F)=À & rt(F) = B & Øeof(F) & B = C+’#’+D }

 

            ÷èòàòè (F, õ)

 

            { lt(F)=À+C & rt(F)=’#’+D & x=C }

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---T---- ^ ----Ò-----Ò----     -- õ ---

       F  ¦ à ¦ b ¦. .. ¦ c ¦ p ¦ q ¦   ¦ # ¦. .. ¦ r ¦     ¦  pq  ¦

          L---+---+-----+---+---+   -   L---+-----+----     L-------

          ¦                         ¦   ¦             ¦

          ¦<-------- lt(F) -------->¦   ¦<-- rt(F) -->¦

 

      - ÷èòàòè äî ê³íöÿ ðÿäêà ÷èòàòè#(F,x), äå x ñèìâîë àáî ðÿäîê.

 

      a)xñèìâîë; ÷èòàºòüñÿ ïîòî÷íèé ñèìâîë ï³ñëÿ ìàðêåðà, ìàðêåð âñòàíîâëþºòüñÿ íà ïî÷àòîê íîâîãî ðÿäêà ôàéëà.

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---T---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦ # ¦. .. ¦ r ¦     ¦     ¦

          L---+---+-----+----   L---+---+---+-----+----     L------

          ¦                 ¦   ¦                     ¦

          ¦<----- lt(F) --->¦   ¦<------- rt(F) ----->¦

 

            { lt(F)=À & rt(F) = B & Øeof(F) & B = C+’#’+D }

 

            ÷èòàòè# (F, õ)

 

            { lt(F)=À+C+’#’ & rt(F)=D & x=hd(B) }

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---T---T---Ò ^ ------Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦ p ¦ q ¦ # ¦   ¦. .. ¦ r ¦     ¦  p  ¦

          L---+---+-----+---+---+---+----   L-----+----     L------

          ¦                             ¦   ¦         ¦

          ¦<---------- lt(F) ---------->¦   ¦< rt(F) >¦

 

      b)x – ðÿäîê; ÷èòàþòüñÿ âñ³ ñèìâîëè ï³ñëÿ ìàðêåðà äî ê³íöÿ ðÿäêà, ìàðêåð âñòàíîâëþºòüñÿ íà ïî÷àòîê íîâîãî ðÿäêà.

 

                    A                      B

          ----Ò---Ò-----Ò---- ^ ----Ò---T---Ò-----Ò----     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ c ¦   ¦ ð ¦ q ¦ # ¦. .. ¦ r ¦     ¦     ¦

          L---+---+-----+----   L---+---+---+-----+----     L------

          ¦                 ¦   ¦                     ¦

          ¦<----- lt(F) --->¦   ¦<------- rt(F) ----->¦

 

            { lt(F)=À & rt(F) = B & Øeof(F) & B = C+’#’+D }

 

            ÷èòàòè# (F, õ)

 

            { lt(F)=À+C+’#’ & rt(F)=D & x=C }

 

                   A                       B

          ----Ò---Ò-----Ò---Ò---T---- ^ ----Ò-----Ò----     -- õ ---

       F  ¦ à ¦ b ¦. .. ¦ c ¦ p ¦ q ¦   ¦ # ¦. .. ¦ r ¦     ¦  pq  ¦

          L---+---+-----+---+---+   -   L---+-----+----     L-------

          ¦                         ¦   ¦             ¦

          ¦<-------- lt(F) -------->¦   ¦<-- rt(F) -->¦

 

      - ïèñàòè ó òåêñòîâèé ôàéë ïèñàòè(F,x), äå x ñèìâîë àáî ðÿäîê.

 

      a)x - ñèìâîë

 

                     À

          ----Ò---Ò-----Ò---- ^                         -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                       ¦  s  ¦

          L---+---+-----+----                           L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè (F, õ)

 

            { lt(F)=app(À,õ) & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---- ^                     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦   L                   ¦  s  ¦

          L---+---+-----+---+----                       L------

          ¦                     ¦

          ¦<------ lt(F) ------>¦

 

      b)x - ðÿäîê

 

                     À

          ----Ò---Ò-----Ò---- ^                         -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                       ¦  st ¦

          L---+---+-----+----                           L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè (F, õ)

 

            { lt(F)=À+õ & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---T---- ^                 -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦ t ¦   L               ¦  st ¦

          L---+---+-----+---+---+----                   L------

          ¦                         ¦

          ¦<-------- lt(F) -------->¦

 

      - ïèñàòè äî ê³íöÿ ðÿäêà ïèñàòè#(F,x), äå x ñèìâîë àáî ðÿäîê.

 

      a)x - ñèìâîë

 

                     À

          ----Ò---Ò-----Ò---- ^                     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                   ¦  s  ¦

          L---+---+-----+----                       L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè# (F, õ)

 

            { lt(F)=app(app(À,õ),’#’) & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---T---- ^             -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦ # ¦   L           ¦  s  ¦

          L---+---+-----+---+---+----               L------

          ¦                         ¦

          ¦<-------- lt(F) -------->¦

 

      b)x - ðÿäîê

 

                     À

          ----Ò---Ò-----Ò---- ^                     -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦   L                   ¦  st ¦

          L---+---+-----+----                       L------

          ¦                 ¦

          ¦<---- lt(F) ---->¦

 

            { lt(F)=À & eof(F) }

 

            ïèñàòè# (F, õ)

 

            { lt(F)=À+õ+’#’ & eof(F) }

 

                   À

          ----Ò---Ò-----Ò---Ò---T---- ^             -- õ --

       F  ¦ à ¦ b ¦. .. ¦ r ¦ s ¦ t ¦   L           ¦  st ¦

          L---+---+-----+---+---+----               L------

          ¦                         ¦

          ¦<-------- lt(F) -------->¦

 

²íñòðóêö³þ ÷èòàííÿ àáî çàïèñó äî ê³íöÿ ðÿäêà ìîæíà òàêîæ âèêîðèñòîâóâàòè ç îäíèì ïàðàìåòðîì – ôàéëîì, íàïðèêëàä, ÷èòàòè#(F) àáî ïèñàòè#(F).  öüîìó âèïàäêó âèêîíàâåöü ïðîïóñêຠâñ³ ñèìâîëè ôàéëà, âêëþ÷àþ÷è ê³íåöü ðÿäêà, ïðè ÷èòàíí³, òà çàïèñóº ó ôàéë ñèìâîë ê³íöÿ ðàäêà ïðè çàïèñ³.

 

      Ïðèêëàä 7.18. Çàì³íèòè âñ³ âõîäæåííÿ ó òåêñòîâèé ôàéë ñèìâîëà c ðÿäêîì A.

 

    ïðîöåäóðà ReplaceText (àðã c: ñèìâ; A: ðÿäîê;

                           çì³í F,G: òåêñò) öå

       ôóíêö³ÿ Replace(S, A: ðÿäîê c: ñèìâ): ðÿäîê öå

            çì³í S1: ðÿäîê;

       ïî÷

           S1 <- ‘’

           ïîêè S <> ‘’ ïîâò

              ÿêùî hd(S) = c òî S1 <- S1+A

              ³íàêøå S1 <- app(S1,hd(S)) êð;

              S <- tl(S)

           êö;

           Replace <- S1

       êô;

       çì³í S, S1: ðÿäîê;

    ïî÷

       â³äêðèòè (F); ñòâîðèòè(G);

       ïîêè Øeof(F) ïîâò

          ÷èòàòè#(F,S);

          S1 <- Replace(S,A,c);

          ïèñàòè#(G,S1)

       êö;

       çàêðèòè(F); çàêðèòè(G)

    êï.

 

[Ç̲ÑÒ]      [Äàë³]       [Íàçàä]      [Ïî÷àòîê ðîçä³ëó]