[Ç̲ÑÒ] [Äàë³] [Íàçàä] [Ïî÷àòîê ðîçä³ëó]
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 -> áóë;
Ïåðåéäåìî òåïåð â³ä ïîñë³äîâíîñòåé äî ôàéë³â.
Íåõàé
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)
êï.
Ó
äåÿêèõ çàäà÷àõ îáðîáêè ôàéë³â äîö³ëüíî ìàòè ìîæëèâ³ñòü äîñòóïó äî äîâ³ëüíîãî
çàïèñó ôàéëà òàê, ÿê öå çðîáëåíî ó ìàñèâàõ. Äëÿ ðîçâ’ÿçêó öèõ çàäà÷
âèêîðèñòîâóþòü ôàéëè ïðÿìîãî äîñòóïó.
Íåõàé
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)
êï.
Õî÷à ôàéëè ïðÿìîãî äîñòóïó íàäàþòü ìîæëèâ³ñòü ïåðåõîäó äî äîâ³ëüíîãî çàïèñó ôàéëà, êîðèñòóâàòèñÿ ö³ºþ ìîæëèâ³ñòþ ñë³ä îáåðåæíî, òîìó ùî âàðò³ñòü ³íñòðóêö³¿ “âñòàíîâèòè” º âèñîêîþ.
Òåêñòîâ³ ôàéëè º ÷àñòêîâèì âèïàäêîì ïîñë³äîâíèõ ôàéë³â. ¯õ âèä³ëÿþòü ó îêðåìèé òèï ÷åðåç âåëèêó ê³ëüê³ñòü çàäà÷, ÿê³ ïîâ’ÿçàí³ ç îáðîáêîþ òåêñò³â. Òåêñòîâèé ôàéë ñêëàäàºòüñÿ ç ñèìâîë³â, ÿê³ ïîä³ëÿþòüñÿ (óìîâíî) íà ðÿäêè çì³ííî¿ äîâæèíè çà äîïîìîãîþ ñïåö³àëüíîãî ñèìâîëà çàâåðøåííÿ ðÿäêà. Öåé ñèìâîë ìè áóäåìî ïîçíà÷àòè ‘#’. Îòæå, îáëàñòþ òåêñòîâèõ ôàéë³â º
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)
êï.