Latihan - Membuat logika keputusan berlapis dengan jika, jika, dan lainnya

Selesai

Di unit sebelumnya, Anda menggunakan beberapa if pernyataan untuk mengimplementasikan aturan permainan. Namun, di akhir unit, Anda melihat bahwa pernyataan yang lebih ekspresif if diperlukan untuk memperbaiki bug halang dalam kode Anda.

Dalam latihan ini, Anda akan menggunakan ifpernyataan , else, dan else if untuk meningkatkan opsi percabangan dalam kode Anda dan memperbaiki bug logika.

Gunakan pernyataan if dan else alih-alih dua pernyataan if terpisah

Alih-alih melakukan dua pemeriksaan untuk menampilkan pesan "Anda menang!" atau "Maaf, Anda kehilangan", Anda akan menggunakan else kata kunci.

  1. Pastikan kode Program.cs Anda cocok dengan yang berikut:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        Console.WriteLine("You rolled doubles! +2 bonus to total!");
        total += 2;
    }
    
    if ((roll1 == roll2) && (roll2 == roll3)) 
    {
        Console.WriteLine("You rolled triples! +6 bonus to total!");
        total += 6;
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    
    if (total < 15)
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    Ini adalah kode yang Anda selesaikan di unit sebelumnya.

  2. Luangkan waktu satu menit untuk memeriksa dua if pernyataan di akhir file:

    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    
    if (total < 15)
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    Perhatikan bahwa kedua if pernyataan membandingkan total dengan nilai numerik yang sama. Ini adalah kesempatan sempurna untuk menggunakan pernyataan else .

  3. Perbarui dua if pernyataan sebagai berikut:

    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

    Di sini, jika total >= 15 salah, maka blok kode yang mengikuti else kata kunci akan dijalankan. Karena kedua hasil tersebut berlawanan, ini adalah skenario yang sempurna untuk else kata kunci.

  4. File Program.cs yang diperbarui harus berisi kode berikut:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        Console.WriteLine("You rolled doubles!  +2 bonus to total!");
        total += 2;
    }
    
    if ((roll1 == roll2) && (roll2 == roll3))
    {
        Console.WriteLine("You rolled triples!  +6 bonus to total!");
        total += 6;
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    

Ubah kode untuk menghapus bonus tumpukan untuk ganda dan tiga kali lipat menggunakan berlapis

Di unit sebelumnya, Anda melihat bahwa bug logika halus diperkenalkan ke dalam aplikasi Anda. Anda dapat memperbaiki masalah tersebut dengan menumpuk pernyataan Anda if .

Berlapis memungkinkan Anda menempatkan blok kode di dalam blok kode. Dalam hal ini, Anda akan menumpuk if kombinasi dan else (pemeriksaan ganda) di dalam pernyataan lain if (pemeriksaan tiga kali lipat) untuk mencegah kedua bonus diberikan.

  1. Ubah kode Anda agar sesuai dengan daftar kode berikut:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        if ((roll1 == roll2) && (roll2 == roll3))
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6;
        }
        else
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    
    if (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    else 
    {
        Console.WriteLine("Sorry, you lose.");
    }
    
    
  2. Luangkan waktu satu menit untuk meninjau pernyataan berlapis if .

    Tujuannya adalah untuk membuat konstruksi dalam di if-else mana kedua hasil terkait berlawanan, dan kemudian menggunakan hasil yang berlawanan (if/true dan else/false) untuk memberikan poin bonus untuk tiga kali lipat dan ganda. Untuk mencapai tujuan ini, Anda memeriksa ganda dalam pernyataan luar if , dan kemudian untuk tiga kali lipat dalam pernyataan dalam if . Pola ini memastikan bahwa ketika pemeriksaan dalam untuk tiga kali lipat mengembalikan false, blok kode Anda else dapat memberikan poin untuk ganda.

    Setelah itu, Anda akan "kode keras" hasil dari tiga gulungan Anda untuk menguji logika kode Anda.

  3. Buat baris kode kosong di atas baris tempat total dideklarasikan dan diinisialisasi.

  4. Untuk menguji gulungan ganda, masukkan kode berikut:

    roll1 = 6;
    roll2 = 6;
    roll3 = 5;
    

    Pengodean keras ketiga roll variabel memungkinkan Anda menguji kode tanpa harus menjalankan aplikasi puluhan kali.

  5. Pada menu File Visual Studio Code, klik Simpan.

  6. Di panel EXPLORER, untuk membuka Terminal di lokasi folder TestProject Anda, klik kanan TestProject, lalu pilih Buka di Terminal Terintegrasi.

    Panel Terminal harus terbuka, dan harus menyertakan perintah yang menunjukkan bahwa Terminal terbuka untuk lokasi folder TestProject Anda.

  7. Pada perintah Terminal, untuk menjalankan kode Anda, ketik dotnet run lalu tekan Enter.

    Saat kode Anda berjalan, Anda akan melihat:

    Dice roll: 6 + 6 + 5 = 17
    You rolled doubles!  +2 bonus to total!
    You win!
    
    
  8. Untuk menguji gulungan tiga kali lipat, perbarui variabel roll yang dikodekan secara permanen sebagai berikut:

    roll1 = 6;
    roll2 = 6;
    roll3 = 6;
    
  9. Pada menu File Visual Studio Code, klik Simpan.

  10. Di panel EXPLORER, untuk membuka Terminal di lokasi folder TestProject Anda, klik kanan TestProject, lalu pilih Buka di Terminal Terintegrasi.

  11. Pada perintah Terminal, untuk menjalankan kode Anda, ketik dotnet run lalu tekan Enter.

    Saat kode Anda berjalan, Anda akan melihat:

    Dice roll: 6 + 6 + 6 = 18
    You rolled triples!  +6 bonus to total!
    You win!
    
    

Gunakan jika, jika tidak, dan lain-lain jika pernyataan untuk memberikan hadiah alih-alih pesan win-lose

Untuk membuat permainan lebih menyenangkan, Anda dapat mengubah permainan dari "menang atau kalah" menjadi memberikan hadiah fiktif untuk setiap skor. Anda dapat menawarkan empat hadiah. Namun, pemain harus memenangkan hanya satu hadiah:

  • Jika skor pemain lebih besar atau sama dengan 16, mereka akan memenangkan mobil baru.
  • Jika skor pemain lebih besar atau sama dengan 10, mereka akan memenangkan laptop baru.
  • Jika skor pemain tepat 7, mereka akan memenangkan perjalanan.
  • Jika tidak, pemain memenangkan anak kucing.
  1. Ubah kode dari langkah sebelumnya ke daftar kode berikut:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        if ((roll1 == roll2) && (roll2 == roll3))
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6;
        }
        else
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    
        Console.WriteLine($"Your total including the bonus: {total}");
    }
    
    if (total >= 16)
    {
        Console.WriteLine("You win a new car!");
    }
    else if (total >= 10)
    {
        Console.WriteLine("You win a new laptop!");
    }
    else if (total == 7)
    {
        Console.WriteLine("You win a trip for two!");
    }
    else
    {
        Console.WriteLine("You win a kitten!");
    }
    
    
  2. Luangkan waktu semenit untuk meninjau konstruksi yang diperbarui if-elseif-else .

    Pernyataan if, else if, dan else memungkinkan Anda membuat beberapa ketentuan eksklusif sebagai ungkapan Boolean. Dengan kata lain, ketika Anda hanya ingin satu hasil terjadi, tetapi Anda memiliki beberapa kemungkinan kondisi dan hasil, gunakan pernyataan sebanyak else if yang Anda inginkan. Jika tidak ada pernyataan if dan else if yang berlaku, blok kode else terakhir akan dieksekusi. else bersifat opsional, tetapi harus menjadi yang terakhir jika Anda memilih untuk menyertakannya.

  3. Gunakan teknik pengodean roll variabel untuk sementara untuk menguji setiap pesan.

Rekap

  • Kombinasi pernyataan if dan else memungkinkan Anda menguji satu kondisi, lalu melakukan salah satu dari dua hasil. Blok kode untuk if akan dijalankan ketika ekspresi Boolean adalah true, dan blok kode untuk else akan dijalankan ketika ekspresi Boolean adalah false.
  • Anda dapat menyusun if pernyataan untuk mempersempit kemungkinan kondisi. Namun, Anda harus mempertimbangkan untuk menggunakan pernyataan if, else if, dan else sebagai gantinya.
  • Gunakan else if pernyataan untuk membuat beberapa kondisi eksklusif.
  • Bersifat else opsional, tetapi harus selalu menjadi yang terakhir ketika disertakan.