Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 17:54, курсовая работа
Осыған дейінгі қарастырылып келген мәлімет типтері қарапайым болып есептеледі. Себебі олар тек бір ғана обЪектіге яғни бір ғана санға немесе символға қатысты ғана қолданылады. Turbo Pascal-да бір типке жататын бірнеше элементтерден тұратын обектілерді де пайдалануға болады. Массив осындай бір типке жататын элементтерден құралатын құрылымдық тип болып табылады.
Жалпы Паскаль тілі программа құрушыларға өте ыңғайлы тіл. Оның логикалық құрылымы әр түрлі есептерді дәл шешуге көмегін тигізеді. Turbo Pascal тілін оқытып – үйретуден бастап, программалаудың қыр-сырын меңгертудің маңызы зор. Кез келген тілді үйрену оның алфавитінен басталады.
Осыған дейінгі қарастырылып келген мәлімет типтері қарапайым болып есептеледі. Себебі олар тек бір ғана обЪектіге яғни бір ғана санға немесе символға қатысты ғана қолданылады. Turbo Pascal-да бір типке жататын бірнеше элементтерден тұратын обектілерді де пайдалануға болады. Массив осындай бір типке жататын элементтерден құралатын құрылымдық тип болып табылады.
Жалпы Паскаль тілі программа құрушыларға өте ыңғайлы тіл. Оның логикалық құрылымы әр түрлі есептерді дәл шешуге көмегін тигізеді. Turbo Pascal тілін оқытып – үйретуден бастап, программалаудың қыр-сырын меңгертудің маңызы зор. Кез келген тілді үйрену оның алфавитінен басталады.
Turbo Pascal программалау тілінің де басқа тілдер сияқты, алфавиті бар. Программаның элементтерін жазуда қолдануға болатын символдар жиынтығын тілдін алфавиті дейміз.
Паскаль тілін 1970 жылы швейцарияның Цюрих қаласындағы жоғары техникалық училищесінің профессоры Никлаус Вирт ұсынған. Ол бұл тілді дүние жүзінде алғаш болып есептеу машинасын ойлап жасаған ұлы француз ғалымы Блез Паскальдің құрметімен атаған.
1979 жылы қабылданған стандартты Паскаль тілі басқа тілдерден қалыспайды. Сондықтан да қазіргі кезде Паскаль тілі кез-келген саладағы күрделі есептерді шешу үшін қолданады.
Қазіргі кездегі программалау тілінің арасында ең көп тараған тілдердің бірі Turbo Pascal универсалды программалау тілі. Бірақ оны жүйелік программаларда, транслятор, операциялық жүйелерді жазуда қолдану жақсы жетістіктер береді.
Паскаль тілін 1973 жылы швейцар математигі Никлаус Вирт жасап шығарады да, атақты француз математигі, физигі, философы және алғашқы есептеу машинасы - арифмометрді /1641/ жасаған Блез Паскальдің құрметіне "Паскаль" деп ат қойды.
Turbo Pascal тілінде жазылған программаның архитиктуралары әр түрлі компьютерлердің бірінен бірін ауыстыруға бір операциялық жүйенің екінші операторлық жүйеге ауыстыруға жеңіл. Сонымен қатар Turbo Pascal тіліндегі программалардың орындалу жылдамдығы біршама жоғары.
Turbo Pascal тілінің компиляторы қазіргі кездегі MSDOS, WINDOWS операциялық жүйеде жұмыс істей береді.
Паскаль тілі оқып үйренуге жеңіл, түрлі салалық информациямен жұмыс істеуде нәтижелі болғандықтан, дүние жүзінде көп тараған тілдердің бірі болып табылады.
Паскаль тілі:
Сондықтан бұл тілдің нақты ЭВМ - нің мүмкіндігіне байланысты бірнеше түрлері бар.
Біз өмір сүріп жатырған уақытымыз ақпараттық технологияның кеңінен даму кезі. Қазіргі кезде дүние жүзінде үш жүз миллионға жуық компьютер бар. Компьютер негізгі екі бөлікке бөлінеді: аппараттық бөлік және программалық бөлік. Компьютер программассыз ешқандай информацияны өңдеу операциясын орындай алмайды. Сондықтан компьютерлерге әртүрлі жұмыс атқаратын программалар жазылуы керек.
Алдымен программалар перфоленталарға жазылды, содан кейін төменгі дәрежелі программалау тілдерінде (Ассемблер) жазылды. Программаларды жазуды оңайлату үшін жоғары дәрежелі программалау тілдері жазылды. Мысалы: Бейсик, Фортран, Паскаль, Алгол, Ада, Си т.с.с. Солардың ішінен кең тарағандарының бірі Паскаль программалау тілі.
Элементтерінің саны алдын-ала белгілі бір типті индексті айнымалылардың жиынтығын массив деп атайды. Массивтің типі күрделі болып табылады. Массивтерді бағдарламада қолдану үшін, оларға белгілі бір ат беріледі. Содан соң бағдарламаның VAR немесе TYPE бөлімінде ARRAY қызметші сөзімен сипаттап, компьютердің жадынан массив элементтеріне орын бөледі. Жалпы жазылу түрі төмендегідей:
TYPE "массив aтауы"=ARRAY[X1] OFX2;
VAR "массив атауы":ARRAY[X1] OFX2;
мұндағы:
"массив атауы" - массивті белгілеген идентификатор, X, A, MAS т..б.
ARRAY - массив үғымын білдіретін қызметші сөз.
OF - қызметші сөз(бұл жерде жалғауларын білдіреді, мысалы бүтін шамалардан)
Х1 - массив индексінің типі, нақтыдан басқа барлық типтер қолданылады.
Х2 - массив элементінің негіздік типі.
Бағдарламада массивтерді сипаттаудың бірнеше жолдары бар. Алдымен типтер бөлімінде массивті бір идентификатор арқылы сипаттап алып, кейін айнымалылар бөлімінде массив атауын сол идентификатор арқылы сипаттауға болады. Сондай-ақ бірден айнымалылар бөлімінде де массивті толық сипаттап кетуге де болады.
Turbo Pascal бағдарламаларында бір циклдің ішінде екінші цикл, оның ішінде үшінші цикл т.с.с. бір-біріне қабаттастырып ұйымдастыруға болады. Егер бір циклдің денесінің құрамында басқа бір циклдер болса, ондай циклді сыртқы цикл дейді. Ал цикл басқа бір циклдің құрамында болса, ондай циклді ішкі цикл дейді. Сыртқы және ішкі циклдерді ұйымдастыру тәртібі жай циклдерді ұйымдастыруға ұқсайды. Тек қана мынадай ережені еске сақтаған жөн: "Ішкі циклдердің барлық операторлары сыртқы циклдің денесінде болуы шарт". Цикл ішіндегі циклдердің орындалу тәртібі мынадай:
Алдымен сыртқы циклдің параметрінің алғашқы мәні бойынша сыртқы циклдің орындалуының шарты тексеріледі, егер сыртқы циклдегі шарт орындалса, онда басқару цикл денесіндегі ішкі циклге беріледі.
Ішкі циклдің параметрлерінің барлық мәндері бойынша ішкі циклдің орындалуы толық тексерілгеннен кейін басқару сыртқы циклге беріледі.
Сыртқы циклдің параметрінің келесі мәні бойынша сыртқы циклдің орындалуының шарты тексеріледі, егер сыртқы циклдегі шарт орындалса, онда басқару қайтадан ішкі циклге беріледі.
Барлық циклдік операторлармен бағдарламалар құрғанда, Do, While, Repeat операторларынан кейін нүктелі үтір қойылмайтынын ескеру қажет. Егер цикл денелерінде басқаруды циклдің сыртындағы таңбаға көшіретін оператор кездессе, онда циклдің қайталануы бірден тоқтайды. Егер циклдің орындалу шарты басынан орындалмаса, онда цикл жүрмейді. REPEAT циклінде бағдарлама орындалуы цикл соңындағы шартқа бармай тұрып, цикл денесі міндетті түрде бір рет орындалады. Цикл денесінде басқаруды цикл сыртына жіберетін шартсыз көшу операторы тұрса, онда басқару Goto операторындағы белгісі бар цикл сыртындағы операторға беріліп, цикл ерте аяқталуы мүмкін.
Егер бағдарламада бірнеше массивтің индекстері мен негіздік типтері бірдей болса, онда оларды бір тізімге біріктіріп жазып сипаттауға болады, төмендегі мысалдарда элементтері нақты сан болатын А,В,С массивтерінің бәріне де компьютердің жадынан элемент бөлінген, сондықтан олар бір тізімге біріктіріліп сипатталған.
Массивтердің типтер бөлімінде сипатталуы:
CONST N=100; {N-элементтер саны}
TYPE Mas=Array[1..N] Of Real;
Element=(Ge,C,O,N,Na,K,Li,Cu,
Gaz=Array[Ge.. N] Of Integer;
VAR A,B,C:Mas; X:Gaz;
Массивтердің айнымалылар бөлімінде сипаттапуы:
CONST N=100;
VAR A,B,C:Array[1..N]Of Real;
D, E: Array [1.. 5] Of Char;
Mezgil:Array[ 1.. 10] Of String;
Y,Z: Array[1..20] Of Byte;
R:Arrayl'A'.-'Z'lOfChar;
P:Array[1.. 101] Of String;
Жоғарыда сипатталған массивтердің барлығының да элементтерінің бір индексі бар. Бұндай массивтерді бір өлшемді массивтер дейді.
Есептеулерде бір өлшемді массивтермен қатар көп индексті массивтер де кездеседі. Оларды индексінің санына қарай n - өлшемді массивтер деп атайды. Солардың ішінде Паскаль бағдарламаларында екі индексті массивтер кеңінен қолданылады. Оларды көбінесе матрицалар деп атайды. Матрица элементтерінің бірінші - индексі қатардың, екіншісі -бағанның нөмірін білдіреді.
Екі өлшемді массивтердің типтер бөлімінде сипатталуы:
CONST N=100; М=100;
TYPE Mas=Array[1..N) 1..M]Of Real;
VAR A: Mas;
Екі өлшемді массивтердің айнымалылар бөлімінде сипатталуы:
CONST N=100; М=50;
VAR A:Array[1..N, 1..M]Of Real;
B: Array[1 ..3,1 ..7] Of Integer;
Массивтердің өзімен жұмыс істеу үшін массивтің өз атауы қолданылады. Массивтің өзі тек қана "тең", "тең емес" және меншіктеу амалдарына ғана қатыса алады. Бұл амалдарға қатысатын массивтердің типтері мен элементтер саны бірдей болуы керек.
Мысалы мынадай массивтер берілсе:
VAR X, Ү: Array[ 1..5]Of Byte;
Бұл массивтерге келесі амалдар қолданғанда:
Х=Ү - егер массивтердің индекстері сәйкес элементтері тең болса, онда нәтиже "ақиқат" болады
Х<>Ү- егер массивтердің индекстері сәйкес элементтерінің кемінде біреуі тең болмаса, онда нәтиже "ақиқат" болады
Х:=Ү - X массиві Ү массивінің барлық элементтерін меншіктейді, ал Ү массивінің элементтері өзгеріссіз қалады.
Массивті сипаттап болғаннан кейін, операторлар бөлімінде массив элементтеріне жай айнымалылармен орындалатын әртүрлі амалдар қолдануға болады. Оларды әр түрлі өрнектерде операндалар орнына, For, While, Repeat операторларының параметрлерінде, логикалық амалдарда салыстыру элементі ретінде пайдалануға болады. Бағдарламалық тексте массивтің әр элементі массивтің аты мен индексі арқылы жазылады. Элементтер индекстің мәндері арқылы реттеледі. Бір ескеретіні "индекс" және "индекстің типі" түсініктерін араластыруға болмайды. "Индекстің типі" түсінігі тек массивті сипаттайтын бөліктерде ғана қолданылады. Ал "индекс" түсінігі операторлар бөлігінде массив элементтерін белгілегенде қолданылады. Индекс ретінде әртүрлі өрнектер қолдануға болады. Көбінесе өрнектердің қарапайым бір түрі ретінде тұрақтылар мен айнымалылар қолданылады. Сондықтан да (массив элементтерін басқаша индексті айнымалылар деп атайды. Егер математикада индекс жай жақшаға алынып немесе төменгі регистрде жазылса, Паскаль бағдарламаларында массив индекстері тік жақшаларға алынып жазылады.
Массив элементтері бағдарламалардағы өрнектер мен меншіктеу операторларының сол жағында да, оң жағында да тұруы мүмкін. Массив элементтерінің негіздік типіне қолдануға болатын амалдарды массив элементтеріне де қолдануға болады, мысалы:
А (51, -15, 5.5, -8.1, 15, 0, 8) - А массиві 7 элементтен тұрады, элементтердің бағдарламада сипатталуы мен жазылуы:
VAR A:ARRAY{ 1.. 7] of Real;
А[ 1]=51; А[2]=-15; А[3]=5.5; А[4]=-8.1; А[5]= 15; А[6]=0; А[7]=8
Массив элементтерінің индекстері өрнектер мен операторларда тік жақшаларға алынып жазылады:
Ү: =5*А[ 1]+SQR(A[2]+A[3]); X:=COS(A[5])+Sin(A[5]);
Fork:=1 To 10 Do Begin
Read(A[k]); Writeln(A[k]); A[k]:=A[k+1];
lfA[k]<5 Then S:=S+A[k];
While A[k]> =80 Do Begin S: =S+A[k]; k: =k+1 End; End;
Массив элементтерін енгізу және шығару цикл арқылы жүзеге асырылады. Егер элементтерді ендіру үшін Read операторы қолданылса, онда элементтер бір қатарға жазылып ендіріледі. Ал Readln операторы қолданылса, онда әр элементті жаңа қатардан енгізу керек.
..............................
Readln(N);
For K:=1 To N do Read(A[K]);
..............................
Readln(N);K:=1;
Repeat Read(A[K]; K:=K+1
Until K>N;
..............................
Readln(N); K:=1;
While K=<N Do Begin
Readln(A[K]); K:=K+1 End;
..............................
Бағдарламаның орындалу нәтижесінде N элементтен тұратын массив элементтерін пернетақтадан ендіруді ұйымдастырады, бағдарламада циклді оқығанда Read операторын N рет оқып тоқтап, массив элементтері мәндерін қашан пернетақтадан енгізгенше күтіп тұрады, бұл жерде К айнымалысы цикл параметрі қызметімен қоса массив индексі ретінде де қолданылып тұр.
Кейде бағдарламаның әр орындалуында массив элементтерінің мәндерін қайта-қайта пернетақтадан енгізу керек болады, бұл әсіресе енгізілетін элементтер саны өте көп болған кездерде бағдарлама орындаушы кісіні жалықтырып жібереді, сондықтан бұндай жағдайларда оларды бірден тұрақтылар бөлімінде енгізіп қойса да болады:
CONST N=5;
A:ARRAY[1..N]OF REAL=(40.5, 48, 47.1, 52.3, 11.2);
B:ARRAY[1..9]OF REAL={31,25,40, 1.5,48,54.7, 12.3,54.5,21);
Массив элементтерін шығару процесі де ендіруге ұқсайды. Егер цикл денесінде элементтерді шығару үшін Write операторы қолданылса, онда массив элементтері экранға бір қатарға бір-біріне жабысып жазылып шығады. Бұл жағдайда нәтиженің көрнекілігін арттыру үшін Write операторында массивтен кейін бос орын жазылады. Ал Writeln операторы қолданылса, онда массивтің әрбір элементі жаңа қатарға жазылып шығады.
.......................
For K:=1 To N Do Write(‘A[‘,K,’]=’, A[K], ’ ‘);
… … … … … … … … … … … … … …
К: =1;
Repeat Writeln(A[K]); K:=K+1
Until K>N;