Oldingi shartli while operatori. Oldingi shartli while operatori quyidagi umumiy ko’rinishga egadir:
while(ifoda) Operator
Bu operator bajarilganda avval ifoda hisoblanadi. Agar uning qiymati 0 dan farqli bo’lsa operator bajariladi va ifoda qayta hisoblanadi. To ifoda qiymati 0 bo’lmaguncha sikl qaytariladi. Agar dasturda while (1); satr qo’yilsa bu dastur hech qachon tugamaydi.
Misol: Berilgan n gacha sonlar yig’indisi.
#include <stdio.h>
void main()
{
long n,i = 1,s = 0;
scanf("%d",&n);
while (i< = n ) s+ = i++;
printf("\n s = %d",s);
}
Bu dasturda s+ = i++ ifoda s = s+i; i = i+1 ifodalarga ekvivalentdir.
Quyidagi dastur to nuqta bosilmaguncha kiritilgan simvollar va qatorlar soni hisoblanadi:
#include <stdio.h>
int main()
{
int nc = 0,nl = 0;
char c;
while ((c = getchar())! = '.' )
{
++nc;
if (c = = '\n') ++nl;
};
printf("satrlar = %d simvollar = %d \n",nl,nc);
return 0;
}
Keyingi shartli do-while operatori. Keyingi shartli do-while operatori umumiy ko’rinishi quyidagicha:
do
Operator while(ifoda)
Sikl operatorining bu ko’rinishida avval operator bajariladi so’ngra ifoda hisoblanadi. Agar uning qiymati 0 dan farqli bo’lsa operator yana bajariladi va hokazo. To ifoda qiymati 0 bo’lmaguncha sikl qaytariladi.
Misol: Berilgan n gacha sonlar yig’indisi.
#include <stdio.h>
int main()
{
long n,i = 1,s = 0;
scanf("%d",&n);
do{
s+ = i++;
}while (i< = n); printf("\n s = %d",s);
return 0;
}
Bu dasturning kamchiligi shundan iboratki agar n qiymati 0 ga teng yoki manfiy bo’lsa ham, sikl tanasi bir marta bajariladi va s qiymati birga teng bo’ladi.