Latihan - Membuat logika keputusan dengan pernyataan if

Selesai

Sebagian besar aplikasi mencakup sejumlah besar jalur eksekusi. Misalnya, aplikasi dapat menerapkan jalur eksekusi yang berbeda berdasarkan opsi menu mana yang dipilih pengguna. Pengembang mengacu pada kode yang mengimplementasikan jalur eksekusi yang berbeda sebagai cabang kode.

Pernyataan percabangan kode yang paling banyak digunakan adalah if pernyataan . Pernyataan if bergantung pada ungkapan Boolean yang diapit oleh serangkaian tanda kurung. Jika ungkapannya true, kode setelah pernyataan if dijalankan. Jika tidak, runtime .NET mengabaikan kode dan tidak menjalankannya.

Dalam latihan ini, Anda akan berlatih menulis if pernyataan dengan membuat permainan. Pertama, Anda akan menentukan aturan permainan, lalu Anda akan mengimplementasikannya dalam kode.

Anda akan menggunakan Random.Next() metode untuk mensimulasikan bergulir tiga dadu enam sisi. Anda akan mengevaluasi nilai yang digulung untuk menghitung skor. Jika skor lebih besar dari total arbitrer, maka Anda akan menampilkan pesan yang menang kepada pengguna. Jika skor di bawah cutoff, Anda akan menampilkan pesan yang kalah kepada pengguna.

  • Jika dua dadu yang Anda lempar menghasilkan nilai yang sama, Anda mendapatkan dua poin bonus karena melemparkan dadu dengan nilai kembar.
  • Jika ketiga dadu yang Anda lempar menghasilkan nilai yang sama, Anda mendapatkan enam poin bonus karena melemparkan dadu dengan nilai kembar tiga.
  • Jika jumlah dari tiga lemparan dadu, ditambah semua bonus poin, adalah 15 atau lebih, Anda memenangkan game. Jika tidak, Anda kalah.

Anda akan menyempurnakan aturan saat mempelajari lebih lanjut tentang pernyataan tersebut if .

Penting

Latihan ini memanfaatkan kelas secara ekstensif System.Random . Anda dapat merujuk ke modul Microsoft Learn berjudul "Metode panggilan dari Pustaka Kelas .NET menggunakan C#" jika Anda memerlukan penyegaran cara Random.Next() kerjanya.

Menyiapkan lingkungan pengodian Anda

Modul ini mencakup aktivitas yang memandu Anda melalui proses membangun dan menjalankan kode sampel. Anda dianjurkan untuk menyelesaikan aktivitas ini menggunakan Visual Studio Code sebagai lingkungan pengembangan Anda. Menggunakan Visual Studio Code untuk aktivitas ini akan membantu Anda menjadi lebih nyaman menulis dan menjalankan kode di lingkungan pengembang yang digunakan oleh para profesional di seluruh dunia.

  1. Buka Visual Studio Code.

    Anda dapat menggunakan Windows menu Mulai (atau sumber daya yang setara untuk OS lain) untuk membuka Visual Studio Code.

  2. Pada menu File Visual Studio Code, pilih Buka Folder.

  3. Dalam dialog Buka Folder, navigasikan ke folder Windows Desktop.

    Jika Anda memiliki lokasi folder yang berbeda di mana Anda menyimpan proyek kode, Anda dapat menggunakan lokasi folder tersebut sebagai gantinya. Untuk pelatihan ini, yang penting adalah memiliki lokasi yang mudah ditemukan dan diingat.

  4. Dalam dialog Buka Folder, pilih Pilih Folder.

    Jika Anda melihat dialog keamanan yang menanyakan apakah Anda mempercayai penulis, pilih Ya.

  5. Pada menu Terminal Visual Studio Code, pilih Terminal Baru.

    Perhatikan bahwa perintah di panel Terminal menampilkan jalur folder untuk folder saat ini. Contoh:

    C:\Users\someuser\Desktop>
    

    Catatan

    Jika Anda bekerja pada PC Anda sendiri daripada di kotak pasir atau lingkungan yang dihosting dan Anda telah menyelesaikan modul Microsoft Learn lainnya dalam seri C# ini, Anda mungkin telah membuat folder proyek untuk sampel kode. Jika demikian, Anda dapat melewati langkah berikutnya, yang digunakan untuk membuat aplikasi konsol di folder TestProject.

  6. Pada prompt perintah Terminal, untuk membuat aplikasi konsol baru di folder tertentu, ketik dotnet konsol baru -o ./CsharpProjects/TestProject lalu tekan Enter.

    Perintah .NET CLI ini menggunakan templat program .NET untuk membuat proyek aplikasi konsol C# baru di lokasi folder yang ditentukan. Perintah membuat folder CsharpProjects dan TestProject untuk Anda, dan menggunakan TestProject sebagai nama file Anda .csproj .

  7. Di panel EXPLORER, perluas folder CsharpProjects .

    Anda akan melihat folder TestProject dan dua file, file program C# bernama Program.cs dan file proyek C# bernama TestProject.csproj.

  8. Di panel EXPLORER, untuk melihat file kode Anda di panel Editor, pilih Program.cs.

  9. Hapus baris kode yang ada.

    Anda akan menggunakan proyek konsol C# ini untuk membuat, membangun, dan menjalankan sampel kode selama modul ini.

  10. Tutup panel Terminal.

