Оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011 1



бет38/210
Дата06.01.2022
өлшемі4,42 Mb.
#16437
түріОқулық
1   ...   34   35   36   37   38   39   40   41   ...   210
Байланысты:
boribaev-algoritmdeu

55



3.5-сурет. Типтердің жіктелуі


  1. Boolean бульдік типі екі-ақ мəн қабылдайды – false (0) жəне true (1), бірақ компьютер жадында ол толық бір байт орын алады;




  1. Char символдық типі ASCII кестесінде (2 қосымшаны қараңыз) көрсетілген символдар жиынын анықтайды. Кесте-де барлығы 255 код көрсетілген, олардың көбісінің символдық бейнесі тағайындалған. Символдар, мысалы, латын, орыс, қазақ əріптері, цифрлар жəне нүкте, үтір, т.б. арнайы таңбалар.


3.6-сурет. Айнымалыларды сипаттаудың синтаксистік диаграммасы



3.7-сурет. Типтерді жариялаудың синтаксистік диаграммасы


56

Стандартты емес (бейстандартты) реттелген типтерді айны-малыларды сипаттау (3.6 сурет) кезінде көрсету керек.

















3.2-кесте



















Аты

Белгіленуі

Мəндер диапа-




Ішкі бейнелену










зоны




ұзындығы, байт




Бүтін сан

Integer

-32768

.. 32767

2 (таңбасы бар)




Қысқа бүтін

ShortInt

-128

.. 127

1

(таңбасы бар)




сан



















Ұзын бүтін

LongInt

-231..

231– 1

4

(таңбасы бар)




сан






















Байт

Byte

0 .. 255

1

(таңбасыз)




Машиналық

Word

0 .. 65535

2

(таңбасыз)




сөз



















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


Var D:(Mon,The,Wed,Thu,Fri,Set,Sun);... { D айнымалы
көрсетілген мəндерді ғана қабылдай алады } Ескерту. Компьютер жадында саналатын тип мəндері нөлден басталған бүтін сандармен кодталады. Мысалы, Mon

идентификаторына 0 сəйкес келеді, The – 1 жəне т.с.с. Саналатын типті жариялау кезінде алдымен жаңа типті


анықтап алып, сонан кейін осы типтегі айнымалыны сипаттауға болады, мысалы:
Type Day = (Mon,The,Wed,Thu,Fri,Set,Sun); {жаңа типті жариялау}
Var D: Day;... {осы типтегі айнымалыны сипаттау} Кесінді түріндегі айнымалы типі бұрын анықталған тип мəндерінің диапазоны ретінде көрсетіледі. Оны сипаттау кезінде де типтерді жариялау конструкциясын пайдалануға болады,
мысалы:
Type Data = 1..31; {бүтін типтердің бірінің диапазоны} Var DataN: Data;...
немесе типті жеке сипаттамай-ақ, сол айнымалыны мынадай түрде жарялауға болады:
Var DataN: 1..31;...


57

Нақты типтер бөлшегі бар аралас сандарды бейнелеу үшін қолданылады. Компьютер жадында (ішкі көрсетілімде) нақты сандардың мантиссасы мен дəрежесі бөлек сақталады, ондағы мантисса мен дəрежеге бөлінетін разрядтар көлемі сол санның типімен анықталады. Соған сəйкес компьютердегі нақты сан-дарды өңдеу жұмысы мантиссаға бөлінген екілік разрядтар санына байланысты белгілі бір дəлдікпен ғана орындалады. Санның дəрежесін жазуға бөлінген разрядтар көлемі сол типке байланысты сандардың бейнелену диапазонын анықтайды. 3.3-кестеде тілдің Турбо Паскаль нұсқасындағы нақты сандар типінің сипаттамалары келтірілген.
Ескерту. Мыналарды есте сақтаған жөн:


  1. Real типінен басқа нақты сандар типімен жұмыс істеу кезінде компиляциялаудың айрықша режимін орнату керек ({$N+} ди-рективасын енгізу немесе компилятордың осыған сəйкес опция-ларын енгізу);




  1. Real типі үшін ең жай істейтін арифметика қолданылады. Мəліметтердің құрылымдық типтері кейін қарастырылады. Инициалданған айнымалылар. Турбо Паскаль тілінде

