Паскаль программалау тілі

Автор работы: Пользователь скрыл имя, 02 Декабря 2011 в 11:02, реферат

Описание

Қазіргі кезде Паскаль аты программалау тілдерінде – тіл аты ретінде кеңінен қолданылады. Паскаль программалау тілі ХVII ғасырда өмір сүрген француз ғалымы Блез Паскальдің құрметіне аталып отыр.

Работа состоит из  1 файл

Паскаль тілі.docx

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

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 мәліметтерді шығару программасына келесідегідей өзгертулер енгіземіз:  
Procedure Exi;  
Var  
FileOut :File of integer;  
I :integer;  
Begin  
Assign (FileOut, ‘mayFile.in’);  
Rewrite(FileOut);  
For i:=1 to Sanau do  
Write (FileOut, San[i]);  
Close(f);  
End;  
Программаны толы
қтырып жазып Мisal_F8 атымен сақтаңыз. Программа орындалғаннан кейін "mayFile.in" файлын ашып көріңіз. Не көрдіңіз?

7. Типті файлдан  мәліметтерді оқу

Титі файлдар тікелей қатынау файлдарына жатады, ол оның қатал ұйымдастырылғанына байланысты. Бұрында айтып өткеніміздей, типті файлдың компоненттері біркелкі, қатаң тәртіптегі көлемде орын алады. Сонымен тұтас блок бар делік және оған қатынауды ұйымдастырғанда, оған олардың орналасуы жайлы қосымша ақпараттарды сақтау қажет емес.  
Типті файлдардан м
әліметтерді оқуға арналған негізгі проуедураларды қарастырамыз.  
Типті файлдармен ж
ұмыс жасар алдында, мәтіндік файлдардағыдай, файл атауын жариялау және файлдағы мәліметтердің типін көрсету керек, нақтылы файл атауын байланыстыратын айнымалы атауын сипаттауымыз кереек (2.8.5 тақырыбын қараңыз).  
Reset(<файл атауы>) – процедурасы файлдф о
қуға ашады және көрсеткішті файлдың басына орналстырады.  
Типті файлдан м
әліметтерді оқу үшін read( ) процедурасын қолданады. Берілген процедураның жұмысы кезінде, блоктан мәліметті оқыған соң, көрсеткіш автоматтты түрде келесі жазбаға ауысады. Егер көрсеткіш соңғы жазбаның соңынан тұрса, онда программа орындалуында қателік болады.  
Б
ұл қиындықтан шығу үшін FileSize( ) функциясын қолдануға болады.  
FileSize(<файл атауы>):longint – функциясы файлда
ғы компоненттер санын анықтайды. Яғни, бізге файлдағы барлық мәліметтерді оқу керек болса, оқу процедурасын FileSize( ) рет орындауымыз керек. Мisal_F8 программасымен құралған типті файлдан мәліметтерді оқудың программасының мәтінінен үзінді келтіреміз:

Информация о работе Паскаль программалау тілі