Latihan - Membuat logika keputusan dengan pernyataan if
- 19 menit
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 metode Random.Next() untuk mensimulasikan mengocok tiga dadu enam sisi. Anda akan mengevaluasi nilai yang digulung untuk menghitung skor. Jika skor lebih besar dari jumlah yang ditentukan, Anda akan menampilkan pesan kemenangan kepada pengguna. Jika skor di bawah batas, Anda akan menampilkan pesan kekalahan kepada pengguna.
- Jika dua dadu yang Anda lempar menghasilkan nilai yang sama, Anda mendapatkan dua poin bonus karena melempar dadu kembar.
- Jika ketiga dadu yang Anda lempar menghasilkan nilai yang sama, Anda mendapatkan enam poin bonus karena melempar tripel.
- 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 System.Random kelas secara ekstensif. Anda dapat merujuk ke modul Microsoft Learn berjudul "Memanggil Metode dari Pustaka Kelas .NET menggunakan C#" jika Anda memerlukan penyegaran tentang bagaimana Random.Next() berfungsi.
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.
Buka Visual Studio Code.
Anda dapat menggunakan Windows menu Mulai (atau sumber daya yang setara untuk OS lain) untuk membuka Visual Studio Code.
Pada menu File Visual Studio Code, pilih Buka Folder.
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.
Dalam dialog Buka Folder, pilih Pilih Folder.
Jika Anda melihat dialog keamanan yang menanyakan apakah Anda mempercayai penulis, pilih Ya.
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.
Pada prompt perintah Terminal, untuk membuat aplikasi konsol baru di folder tertentu, masukkan perintah berikut:
dotnet new console -o ./CsharpProjects/TestProjectPerintah .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.Jika pesan ditampilkan memberi tahu Anda bahwa file sudah ada, lanjutkan dengan langkah berikutnya. Anda akan menggunakan kembali file proyek yang ada.
Dalam tampilan 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.
Pada menu File Visual Studio Code, pilih Buka Folder.
Dalam dialog Buka Folder , pilih folder CsharpProjects , lalu pilih Pilih Folder.
Dalam tampilan EXPLORER, perluas folder TestProject, lalu pilih Program.cs.
Hapus baris kode yang ada.
Anda akan menggunakan proyek konsol C# ini untuk membuat, membangun, dan menjalankan sampel kode selama modul ini.
Panel Terminal tutup.
Menulis kode yang menghasilkan tiga angka acak dan menampilkannya dalam output
Pastikan Anda memiliki file Program.cs kosong yang terbuka di Visual Studio Code.
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}");Luangkan waktu semenit untuk meninjau kode yang Anda masukkan.
Untuk memulai, Anda membuat instans
System.Randombaru kelas dan menyimpan referensi ke objek dalam variabel bernamadice. Kemudian, Anda memanggil metodeRandom.Next()pada objekdicetiga kali, menyediakan batas bawah dan batas atas untuk membatasi nilai yang mungkin antara1dan6(batas atas eksklusif). Anda menyimpan tiga angka acak dalam variabelroll1, ,roll2danroll3, 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 = 11Tugas 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
Di Editor Visual Studio Code, temukan kursor di bagian bawah file kode Anda, lalu buat baris kode kosong.
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
ifpernyataan ini digunakan untuk menangani skenario menang dan kalah. Luangkan waktu satu menit untuk memeriksa pernyataan pertamaif.Perhatikan bahwa
ifpernyataan tersebut terdiri dari tiga bagian:- Kata kunci
if -
Ungkapan Boolean di antara tanda kurung
() -
Blok kode yang dibatasi oleh kurung kurawal
{ }
Saat dijalankan, ungkapan Boolean
total > 14dievaluasi. Jika ini adalah pernyataan yang benar (jika nilainya lebih besar daritotal14) maka alur eksekusi akan berlanjut ke dalam kode yang ditentukan dalam blok kode. Dengan kata lain, program akan menjalankan kode di dalam kurung kurawal.Namun, jika ekspresi Boolean salah (nilai tidak lebih besar dari
total14) maka alur eksekusi akan melewati blok kode. Dengan kata lain, perintah ini tidak akan menjalankan kode dalam kurung kurawal.Terakhir, pernyataan
ifkedua mengontrol pesan jika pengguna kalah. Di unit berikutnya, Anda akan menggunakan variasi padaifpernyataan untuk mempersingkat kedua pernyataan ini menjadi satu pernyataan yang lebih jelas mengekspresikan niat.- Kata kunci
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 menyediakan seluruh modul tentang pernyataan 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 Boolean total > 14. 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, Anda memenangkan permainan", Anda mungkin harus mengimplementasikan >= 15 pernyataan. 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 saat runtime, 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 menyusun blok kode Anda sendiri nanti dalam modul ini ketika Anda membuat satu pernyataan if di dalam blok kode yang lain.
Catatan
Seri pelatihan C# di Microsoft Learn menyediakan modul lengkap untuk memahami blok kode. Blok kode sangat penting untuk memahami organisasi dan struktur kode, dan mereka menentukan batas-batas cakupan variabel. Untuk informasi selengkapnya tentang blok kode, lihat modul berjudul "Mengontrol cakupan variabel dan logika menggunakan blok kode di C#".
Tambahkan pernyataan if lain untuk mengimplementasikan bonus ganda
Selanjutnya, Anda dapat menerapkan aturan: "Jika dua dadu yang Anda gulirkan menunjukkan nilai yang sama, Anda mendapatkan dua poin bonus untuk mendapatkan angka ganda". Ubah kode dari langkah sebelumnya agar sesuai dengan daftar kode berikut:
Di Editor Visual Studio Code, temukan kursor pada baris kode kosong di atas pernyataan pertama
if.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 menyatakan bahwa "pernyataan di sebelah kiri saya ATAU pernyataan di sebelah kanan saya harus benar agar seluruh ekspresi 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 pernyataan itu adalah salah, maka Anda mengevaluasi(roll2 == roll3). Jika itu benar, maka seluruh ekspresinya benar. Jika pernyataan itu adalah salah, maka 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
totalsebesar2.Untuk meningkatkan keterbacaan kode Anda, perbarui pernyataan kedua
ifsebagai berikut:if (total >= 15)Perhatikan bahwa Anda sekarang menggunakan operator
>=dalam ekspresi yang digunakan untuk mengevaluasi hasil lemparan yang menang. Operator>=berarti "lebih besar atau sama dengan". Akibatnya, Anda dapat membandingkantotaldengan nilai15bukan dengan14. Dengan perubahan ini, ekspresi yang Anda gunakan untuk mengevaluasi lemparan kemenangan sekarang menyerupai ekspresi yang Anda evaluasi untuk lemparan kekalahan. 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).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 peningkatan penyelarasan antara ungkapan 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:
Di Editor Visual Studio Code, buat baris kode kosong di bawah blok kode pernyataan "doubles"
ifAnda.Untuk membuat fitur permainan "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, jikaroll1sama denganroll2, danroll2sama denganroll3, maka dengan deduksi,roll1harus sama denganroll3, dan pengguna menghasilkan tripel.Pada menu File Visual Studio Code, klik Simpan.
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."); }Dalam tampilan 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.
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 harus melihat output yang menyerupai 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 tripel menyiratkan bahwa mereka juga menghasilkan ganda. Idealnya, bonus tidak seharusnya 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 unit berikutnya.
Ringkasan
- Gunakan pernyataan
ifuntuk mencabangkan logika kode Anda. Pernyataan keputusanifakan menjalankan kode dalam blok kodenya jika ungkapan Boolean-nya sama dengan true. Jika tidak, runtime akan melewati blok kode dan melanjutkan ke baris kode berikutnya setelah blok tersebut. - 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.