Программалау тілдері оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011


{$ I+} {қателерді бақылауды іске қосу} If IOResult 0then WriteLn(‘Файл жоқ’); else WriteLn(‘Файл бар’); ...  2. ReWrite(Var f)



Pdf көрінісі
бет20/24
Дата28.01.2017
өлшемі1,6 Mb.
#2918
түріПрограмма
1   ...   16   17   18   19   20   21   22   23   24

268
{$ I+} {қателерді бақылауды іске қосу}
If IOResult <>0then WriteLn(‘Файл жоқ’);
else WriteLn(‘Файл бар’); ... 
2. ReWrite(Var f) процедурасы f файлдық айнымалысымен 
анықталған файлды оған мəлі 
мет жазу үшін ашады. 
Бұрын бар файлды ашу көрсетілсе, ондағы мəлімет 
өшіріледі жəне ол туралы мəлімет берілмейді. Ал бұрын 
болмаған жаңа файлды ашу көрсетілсе, ол жаңадан пайда 
болып, мəлімет жазуға дайын болады (физикалық түрде 
буфер тазаланады). Мұнда логикалық құрылғы мəлімет 
қабылдауға дайындалады. 
3. AppEnd(Var f:text) процедурасы f файлдық айны 
ма-
лысымен анықталған мəтіндік файлды оған сөз тіркестерін 
қосып жазу үшін ашады. Мұнда файл көрсеткіші файл дағы 
мə ліметтер соңына орналасады да, енгізілетін мəліметтер 
бұрын ғы лар дың соңғына жазылады. 
Кез келген программада файлдық айнымалыны жарияламай-
ақ стандартты екі файлды пайдалануға болады, олардың файлдық 
айнымалылары:
• 
INPUT - стандартты енгізу құрылғысынан мəлімет оқу; 
• 
OUTPUT - стандартты шығару құрылғысына мəлімет жазу. 
Бұлар қарапайым енгізу-шығару операцияларында қолда-
нылатын мəтіндік файлдар. Енгізу-шығару операторларында 
бұ лар əдетте көрсетілмейді, ал қалған файлдар 
ды б 
елгілі бір 
файлдық айнымалылармен немесе логикалық құрылғылармен 
бай  ланыстырып алып барып қолдану керек. 
MS DOS жүйесінде стандартты енгізу құрылғысы – пернетақта, 
ал стандартты шыға ру құрылғысы – дисплей экраны.
Ескерту. Керек болған жағдайда бұларды операциялық жүйе 
мүмкіндіктері арқылы басқаша етіп қайта тағайындауға бола-
ды. Мұндайда, пернетақтадан мəлімет енгізу орнына – MS DOS 
командалық жолында программа атынан соң «<» символын жə-
не файл атын, ал экран орнына файлға мəлімет шығару керек 
болғанда, –«>» символы мен файл атын көрсету қажет. Бұлар- 
дың тек мəлімет енгізуін немесе тек мəлімет шығаруын ғана 
көрсетуге немесе екеуін де қатарластыра қолдана беруге 
болады. 

269
Мысалы:
A:\>example.exe a.res – a.dat файлынан мəлімет енгізу, 
ал a.rez файлына мəлімет шығару.
Мұндай қайта тағайындаулар енгізу-шығару операцияларын 
тікелей құрылғылар арқы 
лы атқаратын Crt модулін пайдалан-
баған кезде ғана орындалады.
Файл компоненттерін өңдеу кезінде орындалатын негізгі 
операциялар – жазу жəне оқу операциялары. Осылардың негізінде 
бұлардан күрделірек мынадай əрекеттер атқары лады:
• 
файл құру (жаңадан ашу) – файлға керекті жазбалар енгізу; 
• 
файлды толықтыру (модификациялау) – барлық жазбалар-
ды немесе олардың бірнешеуін өзгерту, жазбаларды өшіру 
жəне қосу; 
• 
файлдағы керекті мəліметті іздеу. 
Осы операцияларды орындау əрбір типтегі файлдар үшін əр 
түрлі болып атқарылады. 
Файлды жабу (оны оқу əрі жазу кезінде де) мынадай проце-
дура арқылы орындалады
Close(Var f); 
Мұнда жаңадан құрылған файл каталогта тіркеледі. Дискімен 
мəлімет алмасу буфер арқылы орындалатындықтан, файлға жа-
зылатын мəліметтің бір бөлігі буферде қалып кетуі мүмкін, 
сондықтан файлды жабу кезінде олар да файлға жазылып қо-
йылады. Файл жабылғанмен, файлдық айнымалының сол файл-
мен байланысы жоғалмайды, сол файлды қайта пайдалану керек 
болғанда, Assign процедурасын тағы да жазу қажет емес.
9.3 Типтелген файлдарды өңдеу ерекшеліктері
Белгілі бір типтегі файл (типтелген файл) ұзындықтары бірдей 
жəне ішкі форматтары да біркелкі жазбалар жиынынан тұрады. 
Жазбалар бірінен соң бірі тізбектеле орналасады. Файлдың 
бірінші секторының алғашқы 4 байты жазбалардың саны мен 
ұзындықтары жайлы мəлімет сақтайды. Осындай құрылымды 
файлдардағы мəліметтерді тізбекті түрде біртіндеп жəне таңдай 
отырып, кез келген жерінен (тікелей қатынасу арқылы) алуға бо-
лады.

270
Тізбекті қатынасу кезінде жазбалар бірінен соң бірі оқылады, 
яғни I+1-жазбаны оқу/жазу тек I-компоненттен кейін ғана орын-
далады.
Тікелей қатынасу кезінде жазбалар нөлден бастап нөмірленіп 
орналасқаны есепке алынып, керектілері нөмірлері бойынша тау-
ып алынады. Жазбалар нөміріне сəйкес файл көрсеткіші орнын 
көрсете отырып, керекті мəліметті бірден SEEK процедурасы 
арқылы тауып алуға болады. Жалпы файлды пайдалану кезінде 
мынадай сипаттамалар қолданылады:
TYPE <тип идентификаторы> = FILE OF <компо-
нент типі
>;
         Мысалы, 
1) TYPE T = FILE OF REAL;
   VAR F: T;
2) VAR F: FILE OF REAL;
3) TYPE ST = RECORD
               A: STRING[10];
   B: INTEGER;
     C: REAL;
     D: BYTE
   END;
   VAR DAN: FILE OF ST;
Бірінші нұсқада файл типі типтерді сипаттау бөлімінде көр-
сетіліп, айнымалыларды сипаттау бөлімінде сол типті пайдала-
нуға болады. Екінші нұсқада тип алдын ала сипатталмаған. 
Үшінші нұсқада алдын ала файл жазбалары типі сипатталады, 
ал айнымалыларды сипаттау бөлімінде сол тип жеке жазба типін 
көрсету үшін қолданылады. 
Типтелген файлдарды жазу/оқу процедуралары мен функ-
циялары: READWRITEASSIGN, RESET, REWRITE, SEEK, 
CLOSE, FILEPOS, FILESIZE, EOFTRUNCATE процедурасы 
файл көрсеткіші тұрған позициядан бастап файлды қысқартып 
тастайды. 
Мəліметтері пернелерден енгізілетін жазбалардан тұратын 
файл жасау керек болсын делік. Файл құрылған соң, оның ішкі 
мəліметтері экранға шығарылуы тиіс.
Файл жазбалары құрылымы:

271
• 
фамилиясы;
• 
табельдік нөмірі;
• 
айлығы.
TYPE TZ=RECORD
  FIO:STRING[10];
  TN:INTEGER;
  ZP:REAL
END;
VAR  ZAP:TZ;
     FOUT:FILE OF TZ;
     FL:BOOLEAN;
     NAME:STRING;
BEGIN
     REPEAT
      WRITELN('ФАЙЛ АТЫ ');
  READLN(NAME);
  ASSIGN (FOUT,NAME);
 {$I-} RESET(FOUT); {$I+}
  IF IORESULT=0 THEN
    BEGIN
   WRITELN(NAME,' ФАЙЛЫ', ' АШЫЛҒАН');
   CLOSE(FOUT);
   FL:=FALSE
    END
             ELSE
    BEGIN
        REWRITE(FOUT);
   FL:=TRUE
    END
     UNTIL FL;
     WITH ZAP DO
     REPEAT
  WRITELN(' FIO,TN,ZP ЕНГІЗУ ');
  READLN(INPUT,FIO,TN,ZP);
  WRITE(FOUT,ZAP);
     UNTIL EOF(INPUT);
     CLOSE(FOUT);

272
     RESET(FOUT);
     WITH ZAP DO
          REPEAT
   READ(FOUT,ZAP);
             WRITELN(FIO:15,TN:9,ZP:8:2);
          UNTIL EOF(FOUT);
          CLOSE(FOUT)
         END.
Программа басында бұрын болмаған файл аты кездескен-
ше файл аттары енгізіледі, əйтпесе бұрынғы болған файл мə-
ліметтерімен толық өшіріліп кетеді. Жаңа файл аты енгізілген 
соң,  FL жалаушасы мəні TRUE болады да, файл атын енгізу 
тоқталады. Бұдан кейін мəліметтерді тікелей пернелерден енгізу 
INPUT файлы арқылы орындалады. Енгізуді аяқтау белгісі – 
Ctrl+Z.  INPUT  стандартты файл атын пернелерден енгізерде, 
READLN файлдан мəлімет оқу операторында жəне енгізу соңын 
тексеретін EOF функциясында да көрсетпеуге болады. Файл ашы-
лып, мəліметтер енгізіліп болған соң ол CLOSE процедурасымен 
жабылады. Содан кейін құрылған файл мəлімет оқу үшін ашыла-
ды да,  оның мəліметтері кесте түрінде экранға шығарылады.
Файл соңына кейіннен қосымша мəліметтер енгізіле алады. Ол 
үшін файл көрсеткішін орналастыру процедурасы қолданылады:
  SEEK(<файл аты>, FILESIZE(<файл аты>)).
Келесі программада алдыңғы құрылған файл жазбалары-
мен тікелей қатынасу арқылы табельдік нөмірлері пернелерден 
енгізілетін жұмысшылардың жалақыларының қосындысын табу 
керек (файл құрылған кезде пайдаланылған табельдік нөмірлер 
101-999 сандары аралығында болып саналады, сол себепті 101 
нөмірлі жазба файлда алғашқы орында тұрады, келесісі – 102, 
т.с.с.).  
TYPE TZ=RECORD
FIO:STRING[10];
TN:INTEGER;
ZP:REAL
     END;
VAR  ZAP:TZ;
     FOUT:FILE OF TZ;

273
     TN1,TN2,N:INTEGER;
     S:REAL;
     NAME:STRING;
BEGIN
    WRITELN('ФАЙЛ АТЫ ');
    READLN(NAME);
          ASSIGN (FOUT,NAME);
          RESET(FOUT);
           S:=0;
   REPEAT
     READLN(TN2);
  TN1:=TN2-101; {жазбалар көрсеткішін құру}
SEEK(FOUT,TN1);
READ(FOUT,ZAP);
S:=S+ZAP.ZP;
            UNTIL EOF;
            WRITELN(‘S= ‘,S);
            CLOSE(FOUT)
         END.
Бұл программадағы мəліметтер өңдеу процесі табельдік нө-
мірлерді енгізу тоқтал ған да, яғни пернелерден Ctrl+Z енгі зілгенде 
аяқталады.
Типтелген файл – бұл файлдық айнымалыны жариялау 
кезінде берілген барлық компоненттері бір типте болатын файл. 
Файл компоненттері дискіде ішкі екілік форматта сақталады. 
Егер осындай файл мəліметтерін кез келген мəтіндік редактор-
мен қарайтын болсақ, тек символдық мəліметтер көрінеді де, 
файлдағы сандар орнына бос орын таңбалары немесе псевдогра-
фика символдары тұрады.
Сонымен, типтелген файлдармен жұмыс істеу кезінде тө-
мендегідей арнайы процедурлар мен функциялар қолданылады.
1.  Read(Var f; c1, c2, ...,cn) процедурасы типтелген файл 
компоненттерін оқиды. Файлдың соңына жеткенде, бұл 
процедура енгізу-шығару қатесін көрсетеді. 
2.  Write(Var f; c1, c2, ..., cn) процедурасы типтелген файл ға 
мəліметтер жазады. 

