Axborot tеxnologiyalari kafеdrasi kurs ishi «dasturlash tillari» fanidan kurs ishi mavzu: C++ dasturlash tilida for, while va do while operatoriga doir dastur tuzish


Download 0.93 Mb.
bet4/11
Sana30.04.2023
Hajmi0.93 Mb.
#1416520
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
Chirmashev Diyorbek

FOR := TO DO
Bu yerda FOR TO DO – rezerv so’zlar (uchun, bo’lguncha, bajar) deb tarjima qilinadi.
For operatori sanoq bilan bajaradigan takrorlashni bajaradi. Agar For operatorida bir necha ifoda takrorlanishi kk bo’lsa ifodalar bloki {} qavs ichiga olinadi.
For operatori ta’sirida takrorlash jarayoni quyidagi tartibda kechadi:

  • 1-ifodaga asosan o’zgaruvchilar e’lon qilinadi, ularga boshlang’ich qiymatlar beriladi. So’ng 2-ifodaga o’tiladi va bu ifodaga qaytilmaydi.

  • 2- ifodadagi shartli ifoda tekshiriladi. Agar u rost bo’lsa , takrorlash tanasiga o’tiladi.

  • Takrorlash tanasida ko/rsatilgan amallar bjariladi.

  • 3- ifodaga asosan o’zgaruvchilarga yangi qiymatlar beriladi.

  • So’ng yana 2- ifodga ya’ni shartli ifodaga o’tiladi va h.k. takrorlash jarayoni shu tartibda davom etadi.

While operatori va undan foydalanish
For sikl operatorini avvaldan takrorlanishlari soni aniq bo‘lgan masalalarni yechish uchun qo‘llash samara beradi. Lekin har doim ham takrorlanishlar sonini avvaldan bilib bo‘lmaydi. Faqatgina shart tekshirish orqali sikl davom etishi yoki to‘xtashi kerakligi haqida xulosa qilish uchun while sikl operatoridan foydalangan ma’qul. while sikl operatori while sikl operatori shart ifodasi bajarilgan holatlar (True bo‘lsa) uchun davom etadi, agar shart bajarilmasa (False bo‘lsa), sikl o‘z ishini to‘xtatadi. Sintaksisi: while shart ifodasi: sikl tanasi shart ifodasi – sikl sharti; sikl tanasi – bajarilishi kerak bo‘lgan buyruqlar.


while siklidagi shart ifodasi doimo bajarilsa (True qiymat qaytarsa), sikl hech qachon to‘xtamaydi, ya’ni cheksiz davom etishi mumkin. Cheksiz sikl yaratish juda ham oson bo‘lib, shartning o‘rniga True kalit so‘zi kiritilsa kifoya.


do - while operatorida takrorlanishning tanasi kamida bir marta takrorlanadi. Shu bir marta hisoblash ham yechilayotgan masalani mohiyatini buzib yuborishi mumkin. Bunday hollarda while takrorlanish operatoridan foydalangan maqsadga muvofiq.


