Жоспары:
І. Кіріспе
ІІ. Негізгі бөлім
ІІ. 1. Файлдардың түрлері
ІІ. 2.Мәтіндік файлға мәліметтер жазу. Бір өлшемді массив.
ІІ. 3.Мәтіндік файлға мәліметтер жазу. Екі өлшемді массив
ІІ. 4.Мәтiндiк файлдан мәлiметтердi оқу
ІІ. 5. Мәтiндiк файлдан мэлiметтердi оку (жалғасы)
ІІ. 6. Типті файл. Типті файлдарға мәліметті жазу
ІІ. 7. Типті файлдан мәліметтерді оқу
ІІ. 8. Әртүрлі базалық типтерді біріктіру. Жазба типі
ІІ. 9. Сыртқы кітапханалар. Модульдер
ІІ. 10. Модуль құрылымы
Қорытынды
Пайдаланылған әдебиеттер
Кіріспе
Turbo Pascal – жоғарғы деңгейлі программалау жүйесі. Оның
Бейсик тілі сияқты, Паскаль оқып-үйренуге жеңіл, түрлі салалық
Turbo Pascal программалау тілінің басқа тілдер сияқты өзіне
Жоғарғы деңгейлі программалау тілдерінің бірі − Паскаль.
Turbo Pascal жүйесінде қарапайым есептерді шешудің программасынан бастап,
Паскаль тілі бұрын құрылған (Фортран, Алгол және т.б.)
Файлдармен жұмыс
1 Файлдардың түрлері
Осыған дейін, біз мәліметтерді пернетақтадан негізіп, оларды экранға
Файл дегеніміз – мәліметтер сақтауға арналған сыртқы тасымалдаушыдағы
File (ағылшын тілінен аударылғанда) бума, іс қағаздар жинағы,
Borland Pascal-да файлдарды екі негізгі белгісі бойынша топтастыруға
файлдың типі бойынша (оның логикалық құрылымына )
файл элементтеріне қатынау тәсілі бойынша
Типтері бойынша файлдар шартты тұрде үш түрге бөлінеді:
мәтіндік файл;
типтік файл;
типтік емес файл.
Біз көбінесе мәтіндік және типтік файлдармен жұмыс істейміз.
Қатынау тәсілі бойынша файлдар келесідей бөлінеді:
Тікелей қатынау файлдары
Кезекпен қатынау файлдары
Олардың айырмашылығы тікелей қатынау файлдарында арнайы
процедуралар және функцияларды пайдалана отырып, мәліметтерді,
2. Мәтіндік файлға мәліметтер жазу.
Бір өлшемді массив.
Ең қарапайым файл типі мәтіндік файл болып табылады.
Келесі есепті шешіп көрейік: Пернетақтадан бірнеше сандар енгізіп,
Есепті кезеңдерге бөлейік:
пернетақтадан мәліметтерді енгізу
оларды “mayFile.in” атты файлға жазу керек.
Бірінші кезеңді орындау үшін:
пернетақтадан енгізілетін сандардың мөлшерін (массив өлшемін) көрсету керек
Сан мөлшерін білген соң, параметрлі циклді қолдану арқылы
Осы әрекеттерді орындау үшін қолданылатын айнымалыларды сипаттаймыз. Айталық,
рrogram Misal_F1;
var
San: array [1..100] of integer;
i, SanMolcher: integer;
Мәліметтерді енгізу процедурасы келесі түрде болады:
procedure init; begin readln (SanMolcheri);
for i:=1 to SanMolcheri do
begin
write (“San[“,i,”]=’);
readln(San[i]);
end;
Мәліметтерді өңдеу процедурасы әзірге бізге қажет емес, сондықтан
procedure work ;
begin
end;
Енді екіншісі кезеңді қарастырайық, яғни мәліметтерді «mayFile.in» атты
var
FileOut: text;
Одан кейін біз программаға, “мәтіндік” типтегі FileOut атты
Файл аты мен оның кеңейтілуінен басқа орналасқан
Name Var) процедурасы—файлды жазу үшін ашады және көрсеткішті
Енді мәліметтерді файлға жазуға бәрі дайын. Ол үшін
Close(Name Var) процедурасы—файлдың соңына, файл соңы белгісін жазып,
Мәліметтерді файлға жазу процедурасы қандай болатынын қарастырып көрелік:
procedure exi;
var
FileOut:text;
begin
assing(FileOut,`mayFile.in`);
rewrite(FileOut);
write(FileOut, SanMolcheri);
for i=1 to SanMolcheri do
write(FileOut,San[i]);
close(FileOut);
end;
негізі программаның мәтіні өзгеріссіз қалады
begin
init;
work;
exi;
end.
Осы программаны ‘Misal_F1’ атымен дискіге жазып, оны орындауға
Ол үшін, сандары бір бірінен дәл ажыратудың екі
а.әрбір мәнді бос орын (``)белгісі арқылы бөліп жазу
в.әрбір мәнді жаңа жолға жазу (баған бойынша).
Бірінші жағдайда енгізілетін айнымалы атауынан кейін бос орын
write(FileOut, SanMolcheri,``);
for i:= to SanMolcheri do
write(FileOut,San[i],``);
екінші жағдай үшін, writeln() процедурасын қолданамыз:
writeln(FileOut,SanMolcheri);
for i=1 to SanMolcheri do
writeln(FileOut, San[i] );
Тапсырма
1.Енгізілетін мәліметтер `mayFile1.in` атауымен берілген файлға, бір жолға
2. Misal_F1 программасында берілген мәліметтер `mayFile2.in` файлына
3.Пернетақтадан 20 жол мәтін енгізіп, оны шығу файлына
3. Мәтіндік файлға мәліметтер жазу.
Екі өлшемді массив.
Алдыңғы тақырыпта сіз мәтіндік файлдарды ашуды, оған ақпараттарды
Пернетақтадан, өлшемі 100х100, элементтері бүтін сан болатын, екі
Бұл есеп те, алдыңғы тақырыпта қарастырылған есепке ұқсас,
1.Пернетақтадан мәліметтерді енгізу
2.Оларды атауы `МayFile5.in` болатын, файлға жазу керек.
Бірінші кезеңді орындау үшін :
Пернетақтадан енгізілетін, массив өлшемдерінің нақты мәндерін кіргізу;
Массив өлшемдерін біле отырып параметрлі цикл операторын қолданып
Мәліметтерді енгізу процедурасының мәтінін Misal_8 программасынан алуға болады.
Массив элементтерін `МayFile5.in` файлына жазу процедурасының қандай
procedure exi;
var
FileOut: text;
begin
{нақтылы файлмен айнымалы арасындағы байланыс}
assing (FileOut,`mayFile.in`);
{файлды жазуға дайындау}
rewrite(FileOut);
{массив өлшемдерiн жазу және курсорды жаңа жолға көшiру}
writeln(FileOut, JolSany,``, BaganSany);
for i=1 to JolSany do
begin
{массив элементтерiн бос орын арқылы жолға жазу}
for j=1 to BaganSany do
write(FileOut,San[i,j],``);
{j-циклiн аяақтаған соң, курсорды жаңа жолға көшiру}
writeln(Fileout);
end;
{файлды жабу}
close(FileOut);
end;
Негiзгi программа мәтiнiнiң өзгерiсiз қалатындығын айтпаса да болады.
КурсордыExi процедурасын сипаттайтын жолдың басына қойыңыз;
Негiзгi менюдi Debug iшкi менюiн ашыңыз;
Add brekpoint… әрекетiн тандаңыз;
Enter пернесiн басыңыз.
Экранға Add brekpoint… (тоқтату нүктесiн қосу) сұхбат терезесi
“Ok” батырмасын (сұхбат терезесіндегі) немесе “Enter” пернесін
Редактор терезесіндегі бұл жол басқа түспен бөлінеді. Енді
Бұл әрекеттер, программаның жеке бөліктерімен жұмыс жасағанда (жүріп
Жеке модульдермен “жұмыс істеу” (программалау) мүмкіндігі.
Бір деңгейдегі “ойша” машиналардың тәуелсіздігі, программаның жекеленген
Құрылымдылық программаның жеке бөліктерімен жұмыс жасау.
Процедура мәтінімен жүріп өткенде құрама операторлардың жұмысына көңіл
begin
{массив элементтерiн бос орын аркылы жолга жазу}
forj:=1 to BaganSany do
write (FileOut, San[i,j],``);
{j-цикл аякталган сон, курсорды жана жолга кошiру}
writeln(FileOut);
end;
Тоқтату нүктесін алып тастау үшін, келесі әрекеттерді орындаймыз:
Негізгі менюді бес\лсенділеңіз;
Негізгі менюден Debug ішкі менюін ашыңыз;
Breakpoints пернесін басыңыз.
Enter пернесін басыңыз.
Экранда программаға қойылған барлық тоқтату нүктелерінің тізімі көһрсетілген,
Қажетті элементті белгілеңіз;
“Delete” (сұхбат терезесінен) батырмасын немесе “D” (пернетақтадан)
Белгіленген тоқтату нүктесі тізімнен алынып тасталады. Егер сіз
Тапсырма
Егер exi ішкі программасындағы write және
Егер осы параметр тек writeln процедурасында көрсетілмеген
4. Мәтiндiк файлдан мәлiметтердi оқу
Өткен тақырыптарда сіздер, мәліметтерді мәтіндік файлға жазуды үйреніңіздер.
Ол үшін `mayFile1/in` файлын пайдаланамыз. Мәліметтерді файлға
var
Filelnt:text;
Одан кейін біз программада, “мәтіндік типті ” Fileln
`mayFile1.in` атауымен берілген нақтылы файлмызды белгілейтіндігін көрсетуіміз керек.
Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз
`MayFile.in`файлындағы бірінші сан, файлдағы барлық сандардардың мөлшерін көрсетеді.
Sanau айнымалысының мәнін оқытамыз,содан кейін параметрлі циклді қолданып,
Енді, мәліметтерді фйалдан оқу процедурасы қандай болатындығын көрелік:
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;
Дәл осындай, егер өлшемдері белгілі болса, мәліметтерді екі
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()
Тапсырма
Бір өлшемді массивті құрайтын `MayFile.in` файлынан мәліметтерді оқып,
Екі өлшемді массивті құрайтын `MayFile5.in` файлынан мәліметтерді
MayFile6.pas` программасын пайдаланып, `MayFile2.in` файлынан мәліметерді оқыңыз. Алынған
BP мәтіндік редакторын пайдаланып `MayFile1.in`, `MayFile2.in`
5. Мәтiндiк файлдан мэлiметтердi оку
Егер мәтіндік файлдардағы жазбалар саны белгілі болса, онда
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-айнымалысы файлдағы жазбалардың санын анықтауға қызмет атқарады. Бұл
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;
Егер сіз программа мәтінінің қалған бөлігін дұрыс құрастырыңыз,
Енді екі өлшемді массив мәліметтерін файлдан қалай оқуға
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` файлынан мәліметтерді оқып,
6. Типті файл. Типті файлдарға мәліметті жазу
Келесі есепті қарастырып көрелік:
Мәтіндік файлға төрт таңбалы 50 сан жазу керек.
Оны жуықтап бағалап көрелік. Әрбір таңба 1 байт
Бұл мәліметтерді кіші өлшемдегі файлдарда сақтауға бола ма?
Біздің программамыз мәліметтерді өңдей алуы үшін, біз оған
Мұндай амалдарды мәліметтерді файлда сақтау кезінде қолдануға бола
Типті файл – барлық элементтері бір типті мәліметтер
Әр элементті файлға жазу үшін, мәліметтердің типіне байланысты,
:file of
Біздің жағдайымызда:
FileOut:File of interger
Бұл жазу, берілген файлдағы мәліметтер – 32768-ден 32767
Сонымен қатар, типті файлдармен жұмыс істегенде де, assign(
Assign(,)
Біздің жағдайымызда:
Assign(FileOut ,’may.dat’)
Типті файлдармен жұмыс жасағанда мәтіндік файлдардағы секілді оларды
Rewrite() – процедурасын файлды жазуға ашады
Типті файлдарға мәліметтерді жазу write() процедурасы арқылы жүзеге
Типті файлдарға writeln() процедурасын қолдануға болмайды.
Типті файлдармен жұмыс аяқталған соң Close) –
Енді тақырып басында берілген есепті шешуді жалғастырайық. 2.8.2
Procedure Exi;
Var
FileOut
I
Begin
Assign (FileOut, ‘mayFile.in’);
Rewrite(FileOut);
For i:=1 to Sanau do
Write (FileOut, San[i]);
Close(f);
End;
Программаны толықтырып жазып Мisal_F8 атымен сақтаңыз. Программа орындалғаннан
7. Типті файлдан мәліметтерді оқу
Титі файлдар тікелей қатынау файлдарына жатады, ол
Типті файлдардан мәліметтерді оқуға арналған негізгі проуедураларды қарастырамыз.
Типті файлдармен жұмыс жасар алдында, мәтіндік файлдардағыдай, файл
Reset() – процедурасы файлдф оқуға ашады және
Типті файлдан мәліметтерді оқу үшін read( ) процедурасын
Бұл қиындықтан шығу үшін FileSize( ) функциясын қолдануға
FileSize():longint – функциясы файлдағы компоненттер санын анықтайды.
Procedure Init;
Var
FileInput : file of integer;
I, Sanau : integer;
San:array[1..100] of integer;
begin
assign(FileInput, ‘mayFile.in’);
reset (FileInput);
Sanau :=FileSize(FileInput);
For i:=1 to Sanau do
Read(FileInput, San [i]);
Close(FileInput)’
End;
Тақырыптың басында типті файлдар – тікелей қатынау файлдарына
Көрсеткішті қажетті мәліметті оқуға қою үшін, Seek() –
Seek(, );
Сонымен қатар типті файлдарда нөмірлеу нөлден басталатыны есте
Seek(FileInput, 2);
немесе
Seek(FileInput, 3-1);
8. Әртүрлі базалық типтерді біріктіру. Жазба типі
Массив анықтамасында айтылғандай, массив дегеніміз құрылымына және қолдану
Мәліметтерді сақтау үшін оған екі массмвке орын бөлуімізге
Файлдар туралы сұрақтарды талдағанда айтылғандай, файл элементтері тек
Мәліметтерді сақтай аламыз, бірақ болашақта бұл мәліметтермен жұмыс
Бұл қиындықтан шығу үшін мәліметтердің құрама типі қолданады.
Жазба атауы Тізім
Өрістің атауы Фамилия Аты Туған жылы
Өрістер мәні Ахметов Алдияр 1980
Жазбаны өңдеу элементар объектә түрінде шығады. Мұндай объект
Жазбаларды сипаттау үшін, оның атауы, берілген өрісте сақталатын
Type=Record
:;
:;
……………………
:;
end;
9. Сыртқы кітапханалар. Модульдер
Модульдер және олардың қолданылуы туралы айтпастан бұрын, Люйс
Иә бұл өте жақсы ара ұясы, - деп
Ал мен сізге тышқан қақпаны не үшін керек
Қиын, бірақ болады, - деп Сері жауап берді.
Білесің бе, - деп жалғастырды ол, үндемей тұрып,
Ал ол не үшін? – деп қызықты Алиса.
Акулалар тістеп алмауы үшін, - деді Ақ Сері.
Бұны мен өзім ойлап таптым. Атқа шығуға көмектесші.
Бәлішке арналған, - деді Алиса.
Онда оны өзімізбен бірге ала кетейік, - деп
Бұл оңай болмады. Алиса дорбаны қатты ұстап тұрды,
Әрине онда оған орын аз, - деп ескерді
Ол дорбаны ер тоқымға іліп қойды, одан сәбіздің
Ақ Серінің аты және қаруы қалай көрінгенін елестете
Borland Pascal сізге, үлкен саннан құралған тұрақтыларға, мәліметтер
Программалық модуль (Unit) тұрақтылар, мәліметтер типі, айнымалылар, процедуралар
Модуль құрамына кіретін, процедуралар және функциялар, мәліметтер типін
Модуль құрылымы программа құрылымына ұқсас. Модульдің ішіндегі барлық
Модульдер программаға оның атын uses компилятор нұсқауында
Uses Dos, Crt;
Аталған модульдердің құрамындағы барлық ішкі программалар, айнымалылар, типтер
Ескерту. Модульдердің аттары оларды хабарлағанда үтірмен бөлінеді, ал
System модулі
System модулі барлық құралдар үшін, төменгі деңгейлі ішкі
System модулі Borland Pascal-дың барлық стандартты және құрылған
Ескерту. System модулі программаға автоматты қосылады (үнсіз келісім
Стандартты емес модуьдерді пайдалану программаларды стандарттау мен құрылымдылығының
Осындай алғы сөзден кейін, оқушының стандартты емес модульдерді
1. Модуль құрылымы
Модуль (unit) келесі бөліктерден тұрады:
аты немесе тақырыбы (мысалы, unit Мy_Мodyl);
интерфейс немесе хабарламалар бөлімі (Interfase);
орындаушы бөлігі немесе іске асыру бөлімі (Implementation);
Бұнда көрсетілген модуль бөлімдерінің тізбегі міндетті болып табылады,
Модуль тақырыбы
Модуль тақырыбы unit түйінді сөзінен және бірегей атаудан
Модуль интерфейсі
Interface {бұл бөлімнің Uses-тен басқа барлық объектілері, мәліметтер
[Uses … {Берілген модуль пайдаланатын, модульдердің ататры
[Cons … {Осы модуль қосқан программаға немесе
[Var … {Программада көрінетін немесе басқа
[Procedure…{Формальды параметрлер сипаттамасымен толық процедураның атауы келтіріледі}]
…{Осы моудьді іске қосқан программа немесе басқа модуьдерден
Модульдің орындаушы бөлігі
[Uses … {Берілген орындау бөлігінде пайдаланылған және
[Lаbel… {Берілген модуль бөліміндегі, ішкі программаларда пайдаланылған таңбалар
[Сonst… {Берілген модуль бөліміндегі ішкі программаларда пайдаланылған және
[Var … {Берілген модуль бөліміндегі ішкі
[Procedure…{Interface-те сипатталған процедураның қысқаша немесе толық аты келтіріледі}]
{Процедура денесі}
[Function{Interface-те сипатталған функцияның қысқаша немесе толық аты келтіріледі}]
{Функция денесі}
Көріп отырғаныңыздай, бұл бөлімде интерфейсте сипатталған модульдің барлық
Инициализация бөлімі
Бұл бөлім, Assign процедурасының көмегімен сол немесе басқа
Бөлім Веgin сөзімен басталып, одан кейін атқарушы операторлар
Егер программада да және оның модулінде де айнымалы
программада көрінбейді. Оған программада қатынауды, осындай айнымалының алдына
Егер модуль айнымалыса мен ішкі программаның жергілкті
Сонымен қатар, квалификатор көмегімен ішкі программалардың ауқымды айнымалыларын
Егер сіздің программаңызға модуль қосылған, ал интерфейсте басқа
Қорытынды
Сонымен қорыта келіп Файл дегеніміз – мәліметтер сақтауға
Ең қарапайым файл типі мәтіндік файл болып табылады.
Алдыңғы тақырыпта сіз мәтіндік файлдарды ашуды, оған ақпараттарды
Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз
Егер мәтіндік файлдардағы жазбалар саны белгілі болса, онда
болатындығын қарастырыралық. Жоғарыда айтылғандай мәліметтерді файлдан оқу, оның
Біздің программамыз мәліметтерді өңдей алуы үшін, біз оған
Сонымен қатар, типті файлдармен жұмыс істегенде де, assign(
Типті файлдарға мәліметтерді жазу write() процедурасы арқылы жүзеге
Титі файлдар тікелей қатынау файлдарына жатады, ол
Типті файлдан мәліметтерді оқу үшін read( ) процедурасын
Массив анықтамасында айтылғандай, массив дегеніміз құрылымына және қолдану
Сонымен біз осы курстық жұмыста файлдардың түрлерін толық
Пайдаланылған әдебиеттер тізімі
Вирт Н.Алгоритмы и структуры данных. М.; Мир, 1982.
Бондарев В.М., Рублинейкий В.И., Качко Е.Г: Основы программирование.
Дал У., ДейскстраЭ., Хоор К. Структурное прогрммированием М;
Даулеткулов А.Б. Олимпиады по информатике. Алматы. ИНТ. 2004
Марченко А.И., Марченко Л.А. Программирование в среде Turbo
Федоренко Ю. Алгоритмы и программы на Turbo Pascal.
Балапанов Е.Қ. Бөрібаев Б.Б. Дәулетқұлов А.Б. Жаңа информациялық