274
3. Seek(Var f; numcomp:word) процедурасы файл көр-
сеткішін numcomp нөмірлі файл компонентіне орналасты-
рады. 
4. FileSize(Var f):longint функциясы файлдық айнымалы 
көрсетіп тұрған файл компо нент тері санын береді. SeekQ 
функциясымен бірге файл соңын анықтау үшін қол 
да-
нылады. 
5.  Seektf, FileSize(f)); ... 
6. FilePos(Var f):longint функциясы келесі енгізу-шығару 
операциясы өңдейтін компонент нөмірін береді. 
Мəлімет оқу немесе жазу үшін файл ашылған соң, файл 
көрсеткіші оның басындағы 0 нөмірлі бірінші компонентте ор-
наласады. Əрбір компонент оқылған/жазылған соң, көрсеткіш 
келесі компонентке ығысады. Əрбір компонент ұзындығы 
тұрақты болғандықтан, мəліметтерді тікелей нөмірлері арқылы 
да тауып пайдалануға болады. 
Файл соңына жазбалар қосу мəліметтерді оқу арқылы орын-
далады. Мұндайда файл көрсет кіші оның соңына орналасады да, 
сонан кейін керекті мəліметтер жалғастырылып жазылады.
Компоненттерді файл ортасына жазу кезінде оның нөмірі 
арқылы орнын анықтап алған соң, одан кейінгі компоненттер 
уақытша файлға жазылады да, жаңа компоненттер жазылып, 
оған жалғаса уақытша файлдағы мəлімет қайтадан негізгі файлға 
көшіріліп жазылады. 
Компоненттерді өшіру файлды қайта жазу арқылы орындала-
ды.
6.3-мысал. Компоненттері пернелерден енгізілетін сим-
волдардан тұратын файл құру керек. Файлдағы символдарды 
өзгертіп, ондағы мəліметтерді олардың басынан жəне соңынан 
кезектестіре оқып, соңында көрсетілген символды тауып оны 
өшіретін программа жазып шығу керек. 
Program ex;
Var f,f1:fi le of char; {екі файлдық айнымалы}
ch,i:char;
j:longint;
name:string[8];
Begin

275
WriteLn('Файл атын енгізіңіз:'); ReadLn(name);
{ файл жасау жəне ашу}
Assign(f,name+'.dat'); {файлды файлдық айныма-
лымен байланыстырамыз}
ReWrite(f); {файлды мəлімет жазу үшін ашу 
(құру)}
WriteLn('Символдар немесе CTRL-Z енгізіңіз:');
{файлға жазбалар енгізу}
while not EOF(f) do {пернелерден CTRL-Z 
енгізілгенше}
begin
ReadLn(ch); {пернеден символ енгіземіз}
Write(f,ch); {символды файлға жазамыз}
end;
WriteLn;
{ файлдан біртіндеп жазбаларды оқу}
Reset(f); { файлды оқу үшін ашу}
while not EOF(f) do { файл соңына жеткенше}
begin
Read(f,i); {файлдан символ оқу}
Write(i,' '); {символды экранға шығару}
end;
WriteLn;
{файлдағы жазбаларды өзгерту}
Reset(f); {файлды оқу үшін ашу}
while not EOF(f) do {файл соңына жеткенше}
begin
Read(f,i); {файлдан символ оқу}
Write(i,' '); {символды экранға шығару}
i:=chr(ord(i)+10); {символды өзгерту}
WriteLn(i); {өзгертілген символды экранға 
шығару}
Seek(f,FilePos(f)-1); {бір компонентке кері 
қайту}
Write(f,i); {символды қайта жазу}
end;
WriteLn;

