"Do ve while zorluk etkinliğine ait çözümü gözden geçirin"

Tamamlandı

Kod bloğunu en az bir kez yürütmeniz gerektiğini bildiğiniz için aşağıdaki örneklerde bir do kullanılmalıdır. Aynı sonucu elde etmek için de kullanabilirsiniz while . Bazı geliştiriciler, mantığının while kodu daha okunabilir hale getirdiğini düşünüyor. Sizin için böyleyse, bir whileuygulamayı seçebilirsiniz. Bu durumda, çoğu kod derleyicisinin, yineleme deyimini bir do-while öğesine dönüştürerek kodunuzu sizin için optimize ettiğini unutmayın.

Kod Project 1

Aşağıdaki kod, önceki ünitedeki sınama projesi 1 için olası çözümlerden biridir.

Kod bloğunun en az bir kez yürütülmesi gerektiğinden kod deyimini do kullanır. Aynı sonucu elde etmek için de kullanabilirsiniz while . Bazı geliştiriciler, mantığının while kodu daha okunabilir hale getirdiğini düşünebilir. Sizin için böyle bir durum söz konusuysa, burada bir while deyimi uygulamayı seçebilirsiniz.

string? readResult;
string valueEntered = "";
int numValue = 0;
bool validNumber = false;

Console.WriteLine("Enter an integer value between 5 and 10");

do
{
    readResult = Console.ReadLine();
    if (readResult != null) 
    {
        valueEntered = readResult;
    }

    validNumber = int.TryParse(valueEntered, out numValue);

    if (validNumber == true)
    {
        if (numValue <= 5 || numValue >= 10)
        {
            validNumber = false;
            Console.WriteLine($"You entered {numValue}. Please enter a number between 5 and 10.");
        }
    }
    else 
    {
        Console.WriteLine("Sorry, you entered an invalid number, please try again");
    }
} while (validNumber == false);

Console.WriteLine($"Your input value ({numValue}) has been accepted.");

readResult = Console.ReadLine();

Proje 2'nin kodu

Aşağıdaki kod, önceki ünitedeki sınama projesi 2 için olası çözümlerden biridir.

Kod bloğunun en az bir kez yürütülmesi gerektiğinden kod deyimini do kullanır. Aynı sonucu elde etmek için de kullanabilirsiniz while . Bazı geliştiriciler, mantığının while kodu daha okunabilir hale getirdiğini düşünebilir. Sizin için böyle bir durum söz konusuysa, burada bir while deyimi uygulamayı seçebilirsiniz.

string? readResult;
string roleName = "";
bool validEntry = false;

do
{                
    Console.WriteLine("Enter your role name (Administrator, Manager, or User)");
    readResult = Console.ReadLine();
    if (readResult != null) 
    {
        roleName = readResult.Trim();
    }

    if (roleName.ToLower() == "administrator" || roleName.ToLower() == "manager" || roleName.ToLower() == "user") 
    {
        validEntry = true;
    }
    else
    {
        Console.Write($"The role name that you entered, \"{roleName}\" is not valid. ");
    }

} while (validEntry == false);

Console.WriteLine($"Your input value ({roleName}) has been accepted.");
readResult = Console.ReadLine();

3. Proje Kodu

Aşağıdaki kod, önceki ünitedeki sınama projesi 3 için olası çözümlerden biridir.

'foreach yineleme değişkenine' atanan değeri değiştiremediğiniz için kod dış döngü için bir deyim kullanır for . Döngü içinde foreach fazladan bir dize değişkeni bildirerek bu sorunu geçici olarak giderebilirsiniz, ancak kod mantığınıza istenmeyen karmaşıklık eklersiniz. Başka bir deyişle yineleme deyimini foreach (string myString in myStrings) kullanmak ve değişkeni işlemeye myString çalışmak bir derleme hatası oluşturur.

Kod, veri dizesinin değerine bağlı olarak kod bloğu çalıştırılmayabileceğinden (eğer dize nokta içermiyorsa), iç döngü için while deyimini kullanır. Yineleme bloğunun yürütülmesinin gerekmeyebileceği durumlarda do deyimini kullanmamalısınız.

string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
int stringsCount = myStrings.Length;

string myString = "";
int periodLocation = 0;

for (int i = 0; i < stringsCount; i++)
{
    myString = myStrings[i];
    periodLocation = myString.IndexOf(".");

    string mySentence;

    // extract sentences from each string and display them one at a time
    while (periodLocation != -1)
    {

        // first sentence is the string value to the left of the period location
        mySentence = myString.Remove(periodLocation);

        // the remainder of myString is the string value to the right of the location
        myString = myString.Substring(periodLocation + 1);

        // remove any leading white-space from myString
        myString = myString.TrimStart();

        // update the comma location and increment the counter
        periodLocation = myString.IndexOf(".");

        Console.WriteLine(mySentence);
    }
 
    mySentence = myString.Trim();
    Console.WriteLine(mySentence);
}

Başarılı olduysanız tebrikler! Sorun yaşadıysanız, çözümü gözden geçirmek için zaman ayırıp nasıl çalıştığını anlamaya çalışın.