Дәріс 10. Алгоритмдердің циклдық құрылымдарын программалау.
С/С++ тілінде программаның қайталанатын фрагменттерін программалайтын түрлі операторлар бар. Оларды циклдық операторлар деп атайды. С/С++ тілінде циклды ұымдастыру үшін үш оператор белгіленген.
- есептік оператор for (немесе параметрлі цикл);
- алдын ала тексеру операторы while;
- кейін тексеру операторы do..while.
for операторы мынадай құрылымға ие:
for (өрнек_1; өрнек_2; өрнек_3)
{ цикл денесі; }
Мұндағы өрнек_1 – цикл басында бір рет қана орындалады. Әдетте ол цикл параметрінің бастапқы мәнін анықтайды.
өрнек_2 – циклдың орындалу шарты.
өрнек_3 – цикл параметрінің өзгерісін анықтайды.
цикл денесі – қайталанатын операторлар, қарапайым немесе құрамдас болуы мүмкін.
for циклының орындалу алгоритмі:
for арқылы N! табуды былай ұйымдастыруға болады:
f=1;
for (i=1; i<=N; i++)
F=F*I;
«Үтір» операциясын қолданып, өрнек_1-де бірден бірнеше айнымалының мәнін инициализациялауға болады.
Мысалы,
For (i=1; i<=N; i++)
F=F*I;
Былай да жазуға болады:
F=1;
I=1;
For (; i<=N; i++) F=F*I;
Былай да жазуға болады:
For (F=1, i=1; i<=N; F*=i++);
{ цикл денесі; }
Мысалы:
for (int i = 0; i < 10; i++)
{ цикл денесі; }
Бастапқы мәні 0-ге тең, (i < 10) – цикл операторының аяқталау шартын береді, цикл 10 рет айналады деген сөз; (i++) – итерация қадамын білдіреді, қадам 1-ге өсіп отырады.
Сондай-ақ, бастапқы қадамда бірнеше айнымалыны бір мезетте инициализациялауға болады, кейде мұндай әрекет қажет-ақ:
for (int a=5,int b=0 ; a<9 || b>4 ; )
{ денесі; }
while цикл операторының конструкицясы:
while (шарт)
{
цикл денесі }
while цикл операторының денесі орындалады, егер берілген шарт қанағаттандырылса. Егер шарт қанағаттандырылмаса, цикл денесіндегі операторлар бірде бір рет орындалмайды.
N! мысалын қарастыралық.
# include <iostream.h>
void main (){
long int f;
int i, n;
cout <<”n=”; cin>>n;
f=i=1;
while (i<=n) f=f*i++;
cout<< ‘\n << n << ”! =”<<f;}
Мысал:E дәлдікпен берілген 1+1/2+1/3+...=s+1/n қатарының қосындысын итерациялық есептеу.
// гармоникалық қатар қосындысы
# include <iostream.h>
# include < limits.h>
void main ()
{ int n=1;
double s=0, eps;
cout << “ дәлдік:”;
cin >> eps;
while (1.0/n>eps &&
n<int_max)
s+=1/n++;
cout << “\n сумма=”<<s;}
limits.h файлы – деректердің бүтін типтері үшін шектік тұрақтыны анықтауды қамтиды.
INT_MAX тұрақтысы int типінің максимальды мәніне тең.
do while цикл операторының конструкциясы:
do {
цикл денесі
}
while (шарт);
Шарттың тексерілу нәтижесінің ақиқат, жалғандығына қарамастан, цикл денесіндегі операторлар бір рет орындалады, сонан соң ғана шарт тексеріледі. Цикл денесіндегі операторлардың екінші қайтара орындалуы тексеріліп отырған шартқа байланысты. Егер шарт қанағаттандырылса, операторлар екінші қайтара орындалады, егер шарт қанағаттандырылмаса, онда цикл жұмысын аяқтайды.
Мысалы: N! есептеу.
# include <iostream.h>
void main ()
{ long int f;
int i, n;
cout << “ n=”; cin >>n; f=i=1;
do f*=i++;
while (i<=n);
cout << “\n “<<n <<”!=”<<f;}
Мысалы: Кілтжиыннан сан енгізу керек, егер енгізілген сан 5-тен кіші болса, онда оны 5-ке тең болғанға дейін инкрементациялау (өсіру) керек. Егер енгізілген сан 5-тен үлкен болса, онда ол санды экранға шығару керек.
int chislo;
scanf("%d", &chislo);
do {
printf ("%d",chislo++);
}
while (chislo < 5);
continue;
continue операторы ағымдық итерацияны тоқтатады. Мысалы:
Кілтжиыннан сан енгізу керек, егер енгізілген сан 0-ден үлкен болса, онда экранға «Сан – оң сан» деген хабар шығады, егер енгізілетін сан 0-ге тең болса, онда мәнді енгізуді әрі қарай жалғастыра беру керек. Циклдан шығу шарты –13 мәні болу керек.
#include <conio.h>
#include <stdio.h>
int main()
{ int chislo;
for ( ; ; ){
scanf ("%d", &chislo);
if (chislo == -13)
break;
if (chislo == 0)
continue;
if ( chislo > 0 )
printf ("сан оң ");
if (chislo < 0)
printf ("сан теріс "); }
getch();
return 0;}
BREAK – циклдан жедел шығуды жүзеге асырады, бұл процедура цикл операторынан соң тұрған операторға басқару мүмкіндігін береді.
CONTINUE – циклдың кезекті айналымын жедел аяқтауды қамтамасыз етеді; циклдық оператордың ең соңына басқару мүмкіндігін берумен бара-бар.
Негізгі әдебиет: 6 [44-51], 7[33-54], 16 [68-78]
Қосымша әдебиет: 19 [20-25]
Дата добавления: 2015-09-11; просмотров: 3397;