73
while
жоқ
иә
шарт?
1-оператор
do
2-оператор
n-оператор
4.7-сурет. Шарты соңынан
тексерілетін цикл
s=0; k=1;
while (k<=100)
{ s+=k;
k++;
}
printf ("s= %d",s);
printf("\nАяқтау үшін Enter басыңыз\n");
getch();
}
2-мысал. y=-2.4x
2
+5x-3
x
функциясы мәндерін
оның аргументі х
0
-ден х
k
-ға дейін қадамы dx болып
ӛзгерген кездерде анықтау керек. Мҧнда цикл ал-
дында параметрге алғашқы мән меншіктеледі де,
параметр цикл ішінде берілген қадамға ӛзгеріп оты-
рады (4.6-сурет). Жалпы функция кез келген тҥрде
беріле алады. Ол параметр мәніне байланысты
тармақталып кететін функция да болуы мҥмкін.
/* х тҧрақты қадаммен х0-ден хk-ға дейін ӛзгергенде, функция мәндері
кестесін алу, х0, хk, dx (қадам) пернелерден енгізіледі */
#include
#include
#include
main()
{
float x,y,x0,xk,dx;
clrscr();/* экранды тазалау */
printf ("х-тің бастапқы, соңғы мәндері: ");
scanf ("%f%f",&x0,&xk);
printf ("х-тің өзгеру қадамы dх-ті
енгізіңіз: ");
scanf ("%f",&dx);
printf ("----------------------\n");
printf(" x | y\n");
printf("----------------------\n");
x=x0;
while (x<=xk)
{
y=-2.4*x*x+5*x-3*sqrt(fabs(x));
printf ("%6.2f | %6.2f\n",x,y);
x=x+dx;
}
printf("----------------------\n");
getch();
}
басы
х=x
0
жоқ
иә
x ≤ x
k
y=f(x)
x=x+dx
x,y
соңы
x
0
, x
k
, dx енг.
4.6-сурет. Функция мәндерін
есептеу алгоритмі
74
4.3 Do ... while цикл операторы
Шарты соңынан тексерілетін do … while циклінің орындалу схемасы 4.7-
суретте кӛрсетілген. Осыған сәйкес оператордың жалпы жазылу тҥрі:
do
{
1-оператор;
2-оператор;
… … …
n-оператор;
}
while (өрнек);
Цикл тҧлғасы ретінде қарапайым немесе қҧрама оператор қолданылуы
мҥмкін. Жақшадағы ӛрнек цикл тҧлғасынан кейін тексеріледі. Сондықтан do
while цикл тҧлғасы ең болмағанда бір рет орындалады. Цикл тҧлғасынан кейін
жазылған ӛрнек ақиқат болса (немесе жалған жағдайда ол 0-ге тең болмаса),
цикл тҧлғасы қайтадан орындалады. Ал ӛрнек жалған болса (немесе 0-ге тең
болса), цикл аяқталады. Енді мысалдар келтірейік.
1-мысал.
// Енгізілген сандардың үлкенін (максимумын) табу
#include
#include
main()
{
int a, max;
clrscr();
printf("\n Сандар максимумын табу \n");
printf("Аяқтау үшін 0 енгізіңіз \n");
max = -32000;
// алдын ала максимумды ең кіші бүтінге теңейміз
do
{ printf("Сан енгізіңіз : ");
scanf("%i",&a);
if (a > max) max = a;
}
while (a!=0);
printf("Сандардың максимумы: %i",m);
getch();
}
2-мысал. Келесі программада шексіз сандар қосындысын
...
1
...
5
1
4
1
3
1
2
1
1
1
2
2
2
2
2
1
2
n
i
i
s
алдын ала берілгін дәлдікпен
=10
-5
анықтау керек, яғни келесі қосылатын
қатар мҥшесі осы
санынан кіші болғанда, қосынды табу аяқталады.
75
#include
#include
#define epsilon 1e-5
main()
{
int i; float a,s;
clrscr();
s=0; i=1;
do
{a=1.0/i*i;
s+=a; i++;
}
while (a>epsilon);
printf ("s=%7.4f",s);
getch();
}
3-мысал. Тӛмендегі программада енгізілген бҥтін санның тақ немесе жҧп
екендігі анықталады.
/* Санның жұп екендігін анықтау */
#include
#include
main()
{
int k; /* енгізілетін сан */
char symbol;
textcolor(RED);
textbackground(WHITE);
clrscr();
printf("\n* Санның жұп/тақ екендігін анықтау *\n");
do
{ printf("\nБір бүтін сан енгізіңіз : ");
scanf("%i",&k);
printf("Бұл %i саны -",k);
if (k % 2 == 0)
printf("жұп сан.");
else
printf("тақ сан.");
printf("\nТағы да енгізесіз бе? Иә-'Y',Жоқ-'N':");
scanf("%s",&symbol);
}
while ((symbol=='Y')||(symbol=='y'));
}
Достарыңызбен бөлісу: |