Программа денесі(операторлар тізбегі)



бет3/18
Дата21.06.2016
өлшемі4.26 Mb.
#151685
түріПрограмма
1   2   3   4   5   6   7   8   9   ...   18

1-мысал. Пернетақтадан енгізілген сандардың қосындысын табу программасын құр.
program kosjndy;

const


limit = 10; {Енгізілетін сандардың шектелуі}

var


count, item, sum: integer;

begin


count:=0; {Енгізілетін сандарды санау}

sum:= 0; {сандар қосындысы}

while(count{Циклдін қайталану шарты}

begin


count := count + 1;

write(count, ‘-ші бүтін санды енгізіңдер’);

readln(item); {Кезекті санды пернетақтадан енгізу}

sum := sum + item;

end;

write(‘Енгізілген сандардың қосындысы =’, sum);



end.

Бұл мысалда тұрақтыларды сипаттау бөліміндегі limit тұрақтысы енгізілетін сандарды шектеу рөлін атқарады. Айнымалыларды сипаттау бөліміндегі count, item, sum айнымалылары бүтін сандық типте көрсетілген.

Программа басында енгізілген сандарды санайтын count (санауыш) айнымалысы мен қосынды — sum нөлге теңестіріледі де, одан кейін 10 сан ентізіліп, оларды біртіндеп санау мен жинақтап қосу жүзеге асырыла бастайды.

Алдын ала WHILE операторы count<10 шартын тексереді. Шарт ақиқат болса, яғни орындалса, цикл тұлғасы болып келетін құрама оператор атқарылады, онда кезекті сан енгізіліп, қосынды осы сан мөлшеріне көбейеді. Сонан соң қайтадан цикл операторы орындалып шарт тексеріледі, ол ақиқат болса, тағы да цикл қайталанады т.с.с.



REPEAT операторы. REPEAT қайталау операторы WHILE операторына ұқсас, айырмашылығы — қайталану шарты цикл соңында тексеріледі, сондықтан ол кем дегенде бір рет орындалатын болады. Екінші өзгешелігі — цикл тұлғасы шарт жалған болғанда қайталанып, ол ақиқат болған кезде циклді орындау доғарылады (while операторында керісінше болатын). REPEAT операторы төмендегі түрге ие:

repeat s until p;

Бұл операторды орындау кезінде алдымен цикл денесі (s) орындалады, содан кейін шарт (р) тексеріледі. (р) шарты жалған болса, цикл денесі тағы да орындалады, т.с.с. цикл денесі шарт (р) ақиқат болғанша орындалады.

WHILE және REPEAT цикл операторларының айырмашылығын түсіну үшін 1 мен 300 аралығында жатқан 3 санының дәрежелерін есептейтін программа үзіндісін келтірейік.



WHILE циклы REPEAT циклы

a:=1; a:=1;

while a<300 do repeat

begin Writeln (a);

Writeln (a); a:=a*3

a:=a*3 until a>=300

end;
FOR операторы. Циклдегі операторларды қайталау саны алдын ала белгілі болған жағдайда FOR операторы қолданылады. Бұл оператор параметрлі цикл операторы деп те аталады, өйткені қайталау саны функция аргументі (айнымалы) сияқты циклдің параметрі қызметін атқаратын басқару айнымалысы арқылы беріледі. Пара­метр өзінің алғашқы мәнінен соңғы мәніне дейін бірлік қадаммен өзгеру барысында циклге кіретін бір немесе бірнеше операторды қайталап орындауды атқарады.

Оператор FOR сөзінен басталатын оның тақырыбынан, цикл тұлғасынан тұрады.

Оның жазылуы екі түрде болады:

for <айнымалы>:= to do <оператор>;

for <айнымалы>:= downto do <оператор>;

Мұндағы, S1 және S2 — цикл параметрінің алғашқы және сонғы мәндерін анықтайтын өрнектер; for ... do — цикл тақырыбын анықтайтын түйінді сөздер; <оператор> — цикл тұлғасы.

FOR — үшін, TO — дейін, DO — орындау деген мағынаны беретін түйінді сөздер. Паскаль тілінде цикл параметрі міндетті түрде бүтін немесе реттелген типтегі айнымалы болуы қажет. Параметрдің өзгеру қадамына байланысты операторда ТО немесе DOWNTO (DOWN — төмен, ТО — дейін, DOWNTO — кері қарай) түйінді сөздері пайдаланылады. Егер қадам +1-ге тең болса, онда опе­раторда ТО, ал қадам -1-ге тең болса, онда DOWNTO сөзі қолданылады.
Параметрдің бастапқы және соңғы мәндері бүтін сан түрінде немесе өсуі, кемуі бойынша реттелетін болуы тиіс, әйтпесе оларды бүтін мән беретін арифметикалық өрнек түрінде жазуға да болады. Цикл тұлғасы (блок-схемадағы <оператор>) жай немесе құрама оператор болуы мүмкін. FOR операторының жұмысы цикл параметрінің алғашқы мәнінен соңғы мәніне дейінгі аралықты бірлік қадаммен қайталап өтпей тоқталмайды.

Цикл тақырыбы:



  • басқару айнымалысының (цикл параметрі) өзгеру диапазонын және цикл ішіндегі операторлардың қайталану санын;

  • цикл параметрінін өзгеру бағытын (өсуі — to, кемуі — downto) анықтайды.

Мысалы:

for k:=1 to 100 do Read (M[k] ); {Жиым элементтерін оқу}

for k:=10 downto 1 do Write (M[k]); {Жиым элементтерін жазу}

FOR операторы алғаш орындалардан бұрын S1 және S2 өрнектері есептеледі де, цикл параметріне S1 меншіктеледі, яғни <цикл параметрі>:=S1 операторы жүзеге асырылады.

Осыдан кейін цикл ішінде келесі әрекеттер орындалады:


  1. <цикл параметрі>S2 шарты тексеріледі (S1S2 шарты тексеріледі (S1>S2 үшін).

  2. Егер шарт жалған болса, онда FOR циклі ішіндегі операторлар орындалады. Ал, егер шарт орындалса, яғни ол ақиқат болса, онда цикл тұлғасы орындалмай, FOR операторынан кейін тұрған жол атқарыла бастайды.

  3. Басқару айнымалысының мәні 1-ге өседі (to) немесе 1-ге кемиді (downto) де, әрі қарай FOR операторы қайталанып орындала береді.

  4. Цикл орындалуы барысында оның параметрінің мәнін өзгертуге болмайды (мысалы, меншіктеу операторы көмегімен).

Күрделі циклдер. Егер бір цикл тұлғасында басқа циклдік құрылым бар болса, онда олар қабатталған циклдер деп аталады. Құрамына басқа цикл кіретін цикл сыртқы болып саналады да, сыртқы цикл тұлғасына кіретін цикл ішкі болып есептеледі.

Көптеген есептерді шығару үшін бірінің ішіне бірі қабаттасқан осындай күрделі циклдерді пайдалануға тура келеді. Мұндай программаларда ішкі цикл толығымен сыртқы циклдің ішінде орналасуы қажет. Ішкі цикл құрамында басқа да ішкі циклдер болуы мүмкін.

Күрделі циклдер қарапайым while, repeat, for циклдері сияқты құрыла береді, бірақ қабатталған циклдер құру кезінде мына ережені есте ұстау қажет: ішкі циклдің барлық операторлары сыртқы циклдің ішінде орналасуы тиіс.

Күрделі циклдің құрылымын төмендегі көбейту кестесін жасау мысалынан көруге болады. Бұл мысалда for операторы пайдаланылады да, 2-ден 9-ға дейінгі көбейту кестесі бір бағанаға шығарылады.

Program kobejtu_kestesil;

var i, j : byte;

begin

for i := 2 to 9 do



begin

for і:= 1 to 10 do

writeln (i,’x’,j,’=’, i*j);

writeln


end

end.


Пунктуациялық ережелер

Операторларды жазу кезінде жазу ережесі сақталуы тиіс:

l.Uses, label, type, const, var түйінді сөздерінен кейін нүктелі үтір қойылмайды, ол сол сөздерден кейінгі сипаттау символдары өткен соң қойылады.


  1. Нүктелі үтір таңбасы begin сөзінен кейін және end сөзінің алдында қойылмайды, өйткені бұл сөздер оператор емес, тек операторлық жақшалар болып саналады.

  2. Нүктелі үтір таңбасы операторларды бір-бірінен ажырату үшін қажет, ол оператордан соң қойылмаса, компилятор қате деп санайды.

  3. Цикл операторларында while, repeat, do түйінді сөздерінен кейін және until сөзінің алдында нүктелі үтір қойылмайды.

  4. Шартты операторларда then сөзі мен else сөзінің алды, артына нүктелі үтір қойылмайды.


4-ДӘРІС. Айнымалылардың алдын ала аныкталған типтері (қарапайым).

  • Типтердің иерархиясы. Қарапайым типтер.

  • Нақты. Бүтін. Символдық. Логикалық (бульдік).

  • Интервалдық (аралық тип). Саналатын.

Тілдің қарапайым объектілеріне «сан», «идентификатор», «тұрақты», «айнымалы», «функция» және «өрнек» үғымдары кіреді. Программадағы негізгі амалдардың орындалуына керекті мәліметтердің сандық, логикалық немесе символдық (литерлік) мәндері болады. Олармен жұмыс істеу колайлы болу үшін алгебра курсындағы белгілеулерге ұқсас шартты атаулар пайдаланылады. Бұл атаулар әр түрлі мәндерді (сандық мән, символдық мән т.б.) қабылдауы мүмкін, сондықтан оның типі деген ұғым енгізіледі.

1. Сандар. Сандар мен айнымалылар бүтін және нақты болып бөлінеді. Бүтін сандар: +4, -100, 15743, 0 т.б. Разрядтылығы 16 биттен тұратын дербес компьютер үшін қолданылатын бүтін сандар (ағылшынша INTEGER) -32768-ден +32767 дейінгі аралықта ғана жазылады, бұдан үлкен сандар нақты сандарға айналдырылады.

Паскаль тілінде ондық және он алтылық бүтін сандар пайдаланылады. Он алтылық сандардың алдына $ белгісі қойылады. Мысалы, $АВС немесе $8В2.



Нақты сандар кәдімгі табиғи аралас сандар тәрізді санның бүтіні мен бөлшегін нүкте арқылы бөлген күйде жазылады. Мысалы: 2.65, 0.5, -0.862, -6.0. Ал өте үлкен немесе өте кіші нақты сандар көрсеткіші бар экспоненциал сандар ретінде mЕ±р түрінде жазылады да, олардың диапазоны әлде қайда кең болады, мүндағы т — санның мантиссасы деп аталады; Е — оның дәрежесі дегенді білдіреді; р — дәреженің сандық мәні.

Дербес компьютерде нақты сандар (REAL) 2.9Е-39-дан 1.7E+38-ге дейін өзгере алады. Мәндері бұл аралықта болмайтын сандар үшін арнайы тәсілдер қолданылады.



2. Атау — идентификатор (identificationобъектінің белгілі бір символдар тіркесіне сәйкестігін бекіту) программаны және программадағы тұрақтыларды, типтерді, айнымалыларды, функцияларды, файлдарды т.б. белгілеп жазу үшін қажет.

Идентификаторлар тұрақтыларды, айнымалыларды, олардың түрін, функцияларды, программаларды, процедураларды, файл­дарды т.б. программа объектілерін белгілеу үшін қолданылады. Идентификатор міндетті турде әріптен басталатын сандар мен әріптердің тізбегінен тұратын атау. Оның ұзындығын өте үлкен етудің қажеті жоқ, өйткені атауларды теру және кейіннен есте сақтау біраз уақыт пен жады көлемін қажет етеді. Бірақ оларды өте қысқартпай, мағынасына сәйкес атау беру қалыптасқан. Мысалы: X, XI, СУММА, P23PS6, DT54AS, ALFA, baga2, SALMAK, OMEGA2 т.б.

Идентификатор стандартты және бейстандартты (өзіміз берген атау) болып бөлінеді. Бейстандартты атауды тұтынушы (компьютерді пайдаланушы адам) өзі тағайындайды.

Тілді алғаш жасаушылар стандартты атауларды кейбір тіл элементтері типтерінің, шамалардың (тұрақты, айнымалы), стандартты функциялардың, процедуралардың атауларын алдын ала баршаға түсінікті етіп белгілеу үшін енгізген, оларды тек сол өз мағынасында қолдануымыз керек. Мысалы, REAL (нақты сан), INTEGER (бүтін сан), VAR (айнымалы), CONST (тұрақты), SIN, COS (тригонометриялық функциялар), EXP, LOG (математикалық функциялар), FALSE, TRUE (логикалық мәндер) т.б. ағылшын тілінің қысқартылған сөздері. Паскаль тілінде программа жазуда қолданылатын басқа да түйінді сөздер жай атаулар ретінде қолданылмайтын стандартты идентификаторлар болып есептеледі. Олар: AND, ARRAY, BEGIN, END, CASE, CONST, VAR, PROGRAM, IF т.б.

Өзіміздің тұрақтыларға және айнымалыларға беретін атауларымыз стандартты идентификаторлардан өзгеше болуы тиіс, мысалы: L12, BAGA, SYT, F105, МАТА. Біз мысал келтіріп, қарастырып отырған тіл — Тurbo Pascal деп аталатын дербес компьютерге арналған Паскаль программалау тілінің бір нұсқасы, мұнда идентификаторлар тек латын алфавитінің үлкен не кіші әріптері және цифрларды ғана пайдалануға рұқсат етілген.

Тұтынушылар қойған бейстандарт атауларға әркім өз қалауынша тағайындаған шама атаулары, яғни стандартқа кірмейтін иден­тификатор жатады. Олар төмендегі талаптарға сай құрылуы қажет:



  • Атау тек латын әріптерінен (астын сызу «_» белгісі де әріп болып саналады) басталуы тиіс. Тек белгілер (label) атауы ғана цифрдан да, әріптен де бастала береді;

  • Атаудың алғашқыдан кейінгі символдары әріптерден, цифрлардан немесе астын сызу белгісінен тұруы мүмкін;

  • Қатар орналасқан екі атау арасында кем дегенде бір бос орын белгісі болуы қажет;

  • Атаудағы символдар саны 127-ден аспауы қажет;

  • Атауда бас әріптер мен кіші әріптерді қатар пайдалануға рұқсат етілген, олардың ішкі кодтары әр түрлі болғанымен транс­лятор үшін ешбір айырмасы жоқ болып саналады. Бірақ мұны да ұтымды пайдаланған жөн, мысалы, ZatNomеri, BujmBagasу т.б.

3. Тұрақты немесе константа деп программаның орындалу барысында мәндері өзгеріссіз қалатын шамаларды айтады.

Тұрақтыға программаның орындалу барысында бірден сандық мән берсек те немесе оны программаның сипаттау бөлімінде идентификатор түрінде белгілеп алып, мән берсек те болады. Олар сандық, символдық, логикалық және тіркестік (integer, real, boolean, char, string) мәндерді қабылдай алады. Логикалық түрдегі тұрақтылар — true (ақиқат) немесе false (жалған) мәндерінің біріне ие бола алады.

Символдық және тіркестік (string) мәндер үшін орыс, қазақ алфавитінің әріптерін және кез-келген символдарды пайдалануға болады. Олар апостроф ішіндегі таңбалармен (литерлермен) жазылады, мысалы: ‘S=’ , ‘қосындысы’ , ‘функцияның мәні’ және т.б.

Тұрақтыларға мысалдар:



  • бүтін: х= -25; y = 1936; z= 123;

  • нақты: х=2.14; y=4Е15; z=-0.5Е-12; beta =-250.0;

  • символдық: s=’c’; sl=’h’; s2=’9’;

  • логикалық: B1= true; B2 = false;

  • тіркестік: С =’Turbo Pascal’;

Тұрақтыларға бейстандарт идентификаторлар атау ретінде берілуі тиіс. Егер программада оны құрастырған иесінің атауы бірнеше рет кездесетін болса, онда оны тұрақты түрінде берген жөн, өйткені бұл атау кейіннен өзгеріске ұшырамайды.

Барлық тұрақтылар программаның сипаттау бөліміндегі const түйінді сөзінен басталатын бөлікте көрсетілуі тиіс. Оның жазылу пішімі (формасы) төмендегідей:

const

Mening_atim = "Бакыт Бөрібайұлы";



Max = 1000;

Міn = 0;

Mektep_nomeri = 121;

4. Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Олар идентификаторлармен белгіленіп, әр уақытта әр түрлі мәнге ие бола алады. Айнымалылардың белгіленулері: ALFA, Ү, ХЗ, KOSINDI, BAGA, A1B8 т.б. Айнымалы атауы оның орындайтын міндетіне сәйкес түсінікті және қарапайым болғаны жөн. Айнымалылар атауы сипаттау бөлімінде var түйінді сөзінен кейін орналасады да, атауынан кейін қос нүкте қойылып, айнымалының типі көрсетіледі. Оның жазылу пішімі:

var <идентификатор> : <тип>

Мысалы:

Var А, В : integer;



Sum, baga : real;

Айнымалылар қарапайым және индексті болуы мүмкін. Қарапайым айнымалылар өз атаулары бойынша жазылады. Мысалы, delta, х, у, result, number_of _ student.



МӘЛІМЕТ ТИПТЕРІ

Программада пайдаланылатын мәліметтердің немесе шамалардың мәндері Паскаль тіліндегі алдын ала келісілген типтердің біріне тән болуы тиіс.



Мәліметтердің немесе шамалардың muni деп, олардың қабылдай алатын мәндерінің және олармен орындауға болатын амалдардың жиынын анықтауды айтады, яғни тип дегеніміз шамалардың қабылдайтын мәндеріне берілетін сипаттама.

Мәліметтердің әрбір типі тек өзіне ғана сәйкес келетін операциялар жиынын орындата алады. Мысалы, 1 мен 2 мәндері бүтін сандар типіне жатады, оларды қосуға, азайтуға, көбейтуге және бөлуге болады. Ал, «IBM» және «PC» мәндері сөз тіркесі типіне жатады, бұларды біріктіріп жазуға ғана болады («IBM PC»). Қосуға, азайтуға, көбейтуге, бөлуге болмайды. Кез келген тұрақты, айнымалы, функция немесе өрнек өзіне тән бір типпен ғана сипатталады. Паскаль тілінде шамалардың типін көрсету міндетті болып табылады. Сондықтан программа алдында оның сипаттау бөлімінде пайдаланылатын барлық шама атаулары және оның типтері көрсетілуі қажет.

Паскаль тілінде пайдаланылатын барлық типтер скалярлық (қарапайым) және құрылымдық (структуралық) болып үлкен екі топқа бөлінеді. Скалярлық (қарапайым) типке шамалардың стан­дартты типі және жасанды тип (тағайындаған) жатады. Стандартты типтерге:


  • бүтін - INTEGER;

  • нақты — REAL;

  • логикалық — BOOLEAN;

  • символдық – CHAR;

  • жолдық - STRING.

Құрылымдық типтегі жиымдар — ARRAY, жазбалар — RE­CORD, жиындар — SET және файлдар — FILE түрлеріне бөлінеді.

Бұлардан өзге типтер программаның типтерді сипаттау бөлігінде анықталуы қажет. Тұрақты сандардың типін олардың сыртқы пішініне қарап-ақ ажыратуға болады, ал айнымалылар мен функциялар типтері программаның сипаттау бөлімінде көрсетіледі.

Логикалық шамалар екілік сандар жүйесіне сәйкес «1» және «0» деген мәндерді ғана қабылдайды. Мұндағы «1» тексерілетін белгілі бір шарттың — логикалық тұжырымның орындалатынын, яғни ақиқат екенін, ал «0» сол шарттың орындалмайтынын — түжырымның жалған екенін көрсетеді. Бұл екі мән программада ағылшын тіліндегі айтылуына сәйкес true (1) және false (0) болып жазылады.

Символдық шамалар апострофқа алынған бір символды ғана мән ретінде қабылдай алады, мысалы, R’ ‘Л’ ‘% т.б. Бірақ әрбір таңбаны оның кодына байланысты реттелген бүтін сандармен де өрнектеу мүмкіндігі бар.

Мәліметтердің қарапайым түрлерін стандартты типтер деп атау қалыптасқан. Стандартты типтердің real түрінен өзгелері реттелген деп аталады, өйткені оларды бүтін сан арқылы өрнектей отырып, өсуі не кемуі бойынша реттеп орналастыруға болады.

Стандартты типтер. Паскаль тілінде төмендегі қарапайым типтер пайдаланылады:


  • бүтін типтер - SHORTINT, INTEGER, LONGINT, BYTE, WORD;

  • нақты тип — REAL, SINGLE, DOUBLE, EXTENDED, COMP;

  • логикалық— BOOLEAN;

  • символдық — CHAR;

  • саналатын тип;

  • аралық (диапазонды) тип.

Бүтін сан түріндегі типтер. Паскаль тілінде бүтін шамалар үшін бес стандартты тип пайдаланылады. Олар 2-кестеде көрсетілген.

2-кесте

Бүтінсанды тип

Мәндер диапазоны

Қажетті жады

Integer

-32768..32767

2

ShortInt

-128..127

1

LongInt

-2147483648..2147483647

4

Byte

0..255

1

Word

0..65535

2


Нақты сан түріндегі типтер. Ондық сандар бүтіні мен бөлшегін бөлетін үтірі жылжымалы және тұрақты түрде жазылады. Үтірі тұрақты ондық сандар кәдімгі математикадағыдай жазылады, бірақ үтір орнына нүкте қойылады. Мысалы, 25.48, -127.25, 0.67, -8.0. Үтірі жылжымалы ондық сандар дәрежелік көрсеткіші берілген экспотенциалды түрде жазылады, мысалы, -1.25Е + 12 (1,25*1012), 1.3Е-05 (1,3*105) т.б. Олар 3-кестеде көрсетілген.

3-кесте



Нақты тип

Мәндер диапазоны

Мантиссаның цифрларының саны

Қажетті жады


Real

2.9E-39..1.7E38

11-12

6

Single

1.5E-45..3.4E38

7-8

4

Double

5.0E-324..1.7E308

15-16

8

Extended

1.9E-4951..1.1E4932

19-20

10

Comp

-2E+63+1..2E+63-1

19-20

8


Логикалық типтегі (BOOLEAN) шамалар, негізінен, екі мән қабылдайды — TRUE (ақиқат) және FALSE (жалған), олар компьютер жадында бір байт орын алады.

Символдық типтегі (CHAR) шамалар мән ретінде тек бір таңбаны ғана қабылдай алады. Мәннің символ екендігін көрсету үшін оны апостроф ішіне алып жазады. Мысалы, ‘а’ , ‘һ’ , ‘5’, ‘*’, т.б.

Жолдық типтегі шамалар (STRING) апостроф ішіне алынған символдар тізбегін қабылдайды. Мысалы, "компьютер", "универ­ситет", "main", "#&*" т.б.

Саналатын тип стандартты типке жатпайды, ол параметрлердің мәніне сәйкес келетін атаулар (идентификаторлар) тізімінен тұрады. Атаулар тізімі үтір арқылы ажыратылып, жай жақша ішіне жазылады. Мысалы:

атау = (1-идентификатор, 2-идентификатор,..., n-идентификатор);

kynder = (дүйсенбі’, ‘ сейсенбі ‘, ... , ' жексенбі );

Идентификаторлар орналасқан орны бойынша 0-ден бастап номерленеді. Бір идентификатор тек бір ғана саналатын типті көрсетеді.



Диапазондық немесе аралық тип. Мұнда көрсетілген шама қабылдай алатын мәннің алғашқысы (ең кіші) мен соңғысы (ең үлкен) екі нүкте арқылы бөлініп көрсетіледі.

Мысалы:


атау = <алғашқы мән>..<соңғы мән>;

Программада мынадай шамалар кездесуі мүмкін:

Apta_kunderi = 1..7; Aj_kunderi = 1..31;

Бұл типтегі шамалар көрсетілген алғашқы және соңғы мәнге дейінгі немесе олардың арасында жататын кез келген бөлігін пайдалана алады.

5-ДӘРІС. Айнымалылардың алдын ала анықталган типтері (кұрылымдық).


  1. Құрылымдық типтер.

  2. Жолдық.

  3. Массивтер.

  4. Жиындар.

Қарапайым типтер сақтауға жадының бір ғана ұяшығы жұмсалатын қарапайым мәндерге есептелген. Дегенмен, әртүрлі есептерді программалау кезінде логикалық байланысқан қарапайым мәліметтер жиынтығымен амалдауға тура келеді. Құрылымдық типтер қарапайым мәндерді күрделі құрылымдарға біріктіруге мүмкіндік береді. Құрылымдық типтерге массивтер, жазбалар, жиындар, файлдар және объектілер жатады.

Массивтер

Құрылымдық типтердің бірі – массив. Массив - базалық деп аталатын бір типті элементтердің бекітілген санынан тұратын байланысқан мәліметтер жиынтығы. Массивті анықтау үшін оның базалық типін, және де массивтегі элементтердің санын және оларды номерлеу әдісін көрсету жеткілікті. Массивтің жеке элементтеріне қатынас жасауға болады – ол үшін массив атауы мен қажетті элементтің номерін (индексін) көрсету жеткілікті.

Массивті сипаттау келесі түрге ие:

Type


s=array[i] of a

Мұндағы ARRAY және OF - массив және осыдан мағынасы бар резервтелген сөздер; s – массив атауы; i – индекстер типі (тік жақшаға алынады); a – массив элементтерінің типі (базалық тип). Массив элементтері кез-келген типті мәндер бола алады. Массивті индекстеу үшін Turbo Pascal-да мәліметтер типі қолданылады. Бұл бүтінсанды типтерлің кез-келгені (LongInt-тен өзгесі), Char және Boolean, сол сияқты саналатын және аралық типтер (LongInt негізіндегі аралық типтен өзгесі) бола алады. Нақты типтер массивтерді индекстеуге жарамайды. Төменде массивтерді сипаттау мысалдары.

Var

a1:array [byte] of Boolean;



a2:array [char] of Boolean;

a3:array [Red, Yellow, Green] of char;

a4:array [1..100] of integer;

Мұндағы а1 - boolean типті 256 (0..255) мәннен тұратын массив. а2 – бұл да 256 boolean типті мәннен тұратын массив, дегенмен, а1 массивінен айырмашылығы ол char типті мәндермен индекстеледі. а1 және а2 массивінің жеке элементтеріне қатынас жасау төмендегідей болады.

а1[90]:=false;

a2[z]:=true;

а1 және а2 массивтерінің мазмұны келесідей бола алады:

1-ші элемент 2-ші элемент 3-ші элемент ... 256-ші элемент

True False True False

(а1 массивінің 1-256 элементтері 0-ден 255-ке дейінгі сандармен белгіленетін болады, ал а2 массивінің элементтері – ASCII кестесінің символдарымен реті бойынша белгіленеді).

Үшінші мысал (а3) char типті үш элементтен тұратын массив болып табылады. Бұл массивтің элементтері Red, Yellow және Green атауларымен белгіленеді (мұнда интекстеу үшін саналатын тип қолданылған). Бұл элементтерге қатынас жасау мысалдарын 5-кестеден көруге болады.

5-кесте


Әрекет мысалы

Түсініктеме

a3[Red]:=chr(100)

а3 массивінің Red элементіне “d” әрпіне сәйкес келетін char типті мән меншіктеледі.

a3[Red]:=’d’

алдыңғы оператордың эквиваленті

Write(a3[Yellow])

a3 массивінің Yellow элементінің мәні экранға шығарылады

Read(а3[Green])

a3 массивінің Green элементінің мәніy пернетақтадан енгізу

а3 массивінің мазмұны төмендегідей көріне алады.

a3[Red] a3[Yellow] a3[Green]

‘A’ ‘$’ ‘8’

Төртінші мысал (a4 массиві) – бұл Integer типіне жататын 100 элементтен тұратын массив.

Мұнда индексті тип аралық тип (интервалды, диапазондық) тип болып табылады. (Осы аралық тип массивтерді индекстеу үшін өте жиі қолданылады, себебі индекстердің өзгеру шекарасын ең көрнекі түрде көрсетеді).

Массивтердің индексін тек айқын түрдегі мәндермен ғана емес, сол сияқты айнымалы, өрнек түрінде де беруге болады. Айталық қандай-да бір программада а5 және і айнымалылары жарияланған болсын.

Var


a5:array[1..20] of integer;

i:integer;

Содан кейін а5 массивінің элементтері мен і айнымалысына қандай-да бір мәндер берілді. Осыдан кейін программада а5 массивіне келесі қатынастар бола алады.

a5[i+1];


a5[2*i];

a5[i/2-5];

a55[22-i];

Мұнда тік жақшалардағы өрнектің мәндері (яғни индекстерінің мәндері) мүмкін мәндер шекарасынан (біздің жағдайымызда 1..20) асып кетпеуі керек.

Және де массивтерді тек жасырын типтер ретінде ғана емес, сол сияқты жеке атауы бар типтер ретінде типтерді сипаттау бөлімінде жариялауға болады.

Type


LogScale=array[1..100] of boolean;

Var


a1:LogScale

Массивтер жолдарға өте ұқсас. Шыныда да массив те жолдар сияқты біртипті элементтердің тізбегі, дегенмен, егер жол символдары тек Char типті мәндерден тұрса, ал массив элементтері әртүрлі типтерге жата алады, қарапайымдарға да, құрылымдық типтерге де.

Жолдардың және массивтердің жеке элементтеріне қатынас жасау бірдей – ол үшін жолдың немесе массивтің атауы мен индексін көрсету жеткілікті.

Дегенмен, айырмашылықтары да бар.

Егер жолдың ағымдағы ұзындығын өзгертуге болса, массивпен мұны жасай алмаймыз.

Жолдың ұзындығы 255 символмен шектелген болса, массив мұндай шектеулер жоқ.

Жене де жолдың ұзындығын бір ғана оператордың көмегімен енгізуге немесешығаруға болады (мысалы, Read(X) немесе Write(X), мұндағы Х – String типті мән), ал массивпен мұны жасауға болмайды.

Осы қарастырған массив бірөлшемді массив болып табылады. Оны басқаша вектор деп те атайды.

Мысал:

Бірөлшемді массивті енгізу және экранға шығару.



Program Mas1;

Var


A:array[1..20] of integer;

i, n:integer;

begin

Write(‘массивтегі элементтер санын енгіз ’);



ReadLn(n);

For i:=1 to n do

Begin

Write(‘A[‘, I, ‘]=’);



Readln(A[i]);

End;


For i:=1 to n do

Write(A[i]);

Readln;

End.



Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   18




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет