Автор работы: Пользователь скрыл имя, 31 Января 2013 в 13:25, реферат
Паскаль тілі бұрын құрылған (Фортран, Алгол және т.б.) программалау тілдерінен маңызды ерекшелігі ол құрылымдық программалау идеясын өмірге біртіндеп енгізу. Паскаль тілінің тағы бір ерекшелігі ол деректер құрылымының концепциясының алгоритм түсінігімен қатар программалаудың негізінде жатқан фундаменталды түсініктер қатарына кіруі.
КІРІСПЕ...................................................................................................................3
І. БІР ӨЛШЕМДІ МАССИВКЕ СИПАТТАМА
1.1. Массив туралы жалпы түсінік...............................................................5
1.2. Бір өлшемді массив................................................................................8
ІІ. ЕКІ ӨЛШЕМДІ МАССИВТІҢ ПРОГРАММАЛАУДА ҚОЛДАНЫЛУЫ
2.1. Екі өлшемді массив.............................................................................14
2.2. Мәтіндік файлға мәліметтер жазу және оқу......................................15
2.3. Массивтерді сорттау және іздеу........................................................22
2.4. Масссив элементтерін пайдалана отырып есептер шығару............24
ҚОРЫТЫНДЫ......................................................................................................29
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР..................................................................31
Енді мәліметтерді файлға жазуға бәрі дайын. Ол үшін бұрынан белгілі Write() және Write() процедураларын қолданамыз. Жазулар экранға емес файлға жазылуы үшін, мәліметтерді шығару бағытын көрсетеміз. Яғни, жақшаның ішіндегі мәліметтерді жазатын айнымалы атауының алдында, бізді файлмен байланыстыратын assign() процедурасындағы айнымалы атуын көрсетеміз. Айталық, берілгендерді шығыс файлына бір жолға жазу керек болсын, бұл жағдайда бірінші мән ол енгізілетін сандардың мөлшері болады. Жаңа жолға көшу болмайтындықтан,Write() процедурасын қолданып, бастапқыда файлға SanMolcheri айнымалысын мәнін жазамыз да, содан кейін параметрлі циклді пайдаланып енгізу процедурасында енгізілген сандарды жазамыз. Барлық мәліметтер файлға жазылып болған соң, файлды жазу керек. Ол Close() процедурасының көмегімен орындалады.
Close (Name Var) процедурасы—файлдың соңына, файл соңы белгісін жазып, оны жабады. Егер файл Close() процедурасымен жабылмаған болса, онда мәліметтер сақталынбайды.
Мәліметтерді файлға жазу процедурасы қандай болатынын қарастырып көрелік:
procedure exi;
FileOut:text;
негізі программаның мәтіні өзгеріссіз қалады
begin
Осы программаны ‘Misal_F1’ атымен дискіге жазып, оны орындауға жіберіңіз. Программа жұмысын аяқтағаннан кейін, BP редакторының көмегімен біздің программамыз құрған `mayFile.in` файлын ашып, оның мазмұнын көріңіз. Өкінішке орай сандар файлда бос орынсыз тіркесіп жазылған болып шығады. Мұндай жазбадан қандай сандар жазылғанын анықтау қиындық тудырады. Бұл жағдайды қалай түзетуге болады?
Ол үшін, сандары бір бірінен дәл ажыратудың екі мүмкіндігі бар:
а.әрбір мәнді бос орын (``)белгісі арқылы бөліп жазу
в.әрбір мәнді жаңа жолға жазу (баған бойынша).
Бірінші жағдайда енгізілетін айнымалы атауынан кейін бос орын (``) белгісін қоямыз.
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` атауымен берілген файлға, бір жолға және бос орын арқылы жазылатындай етіп , Misal_F1 программасын өзгерту керек. Жаңа программаны Misal_F2 атымен сақтаңыз.
2. Misal_F1 программасында берілген мәліметтер `mayFile2.in` файлына әрбір мәлімет жаңа жолдан жазылатындай етіп, өзгерту керек. Жаңа програманы Misal_F3 атымен сақтаңыз.
3.Пернетақтадан 20 жол мәтін енгізіп, оны шығу файлына жазатын, Misal_F4 атауымен сақталатын программа жазыңыз.
ІІ. ЕКІ
ӨЛШЕМДІ МАССИВТІҢ
2.1. Екі өлшемді массив
Turbo Pascal программалау тілі бір
өлшемді массивтермен қатар
Екі өлшемді немесе көп өлшемді массивтермен
жұмыс істеу үшін, олар сипаттау бөлімінде
көрсетілуі тиіс. Екі өлшемді массивтерді
тік төртбұрышты таблицалар немесе матрицалар
деп қарастыруға болады. Сондықтан мұнда
баған және жол ұғымдары өз мағыналарында
қолданылады.
Екі өлшемді массив
элементтері екі индекспен анықталады.
Айталық mat[3,2]:=7 түріндегі өрнек mat матрицасының
үшінші жолы мен екінші бағанының қиылысуындағы
элементі 7-ге тең екенін білдіреді. Екі
өлшемді массиверді енгізу үшін for…do цикл
операторлары қолданылады.
Алдыңғы тақырыпта біз мәтіндік файлдарды ашуды, оған ақпараттарды жазуды үйреніңіздер. Write()- процедурасын пайдаланып мәліметтерді бір жолға, ал writeln()—процедурасын пайдаланып оларды бағанға жазуды көрдік. Осы білгендерімізді пайдаланып, келесі есепті шешіп көрелік:
Пернетақтадан, өлшемі 100х100, элементтері бүтін сан болатын, екі өлшемді массив енгізіледі. Осы массивті элементтерінің орналасу реті бойынша, `МayFile5.in` атымен, мәтіндік файл түрінде жазатын, программа жазу керек.
Бұл есеп те, алдыңғы тақырыпта қарастырылған есепке ұқсас, екі негізгі кезеңнен тұрады:
1.Пернетақтадан мәліметтерді енгізу
2.Оларды атауы `МayFile5.in` болатын, файлға жазу керек.
Бірінші кезеңді орындау үшін :
Мәліметтерді енгізу процедурасының мәтінін Misal_8 программасынан алуға болады. Ал мәліметтерді өңдеу процедурасы өзгеріссіз қалатындықтан, Misal_F1программасындағыдай болады.
2.2. Мәтiндiк файлдан мәлiметтердi жазу және оқу
Массив элементтерін `МayFile5.in` файлына жазу процедурасының қандай болатындығын қарастыралық:
procedure exi;
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з
Экранға Add brekpoint… (тоқтату нүктесiн қосу) сұхбат терезесi шығады. ”Line number” (жол нөмері)өрісінде, курсор тұрған жолдың нөмірін көрсетіп тұрады, ол Exi процедурасын сипаттайтын жолдың басын көрсетеді.
Процедура мәтінімен жүріп өткенде құрама операторлардың жұмысына көңіл бөліңіз.
{массив элементтерiн бос орын аркылы жолга жазу}
{j-цикл аякталган сон, курсорды жана жолга кошiру}
writeln(FileOut);
Тоқтату нүктесін алып тастау үшін, келесі әрекеттерді орындаймыз:
Экранда программаға қойылған барлық тоқтату нүктелерінің тізімі көрсетілген, Breakpoints… (тоқтату нүктелері) сұхбат терезесі шығады.
Белгіленген тоқтату нүктесі тізімнен алынып тасталады. Егер сіз барлық тоқтату нүктесін алып тастағыңыз келсе-- “Clear all” батырмасын басу керек.
Тапсырма
Мына мысалды пайдалана отырып келесі жылға күнтізбе жасаймыз, яғни күн мен ай номерлерін енгізе отыра апта күндерін шығарамыз.
program Calendar;
type tWeekDay = (Mon,Tue,Wed,Thu,Fri,Sat,Sun,
{NoDay – ондай күн жоқ (мысалы, 30.02)}
tCalendar = array [1..12,1..31] of tWeekDay;
var CL: tCalendar;
m,d: byte; {айы және күні}
wd: tWeekDay; {апта күні}
begin
{массив құрамыз:}
{1. Күнтізбені " ондай күн жоқ" мағынасымен толтырамыз:}
for m:=1 to 12 do
for d:=1 to 31 do CL[m,d]:=NoDay;
{2. массив-күнтізбе құрамыз:}
m:=1; d:=1;
wd:=Mon;
repeat
CL[m,d]:=wd;
case m of
4,6,9,11: if d=30 then begin m:=m+1; d:=1; end else d:=d+1;
1,3,5,7,8,10,12: if d=31 then begin m:=m+1; d:=1; end else d:=d+1;
2: if d=28 then begin m:=m+1; d:=1; end else d:=d+1;
end;
wd:=tWeekDay((ord(wd)+1) mod 7);
until m=13;
{экранға шығарамыз:}
repeat
write('айдың нөмірі > '); readln(m);
write('күн > '); readln(d);
case CL[m,d] of
Mon: writeln('Дүйсенбі');
Tue: writeln('Сейсенбі');
Wed: writeln('Сәрсенбі');
Thu: writeln('Бейсенбі');
Fri: writeln('Жұма');
Sat: writeln('Сенбі');
Sun: writeln('Жексенбі');
NoDay: writeln('Күнтізбеде ондай күн жоқ ');
end;
until false;
end.
Қорыта келгенде, екі өлшемді масссивке математикадағы матрица сәйкес келеді, яғни тікбұрышты таблица.
Көп өлшемді массивтердің жазылу мысалдары:
var Matrix: array[1..4,1..3] of real;
Cube3D: array[1..5,1..5,1..5] of integer;
Мәліметтерді мәтіндік файлға жазуды үйренген соң, енді оларды қайтадан файлдан қалай оқуға болатынын қарастырамыз.
Ол үшін `mayFile1/in` файлын пайдаланамыз. Мәліметтерді файлға жазу кезіндегідей, біздің файлмызды байланыстыратын айнымалыға атау беруіміз керек. Айталық, ол атау Fileln болсын, содан кейін біз оны мәтіндік файл ретінде сипаттауымыз керек. Бұл айнымалыны біз енгізу процедурасында пайдаланатын болғандықтан, сол процедураның жергілікті айнымалысы ретінде сипаттаймыз.
var
Filelnt:text;
Одан кейін біз программада, “мәтіндік типті ” Fileln айнымалысы, біздің
`mayFile1.in` атауымен берілген
нақтылы файлмызды
Енді файлдан мәліметтерді оқу үшін, берілген файлды ашуымыз керек. Ол үшін, reset (NameVar)—процедурасында қолданады, мұндағы NameVar-сіздің файлды белгілеуге берген айнымалыңыздың атауы, біздің жағдайымызда, ол NameVar-Fileln. Reset (NameVar) - процедурасы, мәліметтерді оқуға файлды ашады және курсорды файлдың басына орналастырады. Егер ондай жоқ болса, қателік туралы хабарлама береді. Енді мәліметтерді файлдан оқуға барлығы дайын болды. Ол үшін өзімізге бұрынан таныс Read() және Readln() процедураларын пайдаланамыз. Мәліметтерді оқу пернетақтадан емес, файлдан жүзеге асу үшін, мәліметтерді оқудың жолын көрсетеміз. Яғни, жақшалардың ішіне, assing()- процедурасының көмегімен біздің файлмызды байланыстырып тұрған, айнымалының атауын көрсетеміз.
`MayFile.in`файлындағы
Sanau айнымалысының мәнін оқытамыз, содан кейін параметрлі циклді қолданып, файлдағы сандардың мәндерін оқимыз. Мәліметтер толық оқылып болған соң, өзімізге таныс Close() процедурасын пайдаланып, файлды жабу керек.
Енді, мәліметтерді файлдан оқу процедурасы қандай болатындығын көрелік:
procedure lnit;
Информация о работе Мәтіндік файлға мәліметтер жазу және оқу