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 = 5gö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 bdeğerlerini adeğ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 ExploreIfsonra 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 whileyü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 0ayarlar.

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, doveya 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: