Döngüler

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 7

Blm 5 DNG KOMUTLARI

5.1 Giri 5.2 while Kom !

5.1

Giri
nceki blmlerde C programlama dilinin girdi, kt, atama ve seme komutlarn grmtk. Bu rendiklerimizle ancak belirli tr problemlerin programlarn azabiliriz. Bir nceki blmde rnek program !."#de iki ara snav ve $inal notu girilen bir rencinin %ar$ notu %esaplanmakta d. &er retmen sn$ta bulunan btn renciler iin %ar$ notunu %esaplamak istese di, rnek !."#in sn$taki %er renci iin eniden altrlmas gerekirdi. rnein, sn$taki renci sa s "' ise "' kez altrlmas, (''' ise (''' kez altrlmas gerekirdi. Bu ilemi da%a kola bir ekilde apabilmek iin dng komutlarn kullanmamz gerekir. Dng komutlar )repetition*loop statements+, komutlarn birok kez eniden rtlmesini sala an, programlamada kullandmz nemli aplardan biridir. C dilinde bize bu zellii sala an komutlar while, for ve do-while komutlardr. ,lerle en ksmlarda sras la bu komutlar incele eceiz.

5.2

while Kom !
while komutu genel bir dng komutu olup bir ok programlama dilinde de benzeri bulunmaktadr. while komutunun C programlama dilindeki genel aps aadaki gibidir. while ( koul_ifadesi ) komut; Burada koul_ifadesi doru ise komut koul_ifadesi rtlr. komut#un rtm if

de imindeki gibi bir kez olma p, koul_ifadesi doru olduu srece devam eder. anl olduu durumda, rtm while komutunu takip eden komutla

devam eder. while komutunun ak emas aada verilmitir.

koul_ifadesi

-$rdan $arkl )d

-$r ) anl+

"e#il 5.1 while Kom ! $ $ A#% "em&'% rnein, kullancnn poziti$ bir sa girmesini sala an program parasnn, printf(Bir pozitif sayi giriniz:); scanf(%d,&n); eklinde azlmas eterli deildir. .nk kullanc negati$ bir sa girdiinde n deeri negati$ olur ve program bu deerle rtlr. /ullancnn poziti$ bir sa doru bir ekilde girmesini sala an bir program, ancak dng komutlar la azlabilir. Bu problemin while komutu ile zm aada verilmitir. printf(Bir pozitif sayi giriniz:); scanf(%d,&n); while(n< ) scanf(%d,&n); printf(!n son n degeri: %d,n); Bu program rtldnde ilk nce printf() ile Bir pozitif sayi giriniz: mesa0 grntlenir. 1akip eden scanf() ile kullancnn bir sa girmesi beklenir. /ullancnn "#$ deerini girmesi durumunda ekran grnts aadaki gibi olur.

Bir pozitif sayi giriniz: -#$ B lece n deikeninin deeri "#$ olarak atanr. 1akip eden while komutunda ise koul i$adesi 2n< # kontrol edilir. Bu i$adede n deiken deeri "#$ olduundan ve dola s la koul i$adesi 2n< # doru olacandan, while komutu iinde bulunan scanf() rtlerek kullancnn eni bir deer girmesi beklenecektir. /ullancnn "% deerini girmesi durumunda ekran grnts aadaki gibi olur. Bir pozitif sayi giriniz: -#$ -% scanf() komutu rtldkten sonra tekrar while#daki koul i$adesi 2n< #

kontrol edilir. ,$ade ine doru olacandan scanf() komutu tekrar rtlr. 3egati$ bir sa nn girilmesi durumunda a n ilemler tekrar edilir. Bu se$er kullancnn #& sa sn girdiini dnrsek, ekran grnts aadaki gibi olur. Bir pozitif sayi giriniz: -#$ -% #& 4imdi n deikeninin son deeri #&#dir. while#daki koul i$adesi 2n< # bu se$er anl olacandan rtm dngden kp bir sonraki komut olan printf() ile devam edecektir. 5ola s la bu program parasnn ekran grnts aadaki gibidir. Bir pozitif sayi giriniz: -#$ -% #& !n son n degeri: #& 6ukarda verdiimiz while genel apsnda komutun dng iinde rnein, er alan komut %er%angi bir C komutu

olabilir. Bu rnekte komut olarak scanf() $onksi onu er almaktadr. Birden $azla rtlmesi istendiinde bileik komut kullanlmaldr.

printf(Bir pozitif sayi giriniz:); scanf(%d,&n); while(n< ) ' printf(Bir pozitif sayi giriniz:); scanf(%d,&n); ( printf(!n son n degeri: %d,n); Bu rnekte kutu iindeki alan dngnn gvdesi )loop bod + olup bir bileik komut ierir. 2n< # koulu doru olduu srece, dng gvdesindeki komutlar sra la tekrarlanacaktr. Bu program paras ukardaki rnekte er alan a n n deerleri iin rtldnde, ktmz aadaki gibi olur. Bir pozitif sayi Bir pozitif sayi Bir pozitif sayi !n son n degeri: giriniz: -#$ giriniz: -% giriniz: #& #&

5a%a nce de ba%sedildii gibi while komutu nemli bir dng komutudur. 4imdi bu komutu da%a deta l incele elim. 7adaki program parasnda ##den # #a kadar sa lar an ana ekranda grntlenmektedir. sayac)#; while(sayac<)# ) ' printf(%$d,sayac); sayac)sayac*#; (

Bu program parasnn rtmn incelemeden nce apsal olarak incele elim. Bu kodda iki a r komut bulunmakta olup ilk komut atama, dieri ise while komutudur. while komutunun dng gvdesi iteki kutucuktur. ,lk atama komutu la sayac deikeni # deerini aldktan sonra, while komutunun koul i$adesi olan 2sayac<)# # koulu kontrol edilir. ,$ade doru olduundan while gvdesindeki komutlar rtlr. ,lk nce printf() ile sayac deeri olan # sa s grntlenir ve takip eden atama komutu la sayac deeri bir artrlr. +

deerini alan sayac tekrar koul i$adesi 2sayac<)# # ile kontrol edilir ve doru olduundan tekrar dng e devam edilir. sayac deeri + grntlenir ve arkasndan sayac deeri bir artrlr. Bu dng ilemi sayac deiken deeri ## olunca a kadar devam eder. 5ng sona erdiinde sayac deikeninin son deeri ###dir. -onuta bu rnein kts aadaki gibi olur. # + $ , . & % / #

r$e# (ro)r&m 5.1 (' reel sa girdi olarak alan ve poziti$ sa larn toplamn bulan C programn aznz.

0incl1de <stdio2h3 int 4ain(5oid) ' int i; float sayi,topla4; i)#; topla4) 2 ; while(i<)# ) ' 67reel sayinin giril4esi76 printf(8%d2sayiyi giriniz:8,i); scanf(8%f8,&sayi); 67reel sayinin pozitif ol1p ol4adiginin 9ontrol176 if(sayi3 ) topla4)topla4*sayi; i)i*#; (67while 9o41t1n1n son176 printf(8:ozitif sayilarin topla4i:%-2+lf8,topla4); ret1rn( ); (

*%#!% #2sayiyi giriniz: -+2% +2sayiyi giriniz: ,2$2sayiyi giriniz: -$+

,2sayiyi giriniz: ,2-2sayiyi giriniz: -/ .2sayiyi giriniz: . &2sayiyi giriniz: ,2 %2sayiyi giriniz: /2sayiyi giriniz: # 2sayiyi giriniz: -#+2& :ozitif sayilarin topla4i:#/2

You might also like