Екінші циклдік операторы - do-while операторы-оның жазылу түрі
келесідей:
do оператор while (логикалық өрнек)
Мұнда алдымен оператор орындалады, содан
кейін логикалық өрнегі
есептеледі. Цикл логикалық өрнегі true-ге тең болғанша орындалады.
Назар аударыңыз!!! Do-while циклінде циклдің соңы емес,
жалғастыру шарты тексеріледі.
Осы екі цикл операторларының арасындағы
маңызды айырмашылық
тек do-while циклінде оператор міндетті түрде кем дегенде бір рет
орындалады.
Мысалы, [a; b] аралығында дәл бір түбірі бар f(x) функциясы берілсін.
1.5 программа листингісінде түбірді табу үшін
қақ бөлу бөлу әдісімен
есептейтін программа көрсетілген. (басқаша бисекция немесе дихотомия
әдісі деп аталады).
Программа листингі. Бисекция әдісімен
сызықты емес теңдеудің
түбірін табу.
class Bisection{
static double f(double x){
return x * x * x-3*x * x + 3; // немесе басқа өрнек...
}
public static void main(String[] args){
double a = 0.0, b = 1.5, c, y, eps = 1e-8;
do{
c = 0.5 *(a + b); y = f(c);
if (Math.abs(y) < eps) break;
// Түбір табылды. Біз циклден шығамыз
// Егер кесіндінің [a; c] аралығында функция әртүрлі таңбалардан
тұрса:
if (f (a) * y < 0.0) b = c;
// Демек, түбірі осында. В нүктесін с нүктесіне жылжытамыз
// Әйтпесе:
else a = c;
// А нүктесін с нүктесіне жылжытыңыз
// Біз [a; b] кесіндісі азайғанша жалғастырамыз
} while(Math.abs(b-a) >= eps);
System.out.println("x = " +c+ ", f(" +c+ ") = " +y);
}
}
Bisection класы алдыңғы мысалдарға қарағанда күрделі:
онда негізгі
main() әдісінен басқа f(x) функциясын есептеу әдісі де бар. Мұнда f(x) әдісі
өте қарапайым: ол көпмүшенің мәнін есептейді және оны функцияның мәні
ретінде қайтарады, мұның бәрін бір оператор орындайды:
return өрнек
main() әдісінде тағы бір жаңа оператор пайда болды — break,
егер біз
түбірдің шамаланған мәнін кездейсоқ кездестірсек break операторы циклдің
орындалуын тоқтатады. Мұқият оқырман f(x)
әдісін жариялауда static
модификаторының пайда болуын байқады. Бұл f(x) әдісі статикалық main()
әдісінен шақырылғандықтан қажет, оны келесі дәрісте талқылаймыз.
Достарыңызбен бөлісу: