C# if
deyimleri ve döngüleri - koşullu mantık öğreticisi
Bu öğreticide değişkenleri inceleyen ve bu değişkenlere göre yürütme yolunu değiştiren C# kodu yazmayı öğreneceksiniz. C# kodu yazar ve derleme ve çalıştırmanın sonuçlarını görürsünüz. Öğretici, C# dilinde dallanma ve döngü yapılarını inceleyen bir dizi ders içerir. Bu dersler size C# dilinin temel özelliklerini öğretir.
İpucu
Bir kod parçacığını odak moduna yapıştırmak için klavye kısayolunuzu (Ctrl + v veya cmd + v) kullanmanız gerekir.
Önkoşullar
Öğretici, yerel geliştirme için ayarlanmış bir makineniz olmasını bekler. Yükleme yönergeleri ve .NET'te uygulama geliştirmeye genel bakış için bkz. Yerel ortamınızı ayarlama .
Yerel bir ortam ayarlamak zorunda kalmadan kodu çalıştırmayı tercih ediyorsanız , bu öğreticinin tarayıcı içi etkileşimli sürümüne bakın.
deyimini if
kullanarak kararlar alın
branches-tutorial adlı bir dizin oluşturun. Bunu geçerli dizin yapın ve aşağıdaki komutu çalıştırın:
dotnet new console -n BranchesAndLoops -o .
Önemli
.NET 6 için C# şablonları en üst düzey deyimleri kullanır. .NET 6'ya zaten yükselttiyseniz uygulamanız bu makaledeki kodla eşleşmeyebilir. Daha fazla bilgi için Yeni C# şablonları en üst düzey deyimleri oluşturma makalesine bakın
.NET 6 SDK'sı, aşağıdaki SDK'ları kullanan projeler için bir dizi örtükglobal using
yönerge de ekler:
- Microsoft.NET.Sdk
- Microsoft.NET.Sdk.Web
- Microsoft.NET.Sdk.Worker
Bu örtük global using
yönergeler, proje türü için en yaygın ad alanlarını içerir.
Daha fazla bilgi için Örtük kullanım yönergeleri makalesine bakın
Bu komut, geçerli dizinde yeni bir .NET konsol uygulaması oluşturur. Sık kullandığınız düzenleyicide Program.cs dosyasını açın ve içeriğini aşağıdaki kodla değiştirin:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Konsol pencerenize yazarak dotnet run
bu kodu deneyin. Konsolunuza "Yanıt 10'dan büyük" iletisinin yazdırıldığını görmeniz gerekir. b
tanımlamasını toplamın 10’dan küçük olacağı şekilde değiştirin:
int b = 3;
Yeniden yazın dotnet run
. Yanıt 10’dan küçük olduğundan herhangi bir şey yazdırılmaz. Test ettiğiniz koşul false değerindedir. Bir if
deyimi için olası dallardan yalnızca birini (true dalı) yazdığınızdan, yürütülecek herhangi bir kodunuz yoktur.
İpucu
C# dilini (veya herhangi bir programlama dilini) keşfederken, kod yazdığınızda hatalar yapacaksınız. Derleyici hataları bulur ve bildirir. Hata çıkışına ve hatayı oluşturan koda yakından bakın. Derleyici hatası genellikle sorunu bulmanıza yardımcı olabilir.
Bu ilk örnek ve Boole türlerinin if
gücünü gösterir. Boole değeri, iki değerden birine sahip olabilecek bir değişkendir: true
veya false
. C# Boole değişkenleri için özel bir tür bool
tanımlar. if
deyimi bir bool
için değeri kontrol eder. Değer true
olduğunda, if
deyiminden sonra gelen deyim yürütülür. Aksi takdirde atlanır. Koşulları denetleme ve bu koşullara göre deyimleri yürütme işlemi güçlüdür.
if ve else koşullarını birlikte çalıştırma
Hem true hem de false dallarında farklı kod yürütmek için, koşul false olduğunda yürütülen bir else
dalı oluşturursunuz. Bir else
dal deneyin. Aşağıdaki koda son iki satırı ekleyin (ilk dört satıra zaten sahip olmanız gerekir):
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
else
anahtar sözcüğünden sonraki deyim, yalnızca test edilen koşul false
olduğunda yürütülür. Ve else
değerlerini Boole koşullarıyla birleştirmekif
, hem hem true
de koşulu false
işlemek için ihtiyacınız olan tüm gücü sağlar.
Önemli
if
ve else
deyimlerinin altındaki girinti, insan okuyuculara yöneliktir. C# dili girintiyi veya boşluğu önemli olarak kabul etmez. if
veya else
anahtar sözcüğünden sonra gelen deyim, koşula bağlı olarak yürütülür. Bu öğreticideki tüm örnekler, deyimlerin denetim akışına göre satırları girintili yapmak için yaygın bir uygulamayı izler.
Girinti önemli olmadığından, birden fazla deyimin koşullu olarak yürütülen bloğun parçası olmasını istediğiniz zamanları belirtmek için ve }
kullanmanız {
gerekir. C# programcıları bu ayraçları genellikle tüm if
and else
tümcelerinde kullanır. Aşağıdaki örnek, oluşturduğunuz örnekle aynıdır. Yukarıdaki kodunuzu aşağıdaki kodla eşleşecek şekilde değiştirin:
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
İpucu
Bu öğreticinin geri kalanında kod örneklerinin tümü, kabul edilen uygulamaları izleyerek ayraçları içerir.
Daha karmaşık koşulları test edebilirsiniz. Şu ana kadar yazdığınız kodun arkasına aşağıdaki kodu ekleyin:
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
Sembol eşitliği ==
sınar. kullanmak ==
, eşitlik testini içinde a = 5
gördüğünüz atamadan ayırt eder.
&&
"ve" sözcüğünü ifade eder. Bu, deyimi true dalında yürütmek için her iki koşulun da true olması gerektiği anlamına gelir. Bu örnekler aynı zamanda, {
ve }
ayraçları içine alınmaları koşuluyla her koşullu dalda birden çok deyime sahip olabileceğinizi de gösterir. "veya" öğesini temsil etmek için de kullanabilirsiniz ||
. Şu ana kadar yazdıklarınıza aşağıdaki kodu ekleyin:
if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}
, ve b
değerlerini a
değiştirin ve c
ile arasında &&
||
geçiş yapın. ve ||
işleçlerinin nasıl &&
çalıştığı hakkında daha fazla bilgi edineceksiniz.
İlk adımı tamamladınız. Sonraki bölüme başlamadan önce geçerli kodu ayrı bir yönteme taşıyalım. Bu, yeni bir örnekle çalışmaya başlamayı kolaylaştırır. Mevcut kodu adlı ExploreIf()
bir yönteme yerleştirin. Bunu programınızın en üstünden arayın. Bu değişiklikleri tamamladığınızda kodunuz aşağıdaki gibi görünmelidir:
ExploreIf();
void ExploreIf()
{
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
int c = 4;
if ((a + b + c > 10) && (a > b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is greater than the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not greater than the second");
}
if ((a + b + c > 10) || (a > b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is greater than the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not greater than the second");
}
}
çağrısına açıklama satırı ekleyin ExploreIf()
. Bu bölümde çalışırken çıkışı daha az karmaşık hale getirir:
//ExploreIf();
C //
# dilinde bir açıklama başlatır. Açıklamalar, kaynak kodunuzda tutmak istediğiniz ancak kod olarak yürütmek istemediğiniz metinlerdir. Derleyici açıklamalardan yürütülebilir kod oluşturmaz.
İşlemleri yinelemek için döngüleri kullanma
Bu bölümde deyimleri yinelemek için döngüleri kullanacaksınız. Çağrısından ExploreIf
sonra bu kodu ekleyin:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
deyimi while
bir koşulu denetler ve deyimini izleyen deyimini veya deyim bloğunu while
yürütür. Koşulu tekrar tekrar denetler ve koşul false olana kadar bu deyimleri yürütür.
Bu örnekte diğer bir yeni işleç mevcuttur. counter
değişkeninden sonra gelen ++
, artırma işlecidir. değerine counter
1 ekler ve bu değeri değişkeninde counter
depolar.
Önemli
Kodu yürütürken döngü koşulunun while
false olarak değiştiğinden emin olun. Aksi halde, programınızın hiç sona ermediği sonsuz bir döngü oluşturmuş olursunuz. CTRL-C veya başka bir yolla programınızı bırakmaya zorlamanız gerektiğinden bu örnekte bu durum gösterilmez.
while
döngüsü, while
koşulundan sonraki kodu yürütmeden önce koşulu test eder. do
... while
döngüsü önce kodu yürütür, sonra koşulu kontrol eder. Do while döngüsü aşağıdaki kodda gösterilir:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
Bu do
döngü ve önceki while
döngü aynı çıkışı üretir.
For döngüsü ile çalışma
for döngüsü yaygın olarak C# dilinde kullanılır. Şu kodu deneyin:
for (int index = 0; index < 10; index++)
{
Console.WriteLine($"Hello World! The index is {index}");
}
Önceki kod, daha önce kullandığınız döngü ve döngüyle do
aynı işi while
yapar. for
deyiminde, bunu nasıl çalıştığını denetleyen üç bölüm bulunur.
İlk bölüm for başlatıcıdır: int index = 0;
bunun döngü değişkeni olduğunu index
bildirir ve ilk değerini olarak 0
ayarlar.
Orta kısım for koşuludur: index < 10
sayacın değeri 10'dan küçük olduğu sürece bu for
döngünün yürütülmeye devam ettiğini bildirir.
Son bölüm yineleyicinin bölümüdür: index++
deyimini izleyen for
bloğu yürüttkten sonra döngü değişkeninin nasıl değiştirileceğini belirtir. Bu bölüm, bloğun her yürütme işleminde index
değişkeninin 1 artırılması gerektiğini belirtir.
Kendinizi deneyin. Aşağıdaki varyasyonların her birini deneyin:
- Farklı bir değerde başlamak için başlatıcıyı değiştirin.
- Farklı bir değerde durmak için koşulu değiştirin.
İşiniz bittiğinde öğrendiklerinizi kullanmak için kendi kendinize kod yazma adımına geçelim.
Bu öğreticide yer almayan bir döngü deyimi daha vardır: foreach
deyimi. deyimi, foreach
bir öğe dizisindeki her öğe için deyimini yineler. En sık koleksiyonlarla kullanıldığından, sonraki öğreticide ele alınmıştır.
İç içe döngüler oluşturuldu
Bir while
, do
veya for
döngüsü, iç döngüdeki her öğeyle dış döngüdeki her öğenin birleşimi kullanılarak bir matris oluşturmak için başka bir döngünün içine iç içe yerleştirilebilir. Şimdi bunu, satırları ve sütunları temsil eden bir alfasayısal çift kümesi oluşturmak için yapalım.
Bir for
döngü satırları oluşturabilir:
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
Başka bir döngü sütunları oluşturabilir:
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
Çiftler oluşturmak için bir döngünün diğerinin içine iç içe yerleştirebilirsiniz:
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
İç döngünün her tam çalıştırması için dış döngünün bir kez arttığını görebilirsiniz. Satır ve sütun iç içe yerleştirmeyi ters çevirin ve değişiklikleri kendiniz görün. İşiniz bittiğinde, bu bölümdeki kodu adlı ExploreLoops()
bir yönteme yerleştirin.
Dalları ve döngüleri birleştirme
C# dilinde if
deyimini ve döngü yapılarını gördüğünüze göre şimdi 1 ile 20 arasında olup 3’e bölünebilen tüm tamsayıların toplamını bulmak için C# kodu yazmayı deneyin. Aşağıdaki ipuçlarından yararlanabilirsiniz:
%
işleci size bölme işlemindeki kalanı verir.if
deyimi bir sayının toplama dahil edilip edilmemesi gerektiğini görmeniz için size koşulu verir.for
döngüsü 1 ile 20 arasındaki tüm sayılar için bir dizi adımı yinelemenize yardımcı olur.
Kendiniz deneyin. Daha sonra başarılı olup olmadığınıza bakın. Cevap olarak 63 almalı. Tamamlanmış kodu GitHub'da görüntüleyerek olası bir yanıt görebilirsiniz.
"Dallar ve döngüler" öğreticisini tamamladınız.
Kendi geliştirme ortamınızda Diziler ve koleksiyonlar öğreticisiyle devam edebilirsiniz.
Bu kavramlar hakkında daha fazla bilgiyi şu makalelerde bulabilirsiniz: