Vs.NET C#
Csharp Görsel Programlama - Döngü Deyimleri, For, While Ve Do While Kontrolleri
10 Kasım 2015 Salı
Adem KORKMAZ
1101
Döngü Deyimleri
Sayıya bağlı döngüler
for
Koşula bağlı döngüler
while / do
do / while
Sayıya Bağlı Döngüler
Dönme sayısı sayıyla ölçülebilen döngü deyimlerine sayıya bağlı döngüler adı verilir.
for deyimi
for(<değişken> = <başlangıç>; <koşul>; <artış değeri>)
<işlem>;
ya da
for(<değişken> = <başlangıç>; <koşul>; <artış değeri>)
{
<işlem>;
...
<işlem>;
}
Deyim <değişken> için <başlangıç> değerini alarak başlar
Daha sonra <koşul> kontrol edilir. ; <koşul> yanlış ise döngüden çıkılır. <koşul> doğru ise döngü içerisinde bulunan <işlem>ler gerçekleştirilir.
Bu işlemden sonra, <değişken> değeri <artış değeri> kadar artırılarak Adım-2’den itibaren döngüye devam edilir.
Örnek For Kullanımı 1;
int sayac;
for (sayac = 0; sayac < 5; sayac++)
Console.WriteLine("Dongu ici sayac degeri = " + sayac);
Console.WriteLine("Dongu disi sayac degeri = " + sayac);
Çevrim Durumu;
Dongu ici sayac degeri = 0
Dongu ici sayac degeri = 1
Dongu ici sayac degeri = 2
Dongu ici sayac degeri = 3
Dongu ici sayac degeri = 4
Dongu disi sayac degeri = 5
Örnek For Kullanımı 2;
int sayac;
for (sayac = 0; sayac < 5; sayac += 2)
Console.WriteLine("Dongu ici sayac degeri = " + sayac);
Console.WriteLine("Dongu disi sayac degeri = " + sayac);
Çevrim Durumu;
Dongu ici sayac degeri = 0
Dongu ici sayac degeri = 2
Dongu ici sayac degeri = 4
Dongu disi sayac degeri = 6
Örnek bir program;
// bu program 1 ile 100 arasindaki sayilardan kac tanesinin 2 ile
// kac tanesinin 3 ile tam bolundugunu hesaplar
int sayac, bol_2 = 0, bol_3 = 0;
for (sayac = 1; sayac <= 100; sayac++)
if (sayac % 2 == 0) bol_2++;
else if (sayac % 3 == 0) bol_3++;
Console.WriteLine("2 ile bolunen sayisi = " + bol_2);
Console.WriteLine("3 ile bolunen sayisi = " + bol_3);
Örnek: Dışardan girilen sayının asal sayı olup olmadığını bulan program,
string satir;
int sayac, sayi;
bool bayrak = true;
satir = Console.ReadLine();
sayi = Convert.ToInt32(satir);
if (sayi == 2) Console.WriteLine(sayi + " asal sayidir");
else if (sayi % 2 == 0) Console.WriteLine(sayi + " asal degildir");
else
{ for (sayac = 3; sayac < sayi; sayac += 2)
if (sayi % sayac == 0)
{
bayrak = false;
break;
}
}
if (bayrak == true) Console.WriteLine(sayi + " asal sayidir");
else Console.WriteLine(sayi + " asal degildir");
İç içe For Deyimleri
for(...) {
...
...
for(...) {
...
...
...
}
...
}
Örnek;
int d1, d2;
for (d1 = 1; d1 <= 2; d1++)
for (d2 = 1; d2 <= 3; d2++)
Console.WriteLine("d1 = " + d1 + " d2 = " + d2);
Örnek;
int d1, d2;
for (d1 = 1; d1 <= 5; d1++)
{
for (d2 = 1; d2 <= 5; d2++)
Console.Write("{0:D3} ", d1 * d2);
Console.WriteLine();
}
Koşula Bağlı Döngüler
while(<koşul>)
<işlem>;
ya da
while(<koşul>)
{
<işlem>;
<işlem>;
...
}
while döngüsüne ilk girildiğinde <koşul> kontrol edilir. Eğer, <koşul> doğruysa döngü içindeki deyimlerin işletimleri sırasıyla gerçekleştirilir ve tekrar while deyimine dönülür. Eğer, <koşul> yanlış ise, döngüden çıkılır.
İlk deneme de <koşul>un yanlış değere sahip olması hiçbir işlem yapılmadan döngüden çıkılmasına neden olacaktır.
<koşul>un sürekli olarak doğru konumda kalmasıyla sonsuz döngü oluşacaktır.
Örnek:
// klavyeden girilen ve sonunda -1 isaretleyicisi bulunan bir dizi sayinin
// toplaminin hesaplatilmasi
string satir;
int sayi;
long toplam = 0;
Console.Write("Bir sayi giriniz (veri sonu -1): ");
satir = Console.ReadLine();
sayi = Convert.ToInt32(satir);
while (sayi != -1)
{
toplam += sayi;
Console.Write("Bir sayi giriniz (veri sonu -1): ");
satir = Console.ReadLine();
sayi = Convert.ToInt32(satir);
}
Console.WriteLine("Toplam = " + toplam);
do while Yapısı
do
<işlem>;
while(<koşul>);
ya da
do
{
<işlem>;
<işlem>;
...
} while(<koşul>);
Do/while döngüsüne ilk girildiğinde verilen <işlem> ya da <işlem>ler gerçekleştirilir. Daha sonra <koşul> kontrol edilir. Eğer, <koşul> doğruysa döngüye devam edilir. Eğer, <koşul> yanlış ise, döngüden çıkılır.
İlk deneme de <koşul>un yanlış değere sahip olması <işlem> ya da <işlem>lerin bir kez yapılıp döngüden çıkılmasına neden olacaktır.
<koşul>un sürekli olarak doğru konumda kalmasıyla sonsuz döngü oluşacaktır.
Örnek:klavyeden okunan tuslardan kac tanesinin sesli ve kac tanesinin sessiz harf oldugunu hesaplayan program. Klavyeden girilen ilk degerin veri sonu olmadigi varsayilmaktadir. Verilerin sonunda 0 (sifir) bulunmaktadir.
string tus;
int sesli = 0, sessiz = 0;
tus = Console.ReadLine();
tus = tus.ToLower();
do
{
switch (tus)
{
case "a":
case "e":
case "i":
case "o":
case "u": { sesli++; break; }
default: { sessiz++; break; }
}
tus = Console.ReadLine();
tus = tus.ToLower();
} while (tus != "0");
Console.WriteLine("Sesli Sayisi = " + sesli);
Console.WriteLine("Sessiz Sayisi = " + sessiz);