Menulis kode yang menghasilkan tiga angka acak dan menampilkannya dalam output

  1. Pastikan Anda membuka file Program.cs kosong di Visual Studio Code.

  2. Untuk membuat kode awal untuk latihan ini, masukkan yang berikut ini:

    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}");
    
    
  3. Luangkan waktu semenit untuk meninjau kode yang Anda masukkan.

    Untuk memulai, Anda membuat instans System.Random baru kelas dan menyimpan referensi ke objek dalam variabel bernama dice. Kemudian, Anda memanggil Random.Next() metode pada dice objek tiga kali, menyediakan batas bawah dan atas untuk membatasi kemungkinan nilai antara 1 dan 6 (batas atas eksklusif). Anda menyimpan tiga angka acak dalam variabel roll1, , roll2dan roll3, masing-masing.

    Selanjutnya, Anda menjumlahkan tiga gulungan dadu dan menyimpan nilai ke dalam variabel bilangan bulat bernama total.

    Terakhir, Anda menggunakan WriteLine() metode untuk menampilkan tiga nilai menggunakan interpolasi string.

    Saat Anda menjalankan kode, Anda akan melihat pesan berikut (angkanya akan berbeda).

    Dice roll: 4 + 5 + 2 = 11
    
    

    Tugas pertama ini adalah tugas penyetelan. Sekarang, Anda dapat menambahkan logika keputusan ke dalam kode Anda untuk membuat permainan lebih menarik.

Menambahkan pernyataan if untuk menampilkan pesan yang berbeda berdasarkan nilai total variabel

  1. Di Editor Visual Studio Code, temukan kursor di bagian bawah file kode Anda, lalu buat baris kode kosong.

  2. Untuk membuat fitur game pertama Anda, masukkan pernyataan berikut if .

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

    Kedua if pernyataan ini digunakan untuk menangani skenario menang dan kalah. Luangkan waktu satu menit untuk memeriksa pernyataan pertama if .

    Perhatikan bahwa if pernyataan tersebut terdiri dari tiga bagian:

    • Kata kunci if
    • Ungkapan Boolean di antara tanda kurung ()
    • Blok kode yang ditentukan oleh kurung kurawal { }

    Saat dijalankan, ungkapan Boolean total > 14 dievaluasi. Jika ini adalah pernyataan yang benar (jika nilainya lebih besar dari total14) maka alur eksekusi akan berlanjut ke dalam kode yang ditentukan dalam blok kode. Dengan kata lain, itu akan menjalankan kode dalam kurung kurawal.

    Namun, jika ekspresi Boolean salah (nilai tidak lebih besar dari total14) maka alur eksekusi akan melewati blok kode. Dengan kata lain, itu tidak akan menjalankan kode dalam kurung kurawal.

    Terakhir, pernyataan if kedua mengontrol pesan jika pengguna kalah. Di unit berikutnya, Anda akan menggunakan variasi pada if pernyataan untuk mempersingkat kedua pernyataan ini menjadi satu pernyataan yang lebih jelas mengekspresikan niat.

Apa yang dimaksud dengan ungkapan Boolean?

Ungkapan Boolean adalah kode yang menampilkan nilai Boolean, baik true atau false. Ekspresi Boolean yang paling sederhana hanyalah nilai true dan false. Atau, ekspresi Boolean bisa menjadi hasil dari metode yang mengembalikan nilai true atau false. Misalnya, berikut adalah contoh kode sederhana yang menggunakan metode string.Contains() untuk mengevaluasi apakah satu string berisi string lain.

string message = "The quick brown fox jumps over the lazy dog.";
bool result = message.Contains("dog");
Console.WriteLine(result);

if (message.Contains("fox"))
{
    Console.WriteLine("What does the fox say?");
}

Karena message.Contains("fox") menampilkan nilai true atau false, itu memenuhi syarat sebagai ungkapan Boolean dan dapat digunakan dalam pernyataan if.

Ungkapan Boolean sederhana lainnya dapat dibuat dengan menggunakan operator untuk membandingkan dua nilai. Operator meliputi:

  • ==, operator "sama dengan", untuk menguji kesetaraan
  • >, operator "lebih besar dari", untuk menguji bahwa nilai di sebelah kiri lebih besar dari nilai di sebelah kanan
  • <, operator "kurang dari", untuk menguji bahwa nilai di sebelah kiri kurang dari nilai di sebelah kanan
  • >=, "operator lebih besar dari atau sama dengan"
  • <=, "operator kurang dari atau sama dengan"
  • dan seterusnya…

Catatan

Seri pelatihan C# di Microsoft Learn mencurahkan seluruh modul untuk ekspresi Boolean. Ada banyak operator yang dapat Anda gunakan untuk membuat ekspresi Boolean, dan Anda hanya akan membahas beberapa dasar di sini dalam modul ini. Untuk informasi selengkapnya tentang ekspresi Boolean, lihat modul Microsoft Learn berjudul "Evaluasi ekspresi Boolean untuk membuat keputusan di C#".

Dalam contoh ini, Anda mengevaluasi ekspresi total > 14Boolean . Namun, Anda bisa memilih ekspresi total >= 15 Boolean karena dalam hal ini, ekspresi tersebut sama. Mengingat bahwa aturan untuk permainan menentukan "Jika jumlah dari tiga dadu, ditambah bonus apa pun, adalah 15 atau lebih besar, Anda memenangkan permainan", Anda mungkin harus mengimplementasikan >= 15 ekspresi. Anda akan membuat perubahan tersebut di langkah latihan berikutnya.

Apa yang dimaksud dengan blok kode?

Blok kode adalah koleksi dari satu atau lebih baris kode yang didefinisikan oleh simbol kurung kurawal buka dan tutup { }. Ini mewakili unit kode lengkap yang memiliki satu tujuan dalam sistem perangkat lunak Anda. Dalam kasus ini, pada runtime bahasa umum, semua baris kode dalam blok kode dijalankan jika ungkapan Boolean benar. Sebaliknya, jika ungkapan boolean false, semua baris kode dalam blok kode diabaikan.

Anda juga harus tahu bahwa blok kode dapat berisi blok kode lain. Bahkan, umum bagi satu blok kode untuk "bersarang" di dalam blok kode lain di aplikasi Anda. Anda akan mulai menumpuk blok kode Anda sendiri nanti dalam modul ini saat membuat satu if pernyataan di dalam blok kode yang lain.

Catatan

Seri pelatihan C# di Microsoft Learn mencurahkan seluruh modul untuk memahami blok kode. Blok kode sangat penting untuk memahami organisasi dan struktur kode, dan mereka menentukan batas-batas cakupan variabel. Lihat modul [Control variable scope and logic using code blocks in C#](TBD).

