Циклдерді бағдарламалау while,for,do… while



жүктеу 88,87 Kb.
бет3/3
Дата08.05.2020
өлшемі88,87 Kb.
#30206
1   2   3
цикл

#include
int main(){
float Xn, Xk, Dx;
printf("Аргументтің өзгеру аралығы мен қадамын

енгізіңіз: ");

&Dx);

scanf("%f%f%f", &Xn, &Xk,

printf("|

X

|

Y |\n");

// кесте тақырыбы

float X =

Xn;




//

цикл параметрін тағайындау

while (X

<= Xk){

//

жалғастыру шартын тексеру

printf("| %5.2f | %5.2f |\n", X, X*X + 1);

x+=Dx

// цикл тұлғасы X += Dx;

// параметрді өзгерту

}




return 0;




}
Мысал (программа бүтін оң санның барлық бөлгіштерін анықтайды):
#include
int main(){
int num;
cout << "\nСан енгізіңіз: "; cin >> num;
int half = num / 2; // санның жартысы
int div = 2; // бөлгіш болуы мүмкін сан
while (div <= half){
if (!(num % div)) cout << div << "\n"; div++;
}
return 0;
}
Программалаудағы кең таралған тəсілдердің бірі – while (true) немесе while (1) тəрізді тақырыптар арқылы шексiз цикл ұйымдастыру, олардан шығу кез келген бір шарттың орындалуы бойынша цикл тұлғасынан мəжбүрлі түрде сыртқа шығу жолымен орындалады.


while түйінді сөзінен кейiнгі дөңгелек жақшаларда айнымалының сипаттамасын1 енгізуге болады.

Оның əрекет ету аймағы цикл іші болып табылады:
while(int x = 0){ ... /* х-тің əрекет ету аймағы */ }
Соңғы шартты цикл (do while)
Шарты соңынан тексерілетін цикл 1.8, ə-суретте көрсетілген құрылымдық сызбаны жүзеге асырады жəне ол мынадай түрде жазылады:
do оператор while өрнек;
Алдымен цикл тұлғасын құрайтын жай немесе құрама оператор орында-лады да, содан кейін өрнек есептеледi. Егер өрнек ақиқат болса (false емес), цикл тұлғасы тағы қайталанып орындалады. Өрнек мəні false болғанда не-месе цикл тұлғасында кез келген бір басқаруды беру операторы орындалған кезде, цикл жұмысы аяқталады. Өрнектiң типi арифметикалық немесе соған келтірілетін түрде болуы керек.

Мысал (программа мəлімет енгізуді тексеру ісін жүзеге асырады):


#include
int main(){
char answer;
do {
cout << "\nПіл сатып ал! "; cin >> answer;
} while (answer != 'y'); return 0;
}
Мысал. Программа берілген Eps дəлдігімен нақты сан болып табылатын x аргументінің квадрат түбірін төмендегі итерациялық формула бойынша есептейдi:
yn = 12 ( yn1 + x / yn1)

мұндағы yn-1 – түбiрдің бұдан бұрынғы жуық мəні (есептеу басында кездейсоқ түрде таңдалады), уn – түбiрдің келесі жуық шамасы. Есептеу процесі түбірдің екі жуық мəндері айырмасының абсолюттік шамасы берілген дəлдiктен төмен болған кезде, тоқтатылады. Абсолюттiк шаманы есептеу fabs() стандартты функциясы арқылы орындалады, оны пайдалану үшін тақырыптық файлы қолданылады.




#include






#include






int main(){

// аргумент жəне дəлдік

double X, Eps;

double Yp, Y = 1;

//алдыңғы жəне келесі жуықтаулар

printf("Аргумент пен дəлдікті енгізіңіз: "); scanf("%lf%lf", &X, &Eps); do {
Yp = Y;
Y = (Yp + X/Yp)/2;
} while (fabs(Y – Yp) >= Eps); printf("\n%lf санының түбірі = %lf", X, Y); return 0;
}
Параметрлi цикл (for)
Параметрлi циклдің жазылу форматы:
for (инициалдау; өрнек; модификациялар) оператор;
Инициалдау циклде қолданылатын шамаларды жариялау мен оларға бастапқы мəндерді тағайындау үшiн пайдаланылады. Бұл бөлiмде бiрнеше операторларды («тізбектей орындау» операциясымен) бір-бірінен үтiрлер арқылы ажырата отырып жазып қоюға болады, мысалы төмендегідей түрде:

for (int i = 0, j = 2;...
int k, m;
for (k = 1, m = 0;...
Циклдің инициалдау бөлiмінде жарияланған айнымалылардың əрекет ету аймағы цикл іші ғана болып табылады. Инициалдау цикл орындалуының ба-сында бiр-ақ рет атқарылады.

Өрнек циклдің қайталану шартын анықтайды: егер оның bool типіне келтірілген нəтижесі true болатын болса, цикл орындалады. Бұл параметрлi цикл шарты алдын ала тексерілетін цикл ретінде жүзеге асырылған.
Модификациялар циклдің əрбiр итерациясынан (қадамынан) кейiн орын-далады жəне цикл параметрлерін өзгерту үшiн қолданылады. Модификаци-ялар бөлiмiнде де үтiр арқылы бөле отырып, бiрнеше операторларды қатар жазуға болады. Қарапайым немесе құрама оператор цикл тұлғасын құрайды. for операторының кез келген бөлігін алып тастауға болады (бiрақ нүктелі үтірлерді өз орындарында қалдыру керек!).
Мысал (1 мен 100 аралығындағы бүтін сандардың қосындысын есептейтiн оператор):
for (int i = 1, s = 0; i <= 100; i++) s += i;


44


Мысал (программа у = х2 + 1 функциясының енгізілген диапазондағы мəндері кестесiн экранға шығарады):


#include

// С тілі стиліндегі программа

int main(){

Dx, X;







float Xn, Xk,




диапазоны мен қадамын

printf("Аргументтің өзгеру




енгізіңіз: ");




scanf("%f%f%f", &Xn, &Xk, &Dx);

printf("| X

| Y

|\n"):

Dx)

for (X = Xn;

X <= Xk; X +=

printf("|

%5.2f | %5.2f

|\n", X, X*X + 1);

return 0;










}










Мысал (программа бүтін оң санның барлық бөлгіштерін анықтайды):


#include

// С++ тілі стилінде

int main(){

div;




int num, half,




cout << "\nСан

енгізіңіз: "; cin >> num;

for (half = num / 2, div = 2; div <= half; div++)

if (!(num %

div)) cout << div << "\n";

return 0;







}







Соңғы екi мысал алғы шартты циклдер мысалдарындағыдай əрекеттер атқарады, бірақ мұнда бұлар ықшам жəне көрнекі түрде жазылған: циклді басқаруға байланысты барлық іс-əрекеттер оның тақырыбында орналасқан.
Кез келген while циклі оған эквивалентті for цикліне жəне кері бағытта келесі сұлба бойынша келтiрiлуі мүмкін:
for(b1; b2; b3)
оператор b1;
while (b2){
оператор b3;}
Циклдерді программалауда жиi кездесетiн қателер – цикл тұлғасында инициалданбаған айнымалыларды қолдану жəне циклден шығу шартының дұрыс жазылмауы.
Қателіктерге жол бермеу үшін төмендегі ережелерді бұлжытпай орындау ұсынылады:


  1. цикл тұлғасындағы меншіктеу операторларының оң жағында тұратын барлық айнымалыларға осыған дейін бастапқы мəн берілгендігін (сонымен қатар, басқа операторлардың орындалу мүмкiндігін) тексеру;




  1. циклден шығу шартына енген айнымалылардың кем дегенде біреуі цикл ішінде өзгеретінін немесе өзгермейтінін тексеру;

45


  1. итерациялардың белгілі бір санына жеткенде циклден мəжбүрлі түрде шығуды қарастыру (келесi бөлiмдегi мысалды қара);

  2. цикл тұлғасында бірден артық операторлар санын орындау қажет болса, оларды жүйелі жақшаға алып жазу керек екендігін ұмытпау қажет.

Цикл операторларын өзара алмастырып та орналастыруға болады, бірақ əрбiр нақты жағдайда ең тиімді түрде жұмыс істейтін операторды таңдауды қамтамасыз ете алатын бірнеше ұсыныстар келтiруге болады, олар:




  1. do while операторы, əдетте, цикл кем дегенде бір рет орындалуы тиіс болатын жағдайларда қолданылады (мысалы, цикл ішінде мəліметтерді енгiзу орындалатын кездерде);

  2. for операторы өзге жағдайлардың басым бөлігінде қолданылады (əсіресе, санауыштар арқылы ұйымдастырылатын циклдер құру үшін);




  1. while операторын итерациялар саны алдын ала белгiсіз болып, циклдің нақты параметрлерi əлі анықталмаған кездерде немесе параметрлер мəндерін өзгертуді цикл тұлғасының соңында жазған ыңғайсыз бола-тын жағдайларда қолданған дұрыс болып табылады.

жүктеу 88,87 Kb.

Достарыңызбен бөлісу:
1   2   3




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау