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



бет62/210
Дата06.01.2022
өлшемі4,42 Mb.
#16437
түріОқулық
1   ...   58   59   60   61   62   63   64   65   ...   210
Байланысты:
boribaev-algoritmdeu

Бақылау сұрақтары


  1. Параметрлі цикл операторы неше рет орындалады?




  1. Параметрлі цикл операторының неше нұсқасын білесіз?




  1. Цикл параметрі дегеніміз не? Цикл параметірінің бтастапқы жəне соңғы мəні дегеніміз не?

  2. Параметрлі цикл денесі дегеніміз не?




  1. Параметрлі циклдың орындалу ретін түсіндіріңіз.




  1. Параметрлі цикл блок-схемасының жұмысын түсіндіріңіз.




  1. Break жəне Continue процедураларының қызметін түсіндіріңіз.




  1. Параметрлі циклды қолдануға мысал келтіріңіз.




Тапсырмалар




1




1




1







1

1. Пернетақтадан енгізілген n үшін

s = 1 +

+

+

+

+

қатарының қосындысын есептеңіз.




x




2 x




3 x







nx




  1. y = 0.4x2 1x функциясының x [2;10] аралығында 0,5 қадаммен өзгергендегі мəнін есептеңіз.

  2. Пернетақтадан енгізілген n үшін n! мəнін есептеңіз.



4. Пернетақтадан енгізілген n үшін y 1!2!3! n! функция-сының мəнін есептеңіз.

110








1

2




3




4




5




6







5.

Пернетақтадан енгізілген n үшін





























қатарының

2

3

4

5

6

7




алғашқы n мүшесінің қосындысын.





































6.

Пернетақтадан

енгізілген

а







жəне







n

үшін




a (a 1) (a 2)

⋅ (an) -ді есептеңіз.

























  1. Əр түсті жəне əр түрлі өрнектермен өрнектелген, көлемдері бірдей параллепипедтерден құрастырылған, көлемі 10x10 көлбеу тор салыңыз.

  2. Əр түсті жəне əр түрлі өрнектермен өрнектелген, көлемдері бірдей дөңгелектерден құрастырылған, көлемі 10x10 тор салыңыз.




  1. Əр түсті жəне əр түрлі өрнектермен өрнектелген, көлемдері бірдей тікбұрыштардан құрастырылған, көлемі 10x10 пирами-да салыңыз. Пирамиданың ең төменгі қатары 20 тікбұрыштан тұрады.




  1. Əр түсті жəне əр түрлі өрнектермен өрнектелген, көлемдері бірдей ромбтердан құрастырылған, көлемі 15x15 тор салыңыз.



5.5 Шарты алдын ала берілген цикл операторы
Итерациялық түрдегі цикл операторлары циклдің қай-талану саны алын ала белгісіз болғанда немесе цикл параметрі-нің өзгеру қадамы +1 немесе –1-ден өзгеше болған жағдайда қолданылады.
Шарты алдын ала берілген цикл операторының жазылуы:
WHILE <логикалық өрнек> DO <оператор>;
Логикалық өрнек, яғни шарт цикл тұлғасының əр орындалу



5.12-сурет. Шарты алдын ала тексерілетін цикл алгоритмінің орындалу схемасы


111

алдында есептелді. Егер логикалық өрнек АҚИҚАТ (TRUE) мəнін қабылдаса, онда цикл тұлғасы орындалады, егер мəн ЖАЛҒАН (FALSE) болса циклден шығу жүзеге асырылады. Логикалық өрнек бірден жалған болған жағдайда цикл тұлғасы бір де бір рет орындалмайды. Цикл тұлғасы жəй немесе құрама оператор болуы мүмкін. Циклдің орындалу схемасы 5.12-суретте көрсетілген. Мұнда цикл операторлары (тұлғасы) ішінде шартқа кіретін айнымалыларды өзгертетін өрнектер міндетті түрде бо-луы тиіс, əйтпесе цикл шексіз болып кетуі мүмкін.
FOR операторы көмегімен жазылған кез келген алгоритмді WHILE операторы көмегімен жазуға болады. Мысалы, F=N! факториалының мəнін есептеу программасы:


  1. F:=1;

I:=1;
WHILE I<=N DO BEGIN

F:=F*I;
I:=I+1; END; …
Келесі мысалда Sin(x) мəнін функцияны қатарға жіктеу арқылы есептеу керек:





x3




x5




x7



Y = x

+



+ ... = ∑ Ui




5!




3!




7!

i =1


















Қосындыға тек төмендегі шартты қанағаттандыратын қатар мүшелерін ғана қосу керек:


U i ε

демек, қатардың əрбір мүшесі берілген дəлдіктен үлкен болуы тиіс.


PROGRAM SINX;
VAR X,Y,E,U,Z : REAL;
K: INTEGER;
BEGIN
READLN(X,E);


112

K:=0;
Y:=0;
U:=X;
Z:=SQR(X);
WHILE ABS(U)>E DO
BEGIN
Y:=Y+U;
K:=K+2;
U:= -U* Z/(K*(K+1));
END;
WRITELN(‘SIN(X)=’,SIN(X), ‘Y=’,Y); END.
Программаның дұрыстығын тексеру үшін шығару опера-торына синусты стандартты функция көмегімен есептегенде алынған нəтижені қатар көрсету қарастырылған. Егер есептеу нəтижесінің стандартты функция көмегімен есептеу арқылы алынған нəтижеден айырмашылығы берілген дəлдіктен артық болмаса, программа дұрыс жұмыс жасайды деп есептеуге болады.
Итерациялық формула бойынша Х санынан түбір алу мыса-лын қарастырайық.
Yi+1 =(Yi + X/ Y i ) /2, Yi+1 – Yi <=ε дəлдікпен
Y0=A алғашқы жуықтама параметр болып саналады.


PROGRAM SQRTX;

}

VAR X:REAL;

{аргумент

EPS:REAL;

{есептеу дəлдігі }

Y0:REAL;

{алғашқы жуықтау }

Y1:REAL;

{келесі жуықтау

}

A:REAL;

{бастапқы жуықтау}

BEGIN







READLN( A,EPS,X);
IF X>0 THEN
BEGIN

8–1618 113



Y0:=A;
Y1:=(Y0+X/Y0)/2;
WHILE ABS(Y1-Y0)>EPS DO BEGIN
Y0:=Y1;
Y1:=(Y0+X/Y0)/2
END;
WRITELN(‘Y1=’,Y1,’ X=’,X)
END
ELSE
WRITELN(, X, ‘саны нөлден кіші’);
END.

Бақылау сұрақтары


  1. Қандай есептеулерді цикл деп атайды?

  2. Шарты алдын ала берілген цикл операторы неше рет орын-далады?

  3. Шарты алдын ала берілген циклдан шығу қалай іске асырылады?

  4. Шарты алдын ала берілген цикл операторының құрылымын тү-сіндіріңіз.

  5. Шарты алдын ала берілген цикл операторының орындалу ретін түсіндіріңіз.

  6. Шарты алдын ала берілген цикл операторының блок-схемасын түсіндіріңіз.

  7. Шарты алдын ала берілген цикл операторына мысал келтіріңіз.


Тапсырмалар


  1. 15 əр түсті қилысқан дөңгелектерден тұратын көлденең сызық сызыңыз.

  2. 15 əр түсті қилысқан эллипстерден тұратын экран «диагоналін» сызыңыз.

  3. Радиустары бірдей секторлардың тігінен орналасқан тізбегін салыңыз. Соңғы сектор – дөңгелек.

  4. 40 əр түсті сызықтан тұратын араның суретін салыңыз.

  5. 50 əр түсті сызықтан тұратын «веер» суретін салыңыз.

  6. 36 əр түсті квадраттардан тұратын дөңделек суретін салыңыз.

  7. 20 əр түсті дөңгелектерден тұратын квадрат суретін салыңыз.

  8. 100 əр түсті шеңберден тұратын синусоида фрагментін салыңыз.




  1. Пернетақтадан енгізілген n үшін n! мəнін есептеңіз.

  2. N натурал саны берілген. Осы санның цифрларының қосындысын есептеңіз.


114

5.6 Шарты соңынан тексерілетін цикл операторы
REPEAT


  1. 1 оператор > [;




  1. 2 оператор >] [;




  1. n оператор >]


UNTIL <логикалық өрнек>;
Бұл цикл қайталану саны белгісіз, бірақ циклден шығу шар-ты белгілі болған жағдайда қолданылады. Циклді басқаратын ло-гикалық өрнек циклден шығу шарты болып саналады. Егер шарт АҚИҚАТ (TRUE) мəнін қабылдаса, онда цикл тоқтатылады. REPEAT операторын қолданғанда, цикл тұлғасы кем дегенде бір рет орындалады. Цикл операторларының басқа түріне қарағанда, бұл оператор BEGIN – END операторлық жақшасын керек етпейді, себебі операторлық жақша қызметін REPEAT – UNTIL түйінді сөздері атқарады.
Бұл оператордың орындалу схемасы 5.13-суретте көрсетілген. F=N! факториалын есептеу REPEAT – UNTIL операторла-
рының көмегімен төмендегідей түрде жазылады:
. . .
F:=1;
I:=1;



5.13-сурет. Шарты соңынан тексерілетін цикл алгоритмінің
орындалу схемасы


115

REPEAT
F:=F*I;
I:=I+1;
UNTIL I>N;
. . .
Осы оператордың көмегімен жазылған басқа мысалды қа-растырайық. Берілген сандар тізбегінің ішінен 7-ге бөлінетіндер санын анықтау.
PROGRAM REP;
VAR A,K: INTEGER;
C: CHAR;
BEGIN
K:=0;
REPEAT
WRITELN(‘ Келесі санды енгізіңіз ‘); READLN( A);
IF A MOD 7=0 THEN K:=K+1; WRITELN(‘Циклден шыққыңыз келе ме? Д/Y’);
READLN( C ) ;
UNTIL ( C=’Д‘ ) OR ( C=’Y’) ; WRITELN(‘KOL=’,K);

END.


Бұл мысалда циклден шығу шарты – қойылған сауалға жауап бергенде енгізілген Д немесе Y символы болып саналады. Егер осы айтылған символдың бірі енгізілсе, UNTIL сөзінен кейін жазылған логикалық өрнек АҚИҚАТ (TRUE) мəнін қабылдайды да, циклден шығу орындалады.

Келесі мысалда А(M,N) матрицасының жұп жолдарының ең үлкен жəне ең кіші элементтерін тауып, солардың орнын ауыстыру керек.


PROGRAM OBMEN;
VAR A: ARRAY[1..30,1..30] OF INTEGER;
I,J : INTEGER;
K1,L1,K2,L2 : INTEGER;
T,M,N: INTEGER;
BEGIN


116

READLN(M,N);
For I:=1 to M do
FOR J:=1 TO N DO
READLN( A[I,J]);
K1:=1;L1:=1;{ең үлкен элемент координатасы}
K2:=1;L2:=1;{ең кіші элемент координатасы}
I:=2;
WHILE I<=M DO
BEGIN
FOR J:=1 TO N DO
IF A[K1, L1]< A[I,J] THEN BEGIN
K1:=I;L1:=J;
END
ЕLSE
IF A[K2, L2]> A[I,J] THEN BEGIN
K2:=I;L2:=J;
END;
I:=I+2;
END;
T:= A[K1, L1];
A[K1, L1]:= A[K2, L2];
A[K2, L2]:=T;
FOR I:=1 TO M DO
BEGIN
FOR J:=1 TO N DO
WRITE ( A[I,J] :6);
WRITELN ;
END;
END.

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


Турбо Паскаль тілінде BREAK немесе CONTINUE про-цедураларын FOR, WHILE жəне REPEAT циклдерының ішін-де қолдануға болады. BREAK процедурасы циклді тоқтатып,


117

басқаруды циклден кейін орналасқан операторға береді. CON-TINUE процедурасы өзінен кейін орналасқан операторларды орындамай, циклдің келесі қадамына көшеді.
Мысалы, бірөлшемді массивтің 3-ке аяқталатын бірінші элементін анықтау керек.
PROGRAM KON;
VAR A:ARRAY [1.. 30] OF INTEGER;
FL: BOOLEAN;
I,N: INTEGER;

Begin
READLN(N);


FOR I:=1 TO N DO
READLN( A[I] );
FL:=FALSE;
FOR I:=1 TO N DO
BEGIN
IF A[I] MOD 10 <> 3 THEN CONTINUE; WRITELN(‘3-ке аяқталатын бірінші сан
нөмірі ’,I);
FL:=TRUE;
BREAK;
END;
IF NOT FL THEN WRITELN(‘3-ке аяқталатын сан жоқ‘);

END.


Егер 3-ке аяқталатын сан табылса, экранға мəлімет шығады. Жалауша – FL айнымалысы АҚИҚАТ (TRUE) мəнін қабылдап, программа өз жұмысын тоқтатады. Сан табылмаған жағдайда программа соңына дейін орындалады. FL айнымалысының мəні ЖАЛҒАН(FALSE) болып қалады. Экранға сан табылмағаны жайлы мəлімет шығады.
5.9-мысал. Алғашқы n натурал сандардың қосындысын есептейтін программа құру керек.
Қосынды жинақтау тəсілімен анықталады. Қосылатын сандар саны белгілі болғандықтан, қайталану саны белгілі цикл опера-торын қолданамыз. Əр сан қосылған сайын цикл параметрі 1-ге өсіп отырады. Циклға кірер алдында қосындыға нөлді меншіктеу


118

керек. 5.14-суретте программа алгоритмінің схемасы келтірілген.
Төменде программа мəтіні берілген.


Program ex;


Var
i,n,S:integer; Begin
WriteLn(‘ n-ді енгізіңіз’);
ReadLn(n);
S:=0;


Достарыңызбен бөлісу:
1   ...   58   59   60   61   62   63   64   65   ...   210




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

    Басты бет