Файлдардың түрлері

Автор работы: Пользователь скрыл имя, 10 Октября 2013 в 22:16, курсовая работа

Краткое описание

Жоғарғы деңгейлі программалау тілдерінің бірі − Паскаль. Қазіргі кезде Паскаль тілінің кеңейтілген ондаған диалектісі бар, оның ішінде IBM PC-ге үйлесімді дербес компьютерлер жұмыс істей алатын Турбо Паскаль диалектісінің варианттары да жеткілікті.
Turbo Pascal жүйесінде қарапайым есептерді шешудің программасынан бастап, күрделі мәліметтер қорын құрудың сан қырлы жұмыстары жүргізіледі.
Паскаль тілі бұрын құрылған (Фортран, Алгол және т.б.) программалау тілдерінен маңызды ерекшелігі ол құрылымдық программалау идеясын өмірге біртіндеп енгізу

Содержание

І. Кіріспе

II Негізгі бөлім
1. Файлдардың түрлері
2.Мәтіндік файлға мәліметтер жазу. Бір өлшемді массив.
3.Мәтіндік файлға мәліметтер жазу. Екі өлшемді массив
4.Мәтiндiк файлдан мәлiметтердi оқу
5. Мәтiндiк файлдан мэлiметтердi оку (жалғасы)
6. Типті файл. Типті файлдарға мәліметті жазу
7. Типті файлдан мәліметтерді оқу
8. Әртүрлі базалық типтерді біріктіру. Жазба типі
9. Сыртқы кітапханалар. Модульдер
10. Модуль құрылымы
III Қорытынды

Прикрепленные файлы: 1 файл

fayldar1.doc

— 174.00 Кб (Скачать документ)

Тоқтату нүктесін алып тастау үшін, келесі әрекеттерді орындаймыз:

Негізгі менюді бес\лсенділеңіз;

Негізгі менюден Debug  ішкі менюін ашыңыз;

Breakpoints пернесін  басыңыз.

Enter пернесін  басыңыз.

Экранда программаға  қойылған барлық тоқтату нүктелерінің тізімі көһрсетілген,  Breakpoints… (тоқтату  нүктелері) сұхбат терезесі (2.9-сурет) шығады.

Қажетті элементті  белгілеңіз;

 “Delete” (сұхбат  терезесінен) батырмасын немесе  “D” (пернетақтадан) пернесін  басыңыз.

Белгіленген тоқтату  нүктесі тізімнен алынып тасталады. Егер сіз барлық тоқтату нүктесін алып тастағыңыз келсе--   “Clear all”  батырмасын басу керек.

Тапсырма

Егер exi ішкі программасындағы  write және  writeln процедураларындағы бірінші  параметр  FileOut көрсетілмесе San массиві қайда жазылған болар еді?

Егер осы  параметр тек  writeln процедурасында көрсетілмеген  болса не өзгереді?

 

4. Мәтiндiк файлдан  мәлiметтердi оқу

 

Өткен тақырыптарда сіздер, мәліметтерді мәтіндік файлға жазуды үйреніңіздер. Енді оларды қайтадан файлдан қалай оқуға болатынын қарастырамыз.

Ол үшін `mayFile1/in`  файлын пайдаланамыз. Мәліметтерді файлға жазу кезіндегідей, біздің файлмызды  байланыстыратын айнымалыға атау беруіміз керек. Айталық, ол атау Fileln болсын, содан  кейін біз оны мәтіндік файл ретінде сипаттауымыз керек. Бұл айнымалыны біз енгізу процедурасында пайдаланатын болғандықтан, сол процедураның жергілікті айнымалысы ретінде сипаттаймыз.

var

Filelnt:text;

 

    Одан кейін біз программада, “мәтіндік типті ” Fileln айнымалысы, біздің

`mayFile1.in` атауымен берілген  нақтылы файлмызды белгілейтіндігін  көрсетуіміз керек. Ол үшін assing(NameVar,NameFile)-процедурасын  қолданады.

Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз  керек. Ол үшін, reset(NameVar)—процедурасында қолданады, мұндағы  NameVar-сіздің файлды белгілеуге берген айнымалыңыздың атауы, біздің жағдайымызда, ол NameVar-Fileln. Reset(NameVar)-процедурасы, мәліметтерді оқуға файлды ашады және курсорды файлдың басына орналастырадв. Егер ондай жоқ болса, қателік туралы хабарлама  береді.      Енді мәліметтерді файлдан оқуға барлығы дайын болды. Ол үшін өзімізге бұрынан таныс  Read() және  Readln() процедураларын пайдаланамыз. Мәліметтерді оқу пернетақтадан емес, файлдан жүзеге асу үшін, мәліметтерді оқудың жолын көсетеміз. Яғни, жақшалардың ішіне, assing()- процедурасының көмегімен біздің файлмызды байланыстырып тұрған, айнымалының атауын көрсетеміз.

`MayFile.in`файлындағы бірінші  сан, файлдағы барлық сандардардың  мөлшерін көрсетеді. Сондықтан,  алдымен файлдан

Sanau айнымалысының мәнін  оқытамыз,содан кейін параметрлі  циклді қолданып, файлдағы сандардың  мәндерін оқимыз. Мәліметтер толық  оқылып болған соң, өзімізге  таныс Close() процедурасын пайдаланып, файлды жабу керек. 

Енді, мәліметтерді фйалдан  оқу процедурасы қандай болатындығын көрелік:

procedure lnit;

var

i:byte;

Fileln:text;

begin

assing(fileln,`mayFile1.in`);

reset(Fileln);

readln(Fileln,Sanau);

for i:=1 to Sanau do

read(Fileln,San[i]);

close(Fileln);

end;

    Дәл осындай, егер өлшемдері белгілі болса, мәліметтерді екі өлшемді массивтен оқу да онша қиыншылық туғызбайды. `MayFile.in5` файлынан мәліметтерді оқитын программадан үзінді мысалға келтірейік:

procedure lnit;

var

i,j:byte;

{айнымалы атауын мәтiндiк файл түрiнде сипаттау}

Fileln  :text;

begin

{айнымалыны нақтылы файл атымен байланыстыру}

assing(Fileln,`mayFile5.in`);

{файлды оқуға ашу}

reset(File);

{массив өлшемдерiн оқу, курсорды жаңа жолға көшiру}

readln(Fileln,JolSany,BaganSany);

{массив элементтерiн жол және баған бойынша оқу}

for:=1 to JolSany do

read(Fileln,San[i,j]);

{файлды жабу}

close(Fileln);

end;

    Мынаған көңіл аударыңыз, массив элементтерін оқу кезінде, Readln() процедурасын қолданбай, тек қана Read() процедурасы қолданылды. Бұл мүмкін еді, себебі массив элементтерін оқу үшін оның өлшемдері алдын ала белгілі болды. Егер мәтіндік файлдағы элементтер жазбалар саны алдын ала белгісіз болса, онда қайталану саны белгісіз цикл операторларын қолдануға тура келеді.

Тапсырма

Бір өлшемді массивті құрайтын `MayFile.in` файлынан мәліметтерді оқып, оларды компьютре экранына шығаратын программа  жазыңыз және оны  `MayFile6.pas` атымен сақтаңыз.

Екі өлшемді массивті құрайтын  `MayFile5.in` файлынан мәліметтерді оқып, оларды компьютер экранына программа жазып және оны  `MayFile7.ipas` атымен сақтаңыз.

