Кіріспе Өңдеу ұғымы Алгоритм ұғымы


ПАСКАЛЬ ТІЛІНІҢ ОПЕРАТОРЛАРЫ



бет7/11
Дата15.09.2017
өлшемі1,13 Mb.
#32899
1   2   3   4   5   6   7   8   9   10   11
    Бұл бет үшін навигация:
  • Begin

ПАСКАЛЬ ТІЛІНІҢ ОПЕРАТОРЛАРЫ


 

Дәріс жоспары:


  1. Циклді ұйымдастыру: параметрмен және шарт алдындағы және шарттан кейінгі цикл

  2. Өткізу операторы

  3. Таңдау операторы.



Циклді ұйымдастыру: параметрмен, шарт алдындағы және шарттан кейінгі цикл.

Цикл дегеніміз – бірдей типті бірнеше рет орындалатын әрекет. Цикл денесі дегеніміз – бірнеше рет қайталану әрекетін денесі деп атаймыз.

Цикл денесінің бір рет орындалуы қадам деп аталады. Цикл шексіздікке ұмтылмауы үшін циклді басқару керек. Ол үшін арнайы өлшем – цикл параметрі қолданылады. Цикл параметрі (айнымалы) қадамман келесі қадамға өту кезіндегі мән өлшемі болып табылады. Ол циклдің басталуы мен аяқталуына қажет болады.

Паскаль бағдарламалау тілін құрушы Никлаус Вирт цилді ұйымдастырудың қажеттін не үшін деп тапты? Ыңғайлы болу үшін, қысқа, бағдарламаны орындаудың қарапайымдылығ үшін ойлап тапты.

Циклдің үшін түрі бар. Паскаль тілінде олардың үш түрлі жазылуы бар. Осы цилдердің өздерінің белгісі бар: «Әзірше» немесе «шарт алдында», «дейін» немесе «шарттан кейінгі », «параметрмен». Осы түрлер бір бірінен айырмашылығы бар, олардың әрқайсысы әртүрлі тапсырмалар классы үшін қолданылады.

Цклдің операторлары анықталған операторлардың қайталап орындалу үшін жазылады.

Егер қайталану саны алдын ала белгіленген болса, онда for операторы қолданылады. Кері жағдайда while немесе repeat операторын қолдануға болады.

Итеративті (қадам бойынша цикл)

Осы цикл типті бір рет берілген әрекетті орындайды. Параметрлі циклдің синтаксисі келесі болып табылады:



for <цикл параметрі > := <бастапқы мән > to <соңғы мән > do

<Оператор>; { қадам = 1 }

 

for <цикл параметрі > := <бастапқы мән > downto <соңғы мән > do



<Оператор>; { қадам = -1 }

Келесі блок кестеде циклдің алгоритмі көрсетьілген:



 
Кіру

Шығу

 

  Циклдің денесінің операторы қарапайым болуы мүмкін, құрамды және бос болуы мүмкін. (Ол жағдайда Do кейін «;» бірден қойлады).



For операторының денесіндегі қадам бір рет әр мән үшін орындалады. Ол бастапқы және соңғы мән бойынша іске асады. Басқарушы айнамыл үнемі бастапқы мәннен басталады. For операторы қолданылған кезде кілттін to сөзін қолданады, мәні әр қадам сайын бір есеге ұлғайып отырады. Егер бастапқы мән соңғы мәннен артып кетсе ода for операторы орындалмайды.

Егер цикл операторында downto кілттік сөзі қолданылса, онда әр қадам сайн бір бірлікке кішірейеді. Егер бастапқы мән соңғы мән бастапқы мәннен кіші болса онда for операторы орындалмайды



Мысалдар (неше рет цикл орындалады?):

for i := 1 to 3 do; { 7 рет i: Integer, byte, … }

for ch := ‘a’ to ‘d’ do; { 4 рет ch: char }

for i := 5 to 5 do; { 1 рет }

for i := 7 to 1 do; { бір ретте емес }

for i := 7 downto 1 do; { 7 рет}

for i := -7 to 7 do; { 15 рет }

for i := 3.5 to 5.5 do; { Қате!!! Саналмайтын тип }

for i := True to False do; { бір рет те емес }

for ch := ‘А’ to ‘Я’ do; { ? рет }

for ch := ‘а’ to ‘я’ do; { ? рет }

Екі соңғы мысалда қайталану саны компьютерде орыналасықан кодтаудан тәуелсіз болады.



for операторының негізгі ережелерін қарастырайық;

1.    Басқарушы айнымалы (цикл параметрі) реттілік типтен тұруы керек. Бастапқы және соңғы мән реттілік типпен сәйкес болуы керек.

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

For операторын орындағаннан кейін басқару айнымалысының мәні анықталмаған болып табылады.



  1. Итерация саны келесі формаула бойынша есептеледі: <операция саны > = <Соңғы мән > - <Бастапқы мән > +(-) 1

  2. for операторы орындалып бастағанда бастапқы және соңғы мән бір рет анықталады, және осы мәндер кері жағдайда барлық оператор кезінде қайталанады.

3. Циклдің параметрін циклдің ішінде қайта анықтауға болмайды.

For i:= i+5 to n do ;

For i:= 1 to n do i := i+5;

  1. Цикл параметрлері циклдің сыртында болса олар есептелмейді. Яғни анықталмаған болады.

Итеративті циклдар – компактілі орындалатын кодты өте тез орындайды Және олар үшін №1-2 ережелері қолданылмайды.

For циклі келесі алгоритм бойынша орындалады:



  1. айнымалы-параметр бастапқы мәнге меншіктеледі;

  2.   цикл денесі орындалады;

  3.   айнымалы-параметр автоматты түрде 1- ге өседі, (егер to болса);

  4. егер параметр соңғы мәнге өссе онда циклдан шығу орындалады, әйтпесе 2 пуктқа өтеді.

 

Мысал 1. 1-ден 100-ге дейінгі натурал сандардың квадраттарының қосындысын табу керек.

Program Ex1;

Var

i: integer;



S: longint;

Begin


S:=0;

For i:=1 to 100 do s:=s+i*i;

Writeln(‘s=’, s)

End.


Мысал 2. Факториалды есептеу керек N!= 1*2*3*4*5*…*N

Program Ex2;

Var n, i : Byte;

N_Fact:LongInt;


Begin


Write(‘Мәнді енгізу керек n<10’);

ReadLn(n);

N_Fact:=1;

For i:=2 to n Do

N_Fact:= N_Fact*i;

Write(‘Факториал=’, N_Fact);

end.

Мысал 3. Келесі қосындыны есептеу керек s = 1/2+1/3+1/4+...+1/n.

 

Шарт алдындағы цикл

Циклдің шарты ақиқат болған жағдайға дейін орындалуы цикл денесі деп аталады. Циклдан шығу шарт жұмыс істемеген жағдайда циклдан шығуға болады. Демек, шарт оператордың қайталануымен басқарылады. Және булевтік тип болуы керек.

Егер шарт жалған болса, онда цикл денесі бір де бір рет орындалмайды. Шарт дұрыс берілмеген жағдайда цикл бір орында қалуы мүмкін. Ол жағдайда бағдарламаны Ctrl+C батырмасын басу арқылы тоқтатуға болады.

Сондықтан осы құрылымды байқап қолдану керек.

«Әзірше» циклінің құрылымы келесі түрде жазылады:

While <шарт> Do <оператор>;

Қазақша былай оқуға болады: «Операторы әзірше ақиқат болғанға дейін операторды орындау керек».



Келесі блок-кестеде циклдің құрылымын көруге болады:

 
Кіру

Шарт

Оператор

Шығу

Жоқ

Иә

 

Осы жерде де шартты оператордың форматы сияқты оператор бір рет орындалады. Егер бірнеше әрекетті орындау керек болса, онда құрамды оператор қолданылады. Оператордың форматы келесі түрде жазылады:



While <шарт> do

Begin


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

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

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

. . .


end;

While циклінің негізгі ережесі төмендегідей болады:

  1. Циклді орындаудың алдында барлық мәндер үшін бастапқы мәнге меншіктелуі керек (әйтпесе есептеу дұрыс шықпайды). Ол әрекеттегідей шартта есептеуге қатысты айнымалыға байланысты болады;

  2. Бағдарлама бір орында тұрып қалмауы үшін (оператор) циклдің шартының орындалуына әсер етуі керек;

  3. Цикл айнымалысы цикл ішінде өзгеруі керек;

  4. циклдің сыртындағы айнымалы өз мәнін сақтайды.

  5. Цикл айнымалысы кез-келген сандық типті ала алады.

While циклі ішінде не болса да соны жіберуіне байланысты ішкі циклдарды да орындай алады. (күрделілік деңгейі бағдарламаның күрделілігіне байланысты болады).

Мысал 1. 1-ден 100-ге дейінгі натурал сандардың квадраттарының қосындысын табу керек.

Program Ex1;

Var

i: integer;



S: longint;

Begin


S:=0; i:=1;

While i<=100 do begin

s:=s+i*i;

i:=i+1;


end;

Writeln(‘s=’, s)

End.

Мысал 2. Факториал мәнін табу керек N!= 1*2*3*4*5*…*N

Program Ex2;

Var n, i : Byte;

N_Fact:LongInt;


Begin


Write(‘Енгізу керек n<10’);

ReadLn(n);

N_Fact:=1;

i:=2;
While i<= n Do Begin

N_Fact:= N_Fact*i;

Inc(i);


End;

Write(‘Факториал=’, N_Fact);

end.

Есептеу кезінде нәтиженің типін дұрыс таңдай алу керек. Ол әсіресе айнамылға байланысты болады.



 

Мысал 3. 5-тен үлкен 300-ден кіші оң сандардың қосындысын табу керек.

Program Ex3;

Var s, x: integer;

Begin


X:=1; s:=0;

While x<300 do

Begin

If x mod5<>0 then s:=s+x;



X:=x+1;

End;


Writeln(‘s=’, s);

End.


 

Шарттан кейінгі цикл

 

Алдыңғы циклдан бұл циклдің айырмашылығы циклді тексеру алдында орналаспайды, ол циклдан кейін шарттан кейін орналасады. Сондықтан цикл «дейін» деп аталады. Ол әрі «шарттан кейнігі» болып табылады, ал «Әзірше» - «шарт алдында ».



Жаңа итерация шарт ақиқат болған жағдайда емесе әдетте ол жалған болғанда орындалады. Сондықтан циклдің атауы соған байланысты атау алған (цикл денесін шарт алдында орындау керек).

Егер цикл шарты басынан ақиқат болса, онда цикл бәрібір бір рет орындалады. Сондықтан бағдарламалауда осы екі түр бір-бірін біріктірмейді.

Шарттан кейінгі цикл синтаксисі келесідей жазылады:

Repeat

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

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

...

<ОператорN>;

Until <циклдан шығу шарты >;

Осы жерде құрылымдық операторды қолдануды талап етпейді, сондықтан қызметші сөздер Repeat және Until операторлық жақшалар болып табылады.

repeat және until резервті сөздер арасындағы операторлар логикалық өрнек ақиқат болғанға дейін тізбекті орындалады.

Аталған цикл кезекті итерация алгоритмі тексеріліп болғаннан кейін қолданылады. Сондықтан цикл денесі үнемі бір рет орындалады. Бұның мәні есептеудің бірінші қадамында байқалады, әрі қарай цил өзін While сияқты орындайды.

Келесі блок-кестеде осы циклдің алгоритмі көрсетлген:

 

 



 
Repeat

 

Until False; { Үнемі тип }

 

шарт

Шығу

Жоқ

 Ескерту: While және Repeat айнымалыны енгізуде тексеру үшін қолданылады.

 

Мысал 1. 1-ден 100-ге дейін натурал сандардың квдарттарының қосындысын табу керек.

Program Ex1;

Var

i: integer;



S: longint;

Begin


S:=0; i:=1;

Repeat


s:=s+i*i;

i:=i+1;


until i >100;

Writeln(‘s=’, s)

End.

 

Мысал 2. Факториалдың мәнін есептеу керек N!= 1*2*3*4*5*…*N



Program Ex2;

Var n, i : Byte;

N_Fact:LongInt;

Begin


Write(‘Санды енгізу керек n<10’);

ReadLn(n);

N_Fact:=1;
i:=1;
Repeat

N_Fact:= N_Fact*i;

Inc(i);

Until i>n;

Write(‘Факториал=’, N_Fact);

end.

Өткізу операторы

 

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



Белгі Паскаль тілінің стандартында теріс емес бүтін сан болады. Барлық бағдарламада қолданылатын белгілер белгіні сипаттау бөлімінде сипатталған болуы керек, олар label қызметші сөзінен басталады. мысалы:

Label 1, 2, 8;

Бір белгімен тек қана бір операторды белгілеуге болады. Белгіленген белгі екі нүкте арқылы белгіленеді. Мысалы:

8: writeln(14/2);

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

Goto <белгі>;

Өткізу жүретін оператор берілген белгімен белгіленген болуы керек.

Шартсыз өткізу операторын қолдану кезінде өте мұқият болу керек, ол кей жағдайда дұрыс нәтижеге алып келмейді. Немесе бағдарлама толық бір орында тұрып қалады. Ал жалпы осындай команданы қолдануды бағдарламалаушылар дұрыс деп танымайды. Сіздер көріп жүргендей бұнсыз да бағдарламаны жасауға болады.

Goto өткізу операторы көрсетілген операторды басқару кезінде қолданылады.

Өткізу операторымен жұмыс жасағанда келесі ережелерді қатаң ұстану керек:



  1. Өткізу операторын көрсететін белгі сол модульде немесе блокта болуы керек. Басқаша айтар болсақ, өткізуді басқа процедура немесе фугнкция ішіне енгізуге болмайды.

  

Таңдау операторы (нұсқа)

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

Case <Таңдау параметрі > of

<1-ші таңдау параметрінің мәні >: <Оператор1>;

<2-ші таңдау параметрінің мән >: <Оператор2>;

...

<n-ші таңдау параметрінің мән >: <Операторn>;

...

-ші таңдау параметрінің мәнінің жиынтығы >: <Операторk>;

...

[else <Альтернативті оператор>;]

end;

case операторы өрнектен (селектордан) және операторлар тізімінен тұрады. Селектор байт өлшемді реттік типтен тұрады. Жолдық longint типі селектор үшін рұқсат етлімейді. Таңдаудың барлық тұрақтылары әмбебап, селектор типәмен байланысқан болады.

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

Бекіту сұрақтары:



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




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

    Басты бет