TURBO PASCAL тілінің операторлары

Есептi шешу үшiн қолданылатын арифметикалық әрекеттердi сипаттайтын құрылымдарды операторлар деп атайды.. Бұл операторлар бiр-бiрiнен “;” тыныс белгiсiмен ажыратылады. Паскаль тiлiнiң барлық операторларын екi- жәй және күрделi— топтарға бөлуге болады.

Жай операторлар.

Құрамында басқа операторлар болмайтын операторды жәй оператор деп атайды. Жәй операторларға

меншiктеу операторы;

процедураны шақыру операторы;

GOTO шартсыз көшу операторы;

бос оператор.жатады

Меншiктеу операторы.

Меншiктеу операторының көмегiмен айнымалыға немесе функцияға есептелiп отырған өрнектiң мәнi меншiктеледi. Ол үшiн “:=” белгiсi қолданылады. Бұл белгiнiң сол жағында айнымалының немесе функцияның аты, ал оң жағында олардың қабылдайтын мәндерi немесе сол мәндердi есептейтiн өрнек жазылады.

Меншiктеу операциясы файл типiнен басқа типтерге қолданыла бередi, бiрақ өрнектiң типi айнымалы типiмен сәйкес болуы керек. Мысалы:

x:=y;

a:=11;

b:=a*a;

z:=a+b;

Res:=(I>0) and (I<100);

7.2. GOTO шартсыз көшу операторы.

Белгiлемелердi қолдану. GOTO операторы көмегімен операторлардың орындалуының стандартты тiзбегiн өзгертiп, программаның орындалуын белгiлi бiр оператордан бастауға мүмкiндiк туғызады. Программаның орындалуы белгiлi бiр оператордан басталса ол оператор белгiменен белгiленуi тиiс. Бұл белгi белгiлемелердi сипаттайтын бөлiмiнде алдын-ала анықталуы керек және де ол GOTO операторыменен бiрге көрсетiлуi тиiс. Turbo Pascal тiлiнде қолданылатын белгiлемелердiң екi түрi болады:

0-9999 арасындағы бүтiн сан;

кәдiмгi идентификатор.

Жоғарыда айтып кеткендей белгiлемелердiң барлығы тұрақталып анықталған LABEL сөзiмен басталатын белгiлемелердi сипаттау бөлiмiнде анықталуы тиiс, мысалы:

Label 1,2,Белгi;

Белгiлеме оператордан “:” таңбасыменен ажыратылады және бiр белгiлемемен бiр ғана операторды белгiлеуге болады. Ескерте кететiн бiр жәй: GOTO операторын абайсыздықпен қолданылса, программа жұмысының логикасын бұзады, және де шартсыз көшудi прорамманың кез-келген жерiнен басқа бір кез-келген жерiне көшу үшiн қолдана беруге болмайды. Мысалы — негiзгi программадан iшкi программаға көшуге және iшкi программадан шығуға, күрделi оператордың iшiне кiруге болмайды.

GOTO шартсыз көшу операторын қолдану мысалы:

program EXAMPLE_1;

label out; {белгiлеменi сипаттау}

var x,y,res: integer;

begin

write(‘Бөлiндiнi енгiз:’); {экран бетiне хабарламаның шығуы}

readln(x); {санды оқу}

write(‘Бөлгiштi енгiз:’);

readln(y);

if y=0 then{күрделi оператор}

begin

writeln(‘Нөлге бөлу!’);

goto Out; {нөлге бөлгенде шығу}

end;

Res:=x div y;

writeln(‘’, Res);

Out: {бос оператор}

end.

Бос оператор өзiн басқа оператордан бөлетiн белгiлеме немесе нүктелi-үтiрден басқа ешқандай әрекет жасамайды. Ол өзiне тек қана шартсыз көшудi орындау үшiн қолданылады.

7.3. Күрделi оператор.

Құрамында басқа операторлар болатын операторды күрделi оператор деп атайды. Оларға:

құрылымды оператор;

if шартты оператор;

case шартты оператор;

repeat циклдiк оператор;

while циклдiк оператор;

for циклдiк оператор;

жазулармен жұмыс iстейтiн with операторы.

Құрылымды оператор.

Begin және end операторлық жақшаларға алынған орындалатын операторлардың тiзбегiнiң жиынтығы құрылымды операторды сипаттайды:

Begin

<1 оператор>;

<2 оператор>;

<n оператор>;

end.

Бұл оператор бiрнеше әрекеттер жасауға тура келетiн, бiрақ тiлдiң құрылу тәсiлдерiнiң ережелерiне сай бiр ғана операторды қолдануын талап ететiн жағдайда қолданылады. Мұндай құрылымды операторға қойылған әрекеттердi орындайтын бiрнеше оператор енедi. Бұл операторлар бiр-бiрiнен “;” белгiсiмен ажыратылады. Құрылымды операторларды аяқтайтын end сөзiнiң алдында “;” белгiсiн қою шарт емес.