бастапқы мəндері берілген айнымалыларды сипаттау мүмкіндігі бар. Мұндай айнымалылар инициалданған деп аталады жəне оларды арнайы const конструкциясы арқылы жариялайды (3.8-сурет).


3.3-кесте









Ондық

Дəреженің

Ішкі







бейнелену

Аты

Белгіленуі

цифрлар

өзгеру

ұзындығы,







саны

диапазоны







байт




























Нақты

Real

11..12

-39..+38

6

Бір еселі

Single

7..8

-45..+38

4

дəлдікпен













Екі еселі

Double

15..16

-324..+308

8

дəлдікпен













Кеңейтілген

Extended

19..20

-4951..+4932

10

«Үлкен

Comp

19..20

-263 + 1.. 263 – 1

8

бүтін»














58


3.8-сурет. Инициалданған айнымалыларды жариялаудың
синтаксистік диаграммасы

Ескерту. Тілдің идеологиясы бойынша инициалданған ай-нымалыларды const нұсқауында жариялау дұрыс болып саналмайды. Сол себепті тілдің кейінгі нұсқаларында бұл сəйкес-сіздік дұрысталды.
Программадағы инициалданған айнымалыларды жай айны-малылар тəрізді өзгертуге болады, мысалы:
Const a: real=5.6;...
a:=(n-1)/k;...

Қабаттасқан айнымалылар. Кейде компьютер жадының нақты физикалық адрестерінде орналасқан айнымалыларды программаның басқа айнымалылары тұрған жерде де қатар жариялауға тура келеді. Осындай қабаттастыра жарияланатын айнымалыларды сипаттау да absolute түйінді сөзін қосу арқылы var конструкциясы көмегімен жүргізіледі. 3.9-суретте айныма-лыларды қабаттастыра орналастырудың да екі нұсқасы бола-тынын көрсететін толық синтаксистік диаграмма келтірілген.


  1. Абсолюттік адрес бойынша қабаттастыру. Мұнда absolute сөзінен соң қос нүктемен ажыратылған word типіндегі екі сан орналасады. Бірінші сан сегмент адресін, ал екінші сан – оның ығыстырылуын көрсетеді (7.1-ді қара). Мұндай жариялау айныма-лыны жəне компьютер жадының осы көрсетілген адреске сəйкес аймағын физикалық түрде байланыстыру болып табылады.

Мысалы:
Var A: word absolute $0000:$00FF;


L:array[1..2] of char absolute 128:0;...
Осы нұсқа, мысалы, операциялық жүйе кестелерін пайдалану үшін қолданылады.


  1. Бұрын анықталған айнымалымен қабаттастыру. Мұнда ab-solute сөзінен соң бұрын анықталған айнымалы идентификаторы


59

орналасады. Осы арқылы absolute сөзінде сипатталған айнымалыға одан кейін тұрған идентификаторға сəйкес айнымалы адресі меншіктеледі. Сонымен, компьютер жадында əр түрлі атаулары бар (олар əр түрлі типте де болуы мүмкін) мəліметтерді біріктіру ісі жүзеге асырылады. Мысалы:
Var c:byte;
a:real absolute с;...



3.9-сурет. Айнымалыны жариялаудың толық синтаксистік диаграммасы
Осылай қабаттастыру нəтижесінде кез келген сəттегі бір айнымалыны өзгерту оның екіншісінің де мəнін өзгертуге се-бепші болады. Absolute арқылы байланысқан айнымалылардың компьютер жадындағы ішкі орналасу аймағының көлемдері (ішкі орналасуы) жоғарыдағы мысалда көрсетілгендей бірдей болмай қалса, нəтиженің дұрыстығы тексерілмейді. Осылай қабаттасу əрекетіне 5.5 параграфта мысал келтірілген.
3.6 Арифметикалық жəне логикалық өрнектер
Меншіктеу операторы барлық тілдерде пайдаланылатын негізгі оператор болып табылады. Математикадағы қарапайым теңдеу тəрізді айнымалыларға сандық (символдық та болуы мүмкін) мəн беру өрнегін мұнда меншіктеу операторы деп атайды.
Меншіктеу операторы жазылған өрнектердің мəнін есептеп, оны айнымалыға тағайындау үшін қолданылады. Өрнек мəнінің типі айнымалының типіне міндетті түрде сəйкес келуі тиіс. Кейде нақты сан түріндегі айнымалыға бүтін сан мəнін меншіктеуге бо-лады, ондайда бүтін сан нақты санға айналып кетеді. Меншіктеу операторының жазылу ережесі (форматы) төмендегідей болады: <айнымалы атауы>:=<өрнек>;


60

мұндағы <айнымалы атауы> – айнымалы идентификаторы, := – меншіктеу белгісі, яғни айнымалының мəні өрнектің есептелген сан мəнін қабылдайды; <өрнек> – арифметикалық өрнек, яғни формула немесе сан. Өрнек деп арифметикалық операциялардың, яғни амалдардың таңбаларымен біріктірілген айнымалылардың, функциялардың, тұрақтылардың жиынын айтады. Өрнектердің есептелу барысында амалдардың орындалу реті жақшалардың көмегімен өзгертіледі. Өрнек операция таңбаларымен жəне жақшалармен біріктірілген операндтардан тұрады. Операндтар рөлін айнымалылар, тұрақтылар (константалар) жəне функциялар атқарады. Өрнек операторлар құрамына кіретін негізгі объект болып табылады.
Жалпы арифметикалық өрнек:
тұрақты,
айнымалы атауы,

E =

функция,
өрнек,


түрлерінің бірінде берілуі мүмкін. Жалпы өрнек тек айныма-лылардан, тұрақтылардан немесе функциялардан тұруы мүмкін. Мысалдар:
(5+7*х)/1.8 , (sіn(x)+5*cos(2+x))/ln(x), .т.с.с. Төмендегі өрнектердің математикада жəне программалау ті-
лінде жазылулары қатар келтірілген.


a + b

( a + b ) / ( ab )

e x 1 exp( x + 1)




a-b






a b exp( b* ln( a ))

1 + xsqrt( 1+ sqrt( x ))

a +b

→ ( a + b ) / ( x * y )

3 x exp(ln( x) / 3)




xy






ab x1 exp(ln(a) * exp((x + 1) * ln(b)))
Меншіктеу операторы екі міндет атқарады:


  1. Айнымалылардың белгілі мəндері бойынша арифметика-лық өрнектің сандық мəнін есептейді;


61

    1. Табылған мəн айнымалы атауына меншіктеледі (телініп жазылады), яғни анықталған мəн сол айнымалыға сəйкес компь-ютер жады ұяшығына орналасады. Мұнда əдеттегі теңдік “=” белгісімен программалау тіліндегі меншіктеу “:=” белгісін ша-тастырмау қажет. Олар тек түр жағынан ғана емес мағынасы жа-ғынан да өзгеше. Мысалы, х=5 өрнегі х-тің мəні 5-ке тең дегенді білдіреді де, x=x+3 өрнегінің дұрыс мағынасы жоқ. Ал х:=5 өрнегі




  1. айнымалысына арналған ұяшыққа 5 санын жазамыз дегенді білдіреді. Ал, енді x:=x+3 өрнегі де дұрыс, өйткені бұл бұрынғы




  1. ұяшығында тұрған санға 3 санын қосып х ұяшығына қайта орналастыру дегенді білдіреді. Төменде меншіктеу операторының синтаксистік диаграммасы келтірілген (3.10-сурет).




3.10-сурет. Меншіктеу операторының синтаксистік диаграммасы
Меншіктеу операторына мысалдар:
і:= і+1;
x:=5.35;
x1:= (-b+sqrt(b*b-4*a*c))/(2*a);
a[2,3]:=m-n;
fun:=false; {fun айнымалысының типі–boolean}
с:=2*pі*r;
R:=19.36;
M:=’завод’;
Y:=sqrt(sqr(x)+1);
Y1:=3.5+sіn(x);