276
{жазбаларды файл басынан жəне соңынан 
кезектестіре оқу}
ReSet(f); {файлды оқу үшін ашу}
j:=0; {компонент нөмірін 0-ге орналастыру}
while not EOF(f) do {файл соңына жеткенше}
begin
Read(f,i); {файл басынан символ оқу}
Write(i); { символды экранға шығару }
Seek(f,FileSize(f)-FilePos(f)); {файл соңынан 
оқу үшін көрсеткішті орналастыру}
Read(f,i); { файл соңынан символ оқу }
Write(i); { символды экранға шығару }
j:=j+1; {компонент көлемін үлкейту}
Seek(f,j); { файл басынан келесі компонентке 
көрсеткішті орналастыру }
end;
WriteLn; WriteLn('Өшірілетін символды 
енгізіңіз'); ReadLn(ch);
{жазбаларды өшіруге даярлау; бастапқы файл 
атын өзгерту жəне сол атпен жаңа файл ашу}
Close(f); {файлды жабу}
ReName(f,name+'.bak'); { файл атын өзгерту}
ReSet(f); { файлды оқу үшін ашу}
Assign(f1,name+'.dat'); {жаңа файлды айнымалы-
мен байланыстыру}
ReWrite(f1); { жазу үшін жаңа файл ашу}
{жазбаларды өшіру – қалған жазбаларды басқа 
файлға жазу}
while not EOF(f) do { }
begin
Read(f,i); { файлдан символ оқу }
if i<>ch then Write(f1,i); {егер символ 
өшірілмеуі керек болса, оны жаңа файлға жазу}
end;
Erase(f); {ескі файлды жою, ол жабылған соң 
онда ешнəрсе өзгермейді, сол себепті оны 
қайтадан жабу қажет емес}

277
{жаңа файлдан жазбаларды біртіндеп оқу}
ReSet(f1); {жаңа файлды оқу үшін ашу}
while not EOF(f) do
begin
Read(f1,ch); { файлдан оқу }
Write(ch,' ');
end;
WriteLn; End. 
6.4-мысал. Адамдардың фамилиялары мен туылған күндері 
тізім түрінде жазылған файл жасайтын программа құру керек. 
Осы файлдағы мəліметтерден берілген фамилиясы бойынша 
адамның туылған күнін анықтау керек.
Program ex;
Type fam=record { «қызметкерлер туралы 
мəліметтер» типіндегі жазба}
ff:strin[20]; {фамилиясы}
year:word; {туған жылы}
month:1..12; { туған айы}
day:1..31; { туған күні}
end;
Var f:fi le of fam; { «қызметкерлер файлы» 
файлдық айнымалысы}
fb:fam;
n,i:integer;
fff:string;
key:boolean;
Begin
Assign(f,'a.dat'); { файлдық айнымалыны файл-
мен байланыстыру}
ReWrite(f); { жазу үшін файл ашу}
WriteLn('Мəлімет немесе CTRL-Z енгізіңіз');
while not EOF do { CTRL-Z енгізілгенше цикл}
begin
ReadLn(fb.ff,fb.year,fb.month,fb.day); 
{мəліметтерді өрістер бойынша енгізу, фами-
лияны бөлек жолда енгізу, жолды енгізу Enter 
арқылы аяқталады}

278
Write(f,fb); { жазбаны файлға бір компонент 
түрінде жазу}
end;
Close(f); {файлды жабу}
WriteLn('Фамилияны енгізіңіз');
ReadLn(fff);
key:=false; {«жазба табылмады» белгісін орна-
ту}
ReSet(f); {файлды оқу үшін ашу}
while (not EOF(f)) and (not key) do {файл 
соңына жетпей жəне жазба табылмағанша }
begin
Read(f,fb); { файлдан жазба оқу}
if fb.ff=fff then {егер фамилия сəйкес келсе, 
онда}
begin {мəлімет шығару}
WriteLn('Дата: ',fb.year,fb.month,fb.day:3);
key:=true; {«жазба табылды» белгісін орнату}
end;
end;
if not key then {егер белгі орнатылмаса }
WriteLn('Мəліметтер жоқ'); {онда « Мəліметтер 
жоқ'» деп жазамыз}
Close(f); {файлды жабу}
End. 
Кез келген мəтіндік файл CHAR типті компоненттері бар тип-
телген файл ретінде оқылады. Мұнда мəтіндік файл соңы маркері 
екі символдар тіркесінен #13 жəне #10 түрінде болады.
6.5-мысал. CHAR типті компоненттерден тұратын типтелген 
файл түріндегі мəтін дік файл ашатын жəне одан мəліметтерді бір-
бір символдан оқитын программа жазу керек.
Program char_text_fi le;
Type ff=fi le of char; {жаңа тип - символдық 
файл}
Var
f:ff; { символдар файлы типіндегі файлдық ай-
нымалы }

279
a:char;
n,i:integer;
fname,st:string[30];
Begin
WriteLn('Файл атын енгізіңіз'); ReadLn(fname);
Assign(f,fname); {файлдық айнымалыны файлмен
 
байланыстыру}
ReSet(f); {мəтіндік файлды типтелген файл 
ретінде оқу үшін ашу}
while not EOF(f) do { файл соңына жеткенше}
begin
st:='';
Read(f,a); {символды оқу}
while (a<>#13) and not EOF(f) do {жол соңы 
маркеріне немесе файл соңына дейін}
begin
st:=st+a; {оқылған символды жолға қосу}
Read(f,a); {келесі символды оқу}
end;
if not EOF(f) then Read(f,a); { #10 символын 
өткізіп жіберу}
WriteLn(st); {құрастырылған жолды шығару}
end;
Close(f);
End. 
9.4 Мəтіндік файлдармен жұмыс істеу
Мəтіндік файлдар символдардан құралған қатарлардан, яғни 
жолдардан тұрады, əрбір қатардың соңына оның аяқталғанын 
белгілеп отыратын шартты белгі (CR) қойылады. Əрбір файл 
оның соңын білдіретін арнайы символмен аяқталады. Мəтіндік 
файлдар стандартты TEXT түйінді сөзімен сипатталады жəне 
олардың компоненттерін тек бірінен кейін бірін тізбектей отырып 
қана оқуға болады. Мұндай файлдармен жұмыс істеу кезінде ар-
найы қосымша процедуралар мен функцияларды пайдаланлады.
Айта кететін бір жайт, мəтін түріндегі файлға не файлдық 
құрылғыларға түсетін символдар тізбегі енгізілгенде жолдар 

280
соңында міндетті түрде орналасатын CR – carrіage return шартты 
белгісі «енгізу» (  ) пернесін басу арқылы қойылады, ал мəтін 
толық теріліп біткенде, оның ең соңына Ctrl+Z қос пернесін басу 
арқылы «файл соңы» белгісі – EOF орналасуы тиіс. Сонымен, 
файл компоненттері (сандар, сөздер) бір-бірінен «бос орын» не-
месе CR арқылы бөлініп жазылып, олардың ең соңында CTRL+Z 
шартты белгісі міндетті түрде қойылады.
Мəтіндік файлдардағы мəліметтер тек тізбекті түрде ғана алы-
нады. Олармен əр түрлі мəтіндік редакторлар жұмыс істей алады. 
Мəтіндік файлдардың типі – стандартты TEXT типі.
   
VAR <файл аты>: TEXT;
Символдық енгізу-шығару операциялары READ жəне WRITE 
процедурала рымен, ал жолдар – READLN жəне WRITELN про-
цедураларымен атқарылады.  Бұдан басқа да ASSIGN,  RESET,  
REWRITE,  CLOSE,   EOF,  EOLN сияқты арнайы процедура-
лар қолданылады.  APPEND процедурасы бұрыннан бар мəтіндік 
файлға жазбалар қосу үшін қажет. Мəтіндік файлдар үшін 
SEEK, FILEPOS, FILESIZE процедуралары мен функциялары 
қолданылмайдыөйткені мұндағы элементтер ұзындығы əр түрлі 
болып келеді.
INPUT  жəне  OUTPUT  стандартты процедуралары мəлі мет-
терді пернелерден енгізіп, экранға шығару үшін қажет болады.
1-мысал. Дискіде бүтін сандардан тұратын f1.dat файлы бар 
делік. Осы файл дағы сандарды біртіндеп оқи отырып, экранға 
солардың ішіндегі тек жұп сандарды шығару қажет болсын.
program (fіl, output);
 var fіl:text;
 і:іnteger;
begіn
 assіgn (fіl,’f1.dat');
 reset(fіl); wrіteln;
 whіle not eof(fіl) do
  begіn
   read(fіl,і);
   іf і mod 2=0 then wrіte(і,' ':4)
  end;  close(fіl)
end.

281
2-мысал. Пернелерден n сан енгізіп, оны іnt.dat файлына жазу 
керек.
program rem(іnt, іnput);
 const n=15;
var  іnt:text;
    і,n:іnteger;
begіn
 assіgn(іnt, 'ff.dat'); rewrіte(іnt);
 for і:=1 to n do
  begіn
  wrіte('сан енгізіңіз:'); read(n);
  wrіte(іnt,k,’’:2)
 end;
  wrіteln(іnt);
 close(іnt)
   end.
2-мысалдың басқаша шығарылу жолын қарастырайық.
   program rr;
   const n=15;
   type v=fіle of іnteger;
    var і,k:іnteger;
     іnt:v;
   begіn
     assіgn(іnt, 'fff.dat');
     rewіte(іnt);
     for і:=1 to n do
    begіn
    wrіte('сан енгізіңіз:');
    read(k);
     wrіte(іnt,k)
    end
   end.
3-мысал. Мəліметтері бар F1 мəтіндік файлы берілген делік.
Осы файлдың барлық жазбаларындағы ИС-101 тобы кодын ИС-
201 кодына ауыстыру керек. Өзгертілген жазбаларды F2 файлына 
жазу қажет.
    VAR F1,F2: TEXT;
19–1618

282
          POLE:STRING;
          NAME:STRING[12];
          PZ: INTEGER;
    BEGIN WRITE(‘МƏЛІМЕТ ОҚЫЛАТЫН ФАЙЛ АТЫ:’);
          READLN(NAME);
          ASSIGN(F1,NAME);
       WRITE(‘МƏЛІМЕТ ШЫҒАРЫЛАТЫН ФАЙЛ АТЫ:’);
          READLN(NAME);
          ASSIGN(F2,NAME);
          RESET(F1);  REWRITE(F2);
                      WHILE NOT EOF(F1) DO
            BEGIN
              READLN(F1,POLE);
              WHILE POS(‘ИС-101’, POLE) <> 0 DO
                 BEGIN
                   PZ:= POS(‘ИС-101’, POLE);
                   DELETE(POLE,PZ+3,1);
                   INSERT(‘2’,POLE,PZ+3);
                 END;
              WRITELN(F2,POLE)
            END;
                      CLOSE(F1);
          CLOSE(F2);
   END.
Мұнда бұрын мəлімет жазылған файлдан жолдар біртіндеп 
оқылады да, əрбір жолдағы топ нөміріндегі 1 символы 2-ге 
өзгертіледі. Өзгертілген жолдар жаңа файлға жазылады.
Мəтіндік файл – бұл компонентері – ұзындықтары əр түрлі 
жолдарды құрайтын сөз тіркестерінен тұратын файл, əрбір жол 
арнайы жол соңы белгісімен аяқталады.
Ескерту. Жол соңы маркері – бұл ASCII-кодтар кестесіндегі 
арнайы екі символдан – «#13, #10» тұратын тіркес. 13 коды кур-
сорды жол басына орналастыру командасы болып, ал 10 коды – 
келесі жолға көшу командасы болып саналады. Бұл кодтар ком-
бинациясы ENTER пернесін басқанда қалыптасады.
Мəтіндік файл мəлімет жазу, оқу жəне файл соңына жазба-
лар қосу үшін ашылады. Мəлімет жазу үшін ашылған файлдан 


Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   24




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет