Массивті сипаттап болғаннан кейін, операторлар бөлімінде массив элементтеріне жай айнымалылармен орындалатын әртүрлі амалдар қолдануға болады. Оларды әр түрлі өрнектерде операндалар орнына, For, While, Repeat операторларының параметрлерінде, логикалық амалдарда салыстыру элементі ретінде пайдалануға болады. Бағдарламалық тексте массивтің әр элементі массивтің аты мен индексі арқылы жазылады. Элементтер индекстің мәндері арқылы реттеледі. Бір ескеретіні "индекс" және "индекстің типі" түсініктерін араластыруға болмайды. "Индекстің типі" түсінігі тек массивті сипаттайтын бөліктерде ғана қолданылады. Ал "индекс" түсінігі операторлар бөлігінде массив элементтерін белгілегенде қолданылады. Индекс ретінде әртүрлі өрнектер қолдануға болады. Көбінесе өрнектердің қарапайым бір түрі ретінде тұрақтылар мен айнымалылар қолданылады. Сондықтан да (массив элементтерін басқаша индексті айнымалылар деп атайды. Егер математикада индекс жай жақшаға алынып немесе төменгі регистрде жазылса, Паскаль бағдарламаларында массив индекстері тік жақшаларға алынып жазылады.
Массив элементтері бағдарламалардағы өрнектер мен меншіктеу операторларының сол жағында да, оң жағында да тұруы мүмкін. Массив элементтерінің негіздік типіне қолдануға болатын амалдарды массив элементтеріне де қолдануға болады, мысалы:
А (51, -15, 5.5, -8.1, 15, 0, 8) - А массиві 7 элементтен тұрады, элементтердің бағдарламада сипатталуы мен жазылуы:
While A[k]> =80 Do Begin S: =S+A[k]; k: =k+1 End; End;
5.1. Массив элементтерін ендіру және шығару
Массив элементтерін ендіру және шығару цикл арқылы жүзеге асырылады. Егер элементтерді ендіру үшін Read операторы қолданылса, онда элементтер бір қатарға жазылып ендіріледі. Ал Readln операторы қолданылса, онда әр элементті жаңа қатардан енгізу керек.
Бағдарламаның орындалу нәтижесінде N элементтен тұратын массив элементтерін пернетақтадан ендіруді ұйымдастырады, бағдарламада циклді оқығанда Read операторын N рет оқып тоқтап, массив элементтері мәндерін қашан пернетақтадан енгізгенше күтіп тұрады, бұл жерде К айнымалысы цикл параметрі қызметімен қоса массив индексі ретінде де қолданылып тұр.
Кейде бағдарламаның әр орындалуында массив элементтерінің мәндерін қайта-қайта пернетақтадан енгізу керек болады, бұл әсіресе енгізілетін элементтер саны өте көп болған кездерде бағдарлама орындаушы кісіні жалықтырып жібереді, сондықтан бұндай жағдайларда оларды бірден тұрақтылар бөлімінде енгізіп қойса да болады:
Массив элементтерін шығару процесі де ендіруге ұқсайды. Егер цикл денесінде элементтерді шығару үшін Write операторы қолданылса, онда массив элементтері экранға бір қатарға бір-біріне жабысып жазылып шығады. Бұл жағдайда нәтиженің көрнекілігін арттыру үшін Write операторында массивтен кейін бос орын жазылады. Ал Writeln операторы қолданылса, онда массивтің әрбір элементі жаңа қатарға жазылып шығады.
Кейбір есептеулерде белгілі бір шарттың орындалуына байланысты массив элементтерін іздеп табу керек болады. Ол үшін цикл арқылы массивтің барлық элементтерін берілген шамамен салыстыру процесін ұйымдастыру керек. Егер циклдің әр орындалуында массивтің жаңа элементі берілген шартты қанағаттандырса, онда бұл элемент ізделінген элемент болып табылады. Мысалы:
1. Массивтің 5-ке тең элементтерін экранға шығару:
…….If A[K]=5 Then Write(A[K], ' ');……
2. Массивтің жұп элементтерінің нөмірлерін (индекстерін) шығару:
…….If A[K] Mod 2=0 Then Write('K=', К, ' ')…….
3. Массивтің 7-ден үлкен және 15-тен кіші элементтерінің санын табу:
N:=0; .... If (A[K]>7) And (A[K]< 15) Then N:=N+1; …….
Writeln('N=', N);
4. Массивтің 10-нан үлкен элементтерінің қосындысын табу:
S:=0; ……. If A[K]>10 Then S:=S+A[K]; …….
Writeln('S=', S );
5. Массивтің 5-тен кіші элементтерінің көбейтіндісін табу:
Р:=1; ……. If A[K]<5 Then P:=P*A[K]; …….
Writeln ('P=', P);
Бақылау сұрақтары мен тапсырмалары
1. Массивтер ұғымы, олардың бағдарламада сипатталуы.
2. Бір өлшемді массив элементтерін ендіру және шығару.
3. Екі өлшемді массив элементтерін ендіру және шығару.
4. Бір өлшемді массив элементтерін реттеу.
5. Екі өлшемді массив элементтерін реттеу.
6. Массивтердің типтер бөлімінде сипатталуы.
7. Матрицадағы 0 – ге тең қатарларды алып тастап, қайтадан шығарыңыз.
8. Матрицаның теріс сандары жоқ қатарларындағы элементтер қосындысын табыңыз.
9. Матрицаның оң сандары жоқ бағандарындағы элементтер қосындысын табыңыз.
10. Матрицаның барлық теріс элементтерін 0 – мен ауыстырып шығыңыз.
6. Жолдық қатарлар.
Бағдарламаларда кездесетін әр түрлі символдардан тұратын тізбектерді жолдық қатарлар деп атайды. Өрнектерде жолдық қатарлар апострофқа алынып жазылады.
Turbo Pascal-да жолдық қатарларға компьютердің жадынан 0 байттан 255 байтқа дейін орын беріледі(жолдық қатар ұзындығына - 255 символ, ұзындықтың мәніне - 1 символ).
Жолдық қатарлардан тұратын идентификаторлар String типі арқылы сипатталады. Идентификатордың типінен кейін тік жақшаның ішінде осы идентификатордың ұзындығының мәні неше символдан тұруы мүмкін екені көрсетіліп кетеді. Егер бұл мән көрсетілмесе, онда жолдық қатар ұзындығына компьютердің жадынан 255 символға дейін орын беріледі. Жолдық қатарлы идентификаторларды типтер бөлімінде (ТҮРЕ) немесе бірден айнымалылар бөлімінде сипаттауға болады. Сонымен қатар бағдарламалауда жолдық қатарлар тұрақты шамалар ретінде де қолданылады (таңдау селекторы тұрақтысынан басқа).
VAR X:String[17]; {X айнымалысының ұзындығы 17 символға дейін}
A: String[6J; {A айнымалысының ұзындығы 6 символға дейін}
5: String; {Б айнымалысының ұзындығы 255 символға дейін}
C:Ai; {Сайнымалысының ұзындығы 10 символға дейін}
6.1. Жолдық өрнектермен амалдар.
Операндалары жолдық қатар болып табылатын өрнектерді жолдық өрнектер деп атайды. Идентификаторларға жолдық айнымалылардың мәнін беру үшін меншіктеу операторы қолданылады. Егер меншіктеу операторы орындалғанда, символдар саны сипаттамалар бөлімінде көрсетілген шамадан асып кетсе, онда идентификатор қатардың сол жағынан бастап көрсетілген шамаға тең болатын символдарды ғана меншіктейді, ал оң жақтағы артық символдар алынып қалады.
…….
Var X:string[2];
Begin X:=’Aizhan’; {X-ке ‘Ai’ тіркесі ғана шығады}
Writeln (X);
…….
Жолдық қатарлармен біріктіру және салыстыру амалдарын орындауға болады. Біріктіру амалы бірнеше жолдық қатарды біріктіріп шығару үшін қолданылады. Біріктірілетін жолдық қатардың ұзындығы 255-тен аспауы тиіс. Мысалы:
Z:=X+' '+Y; {Z Тәуелсіздігіне 15 жыл - тіркесін меншіктейді}
Writeln(Z); {де, осы тіркесті экранға шығарады}
Жолдық қатарларды салыстыру амалы екі жолдық қатарды салыстыру үшін қолданылады. Қатарларды салыстыру солдан оңға қарай ең бірінші кездесетін бірдей емес символға дейін жүргізіледі. Егер қай жолдық қатардың бірдей емес символының ақпарат (информация) алмастыру стандартты кестесіндегі нөмірі үлкен болса, сол жолдық қатар үлкен деп есептеледі. Егер жолдық қатарлардың ұзындығы мен барлық символдары сәйкес келсе, олар тең деп есептеледі. Ал егер жолдық қатарлардың ұзындықтары әртүрлі болып, ал символдары сәйкес болып келсе, онда үлкені болып ұзындығы үлкен жолдық қатар есептеледі. Жолдық қатарлардың салыстыру амалдарының нәтижесі әрқашан бульдік тип болады.
'lntel'>' INTEL'
'Pentium'<'PENTIUM'
Duron '=' Duron'
"Celeron '<> 'Celeron '
'Hewlett '<= 'Hewlett Packard' '
6.2. Жолдық процедуралар мен функциялар
Жолдық қатардың ұзындығын есептеу үшін LENGTH функциясы қолданылады, нәтиженің типі 0-ден 255-ке дейінгі бүтін сан (Вуtе) болып табылады:
X:=LENGTH(A); //X идентификаторы Ажолдық қатарының ұзындығын меншіктейді. Writeln(LENGTH(A));//экранға А жолдық қатарының ұзындығы шығады.
Төмендегі бағдарламада X жолдық қатарының ұзындығы есептеліп табылып, ол бүтін сан болатын А идентификаторына меншіктелген:
PROGRAM Kat1;
VAR X:String; A:lnteger;
BEGIN X:='Pentium-ІІІ';
A:=Length(X);
Writeln('A= ', A);
Readln END.
Жолдық қатардан фрагмент көшіріп алу үшін COPY функциясы қолданылады:
COPY(A, N, M); //A жолдық қатарының N позициясындағы символдан бастап М символ көшіріп алады.
Writeln (СОРҮ('Ақтөбе қаласы', 7,6)); //экранға Ақтөбе сөзі шығады.
Жолдық қатарлар фрагменттерін біріктіру үшін CONCAT функциясы қолданылады.
CONCAT(X, A); // функциясы Х және А қатарларын біріктіреді.
Жолдық қатардың ішінде тұрған бір фрагменттің орнын анықтау үшін POSфункциясы қолданылады. Бұл функция мәнінің типі бүтін және жолдық қатарда берілген фрагменттің басталатын позиция нөміріне тең болады. Ал еге жолда ондай фрагмент кездеспесе онда нәтиже 0- ге тең болады.
POS(X, A); // Х фрагментінің А қатарындағы басталатын нөмірі.
Жолдық қатардан бір фрагмент өшіріп тастау үшін DELETE процедурасы қолданылады.
DELETE(A, N, M); // А жолдық қатарынан N позициясындағы символдан бастап М символ өшіріледі.
Жолдық қатарға бір фрагмен қосу үшін INSERT процедурасы қолданылады.
INSERT(A, X, N); // X жолдық қатарының N-ші позициясынан бастап A фрагментін қою.
Латын алфавитінің кіші әріптерін бас әріпке айналдыру үшін UPCASE функциясы қолданылады.
UPCASE(X); // Х жолдық қатарындағы кіші әріптерді бас әріпке өзгертеді.
STR процедурасы кез-келген сандық шаманы жолдық қатарға қою үшін қолданылады.
STR(150, X); // 150 саны Х жолдық қатарының ішіне орналасады.
Жолдық қатарды сандық шамаға айналдыру үшін VAL процедурасы қолданылады.
VAL(X, A, C);
Бақылау сұрақтары мен тапсырмалар
1. Жолдық қатарлар дегеніміз не?
2. Жолдық қатарлардың сипатталуы.
3. Жолдық қатарларға қандай амалдар қолдануға болады?
4. Жолдық қатардың ұзындығы қалай табылады?
5. Жолдық қатардан фрагмент қалай көшіруге болады?
6. Жолдық қатарларды біріктіру үшін қандай функция қолданылады?
7. Жолдық қатардың ішінде орналасқан фрагменттің орны қалай анықталады?
8. Жолдық қатардың ішінен фрагмент өшіру үшін қандай процедура қолданылады?
9. Жолдық қатарға фрагмент қосу үшін қандай процедура қолданылады?
10. Латын алфавитінің кіші әріптерін бас әріп етіп шығару үшін қандай функция қолданылады?
11. Сандық шаманы жолдық қатарға айналдыру үшін қандай процедура қолданылады?
12. Жолдық қатарды сандық шамаға айналдыру үшін қандай процедура қолданылады?
13. Пернетақтадан егізілген қатардағы барлық әріптер санын табу бағдарламасын құрыңыз.
14. Пернетақтадан енгізілген қатар символдары сандық шамалардан түратындығын анықтайтын бағдарлама қүрыңыз.
15. Пернетақтадан енгізілген қатар символдарын өсу бойымен реттеп шығаратын бағдарлама құрыңыз.
16. Пернетақтадан енгізілген қатардағы ең ұзын сөзді табыңыз. Қатардағы создер бір-бірімен бір бос орын арқылы жазылады деп есептеп алыңыз.
17. Пернетақтадан енгізілген қатардағы ең көп кездесетін әріпті табу бағдарламасын құрыңыз.
18. Пернетақтадан енгізілген қатардағы бірінші символмен сәйкес келетін барлық символдарды алып тастау бағдарламасын құрыңыз.
19. А қатары берілген. Қатардағы қайталанбайтын символдар санын табу бағдарламасын құрыңыз.
20. А қатары берілген. Қатардың жүп нөмірлі орындарында тұрған символдарын өшіріп тастау бағдарламасын құрыңыз.
21. Екі А және В жолдық қатарлары берілген, А қатарынан В қатарында кездесетін символдарды алып тастау бағдарламасын құрыңыз.
22. Екі А және В жолдық қатарлары берілген, А қатарында В қатары неше рет кездесетін анықтау бағдарламасын құрыңыз.
23. Екі А және В жолдық қатарлары берілген, А қатарындағы символдардан В қатарын құрастыруға болатынын анықтау бағдарламасын құрыңыз.
24. Екі А және В жолдық қатарлары берілген, А қатары мен В қатарында бір орында тұрған бірдей символдардың санын табу бағдарламасын құрыңыз.
25. Екі А және В жолдық қатарлары берілген, А қатарында да, В қатарында да кездесетін барлық символдардың санын табу бағдарламасын құрыңыз.
26. Екі А және В жолдық қатарлары берілген, А қатарында да, В қатарында да кездесетін барлық символдарды алып тастау бағдарламасын құрыңыз.
27. Екі А және В жолдық қатарлары берілген, А қатарында да, В қатарында да кездесетін барлық символдардан тұратын С жолдық қатарын шығару бағдарламасын құрыңыз.
28. Екі А және В жолдық қатарлары берілген, А қатарында да, В қатарында да кездесетін барлық жұп нөмірлі орындарда тұрған символдарды анықтаңыз.