Tambahkan pernyataan if lain untuk mengimplementasikan bonus ganda

Selanjutnya, Anda dapat menerapkan aturan: "Jika ada dua dadu yang Anda gulung menghasilkan nilai yang sama, Anda mendapatkan dua poin bonus untuk ganda bergulir". Ubah kode dari langkah sebelumnya agar sesuai dengan daftar kode berikut:

  1. Di Editor Visual Studio Code, temukan kursor pada baris kode kosong di atas pernyataan pertama if .

  2. Untuk membuat fitur permainan "ganda", masukkan pernyataan berikut if .

    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3))
    {
        Console.WriteLine("You rolled doubles! +2 bonus to total!");
        total += 2;
    }
    
    

    Di sini Anda menggabungkan tiga ekspresi Boolean untuk membuat satu ekspresi Boolean komposit dalam satu baris kode. Ini terkadang disebut kondisi gabungan. Anda memiliki satu set tanda kurung luar yang menggabungkan tiga set tanda kurung dalam yang dipisahkan oleh dua karakter pipa.

    Karakter pipa ganda || adalah operator OR logis, yang pada dasarnya mengatakan "ekspresi di sebelah kiri saya ATAU ekspresi di sebelah kanan saya harus benar agar seluruh ungkapan Boolean benar". Jika kedua ekspresi Boolean salah, maka seluruh ekspresi Boolean salah. Anda menggunakan dua operator OR logis sehingga Anda dapat memperluas evaluasi ke ekspresi Boolean ketiga.

    Pertama, Anda mengevaluasi (roll1 == roll2). Jika itu benar, maka seluruh ekspresinya benar. Jika salah, Anda mengevaluasi (roll2 == roll3). Jika itu benar, maka seluruh ekspresinya benar. Jika salah, Anda mengevaluasi (roll1 == roll3). Jika itu benar, maka seluruh ekspresinya benar. Jika itu salah, maka seluruh ekspresi salah.

    Jika ekspresi Boolean komposit benar, maka Anda menjalankan blok kode berikut. Kali ini, ada dua baris kode. Baris kode pertama mencetak pesan ke pengguna. Baris kode kedua menambah nilai total sebesar 2.

  3. Untuk meningkatkan keterbacaan kode Anda, perbarui pernyataan kedua if sebagai berikut:

    if (total >= 15)
    

    Perhatikan bahwa Anda sekarang menggunakan >= operator dalam ekspresi yang digunakan untuk mengevaluasi gulungan kemenangan. Operator >= berarti "lebih besar atau sama dengan". Akibatnya, Anda dapat membandingkan dengan total nilai 15 daripada 14. Dengan perubahan ini, ekspresi yang Anda gunakan untuk mengevaluasi gulungan kemenangan sekarang menyerupai ekspresi yang Anda evaluasi untuk roll yang kalah. Ini akan membantu membuat kode Anda lebih mudah dipahami (lebih mudah dibaca). Karena Anda berurusan dengan nilai bilangan bulat, ekspresi (total >= 15) baru Anda akan berfungsi identik dengan apa yang Anda tulis sebelumnya (total > 14).

  4. Luangkan waktu semenit untuk meninjau kode Anda.

    Kode Anda harus 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 (total >= 15)
    {
        Console.WriteLine("You win!");
    }
    
    if (total < 15)
    {
        Console.WriteLine("Sorry, you lose.");
    }    
    

    Perhatikan penyelarasan yang ditingkatkan antara ekspresi yang digunakan untuk mengevaluasi gulungan menang dan kalah.

Tambahkan pernyataan if lain untuk mengimplementasikan bonus tiga kali lipat