while operatorining umumiy ko'rinishi:
while (shart)
{
takrorlanish_tanasi;
}
takrorlanish_tanasi ixtiyoriy operator yoki operatorlar majmuidan iborat bo'lishi mumkin.
while takrorlanish operatorning ishlash tartibi:
Agar (shart) rost ( true ) qiymatga ega bo`lsa, takrorlanish_tanasi bajariladi. Agar (shart) yolg`on (false) qiymatga teng bo`lsa takrorlanish tugatiladi.
Agar ( shart ) true qiymatga ega bo`lmasa takrorlanish tanasi biror marta ham bajarilmaydi.
while takrorlanish operatoridan, qachon (shart) false (yolg'on) qiymat qabul qilsa chiqiladi.
Ya'ni boshqarilish while operatoridan keyingi operatorga uzatiladi. Agar (shart) false qiymat qabul qilmasa, while takrorlanish operatoridan chiqib ketilmaydi va bu jarayon takrorlanishlanib qolish deyiladi.
Dasturlash san'ati. do - while va while takrorlanish operatorlarida takrorlanish tanasi sifatida faqat bitta operator ishlatiladiga bo'lsa, bu operatorni blok orasiga { } olmasdan ham yozish mumkin. Lekin professional dasturchilar har qanay xolda takrorlanish tanasini blokka { } olib yozishni tavsiya qilishadi. Bu esa sodir bo'lishi mumkin bo'lgan mantiqiy xatoliklarni oldini oladi.
Misol 1: 1 dan 10 gacha bo'lgan sonlarni chiqaruvchi dastur tuzilsin.
#include
int main()
{
int i = 1;
while ( i <= 10 )
{
cout << i << endl;
i++;
}
system ("pause");
return 0;
}
Misol 2: 1+1/2+1/3+…+1/50 yig`indini hisoblovchi dastur tuzilsin.
#include
int main()
{
float i = 1; // sanagich
float s = 0; // yig'indi
while ( i <= 50 ) {
s += 1 / i;
i++;
}
cout << s << endl;
system ("pause");
return 0;
}
Misol 3: Kompyuter o'ylagan sonni topish dasturi
#include
#include
int main()
{
int x, y = 0, u = 0;
srand(time(NULL));
x = rand() % 1000 + 1;
cout << "Kompyuter o'ylagan sonni toping" << endl;
while (x != y)
{
cin >> y;
u++;
if (x > y) cout << "Kompyuter o'ylagan son katta" << endl;
else if (x < y) cout << "Kompyuter o'ylagan son kichik" << endl;
}
cout << "Qoyil topdingiz!!!" << endl;
cout << "Urinishlar soni=" << u << endl;
system ("pause");
return 0;
}
Avvalgi ko‘rgan misollarimizda takrorlanishlar soni aniq edi. Ammo shunday masalalar ham uchraydiki, ularda biror amallar ketma-ketligini ma’lum bir shart bajarilganda takrorlash kerak bo‘ladi. Bunda takrorlanishlar sonini avvaldan aytib bo‘lmaydi. Bunday hollarda shart bo‘yicha takrorlash operatorlaridan foydalaniladi. Paskalda bunday operatorlar ikkita: While va Repeat.
While operatori quyidagi umumiy ko‘rinishga ega:
While  Do ;
bu yerda While (ing. toki) va Do Paskalning xizmatchi so‘zlari; – oddiy yoki murakkab mantiqiy ifoda; – takrorlanishi lozim bo`lgan operator yoki operatorlar ketma-ketligi. Agar takrorlanish tanasida operatorlar ketma-ketligi yozilsa, ular begin bilan boshlanib, end; bilan yakunlanadi.
Mazkur takrorlash operatori quyidagicha ishlaydi:
Avval shart tekshiriladi. Agar uning qiymati rost bo‘lsa, takrorlash tanasini tashkil etuvchi operatorlar ishlaydi, va yana shart teksiriladi. Bu jarayon shart yolg‘on qiymat qabul qilgunga qadar davom etadi.
1–misol. Ikkita sonning eng katta umumiy bo‘luvchisini (EKUB) topuvchi dastur tuzing.
Yechish. EKUB topishning eng qulay usuli – Evklid algoritmi. Bu algoritm sizga avvalgi bobdan tanish. Dasturi quyidagicha:
Program EKUB;
Var a, b : Integer;
Begin
Write(‘Birinchi sonni kiriting: ‘); ReadLn(a);
Write(‘Ikkinchi sonni kiriting: ‘); ReadLn(b);
While a<>b Do If a>b Then a:=a–b Else b:=b–a; {a=b bo‘lganda takrorlash tugaydi}
WriteLn(‘EKUB= ‘, a);
End.
Repeat operatori ham shart bo‘yicha takrorlashni amalga oshiradi. Uning umumiy ko‘rinishi quyidagicha:
Repeat

Until 
Bu yerda Repeat (ing. takrorlash) va Until (ing. gacha) Paskalning xizmatchi so‘zlari bo‘lib, Repeat – takrorlash boshi, Until – takrorlash oxirini bildiradi; – oddiy yoki murakkab mantiqiy ifoda. Takrorlanish tanasi shart rost qiymat qabul qilgungacha bajarilaveradi.
2–misol. S = 1,1+1,5+1,9+2,3+…+45,5 yig’indini hisoblash dasturini tuzing.
Yechish. Misolni tahlil qilib qo’shiluvchilar 0,4 ga farq qilishini aniqlaymiz. Parametrli takrorlash operatorida parametr qiymati haqiqiy bo’la olmaydi. Bu holda shart bo’yicha takrorlash operatorlaridan foydalanish qulay. Quyidagi ikkala yechimni taqqoslab ko’ring.

while ham xuddi for singari takrorlash operatori. Buni bilganlar darmonda, bilmaganlar o’sha gap. Umumiy tuzilishi while(shart){operatorlar} while(shart) { Operatorlar; } bu while operatori zab ajoyibda. Ajoyibligi shuki har safar shartni tekshiradi. Agar true bo’lsa while ichidagi operatorlarni bajaradi. Agar false bo’lsa while ichida shuncha yozgan kodiyizni bir tiyinga olmaydida darrov keying amalga o’tadi. Masalan oddiy “salom” so’zini 10 marta yozmoqchimiz. Buning uchun quyidagicha kod kiritamiz.


int i = 1;
while(i<10)
{
Console.WriteLine("salom");
i = i + 1;
}
Ko’rib turganingizdek while ishimiz ancha osonlashadi. Bu while operatorini ifni akasi desak ham bo’ladi. Faqat else qismi yo’q xolos, ammo yaxshi tarafi sikl bajaradi. Endi siz bilan yana bir misol ko’ramiz.
while(true)
{
Console.WriteLine("salom");
}



Download 0.93 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling