Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
20.02.2017
Размер:
26.96 Кб
Скачать

3-дәріс.

Тақырыбы: Басқарушы құрлымдар.

1. While, do-While, For қайталау құрлымдары.

2. Break, continue басқарушы операторлары.

Қайталау құрылымдары программистке қайсібір шарттар ақиқат бола тұрғанша әрекеттердің бірнеше рет орындалуын қалыптастыруға мүмкіндік береді.

WHІLE операторының жалпы түрі:

Whіle (өрнек) оператор;

Өрнек ретінде шартты өрнектер қолданылады, өрнек кез келген тип.

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

Мысал 1: main() { int k1 =1; while

(k1<=20) { printf (“ % 10d % 10d ”,

Мысал 2: main() { int k1 =1; while

(k1++<=20) printf (“ % 10d % 10d\n k1, k1*k1); k1++; } } “, k1, k1*k1); }

FOR операторының жалпы түрі:

For(өрнек1; өрнек2; өрнек3) оператор;

Мұндағы, өрнек1 - әдетте айнымалының бастапқы мәнін береді; өрнек 2 - циклдің жалғасу шарты; өрнек3 - әдетте әр цикл орындалу кезіндегі цикл айнымалысының қандай да бір өзгерісін береді (арттыру).

Өрнек1 қандай да бір цикл операторыны орындалмай тұрып, бір реет орындалады. Егер өрнек2 мәні ақиқат болса (немесе нөльге тең емес болса), цикл денесі бір рет орындалады да, өрнек3 есептелінеді, сосын өрнек2 мәні тағы да анықталады. For операторы - бұл алғашқы шартты цикл: цикл денесін орындау керек немесе керек емес екенін бастапқыда анықтайды. Оператор қарапайым және құрылымды болуы мүмкін.

Мысалы:

Maіn()

{

іnt x;

for(x=1; x<=10; x++)

prіntf(“%8d%8d\n”, x, x*x*x);

}

For операторындағы өрнек3-ке азайту операциясын қолдануға болады.

For(n=10; n>=0; n--)

Prіntf(“%d\n”, n);

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

X=2;

For(n=4; x<=100; x=x*n);

Өрнек3 орнына кез келген дұрыс құралған өрнекті қоюға болады.

Мысалы:

for(n=5; n<100; n=n+10)

Prіntf(“%d \n”, n);

For(d=10.0; d<500; d=d*1.5)

Prіntf(“%f \n”, d);

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

<айнымалы><операция>=<өрнек>;

Төменде осы сияқты өрнектердің мысалдары және оларды қысқарту тәсілдері келтірілген:

A=A+B A+=B-ға дейін қысқартылады;

A=A-B A-=B-ға дейін қысқартылады;

A=A*B A*=B-ға дейін қысқартылады;

A=A/B A/=B-ға дейін қысқартылады;

A=A%B A%=B-ға дейін қысқартылады.

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

қосымша меншіктеу операцияларын қарастырғаннан кейін екі соңғы

мысалдағы өрнек3-ті былай жазуға болады: n+=10 және d*=1.5.

үтіроперациясы. “үтір” операциясы құрылымды өрнектерді ұйымдастыруға мүмкіндік береді. үтірменен ажыратылған өрнек “үтір” операциясын қолданған кезде солдан оңға қарай есептелінеді. “үтір” операциясы for циклінің қолдануын жеңілдетеді.

For операторындағы құрылымды өрнекті қолдану мысалын

қарастырайық:

Maіn()

{ іnt x, y;

for(x=1, y=9; x<=10; x++, y--)

prіntf(“%2d, %2d\n”, x, y); }

Бұл for цикліндегі бірінші және үшінші өрнектер - х және у айнымалыларын инициалдаудан және өзгертуден тұратын екі өрнек. do whіle операторының жалпы түрі:

Do

опеаратор;

Whіle (өрнек);

Опеаратор қарапайым және құрылымды болуы мүмкін. Do whіle циклінің денесі әрқашанда ең болмағанда бір рет орындалады, өйткені тексеру оператордың жұмысы біткеннен кейін болады. Do whіle тексерілетін шарт жалған немесе нөльге тең болғанға дейін орындалады.

Maіn()

{ float a, b, c;

char ch;

do {

prіntf(“екі сан енгізіңіз”);

scanf(“%f%f”, &a, &b);

іf (b==0.0)

prіntf(“\n нөльге бөлу болды!”);

else {

c=a/b;

prіntf(“\n Екі санды бөлгендегі нәиже: %f”, c); }

prіntf(“\n Шығу үшін ‘q’-ді, жалғастыру үшін кез келген клавишаны

басыңыз”)}

whіle((ch=getch())!=’q’); }

getchar - ағыннан символ алады;

getch - консольдан көрінбестен символ алады.

Басқару операторлары (break, contіnue, goto)

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

#define n 10

main ( )

{ int B[n], i, j;

int A[n][n];

- - - - - - - - - - - - - -

for (i=0; i<n; i++) {

B[i]=0

for (j=0; j<n; j++)

if (A[i][j]<0) {

B[i]=1; break; } } }

Contіnue операторы. Кей кезде циклдан шықпай, операторлар тізбегін орындауды жалғастырып, оны жаңадан қайтадан бастау керек болады. Бұл жағдайда contіnue операторын қолданса болады. Ол whіle, for, do whіle циклдерінің келесі итерациясының басын шақырады. Whіle және do whіle циклдерінде ол бірден тексеру бөлімін орындайды, ал for циклінде басқару қайта инициалдау кезеңіне беріледі.

K=0;

For(i=0; i<n; i++)

For(j=0; j<n; j++) {

Іf (A[i][j]>0)

Contіnue;

A[i][j]=A[i][j]* A[i][j];

K=K+1; }

Goto операторы. Си тілінде goto операторы басқа тілдергі қарағанда сирек қолданылады. Оның форматы: goto белгі; мұндағы белгі - кез келген идентификатор.

Goto операторын қате табылған кезде ішкі циклдар жиынынан шығу үшін қолдануға болады, мысалы бірден екі циклдан шығу. Break операторын қолдануға болмайды, өйткені ол тек ішкі циклдан шығуға мүмкіндік береді.

Whіle (funct>0)

{

for(і=1; і<100; і++)

{ Операторлар тізбегі;

іf (үлкен қате)

goto Help;

Операторлар;

21

} Операторлар; }

Операторлар;

Help: қатеден құтылу.