C Döngüler
C Programlama Dili:
Döngüler
Bir C programı ile karşı
karşıya kalındığında programda bol miktarda if ve bol miktarda for
komutundan başka birşey olmadığını göreceksiniz. Programlar
genellikle bu iki komut arasına serpilmiş işlemler ve çağrılardan
oluşur. Tabii sistem programlarında assambly çağrıları da vardır.
ama temel hep mantıksallar ve döngürelerdir. Ve bu yapılar tüm
programlama dillerinde aynıdır. Biz daha önceden bir programlama
dili ile haşırneşir olan insanlar olduğumuza göre bu yapıların C
dilindeki görüntüsüne bakmak yetecektir. İşte döngüer.
for döngüsü en çok
karşılaşılan döngüdür. yapısı
for(giriş;karşılaştırma;iterasyon) {kodbir;kodiki;kodn;}
Şeklindedir. giriş kısmı
for döngüsü ilk çalıştığında bir kere işletilir. genelde bu kısımda
bir değişkene değer atanır ve bu daha sonra sayılır. karşılaştırma
sıtandart if karşılaştırmaları gibidir. Bu karşılaştırma doğru
olduğu müddetçe döngü tekrarlanır. iterasyon genelde girişte atanan
değişkenin değerini arttırmaya yöneliktir.
for(;;) puts(""çalıştırmaaa!);
İle sonsuz döngü
kurulabilir. basit for programı yazalım;
#include ‹stdio.h›int main(void){ int i; for (i=1;i‹=10;i++) { printf("%d\n",i); }}
programı ile ekrana 1 den
10 kadar olan sayılar yazılabir. yukardaki program şöyle de
yazılabilir.
#include ‹stdio.h›int main(void){ int i=1; for (;i‹=10;) { printf("%d\n",i); i++; }}
For komutu çok esnektir.
Değişik bir örnek yapalım. 1000 den 9999 e kadar olan sayılardan
rakkamlarının dördüncü katlarının toplamı kendisi olan sayıları
bulalım;
#include ‹stdio.h›int main(void){ int sayi,a,b,c,d; long double hesap; for(sayi=1000;sayi‹=9999;sayi++){ a=sayi/1000; // binler basamağı a da; b=(sayi-(a*1000))/100; // yüzler basamağı b de; c=(sayi-(a*1000)-(b*100))/10; // onlar basamağı c de; d=sayi-(a*1000)-(b*100)-(c*10); // birler basamağı d de; hesap=(a*a*a*a)+(b*b*b*b)+(c*c*c*c)+(d*d*d*d); if (hesap==sayi){ printf("%d\n",sayi); } } printf("hesaplama tamamlandı...\n");}
Program yazmak böyle
birşey arkadaşlar mantıklı çözümler bulmak; sonuçlara bakalım. 1634,
8208, 9474 olacaktır. programı şıklaştıralım.
#include ‹stdio.h›int main(void){ int sayi,a,b,c,d; long double hesap; for (a=1;a‹10;a++){ for (b=0;b‹10;b++){ for (c=0;c‹10;c++){ for (d=0;d‹10;d++){ sayi=(1000*a)+(100*b)+(10*c)+d; hesap=(a*a*a*a)+(b*b*b*b)+(c*c*c*c)+(d*d*d*d); if (sayi==hesap){ printf("%d\n",sayi); } } } } } printf("hesaplama tamamlandı...\n");}
Bir programı yazmanın
milyonlarca yolu vardır. Programcı en işe yararını arar.
while
döngüsünü ise for döngüsünün sadece şartların belirtildiği şekli
olarak düşünmek yalnış olmaz. Zaten de öyle. bir örnekte gösterelim;
#include ‹stdio.h›int main(void){ int c; int i=0; printf("döngü sayisi:"); scanf("%d",&c); while (i!=c){ i++; puts("Mükemmel!"); } puts("program sonlandı.");}
do – while
döngüsünde ise şartın doğruluğu kontrol edilmeksizin bir kere
işletilir. ilk işletme sonunda kontrol yapılır.
#include ‹stdio.h›int main(void){ int c; int i=0; printf("döngü sayisi:"); scanf("%d",&c); do { i++; puts("Mükemmel!"); if (i==1000) { puts("\tSistem içi hata!!!"); break; } } while (i!=c); puts("program sonlandı.");}
While komutundan sonra ;
geldiğine dikkat edin. Yukarıda break komutunu farketmişsinizdir. Bu
komutu daha önce switch – case ortamında da gördük. Burada break
döngüyü sonlandırmaktadır. yani while komutunun altına bırakır. Eğer
döngü for döngüsü ise bu sefer for döngüsü işletilmez. Döngülerde
break gibi işlevi olan bir diğer komut ise continue komutudur. Bu
komut döngünün bir sonraki durum için işletilmesini sağlar ve sadece
for döngüsünde kullanılabilir. Çünkü while döngüsünde iterasyon
tanımlayan bir kısım yok. Continue komutu for döngüsü için hemen for
etiketine yönlenme yapar ve iterasyon kısmında belirtilen işlemi
yapar. Biz yukarıda sıklıkla i++ türünden bunu kullanmıştık. Yani bu
durumda bir sonraki i değeri için işlem yapılır. böylece döngü
içerisindeki diğer komutlar işletilmez. Brak ve continue işlemi
genelde bir if kontrolü sonrasında verilen bir karardır. Yoksa
döngüye tek başına koyarsanız. Döngünün içindeki diğer komutlar hiç
işlemeyecektir. Gereksiz kullanım yani.
Goto
komutunu BASIC dilinden hatırlarsınız. Bu komut etiket ile
belirtilen adrese bir sıçrama yapar. Goto komutu günümüz yapısal
programlama dilleri sayesinde tarih olmuştur denebilir. Programcılar
bu komutu pek gerekmedikçe kullanmazlar. Ama ben hala kullanıyorum.
Bazı durumlarda goto komutu sayesinde sizinde program iskeletiniz
hafifleyebilir. Goto komutuyla bir adet döngü kuralım bu döngüde
olanları for ile yapmak daha kolay gerçi ama olsun.
#include ‹stdio.h›int main(void){ // birden yüze kadar olan sayıların // toplamını bulan program.. int i=0,t=0; dongu: i++; t+=i; if (i!=100) { goto dongu; } printf("%d\n",t);}
Anket
Son Konular
2012-03-22 19:47 - Geliştirdiğin kodları satmak ister misin
2012-02-12 23:21 - SMF forumu vbulletin foruma aktarmak
2011-12-14 21:50 - Motorlu araçlar otomobil vergisi sorgulama
2011-12-14 21:47 - Sorgulamalar
2011-12-11 14:33 - Ben az önce ne arayacaktım
2011-09-10 22:51 - DSLR Fotograf Makinası sınıflandırması
2011-09-09 17:33 - ‘Crop Factor’ Nedir, hakkında bilgi
2011-09-09 17:30 - Fotograf Rehberi
2011-08-20 21:30 - Samsung LEDTV'lerde .SRF ve XFS süprizi
2011-08-19 00:45 - 2011 yılının web tasarım trendleri
2011-04-09 20:18 - Alan adları gerçek isim sahiplerine verilecek!
2011-01-13 01:43 - SEO İçin Dikkat Edilmesi Gereken Hususlar
2011-01-13 01:42 - Meta tag SEO Optimization
2011-01-13 01:41 - Google Adsense Hakkında Detaylı Bilgi
2011-01-13 01:40 - Soru Ve Cevaplar ile Google Adsense
2011-01-13 01:39 - Arama motoru Google ve Pagerank
2011-01-13 01:38 - Seo Sözlüğü
2011-01-13 01:37 - Google Arama Özellikleri
2011-01-13 01:36 - Adsense Reklam Yerleşimi
2011-01-13 01:35 - Robots.txt Dosyası Kullanım Robotları Yölendirme Kontrol
2011-01-13 01:34 - Sitenizin Google ve Web deki Yeri
2011-01-13 01:33 - Arama Motoru Bilgi ve İpuçları
2011-01-13 01:31 - Arama Motorları Teknikleri
2011-01-13 01:29 - Google Pagerank Detaylı Anlatım
2011-01-13 01:27 - Sitenize Ziyaretçiler En Çok Hangi Kelimeler İle Gelmiş
2011-01-13 01:25 - Pagerank Nedir?
2011-01-13 01:19 - Fireworks Shadow and Glow
2011-01-13 01:18 - Fireworks Sharpen
2011-01-13 01:16 - Fireworks Other
2011-01-13 01:13 - Fireworks Blur
2011-01-13 01:09 - Fireworks Bevel and Emboss
2011-01-13 01:05 - Fireworks Adjust Color
2011-01-13 01:03 - Fireworks Save as Style
2011-01-13 00:58 - Fireworks Text Menüsü
2011-01-13 00:54 - Fireworks Select Menüsü
2011-01-13 00:54 - Fireworks Modify Menüsü
2011-01-13 00:51 - Fireworks View Menüsü
2011-01-13 00:18 - Fireworks Edit Menüsü
2011-01-13 00:16 - Fireworks File Menüsü
2011-01-13 00:05 - İnternet - Web Tarayıcılar (Browser)
2011-01-13 00:04 - İnternet - Web Server Yazılımları
2011-01-13 00:03 - İnternet ve Web İlişkisi
2011-01-13 00:02 - İnternette Kullanılan Protokoller
2011-01-13 00:01 - İnternet - World Wide Web (WWW) Nedir?
2011-01-13 00:00 - İnternet - URL nedir?
2011-01-12 23:43 - İnternet Backorder Nedir?
2011-01-12 23:34 - İnternet - Virüs Nedir?
2011-01-12 23:32 - İnternet Paypal nedir? Nasıl Kullanılır?
2011-01-12 23:31 - İnternet - DNS Nedir?
Günün Konuları
c# . javascript . C . xmlhttprequest . xml . xmlhttprequest nedir . c# ile yazma . c# kod çalıştırma . while . c# kodları . integer . c# string . c# tipler . value . type . reference type . console . const . decimal . boolean . writelene . printf . include . scanf . ajax nedir . http . http istemleri . ajax örneği . ajax tarayıcı desteği . activexobject . ajax ile sunucuya istek göndermek . null . showhint . getxmlhttpobject . statechanged . ajax php örneği . ajax asp örneği . ajax html sayfası . c# doğuşu . c# programlama sanatı . c# atama işlemleri . c# kuralları . c# türlerin tanımlanması . int . programlama . c# program kodları . c# döngü . c# ile ekrana yazı yazdırmak . c# aritmetik . c# operatörler . c# int . casting . byte . c# console . c# konsoldan veri girişi . static void main . c# decimal veri tipi . c# kayar nokta verileri . IEEE . c# yazı biçimlendirme . currency . general . c# char . compareTo . equals . c# while döngüsü . c# for döngüsü . c# foreach döngüsü . döngüler . hata yakalama . catch . pperatörler . .net framework . delphi . c++ builder . write . c# deki string dönüşümler . C nedir . C fonkisyonlar . getch .














Yeni yorum gönder