IF…THEN…ELSE шартты оператордың құрылымы келесiдей болады:

If шарт Thenоператор_1 Elseоператор_2;

Бұл оператор кейбiр логикалық шартқа байланысты оператордың орындалу тәртiбiн өзгертедi. Шарт деп тұрақтымен, айнымалымен немесе логикалық өрнекпен анықталған True (ақиқат) немесе False (жалған) деген логикалық мәндер түсiнiледi, мысалы:

IF true THEN …; {шарттың шеткi және мәнсiз жағдайы}

IF logical_var THEN …;{шарт-логикалық айнымалы}

IF not_logical_var THEN …; {шарт-логикалық өрнек}

IF x>5 THEN …; {шарт-салыстыру амалының нәтижесi}

Егер шарт True мәнiмен анықталса, онда Then сөзiнен кейiнгi оператор (жәй немесе күрделi) орындалады. Егер шарт False мәнiмен анықталса, яғни шарт орындалмаса, онда Else сөзiнен кейiнгi оператор (жәй немесе күрделi) орындалады. Мысалы:

If x>5 Then{x>5 орынды болғанда}

begin { күрделi оператордың басы}

 x:=x+5;

y:=1

end

Else{x>5 орынды болмағанда}

y:=-1;{ жәй оператор}

Мысалда Then қызметші сөзден кейін “;”белгiсi жоқ,ол белгі қойылса есеп дұрыс шешілмеуы мүмкін, бiрақ оператордың соңында, яғни Else тармағы орындалған соң ”;” тыныс белгiсi мiндеттi түрде қойылуы керек. Бұл белгi операторды басқа оператордан бөледi. Else альтернативтi тармағын жазбауға да болады. Шартты операторлар бiрiнiң құрамында бiрi болуы мүмкiн:

IF шарт_1

THEN

IF шарт_2

Then

Begin

End

Else

begin

end

ELSE

Begin

End;

Оператордың мұндай түрiнде шарттарды қолдану варианттарында шатаспау өте маңызды. Мұнда: ELSE альтернативасы жақын орналасқан ELSE тармағы болмайтын IF шартты операторына тиiстi екендiгiн ескеру керек. Осы ереже компиляторға енгiзiлген.

7.4. CASE шартты оператор.

Кейбiр айнымалының мәнiне байланысты бiр операторды (жәй немесе күрделi) орындау қажет болса, вариант операторы қолданылады. Егер тек екi вариант болса, онда IF шарттты операторын қолданамыз, ал варианттар саны екiден көп болса, онда CASE операторын қолдану ыңғайлы.

CASE операторының құрылымы келесiдей болады:

CASE S OF

C1: оператор_1;

C2: оператор _2;

CN: оператор _N;

ELSEоператор

END;

Мұндағы: S — мәнi есептелiнетiн өрнек;

C1,C2, …, CN — S өрнегiнiң мәнiмен салыстырылатынтұрақтылар;

оператор _1, оператор _2, …, оператор _N — Sөрнегiнiң мәнi тұрақтымен тең болған жағдайдаорындалатын операторлар.

Instruction — S мәнi ешбiр тұрақтымен тең болмаған жағдайдағы орындалатын оператор.

Операторлар жәй немесе күрделi болып келедi. Варианттың соңы мiндеттi түрде “;” тыныс белгiсiмен белгiленедi. Оператордың Else тармағы болуы шарт емес. Егер бұл тармақ болмаса және S өрнегiнiң мәнi қарастырылған ешбiр тұрақтыларға тең болмаса, онда оператор бос болып есептеледi. IF операторымен салыстырғандабұл операторда Else алдында “;” белгiсiн қоюға болады. Егер бiрнеше тұрақтылар үшiн бiр ғана оператор орындалса, онда оларды үтiр арқылы жазып, сәйкес болатын операторды анықтау керек. Мысалы:

Case K of

0, 2, 4, 6, 8:Writeln (‘Жұп сан!’);

1, 3, 5, 7, 9:Writeln (‘Тақ сан!’);

10 … 100: Writeln (’10 және 100 арасындағы сан!’);

Else

Writeln (‘Терiс немесе 100-ден үлкен сан’);

End.

Бұл мысалда K өрнегi тексерiледi. Нақты жағдайда ол кейбiр сан. Егер ол сан 0, 2, 4, 6, 8 сандарының бiреуiне тең болса, онда ‘Жұп сан!’ деген мәлiмет шығады. Егер ол сан 1, 3, 5, 7, 9 сандарының бiреуiне тең болса, онда ‘Тақ сан!’ деген мәлiмет шығады, ал 10 және 100 арасындағы сан болса, онда ’10 және 100 арасындағы сан!’, және детерiс немесе 100-ден үлкен сан болса, онда ‘Терiс немесе 100-ден үлкен сан’ деген мәлiмет шығады.Әрбiр жиынтықтағы мәндер тек бiр ғана жерде кездесуi керек, керi жағдайда компилятор қате деп есептейдi.