Selanjutnya, Anda dapat menerapkan aturan: "Jika ketiga dadu yang Anda gulung menghasilkan nilai yang sama, Anda mendapatkan enam poin bonus untuk bergulir tiga kali lipat." Ubah kode dari langkah-langkah sebelumnya agar sesuai dengan daftar kode berikut:

  1. Di Editor Visual Studio Code, buat baris kode kosong di bawah blok kode pernyataan "ganda" if Anda.

  2. Untuk membuat fitur game "triples", masukkan pernyataan berikut if .

    if ((roll1 == roll2) && (roll2 == roll3)) 
    {
        Console.WriteLine("You rolled triples! +6 bonus to total!");
        total += 6;
    }
    
    

    Di sini Anda menggabungkan dua ekspresi Boolean untuk membuat satu ekspresi Boolean komposit dalam satu baris kode. Anda memiliki satu set tanda kurung luar yang menggabungkan dua set tanda kurung dalam yang dipisahkan oleh dua karakter ampersand.

    Karakter ampersan ganda && adalah operator AND logis, yang pada dasarnya mengatakan "hanya jika kedua ekspresi benar, maka seluruh ekspresi benar". Dalam kasus ini, jika roll1 sama dengan roll2, dan roll2 sama dengan roll3, maka dengan pengurangan, roll1 harus sama dengan roll3, dan pengguna melempar nilai kembar tiga.

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

  4. Luangkan waktu semenit untuk meninjau kode Anda.

    Pastikan kode 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.");
    }
    
    
  5. 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.

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

    Catatan

    Jika Anda melihat pesan yang mengatakan "Tidak dapat menemukan proyek untuk dijalankan", pastikan bahwa prompt perintah Terminal menampilkan lokasi folder TestProject yang diharapkan. Misalnya: C:\Users\someuser\Desktop\csharpprojects\TestProject>

    Anda akan melihat output yang menyerupan salah satu hasil berikut:

    Dice roll: 3 + 6 + 1 = 10
    Sorry, you lose.
    
    

    Atau, seperti ini:

    Dice roll: 1 + 4 + 4 = 9
    You rolled doubles! +2 bonus to total!
    Sorry, you lose.
    
    

    Atau, seperti ini:

    Dice roll: 5 + 6 + 4 = 15
    You win!
    
    

    Atau, jika Anda beruntung, Anda akan melihat ini:

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

    Tapi tunggu, haruskah Anda benar-benar memberi hadiah kepada pemain dengan bonus tiga kali lipat dan bonus ganda? Lagi pula, gulungan tiga kali lipat menyiratkan bahwa mereka juga menggulung ganda. Idealnya, bonus tidak boleh ditumpuk. Harus ada dua kondisi bonus terpisah. Ini adalah bug dalam logika yang perlu dikoreksi.

Masalah dalam logika dan peluang Anda untuk meningkatkan kode

Meskipun ini adalah awal yang baik, dan Anda telah belajar banyak tentang if pernyataan, ekspresi Boolean, blok kode, operator OR dan AND logis, dan sebagainya, ada banyak yang dapat ditingkatkan. Anda akan melakukannya di bagian berikutnya.

Rekap

  • Gunakan pernyataan if untuk mencabangkan logika kode Anda. Pernyataan keputusan if akan menjalankan kode dalam blok kodenya jika ungkapan Boolean-nya sama dengan true. Jika tidak, runtime bahasa umum akan melewati blok kode dan melanjutkan ke baris kode berikutnya setelah blok kode.
  • Ungkapan Boolean adalah ungkapan yang menampilkan nilai Boolean.
  • Operator Boolean akan membandingkan dua nilai di sebelah kiri dan kanannya untuk kesetaraan, perbandingan, dan lainnya.
  • Sebuah blok kode didefinisikan oleh kurung kurawal { }. Ini mengumpulkan baris kode yang harus diperlakukan sebagai satu kesatuan.
  • Operator AND logis && mengagregasi dua ekspresi sehingga kedua subekspresi harus benar agar seluruh ekspresi menjadi benar.
  • Operator OR logis || mengagregasi dua ekspresi sehingga jika salah satu subekspresi benar, seluruh ekspresi benar.

Uji pengetahuan Anda

1.

Apa yang dimaksud dengan blok kode?

2.

Apa itu pernyataan atau ekspresi Boolean?