Tinjau solusi untuk tantangan aktivitas "do versus while"

Selesai

Contoh berikut harus menggunakan do karena Anda tahu bahwa Anda perlu menjalankan blok kode setidaknya sekali. Anda juga dapat menggunakan while untuk mencapai hasil yang sama. Beberapa pengembang merasa bahwa logika while membuat kode lebih mudah dibaca. Jika demikian, Anda dapat memilih untuk menerapkan while. Dalam hal ini, ketahuilah bahwa sebagian besar pengkompilasi kode mengoptimalkan kode Anda untuk Anda dengan mengonversi pernyataan iterasi ke do-while.

Kode Proyek 1

Kode berikut adalah salah satu solusi yang mungkin untuk proyek tantangan 1 dari unit sebelumnya.

Kode menggunakan do pernyataan karena blok kode harus dijalankan setidaknya sekali. Anda juga dapat menggunakan while untuk mencapai hasil yang sama. Beberapa pengembang mungkin merasa bahwa logika dari while membuat kode lebih mudah dibaca. Jika demikian, Anda dapat memilih untuk menerapkan while pernyataan di sini.

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();

Kode Project 2

Kode berikut adalah salah satu solusi yang mungkin untuk proyek tantangan 2 dari unit sebelumnya.

Kode menggunakan do pernyataan karena blok kode harus dijalankan setidaknya sekali. Anda juga dapat menggunakan while untuk mencapai hasil yang sama. Beberapa pengembang mungkin merasa bahwa logika dari while membuat kode lebih mudah dibaca. Jika demikian, Anda dapat memilih untuk menerapkan while pernyataan di sini.

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();

Kode Project 3

Kode berikut adalah salah satu solusi yang mungkin untuk proyek tantangan 3 dari unit sebelumnya.

Kode menggunakan for pernyataan untuk perulangan luar karena Anda tidak dapat mengubah nilai yang ditetapkan ke 'variabel iterasi foreach'. Anda dapat mengatasinya dengan mendeklarasikan variabel string tambahan di dalam foreach perulangan, tetapi kemudian Anda akan menambahkan kompleksitas yang tidak diinginkan ke logika kode Anda. Dengan kata lain, menggunakan pernyataan foreach (string myString in myStrings) iterasi lalu mencoba memproses myString variabel menghasilkan kesalahan kompilasi.

Kode menggunakan pernyataan while untuk loop dalam karena, tergantung pada nilai string data, blok kode mungkin tidak dijalankan (ketika string tidak berisi titik). Anda tidak boleh menggunakan do pernyataan dalam situasi di mana blok iterasi mungkin tidak perlu dijalankan.

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);
}

Jika Anda berhasil, selamat! Jika Anda mengalami masalah, luangkan waktu untuk meninjau solusi dan mencoba memahami cara kerjanya.