Меншіктеу операторы тек арифметикалық өрнектер үшін ғана емес логикалық жəне символдық өрнектер үшін де пайда-ланылады. Мысалы, егер К := А AND В, мұнда А-ақиқат, ал В-жалған болса, онда К жалған мəн қабылдайды, К-ақиқат мəн қабылдау үшін А жəне В мəндері бірдей ақиқат болуы қажет, өйткені AND сөзі ЖƏНЕ деген ұғымды білдіреді.




62

Символдық мəн əрқашанда апостроф ‘ ішіне алынып жазы-лады. Мысалы: В := ‘ Т ‘; В5 := ‘9’.
Паскальдағы операциялар орындалуының реттілігі (прио-ритеті) олардың басымдылық деңгейлерінің төмендеуі бойынша төмендегідей болады:


  1. бірорындық минус;




  1. NOT (ЕМЕС) логикалық операциясы;




  1. көбейту тəрізді операциялар тобы ;




  1. қосу тəрізді операциялар тобы;




  1. салыстыру (қатынас) операциялары.

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


Мысалы, егер мынадай өрнекте … (X > 5) AND (Y > 10) … жақшалар қойылмаса, онда синтаксистік қате шығады, өйткені AND операциясының приоритеті қатынас операциясынан (>) жоғары болады.
<көбейту тəрізді операциялар> :: = * | / | div | mod | and
<қосу тəрізді операциялар> :: = + | – | or | xor
<қатынас операциялары> :: = = | <> | < | > | <= | >= | in Қатынас операциялары барлық стандартты қарапайым тип-
терге қолданыла береді. Оның нəтижесі əрқашанда логикалық тип болады.
Мысалы, (5 + 6) < (5 – 6) = TRUE орындалу нəтижесі – FALSE, ал NOT(8.5 < 4) нəтижесі – TRUE.
Сөз тіркестерін салыстыру солдан оңға қарай əрбір символ бойынша жүргізіледі. Салыстыру кезінде қысқалау сөз тіркесінің оң жағына босорын таңбалары қойылады.
Əдетте өрнек ішінде бірсыпыра операциялар атқарылады, олар да төмендегі сияқты өз приоритеттілігі бойынша орындала-ды (3.4-кесте):


    1. арифметикалық операциялар: + (қосу), – (азайту), * (көбейту),




  1. (нақты сандарды бөлу), div (бүтін сандарды бөлу), mod (қалдық


63

табу) – бұлар нақты жəне бүтін сандарға қолданылады, нəтижелері де – сан болады;


    1. қатынас операциялары: > (үлкен), < (кіші), = (тең), <> (тең емес), >= (кіші емес), <= (үлкен емес) – бұлар сандарға, символдарға, символдардан құралған сөз тіркестеріне жəне де басқа мəліметтер типтеріне қолданылады, нəтижесі – логикалық типтегі мəн;




    1. логикалық операциялар: and (жəне), or (немесе), xor (ари-фметикалық немесе), not (емес) – бұлар с логикалық айнымалы-лар мен константалармен жұмыс істейді, нəтижесі – логикалық тип;

    2. разрядтық операциялар: and (жəне), or (немесе), xor (ариф-метикалық немесе), not (емес), shr (оңға ығыстыру), shl (солға ығыстыру) – бұлар бүтін сандармен ғана жұмыс істей алады, нəтижесі – бүтін сан;

    3. тіркестік (жолдық) операция: + (сөз тіркестерін біріктіру) – символдар жəне сөз тіркестерімен жұмыс істейді, нəтижесі – сөз тіркесі (4.5 параграфты қара);

    4. жиындармен атқарылатын операциялар: + (біріктіру), – (толықтыру), * (қиылыстыру), нəтижесі – жиын; in (элементтің жиынға кіретінін анықтау), нəтижесі – логикалық типтегі мəн (4.7 параграфты қара);

    5. сілтеуіштермен (указатели) атқарылатын операциялар:




  1. (программалық объектінің адресін анықтау), нəтижесі – адрес

(7.1 параграфты қара).


3.4-кесте





Достарыңызбен бөлісу:
1   ...   34   35   36   37   38   39   40   41   ...   210




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

    Басты бет