While do while operatori


Download 25.22 Kb.
Sana11.11.2023
Hajmi25.22 Kb.
#1766901
Bog'liq
while do while operatori


WHILE DO WHILE OPERATORI
Takrorlash buyrug'i yoki tsikli - ma'lum bir mantiqiy ifodaning qiymati saqlanib qolgan holda, bir xil harakatlar ketma-ketligi takrorlanadigan harakatlarni tashkil qilish shakli. Mantiqiy ifodaning qiymati teskarisiga o'zgarganda, takrorlashlar to'xtaydi (sikl tugaydi).
Tsiklni tashkil qilish uchun siz quyidagi amallarni bajarishingiz kerak:
tsiklni boshlashdan oldin, parametrning boshlang'ich qiymatini o'rnating;
sikl ichida, belgilash operatori yordamida sikl parametrini o'zgartirish;
tsiklning takrorlanishi yoki tugash holatini tekshirish;
tsiklni boshqarish, ya'ni. Agar u tugallanmagan bo'lsa, uning boshiga o'ting yoki aks holda tsikldan chiqing.
Takrorlashlar soni ma'lum bo'lgan (parametrli tsikl) va takrorlanuvchi (oldindan va keyingi shartlar bilan) tsikllar mavjud.
Takrorlashlar soni ma'lum bo'lgan tsiklda parametr berilgan diapazonda o'zgaradi.
Agar oddiy o'zgaruvchi siklda o'zgartirilsa, u holda tsikl parametri hisoblanadi; Agar indeksga ega bo'lgan o'zgaruvchi siklda o'zgartirilsa, u holda bu o'zgaruvchining indeksi sikl parametridir.
Paskalda takroriy soni ma'lum bo'lgan siklni tashkil qilish uchun while operatoridan foydalaniladi.
Ushbu operator yordamida tashkil etilgan tsiklning tuzilishi quyidagicha:
A To B Do Boshlash End;
yoki
A Pastga B Do Boshlash End;
Bu erda men tsiklda o'zgarib turadigan parametr; A, B sikl parametrining dastlabki va yakuniy qiymatini bildiruvchi tartib tipidagi ifodalardir. Loop parametr raqamini o'zgartirish bosqichi 1 ga teng, agar tsikl sarlavhasida To bo'lsa (ya'ni, pastadir parametrining keyingi qiymati aslida succ funksiyasi yordamida hisoblanadi); va DownTo uchun -1 (pre funksiyasi yordamida hisoblangan).
1-bosqich bilan tsiklni bajarish tartibi quyidagicha: tsikl parametrining boshlang'ich va yakuniy qiymatlari qiymatlari hisoblanadi; parametr agar men boshlang'ich qiymatni olsam; agar I yakuniy qiymatdan kichik yoki unga teng bo'lsa, tsiklning tanasi bajariladi; sikl parametrining qiymati ortadi, ya'ni. I := succ(I); I<=B sharti tekshiriladi (salbiy qadam uchun I>=B shart) va u bajarilgandan keyin tsikl takrorlanadi. Agar I>B (I B (yoki A) bo'lsa, tsikldan chiqadi
Agar parametrli sikl bayonotida parametrning boshlang'ich yoki yakuniy qiymati o'zgaruvchilar yoki ifodalar bilan ko'rsatilgan bo'lsa, u holda bu o'zgaruvchilarning qiymatlari dasturda tsikl bayonotidan oldin aniqlanishi kerak. Loop ichida siz topshiriq yoki kiritish iboralari yordamida tsikl parametrini yoki uning boshlang'ich va yakuniy qiymatlarini o'zgartirmasligingiz kerak.
Masala 1. Natural n va haqiqiy x berilgan. Hisoblash 
Muammoni hal qilish algoritmini ishlab chiqamiz:
1) ma'lumotlarni kiritish - hadlar soni n va son x;
2) sin x kuchlarini saqlaydigan o'zgaruvchiga 1 qiymatini bering; S := 0;
3) sikl parametriga 1 qiymatini berish;
4) agar tsikl parametrining qiymati n dan kichik bo'lsa, keyingi bosqichga o'ting, aks holda 9-bosqichga o'ting;
5) sin x ning keyingi kuchini hisoblang;
6) yig'indiga hisoblangan qiymatni qo'shish;
7) sikl parametrini 1 ga oshirish;
8) 4-bosqichga o'ting;
9) S summasini chop eting;
10) tugatish.
{Sinxning darajalari yig'indisini hisoblash dasturi x}
Dastur summasi;
Var S, X, Pr: Real; N, I: Butun son;
Boshlanishi
Write('Atamalar sonini va x ni kiriting: '); ReadLn(N, X);
Pr := 1; {bu o'zgaruvchi sin x ning ketma-ket kuchlarini saqlaydi}
S := 0;
Men uchun:= 1 To N Do
Boshlanishi
Pr := Pr * Sin(X); {Keyingi kuch Sin(x)}
S := S + Pr
Oxiri;
WriteLn('Sum ', S : 7 : 4)
Oxiri.
Ko'pincha massivni qayta ishlash dasturlarini ishlab chiqishda parametrli tsikl ishlatiladi.
Eslatma. Yuqoridagi hikoyadan ko'rinib turibdiki, Paskal tilida parametrli siklni qo'llash doirasi sezilarli darajada cheklangan: cheklovlar sikl parametrini o'zgartirish bosqichi, sikl parametrining turi, uning boshlang'ich va yakuniy qiymatlar. Ba'zi tillarda, masalan, Basic, bunday cheklovlarga ega emas.
Parametrga ega bo'lgan pastadir bilan solishtirganda, takrorlanuvchi tsikllar universaldir. Takrorlanuvchi sikllarni tashkil qilish uchun while old sharti bilan sikl operatorlari va takrorlash..until postshartli sikl operatorlari ishlatiladi.
Bu operatorlar sikl parametrini o'zgartirish qonunini belgilamaydi, shuning uchun sikldan oldin belgilash operatori yordamida parametrning boshlang'ich qiymatini o'rnatishingiz kerak va bu parametrning joriy qiymatini tsikl ichida o'zgartirishingiz kerak.
Tegishli halqa tuzilmalari:
while B Do Begin End;
C gacha ni takrorlang;
Bu yerda B, C mantiqiy ifodalardir.
Old shartli sikl operatori uchun mantiqiy ifodaning qiymati tekshiriladi, agar u True bo'lsa, siklga kiritilgan operatorlar bajariladi, aks holda sikldan keyingi operator bajariladi.
Postshartli sikl kamida bir marta bajariladi. Shundan so'ng mantiqiy ifodaning qiymati tekshiriladi, agar u False bo'lsa, u holda tsiklga kiritilgan operatorlar bajariladi, aks holda sikl chiqariladi.
Siz tsiklni faqat uning boshlanishi orqali kiritishingiz mumkin, ya'ni. Nazorat iborasi yordamida sikl ichiga kira olmaysiz, chunki bu holda loop parametri aniqlanmagan.
Masala 2. |an-an-1| sharti berilgan qator a'zosining eng kichik sonini toping<="" p="">
Masalani yechish jarayonida an va an-1 ni bilish zarur bo’lganligi sababli ularni mos ravishda ANew va AOld o’zgaruvchilarida saqlaymiz.
Dastur e'lon qilindi;
Var Eps, AOld, ANew: Real; N: butun son;
Boshlanishi
Write('Epsilon raqamini kiriting'); ReadLn(Eps);
AOld := 0; AYangi:= ArcTan(AOld) + 1;
N := 2;
WriteLn(AOld : 8 :5); WriteLn(Yangi: 8 :5);
Holbuki Abs(Yangi - AOld) >= Eps Do
Boshlanishi
AOld := AYangi;
AYangi:= ArcTan(AOld) + 1;
WriteLn(Yangi: 8 :5);
N := N + 1
Oxiri;
WriteLn('Qidiruv raqami', N)
Oxiri.
Bitta tsiklda bir yoki bir nechta boshqalar bo'lishi mumkin. Bunday holda, o'rab turgan pastadir tashqi deb ataladi va ichki o'rnatilgan halqalar ichki deb ataladi. Tashqi va ichki pastadirlarni tashkil qilish qoidalari oddiy pastadir bilan bir xil.
Masala 3. Intervalda [2; n] bo‘luvchilarning maksimal yig‘indisiga ega natural sonni toping.
Taklif etilayotgan muammoni "butun sonli arifmetik muammo" deb tasniflash mumkin, bunda argumentlar, natijalar va oraliq qiymatlar butun son turiga kiradi. Shuni ta'kidlash kerakki, bu turdagi vazifalarda DIV va MOD operatsiyalari juda tez-tez ishlatiladi; Eng tipik pastki vazifa raqamdagi raqamlar sonini aniqlashdir.
Muammoni hal qilish algoritmi:
1) n raqamini kiriting;
2) bo'luvchilarning maksimal yig'indisini saqlash uchun o'zgaruvchini tayinlash
1-qiymat (bu 1-sonning bo'luvchilari yig'indisi);
3) bo'luvchilarning maksimal yig'indisi bilan raqamni eslab qolish;
4) sikl parametri I ga 2 qiymatini berish;
5) agar men n dan katta bo'lsa, 13-bosqichga, aks holda - keyingi nuqtaga o'ting;
6) bo‘luvchilarning keyingi yig‘indisini saqlash uchun o‘zgaruvchiga 0 qiymatini berish;
7) sikl parametri K ga 1 qiymatini berish;
8) agar K I/2 dan katta bo'lsa, 11-bosqichga, aks holda - keyingi nuqtaga o'ting;
9) agar I K ga qoldiqsiz bo‘linadigan bo‘lsa, bo‘luvchilarning joriy yig‘indisiga K ni qo‘shing;
10) K ni 1 ga oshiring va 8-bosqichga o'ting;
11) bo'luvchilarning joriy yig'indisini maksimal bilan solishtiring, agar maksimal kichik bo'lsa,
yangi qiymatni va ushbu miqdorga mos keladigan raqamni eslab qoling;
12) I ni 1 ga oshiring va 5-bosqichga o'ting;
13) bo'luvchilarning maksimal yig'indisi va bu yig'indi bilan raqamni chop etish;
14) tugatish.
Dastur Sum_Del;
Var N, I, Sum_Maks, Sum, K, Ch : Butun son;
Boshlanishi
Write('N raqamni kiriting:'); ReadLn(N);
Sum_Maks := 1; {Bo'luvchilarning maksimal yig'indisi}
Ch := 1; {Bo'luvchilarning maksimal yig'indisi bo'lgan son}
For I := 2 To N Do {Bu raqamlar soni bo'yicha tsikl}
Boshlanishi
yig'indisi:= 0;
K := 1 To I Div 2 + 1 Do {Ushbu siklda biz bo'luvchilar yig'indisini topamiz}
Agar I Mod K = 0 bo'lsa, {Agar I K ga teng bo'linadigan bo'lsam, u holda K I ning bo'luvchisidir}
Yig'indi:= Sum + K;
Yig'indi:= Sum + I;
Agar Sum > Sum_Max U holda Sum_Maks boshlanadi:= Sum; Ch := I End;
Oxiri;
WriteLn('Bo'luvchilarning maksimal yig'indisi ', Sum_Max, ' soni ',Ch)
Oxiri.
Masala 4. n natural soni berilgan. Bu sonning barcha asosiy omillarini oling.
{ Berilgan sonning tub omillarini topish dasturi}
Pr_Del dasturi;
Var N, I, Vsp : Butun son;
Log_Per, Priznak: Boolean;
Boshlanishi
Write('Natural sonni kiriting: ');
ReadLn(N);
Priznak := To'g'ri; {Kiritilgan son tub ekanligini ko'rsatuvchi ko'rsatkich}
{Loop parametri berilgan sonning kvadrat ildizidan oshmasa,
asosiy bo'luvchilarni qidirishda davom eting}
I uchun:= 2 To Round(Sqrt(N)) Do
Agar N Mod I = 0 bo'lsa
Boshlanishi
Priznak := False; {Kiritilgan raqam tub emas}
Log_Per := False; {True qiymatini qabul qiluvchi mantiqiy oʻzgaruvchi,
1 va I dan boshqa bo'luvchilar bo'lsa I}
Vsp := 2;
Takrorlang
Agar (I Mod Vsp = 0) Va (I <> Vsp) bo'lsa, Log_Per := True;
Vsp := Vsp + 1
(Vsp > I Div 2 + 1) yoki Log_Pergacha;
Agar bo'lmasa(Log_Per) Keyin WriteLn(I) {Agar I soni tub bo'lsa, uni chop eting}
Oxiri;
Priznak bo'lsa Ln(N) yozing
Oxiri.
Biz o'quvchini taqdim etilgan echimni mustaqil ravishda tushunishga taklif qilamiz.
Test savollari va topshiriqlari
Takrorlash tsikllari va parametrli tsikl o'rtasidagi farqlar qanday?
Parametrli sikl operatori qanday tuzilishga ega? Parametrli sikl qanday bajariladi?
Loop parametri, uning boshlang'ich va yakuniy qiymatlari Paskalda parametrli siklda qanday turdagi bo'lishi kerak?
Paskalda parametrli sikldagi sikl parametri va uning boshlang'ich va yakuniy qiymatlari har xil turdagi bo'lishi mumkinmi? Javobingizni asoslang.
Bir halqani boshqasiga joylashtirish mumkinmi? Agar shunday bo'lsa, bu uyaning chuqurligi qancha?
Old va keyingi shartlarga ega bo'lgan halqalarning tuzilishi qanday? Ushbu tsikllar qanday amalga oshiriladi?
Oldindan va keyingi shartlarga ega bo'lgan tsikllarning bajarilishining minimal va maksimal soni qancha? Bu nima bilan bog'liq?
Dastur fragmenti necha marta bajariladi?
i uchun := 1 dan -1 gacha Do k:=k*i;
Dastur fragmenti necha marta bajariladi?
i uchun := -1 dan 1 gacha Do k:=k*i;
Dastur fragmenti necha marta bajariladi?
i uchun := 1 pastga -1 Do k:=k*i;
Dastur fragmenti necha marta bajariladi?
M := 123; while M <> 0 Do M := M Mod 10;
Parametrli sikl uchun oldingi va keyingi shartli tsikllar yordamida uning to'liq ekvivalentini yozing.
Old shartli sikl uchun uning to‘liq ekvivalentini keyingi shartli sikl yordamida yozing.
Keyingi shartli sikl uchun oldingi shartli sikl yordamida uning to‘liq ekvivalentini yozing.
do-while такрорлаш оператори while операторидан фарқли равишда олдин оператор ёки блокни бажаради, кейин такрорлаш шартини текширади. Бу қурилма такрорлаш танасини камида бир марта бажарилишини таъминлайди. do-while такрорлаш оператори қуйидаги синтаксисга эга:
do <оператор ёки блок>; while (<ифода>);
Бундай такрорлаш операторининг кенг қўлланиладиган ҳолатлари - бу такрорлашни бошламасдан туриб, такрорлаш шартини текширишнинг иложи бўлмаган ҳолатлар ҳисобланади. Масалан, бирорта жараённи давом эттириш ёки тўхтатиш ҳақидаги сўровга

жавоб олиш ва уни текшириш зарур бўлсин. Кўриниб турибдики, жараённи бошламасдан олдин бу сўровни беришнинг маъноси йўқ. Ҳеч бўлмаганда такрорлаш жараёнининг битта қадами амалга оширилган бўлиши керак:


#include int main()
{
char javob; do
{
... // программа танаси cout<<”Jarayonni to’xtatish (N):_ ”; cin>>javob;
} while(javob !=N) return 0;
}
Программа токи ”Jarayonni to’xtatish (N):_ ” сўровига ‘N’ жавоби киритилмагунча давом этади.
Бу оператор ҳам чексиз такрорланиши мумкин:
do; while(1);
bunda Ҳар қандай 7 катта бутун сондаги пул миқдорини 3 ва
5 сўмликларда бериш мумкинлиги исботлансин. Қўйилган масала p=3n+5m тенгламаси қаноатлантирувчи m, n сонлар жуфтликларини топиш масаласидир (p-пул миқдори). Бу шартнинг бажарилишини m ва n ўзгарувчиларининг мумкин бўлган қийматларининг барча комбинацияларида текшириш зарур бўлади.
#include int main()
{
unsigned int Pul; //Pul- киритиладиган пул миқдори unsigned n3,m5; //n-3 сўмликлар,m-5 сўмликлар сони bool xato=false; //Pul қийматини киритишдаги хатолик do
{
if(xato)cout<<"Pul qiymati 7 dan kichik!"; xato=true; // кейинги такрорлаш хато ҳисобланади cout<<"\nPul qiymatini kiriting (>7): "; cin>>Pul;
}
while(Pul<=7);//токи 7 катта сон киритилгунча
n3=0; //бирорта ҳам 3 сўмлик йўқ
do
{
m5=0; //бирорта ҳам 5 сўмлик йўқ
do
{
if (3*n3+5*m5==Pul)
cout<} while(3*n3+5*m5<=Pul);
n3++; //3 сўмликлар биттага оширилади
} while(3*n3<=Pul); return 0;
}
Программа пул қийматини киритишни сўрайди (Pul ўзгарувчи- сига). Агар пул қиймати 7 сонидан кичик бўлса, бу ҳақда хабар берилади ва такрор равишда қиймат киритиш талаб қилинади. Пул қиймати 7 дан катта бўлганда, 3 ва 5 сўмликларнинг мумкин бўлган тўла комбинациясини амалга ошириш учун ичма-ич такрорлашлар амалга оширилади. Ташқи такрорлаш n3 (3 сўмликлар миқдори) бўйича, ички такрорлаш эса m5 (5 сўмликлар миқдори) бўйича, токи бу миқдордаги пуллар қиймати Pul қийматидан ошиб кетмагунча давом этади. Ички такрорлашда m5 ўзгарувчисининг ҳар бир қийматида «3*n3+5*m5==Pul» шарти текширилади, агар у ўринли бўлса, ечим варианти сифатида n3 ва m5 ўзгарувчилар қийматлари чоп этилади.
Пул қиймати 30 сўм киритилганда (Pul=30), экранга
0 ta 3 so’mlik + 6 ta 5 so’mlik
5 ta 3 so’mlik + 6 ta 5 so’mlik
10 ta 3 so’mlik + 0 ta 5 so’mlik
ечим вариантлари чоп этилади.

Download 25.22 Kb.

Do'stlaringiz bilan baham:




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