Мәтіндік файлға мәліметтер жазу және оқу
МАЗМҰНЫ
КІРІСПЕ.......................
І. БІР ӨЛШЕМДІ МАССИВКЕ СИПАТТАМА
1.1. Массив туралы жалпы түсінік.......................
1.2. Бір өлшемді массив........................
ІІ. ЕКІ ӨЛШЕМДІ МАССИВТІҢ ПРОГРАММАЛАУДА ҚОЛДАНЫЛУЫ
2.1. Екі өлшемді массив........................
2.2. Мәтіндік файлға мәліметтер
жазу және оқу...........................
2.3. Массивтерді сорттау және іздеу.........................
2.4. Масссив элементтерін пайдалана отырып есептер шығару............24
ҚОРЫТЫНДЫ.....................
ПАЙДАЛАНЫЛҒАН
ӘДЕБИЕТТЕР....................
КІРІСПЕ
Жоғарғы деңгейлі программалау тілдерінің бірі − Паскаль тілі болып табылады. Оның алғашқы вариантын 70-жылдары Швейцариялық ғалым Н. Вирт жарыққа шығарған болатын. Қазіргі кезде Паскаль тілінің кеңейтілген ондаған диалектісі бар, оның ішінде IBM PC-ге үйлесімді дербес компьютерлер жұмыс істей алатын Турбо Паскаль диалектісінің варианттары да жеткілікті.
Бейсик
тілі сияқты, Паскаль оқып-үйренуге
жеңіл, түрлі салалық
- тіл алгоритм құрылымын сақтап құрылған. Мұнда программаны бірте-бірте дамыту арқылы жинақты түрде құруға болады. Ол программалау тәсілін үйрену үшін де қажет;
- тілге дамытылған берілгендер типтері енгізілген. Олар өңделетін берілгендер элементтерін толық сәйкестендіріп сипаттауға және жаңа берілгендер типтерін енгізуге мүмкіндік береді;
- мұнда кішігірім жеңіл программалармен бірге күрделі құрылымды программаларды құру да мүмкін;
- тіл синтаксисі қиын емес;
- нұсқаулардың (операторлардың) саны мүмкіндігінше азайтылған, т.б.
Паскаль
тілінде құрылған программаны
мәшинелік кіріспе тілге
Паскаль тілі бұрын
құрылған (Фортран, Алгол және
т.б.) программалау тілдерінен
І. МАССИВ ТУРАЛЫ ТҮСІНІК
1.1. Массив туралы жалпы түсінік
Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болаты. Егер массивке кестелік берілгендер жазылса (матрица), онда элементтері екі индекс бойынша нөмірленеді.
Массив сипаттамалары:
- Типі – массив элементтерінің жалпы типі;
- Көлемі – массив индекстерінің саны;
- Шектелімі - әрбір индекстердің шектеу бойынша сәйкестігі;
- Пішімі – көлем және шектеулер жиындары.
Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады.
Массивтің кез келген элементтерімен жұмыс істегенде программалау барысында олардың индексінің мәні типтер немесе айнымалылар бөлімінде сипатталған шектеуден аспауы тиіс. Егер массив индексінің мәні сипатталған шектеуден асып кетсе онда, смнтаксистік қате тіркеліп экранда «Index type is not compatibie with declaration» деген сөз тіркесі шығарылады. Массивтер қолданылатын программаларда «{R+}» директивасын жазу арқылы массивтің шектеулерін тексеруге болады. Егер программада «{R+}» директивасы беріліп, массив индексі шектеуден асып кетсе, онда экранға "Range check error” сөз тіркесі шығарылады. Массивтерді программада қолдану үшін Turbo Pascal программалау тілінде оларды бірден var бөлімінде сипаттау жолы қарастырылған.
Программалау тілінде индексті айнымалылардың жиынтығы - массивтер деп аталынады. Массивтерді программада қолдану үшін, оларға белгілі бір ат беріледі. Содан соң программаның VAR бөлімінде ARRAY қызметші сөзімен сипаттап, компьютердің жадынан массив элементтеріне орын бөледі. Массивтер бір өлшемді және екі өлшемді (матрицалар) болып екіге бөлінеді. Массив элементтерін өндіру және шығару цикл арқылы жүзеге асырылады. Екі өлшемді массивтердің бірінші индексі қатардың, ал екіншісі - бағанның номерін білдіреді. Екі өлшемді массивтерді ендіргенде екі цикл ұйымдастырылады, сыртқы цикл – қатарлар бойынша және ішкі цикл - бағандар номері бойынша жүргізіледі.
Массивке кіретін
- Массив өлшемі оның элементінің индекс санымен анықталады.
- Массивтің элементтерінің типі массивтің типін анықтайды.
- Массив элементтерінің саны оның көлемін анықтайды.
Мысалдар: А массиві берілген болса, оның тұрмыста тізбектелген сандарды, сызықтық кестелік мәліметтерді көп пайдаланамыз. Оны бірөлшемді массив ретінде қарастыруға болады.
Мысалы: 1.5, 6.5, -8.9, 0.4, сандарының тізбегі бірөлшемді массивке мысал бола алады. Оған А деген ат беріп, массивтің әрбір элементін массив атымен белгілейміз. Әрбір элементін ажырату үшін массив атауының жанына тік жақшаға алып элементтің индексі жазылады.
Мысалы
А[1]=1.5
A[2]=6.5
A[3]=-8.9
A[4]=0.4
Берілген массивтің негізгі параметрлері мынадай:
өлшемі: бір өлшемді
массив типі: нақты
көлемі: 4-ке тең
Бір өлшемді массивтер сызықтық кесте түрінде кескінделсе, ал екі өлшемді массивтер тікбұрышты кесте түрінде кескінделеді. Жалпы бір өлшемді массив математикадағы «вектор», ал екі өлшемді массив «матрица» ұғымдарымен парапар. Екі өлшемді массивтерді келесі сабақта қарастырамыз.
Массивтермен жұмыс жасау үшін оны программада алдын ала сипаттап алу керек. Массивті айнымалылар бөлімінде былайша сипаттайды:
VAR массив ты:ARRAY[индекс типі] OF элемент типі;
Мысалы нақты 40 элементтен тұратын А массивін айнымалылар бөлімінде былайша сипаттайды.
VAR А:ARRAY[1..40] OF REAL;
Массивті сипаттағанда индекстің үлкен мәні үшін кез-келген 255-тен аспайтын санды алуға болады, бірақ программада пайдаланылатын индекстің мәні оның берілген ең үлкен мәніне дейін болуы шарт емес. Мысалы массивті сипаттағанда ARRAY[1..255] деп жазып, программаны орындағанда і<255 кез-келген мәнді пайдалануға болады. Программада і-дің мәні массивті сипаттағандағы оның ең үлкен мәнінен ешқашан артпауы керек.
Егер бірнеше массив бірдей базалық және индекстік типте болса, онда оларды массив ретінде сипаттағанда үтір арқылы бөліп жазуға болады.
VAR А,В,С:ARRAY[1..10] OF REAL;
Мұнда А,В,С масссивтер, олар нақты типтегі 10 саннан (элементтен) тұрады.
Паскаль тілінде массивтерге = тең, <>тең емес және := меншіктеу амалдарын қолдануға болады. Бұл амалдарға қатысатын массивтердің базалық және индекстік типтері бірдей болуы шарт.
Мысалы А және В массивтері былайша сипатталса:
VAR А,В:ARRAY[1..10] OF REAL;
Онда пайдаланылған амалдар төмендегідей нәтиже береді.
|
Өрнек |
Нәтиже |
A=B |
А массивінің әр элементінің мәні В массивінің сәйкес элементінің мәнінен тең болса, онда нәтиже ақиқат (True) болады. |
A<>B |
А массивінің ең аз дегенде бір элементінің мәні В массивінің сәйкес элементінің мәніне тең болмаса, онда нәтиже ақиқат (True) болады. |
A:=B |
A массивінің барлық элементтері B массивінің сәйкес элементтеріне ауысады. В массивінің элементтері өзгермейді. |
Ал массив элементтері үшін олардың типіне сәйкес кез-келген амал орындала береді.
Массивтерге қолданылатын амалдарды мысалдар арқылы орындап көру.
А (‘a’,’s’,’e’,’t’,’e’,’u’);
E (‘a’,’s’,’e’,’t’,’e’);
F (‘a’,’s’,’e’,’t’,’e’,’n’);
B (1,2,5,-9,6,4,0.3);
G (1,2,5,9,6,4,0.3);
C (‘bar’,’zhok’);
K (’zhok’,’bar’);
D (12,54,-25,45,10);
X (12,54,-25,45,10,47);
Bir (12,54,-25,45,10);
Eki ('zhok','bar');
Ysh ('a','s','e','t','e','n');
Tort (12,54,-25,45,10,47);
Bes (1,2,5,9,6,4,0.3);
Alti ('bar','zhok');
Zheti ('a','s','e','t','e');
Segiz ('a','s','e','t','e','u');
Togiz (1,2,5,-9,6,4,0.3);
1.2. Бір өлшемді массив
Ең қарапайым файл типі мәтіндік файл болып табылады. Бұл файлдағы мәліметтер типтік және типтік емес файлдардағыдай машиналық кодта емес, сан, әріп және басқа пернетақта символдары түрінде (ASCII кодында) беріледі. Сондықтан мұндай файлдар мазмұны оңай қаралады, оңай өзгереді және оларды кез келген мәтіндік редактордың, соның ішінде Pascal ортасының да көмегімен өзгертуге болады. Өздеріңіз білетіндей 2.1.2.-ні қара, мәтінді теру кезінде жаңа жолды енгізу үшін “Enter” пернесін басу керек, осы кезде арнайы код гинерацияланады—ол жол соңы коды, ал файлды сыртқы сақтау құрылғысына жазған кезде де арнайы код гинерацияланады - ол файл соңы коды. Мәтіндік файлды оқығанда бұл кодтар көрінбейді.
Есте сақтайтын бір мәселе жиын өлшемі 64 Кб аспауы керек. Массивті жариялаудың кейбір мысалдарын қарастырайық.
var Numbers: array [0..1000] of integer;
Names: array [1..10] of string;
Crit: array[shortint] of boolean;
CountAll: array[char] of integer;
Count: array['a'..'z'] of integer;
Мысал 1. Массив элементтерінің ішінен көп санда табу.
program FindMaximumInArray;
var a: array[1..10] of real;
i,max: integer;
begin
for i:=1 to 10 do begin
write(' элемент номерін енгізу ',i,' -> ');
readln(a[i]);
end;
max:=a[1];
for i:=2 to 10 do
if a[i]>max then max:=a[i];
writeln('Максимум ',max тең);
readln;
end.
Мысал 2. Жолдағы әріп санын анықтау.
program CountLetters;
var s: string;
count: array['a'..'z'] of byte;
ch: char;
i: byte;
begin
write('Жол қатарын енгізіңіз > ');
readln(s);
for i:=1 to length(s) do
if (s[i]>='a')and(s[i]<='z') then inc(count[s[i]]);
writeln('Жолдағы әртүрлі әріптер санын енгізу: ');
for ch:='a' to 'z' do
if count[ch]<>0 then
writeln(ch,': ',count[ch]);
readln;
end.
Келесі есепті шешіп көрейік: Пернетақтадан бірнеше сандар енгізіп, оларды “mayFile.in” атты мәтіндік типтегі файлға жазу керек.
Есепті кезеңдерге бөлейік:
- пернетақтадан мәліметтерді енгізу
- оларды “mayFile.in” атты файлға жазу керек.
Бірінші кезеңді орындау үшін:
- пернетақтадан енгізілетін сандардың мөлшерін (массив өлшемін) көрсету керек
- Сан мөлшерін білген соң, параметрлі циклді қолдану арқылы массив элементтеріне осы сандардың нақты мәндерін меншіктейміз
Осы әрекеттерді орындау үшін қолданылатын айнымалыларды сипаттаймыз. Айталық, санымыз 100-ден көп емес және олар басқа да процедураларда қолданылатындықтан, оларды ауқымды айнымалыларды баяндау блогында сипаттаймыз.
рrogram Misal_F1;
San: array [1..100] of integer;
Мәліметтерді енгізу процедурасы келесі түрде болады:
procedure init; begin readln (SanMolcheri);
for i:=1 to SanMolcheri do
Мәліметтерді өңдеу процедурасы әзірге бізге қажет емес, сондықтан ол қызмет атқармай-ақ қойсын.
procedure work ;
begin
end;
Енді екіншісі кезеңді қарастырайық, яғни мәліметтерді «mayFile.in» атты мәтіндік типтегі файлға жазу керек. Алдымен өз файлмызды байланыстыратын, айналымның атауын беру керек.Айталық, ол айналымның атауы FileOut болсын, содан кейін біз оны мәтіндік файл ретінде сипаттаумыз керек. Бұл айнымалыны шығару процедурасында пайдаланатын болғандықтан, оны жергілікті айнымалы ретінде сипаттаймыз:
var
FileOut: text;
Одан кейін біз программаға, “мәтіндік” типтегі FileOut атты айнымалының, біздің “mayFile. in” атты нақты файлмызды белгілейтінін көрсетуіміз керек. Ол үшін assign(Name Var, Name File)процедурасы қолданылады. Name Var—бұл файлды белгілеу үшін берілген айнымалы аты, біздің жағдайда Name Var—дың орнына File Out сөзін жазасыз. NameFile—бұл біз жұмыс істейтін файлдың аты, біздің жағдайда”mayFile.in”.
Файл аты мен оның кеңейтілуінен басқа орналасқан орнына қарай сипатталатыны да белгілі. Мысалы,”c,\bp\bin\MyFile.in”. Ал егер толық аты берілмеген жағдайда, үнсіз келісім бойынша сіздің программаңыз орналасқан ағымдағы каталог қолданылады. Енді сіз берілген файлды ашып, оған мәліметтер жазылатындығын көрсетуіңіз керек. Ол үшін rewrite (Name Var) процедурасы қолданылады. Мұндағы, Name Var-бұл файлды белгілеу үшін берілген айнымалы аты, біздің жағдайда Name Var—дың орнына FileOut атауы жазылады. Rewrite (Name Var) процедурасы—файлды жазу үшін ашады және көрсеткішті файлдың басына орналастырады.
Енді мәліметтерді файлға жазуға бәрі дайын. Ол үшін бұрынан белгілі 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з
- КурсордыExi процедурасын сипаттайтын жолдың басына қойыңыз;
- Негiзгi менюдi Debug iшкi менюiн ашыңыз;
- Add brekpoint… әрекетiн тандаңыз;
- Enter пернесiн басыңыз.
Экранға Add brekpoint… (тоқтату нүктесiн қосу) сұхбат терезесi шығады. ”Line number” (жол нөмері)өрісінде, курсор тұрған жолдың нөмірін көрсетіп тұрады, ол Exi процедурасын сипаттайтын жолдың басын көрсетеді.
“Ok” батырмасын (сұхбат терезесіндегі) немесе “Enter” пернесін басыңыз.
Редактор терезесіндегі бұл жол басқа түспен бөлінеді. Енді Ctrl+F9 пернелерін басу арқылы программаны іске қосыңыз. Пернетақтадан бастапқы мәндерді енгізіңіз. Мәліметтерді енгізген соң программа жұмысын тоқтатады және компьютердің экранында қайтадан редактор терезесі шығады. Яғни, біз өзіміздің әрекеттеріміз арқылы программа жұмысын көрсетілген жолда тоқтатуға нұсқау бердік. Жұмысты қайтадан жалғастырву үшін “Ctrl+F9” пернелерін басуымыз керек немесе F7 пернесін пайдаланған тиімді және Exi процедурасының қалай жұмыс істейтінін бақылап көре аламыз.
Бұл әрекеттер, программаның жеке бөліктерімен жұмыс жасағанда (жүріп өткенде) тиімді, себебі үлкен өлшемді программаларды толығымен жүріп өту жалықтырады және керек емес. Олай болса, программалаудың құрылымдылық тәсілін қолдай отырып бізде бары:
- Жеке модульдермен “жұмыс істеу” (программалау) мүмкіндігі.
- Бір деңгейдегі “ойша” машиналардың тәуелсіздігі, программаның жекеленген бөліктерін, программаның басқа бөліктеріне әсер етпей тәуелсіз жетілдіруге мүмкіндік береді. Э. Дейкстр атап өткендей: “... программаны жетілдіру, бір түрдегі (ойша) машиналардың басқа қолайлы машиналарға ауысуынан туындайды”.
- Құрылымдылық программаның жеке бөліктерімен жұмыс жасау.
Процедура мәтінімен жүріп өткенде құрама операторлардың жұмысына көңіл бөліңіз.
{массив элементтерiн бос орын аркылы жолга жазу}
{j-цикл аякталган сон, курсорды жана жолга кошiру}
writeln(FileOut);
Тоқтату нүктесін алып тастау үшін, келесі әрекеттерді орындаймыз:
- Негізгі менюді белсенділеңіз;
- Негізгі менюден Debug ішкі менюін ашыңыз;
- Breakpoints пернесін басыңыз.
- Enter пернесін басыңыз.
Экранда программаға қойылған барлық тоқтату нүктелерінің тізімі көрсетілген, Breakpoints… (тоқтату нүктелері) сұхбат терезесі шығады.
- Қажетті элементті белгілеңіз;
- “Delete” (сұхбат терезесінен) батырмасын немесе “D” (пернетақтадан) пернесін басыңыз.
Белгіленген тоқтату нүктесі тізімнен алынып тасталады. Егер сіз барлық тоқтату нүктесін алып тастағыңыз келсе-- “Clear all” батырмасын басу керек.
Тапсырма
- Егер exi ішкі программасындағы write және writeln процедураларындағы бірінші параметр FileOut көрсетілмесе San массиві қайда жазылған болар еді?
- Егер осы параметр тек writeln процедурасында көрсетілмеген болса не өзгереді?
Мына мысалды пайдалана отырып келесі жылға күнтізбе жасаймыз, яғни күн мен ай номерлерін енгізе отыра апта күндерін шығарамыз.
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;

- Мәшһүр Жүсүпов-Өмір баяны
- МББЖ Access
- МВД России
- МВД России в системе правоохранительных органов
- МВД России. История и реальность
- М.Вебер
- М.Вебер
- Мән мен мазмұн, Негізгі құралдар
- Мәселелері және жетілдіру бағыттары
- Мәселелік дәріс. Қоршаған орта компоненттерінің физико-химиялық анализ әдістері
- Мәселені-бейімделу психотерапия
- Мәтіндік құжатты пішімдеу форматтау
- Мәтіндік редактор MS Word
- Мәтіндік семантикалық кеңістік құрылымындағы мәтін мазмұны мен мәні және мәтін талдаудағы жеке макрокомпоненттердің маңызы