while ( âûðaæåíèå ) îïåðaòîð
Âûðaæåíèå îïðåäåëяåò óñëîâèå ïîâòîðåíèя òåëa öèêëa, ïðåäñòaâëåííîãî ïðî- ñòûì èëè ñîñòaâíûì îïåðaòîðîì. Âûïîëíåíèå îïåðaòîða ía÷èíaåòñя ñ âû÷èñëå- íèя âûðaæåíèя. Åñëè îíî èñòèííî (íå ðaâíî false), âûïîëíяåòñя îïåðaòîð öèê- ëa. Åñëè ïðè ïåðâîé ïðîâåðêå âûðaæåíèå ðaâíî false, öèêë íå âûïîëíèòñя íè
ðaçó. Òèï âûðaæåíèя äîëæåí áûòü aðèôìåòè÷åñêèì èëè ïðèâîäèìûì ê íåìó. Âûðaæåíèå âû÷èñëяåòñя ïåðåä êaæäîé èòåðaöèåé öèêëa.
Ïðèìåð (ïðîãðaììa ïå÷aòaåò òaáëèöó çía÷åíèé ôóíêöèè y=x2+1 âî ââåäåííîì äèaïaçîíå):
include int main(){
float Xn, Xk, Dx;
printf("Ââåäèòå äèaïaçîí è øaã èçìåíåíèя aðãóìåíòa: "); scanf("%f%f%f", &Xn, &Xk, &Dx);
printf("| X | Y |\n"); // øaïêa òaáëèöû
float X = Xn; // óñòaíîâêa ïaðaìåòða öèêëa
while (X <= Xk){ // ïðîâåðêa óñëîâèя ïðîäîëæåíèя printf("| %5.2f | %5.2f |\n", X, X*X + 1); // òåëî öèêëa
X += Dx; // ìîäèôèêaöèя ïaðaìåòða
}
return 0;
}
Ïðèìåð (ïðîãðaììa íaõîäèò âñå äåëèòåëè öåëîãî ïîëîæèòåëüíîãî ÷èñëa):
include int main(){
int num;
cout << "\nÂâåäèòå ÷èñëî : "; cin >> num;
int half = num / 2; // ïîëîâèía ÷èñëa
int div= 2; // êaíäèäaò ía äåëèòåëü while (div<= half){
if (!(num % div))cout << div <<"\n"; div++;
}
return 0;
}
Ðañïðîñòðaíåííûé ïðèåì ïðîãðaììèðîâaíèя — îðãaíèçaöèя áåñêîíå÷íîãî öèêëa ñ çaãîëîâêîì while (true) ëèáî while (1) è ïðèíóäèòåëüíûì âûõîäîì èç òåëa öèêëa ïî âûïîëíåíèþ êaêîãî-ëèáî óñëîâèя.
 êðóãëûõ ñêîáêaõ ïîñëå êëþ÷åâîãî ñëîâa while ìîæíî ââîäèòü îïèñaíèå ïåðå- ìåííîé1. Îáëañòüþ åå äåéñòâèя яâëяåòñя öèêë:
while (int x = 0){ … /* îáëañòü äåéñòâèя õ */ }
Цикл с постусловием (do while)
Öèêë ñ ïîñòóñëîâèåì ðåaëèçóåò ñòðóêòóðíóþ ñõåìó, ïðèâåäåííóþ ía ðèñ. 1.8, á, è èìååò âèä:
do îïåðaòîð while âûðaæåíèå;
1 Â ñòaðûõ âåðñèяõ êîìïèëяòîðîâ ýòî òðåáîâaíèå ñòaíäaðòa ìîæåò íå ïîääåðæèâaòüñя.
Cía÷aëa âûïîëíяåòñя ïðîñòîé èëè ñîñòaâíîé îïåðaòîð, ñîñòaâëяþùèé òåëî öèê- ëa, a çaòåì âû÷èñëяåòñя âûðaæåíèå. Åñëè îíî èñòèííî (íå ðaâíî false), òåëî öèê- ëa âûïîëíяåòñя åùå ðaç. Öèêë çaâåðøaåòñя, êîãäa âûðaæåíèå ñòaíåò ðaâíûì false èëè â òåëå öèêëa áóäåò âûïîëíåí êaêîé-ëèáî îïåðaòîð ïåðåäa÷è óïðaâëå- íèя. Òèï âûðaæåíèя äîëæåí áûòü aðèôìåòè÷åñêèì èëè ïðèâîäèìûì ê íåìó.
Ïðèìåð (ïðîãðaììa îñóùåñòâëяåò ïðîâåðêó ââîäa):
include int main(){
char answer; do{
cout << "\nÊóïè ñëîíèêa! "; cin >> answer;
}while (answer != 'y'); return 0;
}
Ïðèìåð. Ïðîãðaììa âû÷èñëяåò êâaäðaòíûé êîðåíü âåùåñòâåííîãî aðãóìåíòa X
ñ çaäaííîé òî÷íîñòüþ Eps ïî èòåðaöèîííîé ôîðìóëå:
2
yn = 1
(yn–1 + x/yn-1),
ãäå yn–1 — ïðåäûäóùåå ïðèáëèæåíèå ê êîðíþ (â ía÷aëå âû÷èñëåíèé âûáèðaåòñя ïðîèçâîëüíî), yn — ïîñëåäóþùåå ïðèáëèæåíèå. Ïðîöåññ âû÷èñëåíèé ïðåêðaùa- åòñя, êîãäa ïðèáëèæåíèя ñòaíóò îòëè÷aòüñя äðóã îò äðóãa ïî aáñîëþòíîé âåëè-
÷èíå ìåíåå, ÷åì ía âåëè÷èíó çaäaííîé òî÷íîñòè. Äëя âû÷èñëåíèя aáñîëþòíîé âåëè÷èíû èñïîëüçóåòñя ñòaíäaðòíaя ôóíêöèя fabs(), îáúяâëåíèå êîòîðîé íaõî- äèòñя â çaãîëîâî÷íîì ôaéëå .
include include int main(){
double X, Eps; // aðãóìåíò è òî÷íîñòü
double Yp,Y= 1; // ïðåäûäóùåå è ïîñëåäóþùåå ïðèáëèæåíèå printf("Ââåäèòå aðãóìåíò è òî÷íîñòü: ");
scanf("%lf%lf", &X, &Eps); do{
Yp= Y;
Y = (Yp + X/Yp)/2;
}while (fabs(Y – Yp) >= Eps); printf("\nÊîðåíü èç %lf ðaâåí %lf", X, Y); return 0;
}
Do'stlaringiz bilan baham: |