Yalnız C# dilinde değil, muhtemelen bütün programlama dilleri içerisinde en çok tercih edilen döngü yapısı for döngüsüdür. Döngüler adından da anlaşılacağı gibi, sonlandırma koşulu sağlanıncaya kadar aynı komutları defalarca çalıştıran yapılardır. C# dilinde for döngüsü çok esnek bir yapıya sahip olup, neredeyse içerisinde döngü gerektiren tüm problemler bu komutla çözülebilir.
For ifadesinin genel formu aşağıdaki gibidir.
For(başlangıç değeri; koşul; değişim-miktarı){
//Komutlar
}
Genel formu verilen for döngüsünün çalışma mantığını inceleyelim. Başlangıç değeri; Bu kısım programın başlangıcında bir defaya mahsus olmak üzere çalıştırılır. Burada döngüyü kontrol eden değişkene bir başlangıç değeri atanır. Koşul; Bu bölümde başlangıç değeri atanan değişken bir koşul ile test edilir eğer bu ifade true sonuç verirse, döngü bloğu içerisindeki komutlar çalıştırılır. Koşul false sonuç verirse döngü sonlandırılır. Değişim-miktarı; Bu kısımda döngü değişkeni eksiltilir veya arttırılır. Döngü her tekrarlandığında koşul değeri kontrol edilir, döngü bloğu çalıştırılır, döngü değişkeni arttırılır veya azaltır. Bu çalışma sistemi ta ki kontrol değişkeni koşulu sağlamaz hale gelene kadar devam eder.
Şimdi for döngüsünü daha iyi anlamak için örnekler yapalım ve adım adım inceleyelim.
FOR DÖNGÜSÜ ÖRNEKLERİ
Örnek1: 1’den 10’a kadar olan sayıları alt alta ekrana yazdıralım. Bu soru konunun anlaşılması için basit fakat ideal bir örnek.
1 2 3 4 5 |
for (int i = 1; i <=10; i++) { Console.WriteLine(i); } Console.ReadKey(); |
Ekran Çıktısı:
Not: Öncelikle kontrol değişkenimizin isminin “i” olduğuna dikkat çekmek isterim. Döngülerde bu değişkenler standart olarak i,j,k gibi isimler ile adlandırılırlar. Fakat bu bir zorunluluk değildir.
Örneğimizin çalışmasını adım adım inceleyelim.
Adım1: (int i=1)Kontrol değişkenimizin başlangıç değeri 1 olarak verilmiş.
Adım2: (i<=10) i değişkenimizin değeri koşulumuzla test ediliyor. “i” değeri 10 ve 10’dan küçük olduğu sürece döngü çalışacak.
Adım3: Koşul sağlandığı için döngü bloğuna girildi. Ekrana “i” değeri yani 1 yazdırıldı.
Adım4: (i++) Döngü bir kez çalıştıktan sonra i++ ile i değeri 1 arttırıldı. Yani 2 oldu.
Adım5: Tekrar koşul kontrol edildi, “i” değeri 10’dan küçük olduğu için tekrar döngü bloğuna girildi.
Adım6: Bu işlem “i” değeri birer birer artıp 11 olana kadar devam eder.
Adım7: “ i” değeri 11 olduğunda koşul sağlanamaz ve döngü sona erer.
Örnek2: 1 ile 40 arasındaki çift sayıları toplayarak sonucu ekranda gösterelim. (40 dahil olsun).
Çözüm: Bu soruda dikkat edilmesi gereken 2 önemli nokta bulunuyor. 1.si sadece 2’ye kalansız bölünebilen sayıların toplama eklendiği. 2.si ekrana yazdırma işleminin for döngüsü dışında gerçekleştirildiği.
1 2 3 4 5 6 7 8 |
int toplam = 0; for (int i = 1; i <=40; i++) { if (i % 2 == 0) toplam += i; } Console.WriteLine(toplam); Console.ReadKey(); |
Örnek 3: Klavyeden girilen sayının faktöriyelini bulan programı yapalım.
Çözüm: Bu soruda değişim miktarının birer birer azaltıldığına dikkat ediniz. Her azaltma işleminden sonra sonuçla “i” değeri çarpılarak, değer sonuca eşitlenmiştir.
1 2 3 4 5 6 7 8 9 |
Console.Write("Bir sayı giriniz:"); int sayi = Convert.ToInt32(Console.ReadLine()); int sonuc = 1; for (int i = sayi; i > 1; i--) { sonuc *= i; } Console.Write("Faktöriyeli:" + sonuc); Console.ReadKey(); |
Örnek 4: 1’den 9’lara kadar olan klasik çarpım tablosunu oluşturalım.
Çözüm: Bu örnekte 2 tane for döngüsünün iç- içe kullanıldığına dikkat ediniz. Dıştaki for döngüsü 1 kere çalıştığında içteki for döngüsü 9 kere çalıştırılır.
1 2 3 4 5 6 7 8 9 |
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { Console.WriteLine("{0} x {1}={2}", i, j, i * j); } Console.WriteLine("------------------"); } Console.ReadKey(); |
Örnek 5: Klavyeden girilen 5 adet sayıyı, küçükten büyüğe doğru sıralayarak ekrana yazdıralım.
Çözüm: Bu soruda girilen her değer bir diziye atılmış, daha sonra dizi sıralanarak başka bir for döngüsü ile ekrana yazdırılmıştır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
int[] dizi = new int[5]; for (int i = 0; i < 5; i++) { Console.Write((i+1)+".sayı giriniz:"); dizi[i] = Convert.ToInt32(Console.ReadLine()); } Array.Sort(dizi); Console.WriteLine("-------------"); for (int i = 0; i < 5; i++) { Console.WriteLine(dizi[i]); } Console.ReadKey(); |
Örneklerimiz burada sona erdi, konuyla ilgili sorularınızı bana iletebilirsiniz.
for ile karekökü nasıl alınır
c# da yıldızlarla (*) kelebek şeklinin çıktısını veren kodu bilen var mı?? NOT: 2 tane for kullanılarak yazılacak
1 ile 5000 arasındaki tek sayıların, çift sayıların ve aralıktaki tüm sayıların toplamını ayrı ayrı ekrana yazan c# uygulamasını yapınız.(For döngüsü ile olacak ben denedim örnek 2 deki gibi ama ayrı ayrı yazınca yanlıs sonuclar çıktı kısacası yapamadım yardımcı olurmusunuz.)
int tt = 0, ct = 0, top = 0;
for (int i = 1; i <= 1000; i++) {
top += i;
if (i % 2 == 0)
ct += i;
else
tt += i;
}
Console.WriteLine("TEK SAYILARIN TOPLAMI:{0}", tt);
Console.WriteLine("ÇİFT SAYILARIN TOPLAMI:{0}", ct);
Console.WriteLine("TÜM SAYILARIN TOPLAMI:{0}", top);
Console.ReadKey();
int i;
int toplam = 0;
int cifttoplam = 0;
int tektoplam = 0;
for (i = 1; i <= 5000; i++)
{
toplam = i + toplam;
}
for (i = 0; i <= 5000; i += 2)
{
cifttoplam = i + cifttoplam;
}
for (i = 1; i <= 5000; i += 2)
{
tektoplam = i + tektoplam;
}
Console.WriteLine("5000'e kadar olan tüm sayıların toplamı: " + toplam);
Console.WriteLine("5000'e kadar olan çift sayıların toplamı: " + cifttoplam);
Console.WriteLine("5000'e kadar olan tek sayıların toplamı: " + tektoplam);
Console.Read();
int sumOfEven = 0, sumOfOdd = 0;
int countOfEven = 0, countOfOdd = 0;
for (int i = 1; i < 5001; i++)
{
if (i % 2 == 0)
{
sumOfEven += i;
countOfEven += 1;
}
else
{
sumOfOdd += i;
countOfOdd += 1;
}
}
Console.Write($" Sum of even numbers is {sumOfEven} \n Sum of odd numbers is {sumOfOdd} \n");
Console.Write($" Count of even numbers is {countOfEven} \n Count of odd numbers is {countOfOdd}");
Console.ReadKey();
Klavyeden girilen 20 sayıdan çift olanların ortalamasını bulup ekrana yazdıran programı yazınınız
// Klavyeden girilen 20 sayıdan çift olanların ortalamasını bulup ekrana yazdıran programı yazınınız *//
double psayac = 0, psayi = 0;
for (int i = 0; i < 20; i++)
{
Console.Write("Sayı gir : ");
double sayi = Convert.ToDouble(Console.ReadLine());
if (sayi%2==0)
{
psayac++;
psayi = sayi + psayi;
}
else
{
Console.WriteLine("Girdiğiniz sayı tek.");
}
}
double ort = psayi / psayac;
Console.Write("Çift sayıların ortalaması : {0} ",ort);
Console.ReadKey();
iyi günler::
alfa açısı klavyeden derece olarak girldiğinde (alfa-45derece<=alfa<=alfa+45derece) aralığında 2 derecelik açı adımları için hesaplanan sin(t) fonksiyonun değerlerini listeyeleyen C# programını yazınız.
sin(t) = 1, t=0
sin(pi*t)/pi*t, t!=0 t:radyan cinsinden.
Merhaba,
Bir sql tablosunun kolanlarinin bir tanesinin değerleri artırarak o tabloyu çoğaltmak istiyorum.
Bu konuda yardımcı olabilir misiniz.
ekrana klvyeden girilen sayıya kadar, sayıları ve 10’un bu sayılardaki katlarnı yazan programı programlama dilinde for döngüsü yapısında kullanarak yazınız.
yapabilirmisiniz?
Kullanıcının girdiği metni sayısal değerde yazan programı nasıl yazarız.örn:/(veli yazinca sayi degerini ekrana yazcak.)Yardımcı olabilir misiniz.
Ekranda 1000 kere BİLİŞİM BÖLÜMÜNDE ÇOK MUTLUYUM yazan kodu yazınız ?
Kullanıcının girdiği sayıdan 0’a kadar geriye doğru sayıları ekrana yazan uygulama bunu yapabilir misiniz?
static void Main(string[] args)
{
Console.Write(“Enter a number:”);
int num = Convert.ToInt32(Console.ReadLine());
if (num = 0; i–)
{
Console.WriteLine(i);
}
}
Console.ReadKey();
}
int cift = 0;
int tek = 0;
int toplam = 0;
for (int i = 1; i < 5000; i++)
{
toplam = toplam + i;
if (i % 2 == 0)
{
cift = cift + i ;
}
else
{
tek = tek + i;
}
}
Console.WriteLine("Ciftlerin toplamı: {0}, Teklerin Toplamı: {1}, 5000'e kadar olan sayıların toplamı: {2} ",cift,tek,toplam);
Console.ReadKey();
Console.WriteLine(“KELİMEYİ GİRİN: “);
string kelime = Console.ReadLine();
int toplam = Convert.ToInt32(kelime.Length);
Console.WriteLine(“KELİMENİZ ” + toplam + ” HARFLİDİR.”);
Console.ReadLine();
}
Console.Write(“Bir sayı giriniz: “);
int sayi = Convert.ToInt32(Console.ReadLine());
for (int i = sayi; i > 0; i–)
{
Console.WriteLine(i);
}
Console.ReadKey();
11!-8!3! işlemin sonuçunu bulan programı for döngüsü kullanarak yapınız.
Bu soruyu yapabilirmisiniz?
int[] dizi = new int[20];
int toplam = 0;
for (int i = 0; i < 20; i++)
{
Console.Write("Lütfen {0}. sayıyı giriniz: ", i + 1);
dizi[i] = int.Parse(Console.ReadLine());
if (dizi[i] % 2 == 0)
toplam += dizi[i];
}
Console.WriteLine("Girilen sayılardan ÇİFT olanların ortalaması = " + (toplam / 2));