Berilgan n gacha sonlar yigindisi




Download 7,16 Mb.
Pdf ko'rish
bet152/308
Sana30.05.2024
Hajmi7,16 Mb.
#257687
1   ...   148   149   150   151   152   153   154   155   ...   308
Bog'liq
Информатика

. Berilgan n gacha sonlar yigindisi.
Output: 
# include
void main {
int n; 
cin>>n; 
for(int i=1,s=0;i<=n; i++, s+=i); 
cout<<”\n”,s; } 
n=5; 
s=15; 
FOR
operatori tanasi bu misolda bo`sh, Lekin 
C++
tili grammatikasi 
qoidalari 
FOR
operatori tanaga ega bo`lishini talab qiladi. Bo`sh operatorga mos 
keluvchi nuqta vergul shu talabni bajarishga xizmat qiladi.


241 
Keyingi dasturda kiritilgan jumlada satrlar, so`zlar va simvollar soni 
hisoblanadi. 
16-listing
.
Output: 
# include
#define 
yes 1 
#define no 0
void main()
{ int c, nl, nw, inword;
inword = no; 
nl = nw = nc = 0; 
for(char c=``;c!=`.`;cin>> c)
{++nc; 
if (c == `\n`) 
++nl; 
if (c==` ` ||c==`\n` ||c==`\t`) 
inword = no; 
else if (inword == no)
inword = yes; 
++nw; } 
cout <<"\n satrlar="<< nl<<”so`zlar=”<< nw<<”simvollar=”<< nc; } 
Programma har gal so`zning birinchi simvolini uchratganda, mos 
o`zgaruvchi qiymatini bittaga oshiradi. 
INWORD
o`zgaruvchisi programma so`z 
ichida ekanligini kuzatadi. Oldiniga bu o`zgaruvchiga so`z ichida emas ya`ni 
NO
qiymati beriladi. 
YES 
va 
NO
simvolik o`zgarmaslardan foydalanish dasturni 
o`qishni yengillashtiradi.
NL = NW = NC = 0 qatori quyidagi qatorga mos keladi: NC = (NL = (NW = 0)); 
For strukturasi sanovchi (
counter
) bilan bajariladigan takrorlashni bajaradi. 
Boshqa takrorlash bloklarida (
while, do/while
) takrorlash sonini 
control
qilish 
uchun ham sanovchini qo`llasa bo`lardi, bu holda takrorlanish sonini o`ldindan 


242 
bilsa bo`lardi, ham boshqa bir holatning vujudga kelish-kelmasligi orqali 
boshqarish mumkin edi. Ikkinchi holda ehtimol miqdori katta bo`ladi. Masalan, 
qo`llanuvchi belgilangan sonni kiritmaguncha takrorlashni bajarish kerak bo`lsa 
biz 
while
li ifodalarni ishlatamiz. 
for
da esa sanovchi ifodaning qiymati oshirilib 
(kamaytirilib) bosilaveradi, va chegaraviy qiymatni olganda takrorlanish tugatiladi. 
for
ifodasidan keyingi bitta ifoda qaytariladi. Agar bir necha ifoda takrorlanishi 
kerak bo`lsa, ifodalar bloki 
{}
qavs ichiga olinadi. 
17-listing
.
Output: 
# include  
int main()
{ for (int i = 0; i == 5; i++) { 
cout << i << endl; }
return (0);
}






for strukturasi uch qismdan iboratdir. Ular nuqtavergul [;] bilan bir-biridan 
ajratiladi. for ning ko`rinishi:
for( a; b; c ){ 
takror etiladigan blok } 
a - e`lon va initsalizatsiya. 
b - shartni tekshirish (oz`garuvchini chegaraviy qiymat bilan solishtirish). 
c - o`zgaruvchining qiymatini o`zgartirish.
Qismlarning bajarilish ketma-ketligi quyidagichadir: 
Boshida a bajariladi (faqat bir marta), keyin b dagi shart tekshiriladi va agar 

true
bo`lsa takrorlanish bloki ijro ko`radi, va eng oxirda c da o`zgaruvchilar 
o`zgartiriladi, keyin yana ikkinchi qismga o`tiladi. for strukturamizni 
while
struktura bilan almashtirib ko`raylik: 
for (int i = 0; i < 10 ; i++) 
cout << "Hello!"<< endl; 


243 
Ekranga 10 marta Hello! so`zi bosib chiqariladi. i o`zgaruvchisi 0 dan 9 
gacha o`zgaradi. i=10 bo`lganda esa 
i < 10
sharti noto`g`ri (
false
) bo`lib chiqadi va 
for
strukturasi nihoyasiga yetadi. Buni while bilan yozsak: 
int i = 0; 
while ( i<10 ){ 
cout << "Hello!" << endl; 
i++; } 
Endi for ni tashkil etuvchi uchta qismning har birini alohida ko`rib chiqsak. 
Birinchi qismda asosan takrorlashni boshqaradigan sanovchi (counter) 
o`zgaruvchilar e`lon qilinadi va ularga boshlangich qiymatlar beriladi 
(initsalizatsiya). Yuqoridagi dastur misolida buni 
int i = 0;
deb berganmiz. Ushbu 
qismda bir necha o`zgaruvchilarni e`lon qilishimiz mumkin, ular vergul bilan 
ajratililadi. Ayni shu kabi uchinchi qismda ham bir nechta o`zgaruvchilarning 
qiymatini o`zgartirishimiz mumkin. Undan tashqari birinchi qismda for dan oldin 
e`lon qilingan o`zgaruvchilarni qo`llasak bo`ladi. Masalan, 
int k = 10;
int l; 
for (int m = 2, l = 0 ; k <= 30 ; k++, l++, ++m) { 
cout << k + m + l; }
Albatta bu ancha sun`iy misol, lekin u bizga 
for
ifodasining naqadar 
moslashuvchanligini ko`rsatadi. 
for
ning qismlari tushurib qoldirilishi mumkin. 
Masalan, 
for(;;) {}
ifodasi cheksiz marta qaytariladi. Bu for dan chiqish uchun 
break 
operatorini beramiz. Yoki agar sanovchi sonni takrorlanish bloki ichida 
o`zgartirsak, 
for
ning 3-qismi kerak emas. Masalan, 
for(int g = 0; g < 10; ){ 
cout << g; 
g++; } 
Yana qo`shimcha misollar beraylik. 
for (int y = 100; y >= 0; y-=5){ 


244 
... 
ifoda(lar); 
... } 
Bu yerda 100 dan 0 gacha 5 lik qadam bilan tushiladi. 
for(int d = -30; d<=30; d++){ 
... 
ifoda(lar); 
... }
60 marta qaytariladi. 
For strukrurasi bilan dasturlarimizda yanada yaqinroq tanishamiz. Endi a 
e`lon qilinadigan o`zgaruvchilarning xususiyati haqida bir og`iz aytib o`taylik. 
Standartga ko`ra bu qismda e`lon qilingan o`zgaruvchilarning qo`llanilish sohasi 
faqat o`sha for strukturasi bilan chegaralanadi. Yani bitta blokda joylashgan for 
strukturalari mavjud bo`lsa, ular ayni ismli o`zgaruvchilarni qo`llana ololmaydilar. 
Masalan, quyidagi xatodir: 
for(int j = 0; j<20; j++){...}
... 
for(int j = 1; j<10 ; j++){...} //xato! 
j o`zgaruvchisi birinchi for da e`lon qilib bo`lindi. Ikkinchi for da ishlatish 
mumkin emas. Bu masalani yechish uchun ikki xil yo`l tutish mumkin. 
Birinchisi bitta blokda berilgan for larning har birida farqli o`zgaruvchilarni 
qo`llashdir. Ikkinchi yo`l for lar guruhidan oldin sanovchi vazifasini bajaruvchi bir 
o`zgaruvchini e`lon qilishdir. Va for larda bu o`zgaruvchiga faqat kerakli 
boshlangich qiymat beriladi xalos. 
for ning ko`rinishlaridan biri, bo`sh tanali for dir.
for(int i = 0 ; i < 1000 ; i++); 
Buning yordamida biz dastur ishlashini sekinlashtirishimiz mumkin. 


Download 7,16 Mb.
1   ...   148   149   150   151   152   153   154   155   ...   308




Download 7,16 Mb.
Pdf ko'rish