MayFile6.pas` программасын пайдаланып, `MayFile2.in` файлынан мәліметерді оқыңыз. Алынған нәтижені  1 тапсырма нәтижесімен салыстырыңыз. Нәтижені түсіндіріңіз.

BP мәтіндік редакторын  пайдаланып  `MayFile1.in`,  `MayFile2.in` және  `MayFile5.in` файлдарындағы массив өлшемдерін  немесе жазбалар саные көрсететін  жолды алып тастаңыз.

 

 

5. Мәтiндiк файлдан мәлiметтердi оку

(жалғасы)

 

    Егер мәтіндік файлдардағы жазбалар саны белгілі болса, онда мәліметтерді оқу онша қиын емес. Ал, егер мәтіндік файлдағы жазбалар саны белгісіз болса ше, онда не істейміз? Егер сізге орындалатын әрекеттердің саны белгісіз болса, онда қайталану саны белгісіз цикл операторларын қолдануға болатындығын білесіз.2.8.2 тақырыбында мәтіндік  файлдардың қасиеттерін сипаттаған болатынбыз, онда файлдың соңына файл соңын көсететін белгі код қойылатыны жайлы айтылған. Олай болса, мәліметтерді оқу файлдың соңы табылғанша жалғаса береді. Егер файл бос болса, яғни онда ешқандай жазба жоқ, онда одан мәліметтерді оқуға болмайды. Осы айтылғандарды тұжырымдай келе, алғы шарт циклін қолдану керек екеніне көзіміз жетті. Файл соңы белгісін анықтау үшін, EOF(Name Var)-процедурасын қолданады ағылшын тілінде EndOf File—файл соңы деген сөзден қысқартылып алынған. Жақшаның ішіне  assing() процедурасында көрсетілген файлдың нақтылы атымен байланыстыратын айнымалы атауы жазылады. EOF(Name Var)-процедурасының мәні,  False(жалған)-болады егер файл соңына жетпеген болса Ture(ақиқат)-болады, егер файлдың соңы анықталған болса. Олай болса, алғы шарт циклін қолданғанда Not EOF(Fileln)-шарты әзірше ақиқат болса, онда цикл орындала береді, яғни файл соңы анықталғанша. Бұл жағдайда мәліметтерді енгізу процедурасы келесідей болады:

procdure lnit;

                                                      var

                                                     {айнымалы атауын мәтiдiк файл түрiнде сипаттау}

                                                     Fileln:text;

                                                     Begin

                                                    {айнымалыны нақтылы файл атымен  байланыстыру}

                                                    assing(fileln,`mayFile1.in`);

                                                    {файлды оғуға әзiрлеу}

                                                     reset(Fileln);

                                                    {санауыштын бастапқы мәнi}

                                                    Sanau:=0;

                                                    While  Not EOF(Fileln) do

                                                        Begin

                                                    {санауыштын мәнiн бiрге арттыру}

                                                      inc(Sanau);

                                                     {массивтен элементтердi оқу}

                                                      read(Fileln,San[i]);

                                                   end;

                                                     {файлды жабу}

                                                          close(Fileln);

                                                   end.

    Sanau-айнымалысы файлдағы жазбалардың санын анықтауға қызмет атқарады. Бұл айнымалыны ауқымды айнымалылар бөлімінде сипаттаған тиімді. Сол сияқты San[] массиві де ауқымды айнымалылар бөлімінде сипатталады:

                                        Var

San: arry[1…100] of  integer;

                                        Sanau: byte;

Жазбалар саны белгісіз файлдан  мәліметтерді оқу жұмысының  дұрыстығын тексеру үшін, оқылған мәліметтер массивін экранға баған түрінде  шығарамыз:

 

procedure exi;

var

i: byte;

begin

for i:=1 to Sanau do

begin

writeln(San[i]);

end;

end;

    Егер сіз программа мәтінінің қалған бөлігін дұрыс құрастырыңыз, онда жазбалар саны 100-ден аспайтын мәтіндік файлдан мәліметтерді және жазбалар санын оқитын программа аласыз. Сонымен қатар бұл программа файлдағы барлық жазбалар санын анықтап, оны экранда жазады.

Енді екі өлшемді массив мәліметтерін файлдан қалай оқуға  болатындығын қарастырыралық. Жоғарыда айтылғандай мәліметтерді файлдан  оқу, оның файл соңын анықтайтын белгісіне  байланысты екен. Бірақ екі өлшемді массивтерді жазғанда оның элементтері жол бойынша және баған бойынша жазылады. Сондықтан файлдан мәліметтерді оқығанда, алдымен алғашқы жол бойынша файл соңы белгісі анықталады. Жолдағы мәліметтер толығымен оқылып болған соң келесі жолды оқуды бастау керек. Мәтіндік файлдар қасиеттерін қарастырғанда айтылғандай, онда әрбір жол, жол соңы белгісімен кодымен аяақталады. Осы белгіні анықтау үшін стандартты  EOLn(Name Var) процедурасын қолданады.  EOLn(), ағылшын тілінде End of length жол соңы сөзінің қысқартылған түрі. Жақшаның ішіне  assing() процедурасында көрсетілген файлдың нақтылы атымен байланыстыратын айнымалы атауы жазылады. EOLn(Name Var)-процедурасының мәні,  False(жалған)-болады, егер жолдың соңына жетпеген болса,  Ture(ақиқат)-болады егер жолдың соңы анықталған болса. Олай болса мәліметтерді оқу жалғаса береді егер  Not EOF(Fileln) шарты ақиқат болса, яғни жол соңы анықталғанша. Бұл жағдайда мәліметтерді оқу процедурасының түрі келесідей болады:

procedure lnit;

                                                     var

                                                     i: byte;

                                                     {айнымалы атауын мәтiндiк файл түрiнде сипаттау}

                                                     Fileln:text;

                                                     Begin

                                                    {айнымалыны нақтылы файл атымен  байланыстыру}

                                                    assing(fileln,`mayFile5.in`);

                                                              {файлды оқуға әзiрлеу}

                                                    reset(Fileln);

                                                    {жолда санауыштың бастапқы мәнi}

 

                                                     Sanau Jol:=0;

                                                    {массив элементтерiн жол  бойынша оқу}

                                              while Not EOF (Fileln)do

                                              begin                    

                                             {санауыштың мәнiн бiрге арттыру}

                                              inc(Sanau Jol);

                                             {бағанда санауыштың бастапқы мәнi}

                                                 SanauBagan:=0;

                                             {массив элементтерiн жол  бойынша оқу}

                                              while Not EOF (Fileln)do

                                                  begin                    

                                             {санауыштың мәнiн бiрге арттыру}

                                              inc(Sanau Bagan);

 

                                            {массив элементтерiн  оқу}

                                               read(Fileln, San[i,j]);

                                                  end;

                                          {курсорды жаңа жолдың басына  қою}

                                              read(Fileln, San[i,j]);

                                                  end;

                                                           {файлды жабу}

                                                             close(Fileln);

                                                          end;

1.Бір өлшемді массивті құрайтын `MayFile.in` файлынан мәліметтерді оқып, оларды компьютре экранына шығаратын программа жазыңыз және оны  `MayFile6.pas` атымен сақтаңыз

                                                    

 

6. Типті файл. Типті  файлдарға мәліметті жазу

 

Келесі есепті қарастырып көрелік:

Мәтіндік файлға төрт таңбалы 50 сан жазу керек. Әрбір  сан жеке жолдарға жазылатын болсын. Нәтижесіндегі файлдың өлшемі қандай болады?

Оны жуықтап  бағалап көрелік. Әрбір таңба 1 байт орын алады. Ондай таңбалардың саны 50×4=200. Мәтіндік файлдарға берген анықтама бойынша әрбір жолдың соңында файл соңы белгісі болғандықтан, файл өлшемі 250 байттан асып кетеді.

Бұл мәліметтерді кіші өлшемдегі файлдарда сақтауға бола ма?

Біздің программамыз мәліметтерді өңдей алуы үшін, біз оған алдын ала оперативті жадыдан белгілі бір орын бөлуіміз керек. Жадыдан бөлінетін орынның өлшемі мәліметтердің типіне байланысты болғандықтан, бір элементті сақтау үшін, integer типті элементтерге 2 байт, byte типті бір элементке 1 байт орын бөлінеді.

Мұндай амалдарды  мәліметтерді файлда сақтау кезінде  қолдануға бола ма? Болады екен. Типті  файл деп аталатын арнайы файлдық  типтер бар.

Типті файл –  барлық элементтері бір типті  мәліметтер болып келетін файл түрі. Типті файл элементтері файлдық  типетен басқа кез-келген тип бола алады.

Әр элементті  файлға жазу үшін, мәліметтердің типіне байланысты, міндетті белгіленген мөлшерде орын бөледі. Типті файлдарды смпаттау бөлімінде ашу үшін, мәтіндік файлды смпаттағандай, файл мәліметтерді смпаттайтын  тип жазылады.

<файл атауы>:file of<мәліметтер типі>

Біздің жағдайымызда:

 

FileOut:File of interger

 

Бұл жазу, берілген файлдағы мәліметтер – 32768-ден 32767 аралығында жататын бүтін сандар екенін көрсетеді.

Сонымен қатар, типті файлдармен жұмыс істегенде  де, assign( ) - процедурассының көмегімен нақтылы файл аты мен байланыстыратын атауды көрсетеміз.

Assign(<файл атауы>,<файлдың  нақты атауы>)

Біздің жағдайымызда:

Assign(FileOut ,’may.dat’)

Типті файлдармен жұмыс жасағанда мәтіндік файлдардағы  секілді оларды жазуға және оқуға ашуға болады. Ол үшін стандартты функциялар қолданады:

Rewrite(<файл  атауы>) – процедурасын файлды жазуға  ашады және курсорды файлдың басына орналастырады.

Типті файлдарға  мәліметтерді жазу write() процедурасы  арқылы жүзеге асырылады. Ол мәтіндік файлдардағы write() процедурасына ұқсас. Алайда write() процедурасын типті файлдарда қолдануында біршама өзгешелік бар. Әрекетті орындау кезінде көрсеткіш келесі жазу блогына көшеді. Типті файлдарда writeln() процедурасын қолдану қателік көрсетеді.

Типті файлдарға writeln() процедурасын қолдануға болмайды.

Типті файлдармен жұмыс аяқталған соң Close<файл атауы>) – процедурасы көмегімен файл жабылады.

Енді тақырып  басында берілген есепті шешуді жалғастырайық. 2.8.2 тақырыбындағы Мisal_F1 мәліметтерді шығару программасына келесідегідей өзгертулер енгіземіз:

Информация о работе Файлдардың түрлері