Jumat, 05 Juni 2020

, ,

Kondisi pada C#

Kondisi pada C#

Pada bagian ini Saya akan menunjukkan cara menggunakan kondisi pada C#. Terdapat dua perintah kondisi pada C#, yaitu if dan switch. If lebih sering digunakan. Sebelumnya, Saya akan memperkenalkan operator pembanding / relasi dan operator logika yaitu jenis operator yang paling sering digunakan dengan if:

Operator relasi pada C#

Operator Deskripsi Contoh
== Sama dengan pass == "password"
!= Tidak sama dengan status != "aktif"
> Lebih besar dari umur > 30
>= Lebih besar atau sama dengan umur >= 30
< Kurang dari total < 20
<= Kurang atau sama dengan total <= 30
is Uji tipe data oNilai is Double

Operator logika pada C#

Operator Deskripsi Contoh
&& Kondisi AND IsValid && Authorized
|| Kondisi OR pembelian < 100 || pembelian >= 500
! NOT !angka

Sifat operator logika

a b && ||
True True True True
True False False True
False True False True
False False False False

Operator && akan menghasilkan true jika kedua kondisi bernilai benar. Jika salah satu atau kedua kondisi bernilai salah, operator && akan bernilai salah. Operator || akan menghasilkan true jika salah satu atau kedua sisi bernilai benar. Akan bernilai salah apabila kedua kondisi bernilai salah.

If else pada C#

Terdapat beberapa cara untuk menggunakan kondisi if else. Salah satunya adalah if else satu baris yang telah ditunjukkan pada bagian tipe data. Secara umum, struktur if else adalah sebagai berikut:


if (kondisi1) {
  //Perintah ketika kondisi 1 terpenuhi
} else if (kondisi2) {
  //Perintah ketika kondisi 2 terpenuhi
} else if (kondisi3) {
  //Perintah ketika kondisi 3 terpenuhi
} else {
  //Ketika semua kondisi lain tak terpenuhi, lakukan ini
}

Kondisi-kondisi di atas adalah variabel atau pernyataan boolean. Dan blok else if dan else bersifat opsional.

Contoh IF sederhana pada C#

Sebagai contoh kita akan buat sebuah program console, dengan menggunakan 4 buah input seperti dibawah ini:

Condition - 1

static void Main(string[] args) 
{
	Console.Write("Username : ");
	var userName = Console.ReadLine();
	Console.Write("Password : ");
	var password = Console.ReadLine();
	Console.Write("Konfirmasi Password : ");
	var confPassword = Console.ReadLine();
	Console.Write("Umur : ");
	var Umur = Console.ReadLine();

	Console.ReadLine();
}

Kemudian kita akan cek apakah input untuk username kosong. Jika username kosong, kita meminta user untuk menginput username.


if (userName.Trim() == string.Empty) //cek input kosong atau hanya spasi
{
	Console.WriteLine("Harap isi username");
}

Terdapat beberapa hal baru pada kode di atas:

  • Double slash (garis miring ganda) menyatakan bahwa semua teks di sebelah kanan double slash adalah komentar dan tidak akan dikompilasi.

  • Setiap string memiliki method .Trim() yang membuang semua spasi di awal dan akhir string.

  • string.Empty adalah sinonim dari "" yang merupakan string kosong.

Coba jalankan program dan lihat hasilnya.

Contoh if else pada C#

Berikutnya, coba tambahkan blok else if dan else ke dalam kode:


if (userName.Trim() == string.Empty) //cek input kosong atau hanya spasi
{
	Console.WriteLine("Harap isi username");
}
else if (userName.Length < 5 || userName.Length > 25)
{
	Console.WriteLine("Panjang username harus di antara 5 dan 25 karakter");
}
else if (userName.ToLower() == "fandi")
{
	Console.WriteLine("Username sudah terpakai");
}
else
{
	/* Kode untuk menyimpan data pendaftaran
	* Akan dijelaskan pada saat belajar database
	* Untuk saat ini kita akan membohongi user
	* Dengan mengatakan "Pendaftaran berhasil"
	*/
	Console.WriteLine("Pendaftaran berhasil");
}

Terdapat beberapa hal baru lagi di atas:

  • Setiap string memiliki property .Length yang memberikan jumlah karakter di dalam suatu string.

  • Setiap string memiliki property .ToLower() yang mengkonversi semua huruf di dalam strim menjadi huruf kecil.

  • Semua yang di dalam /* dan */ pada C# adalah komentar multibaris dan tidak akan dikompilasi.

Coba kompilasi dan jalankan program (tekan F5) dan ketikkan beberapa teks ke dalam username. Cobalah nama-nama berikut:

  • agus, program akan menampilkan: Panjang username harus di antara 5 dan 25 karakter.

  • fandi, program akan menampilkan: Username sudah terpakai

  • kennedy, program akan menampilkan: Pendaftaran berhasil

Kesalahan umum pada if else

Salah satu kesalahan umum pada seseorang yang baru mempelajari pemrograman adalah salah meletakkan kode. Sebagai contoh, seorang dapat dengan mudah terjebak membuat kode seperti berikut:


if (userName.Trim() == string.Empty) //cek input kosong atau hanya spasi
{
	Console.WriteLine("Harap isi username");
}
else if (userName.Length < 5 || userName.Length > 25)
{
	Console.WriteLine("Panjang username harus di antara 5 dan 25 karakter");
}
else if (userName.ToLower() == "fandi")
{
	Console.WriteLine("Username sudah terpakai");
}

Console.WriteLine("Pendaftaran berhasil");

Perhatikan bahwa kode untuk menyimpan data ("Pendaftaran berhasil") berada di luar blok if, yang berarti bahwa username apapun akan selalu disimpan, tidak peduli ada peringatan atau tidak. Hanya pernyataan di dalam blok if yang dieksekusi dengan kondisi. Di luar blok if, pernyataan akan selalu dieksekusi.

If else bersarang pada C#

Setelah berhasil menjalankan kode di atas, coba tambahkan validasi password ke dalam blok kode else seperti ditunjukkan di bawah. Perhatikan bahwa telah ditambahkan konfirmasi dan juga Message "Pendaftaran berhasil" telah dipindahkan ke dalam blok else milik validasi password:


if (userName.Trim() == string.Empty) //cek input kosong atau hanya spasi
{
	Console.WriteLine("Harap isi username");
}
else if (userName.Length < 5 || userName.Length > 25)
{
	Console.WriteLine("Panjang username harus di antara 5 dan 25 karakter");
}
else if (userName.ToLower() == "fandi")
{
	Console.WriteLine("Username sudah terpakai");
}
else
{
	if (password.Trim() == "")
	{
		Console.WriteLine("Harap isi password");
	}
	else if (password.Length < 6)
	{
		Console.WriteLine("Password paling tidak harus 6 karakter");
	}
	else if (password != confPassword)
	{
		Console.WriteLine("Konfirmasi password tidak sesuai");
	}
	else
	{
		/* Kode untuk menyimpan data pendaftaran
		* Akan dijelaskan pada saat belajar database
		* Untuk saat ini kita akan membohongi user
		* Dengan mengatakan "Pendaftaran berhasil"
		*/
		Console.WriteLine("Pendaftaran berhasil");
	}
}

Coba jalankan kode dengan berbagai kondisi. Password if di dalam blok else ditujukan untuk demonstrasi if bersarang. Meskipun hal ini dapat dilakukan, akan lebih baik untuk menghindari if bersarang karena if bersarang dapat dengan mudah membingungkan kita.

Alternatif if bersarang

Sekrang coba blok semua code (CTRL + A) kemudian tekan CTRL + K, C untuk mengubah semua code tersebut menjadi komentar dan ketikan code baru seperti dibawah ini: (untuk menghapus komentar, pilih / blok code yang berisi komentar kemudian tekan CTRL + K. U):


//if (userName.Trim() == string.Empty) //cek input kosong atau hanya spasi
//{
//    Console.WriteLine("Harap isi username");
//}
//else if (userName.Length < 5 || userName.Length > 25)
//{
//    Console.WriteLine("Panjang username harus di antara 5 dan 25 karakter");
//}
//else if (userName.ToLower() == "fandi")
//{
//    Console.WriteLine("Username sudah terpakai");
//}
//else
//{
//    if (password.Trim() == "")
//    {
//        Console.WriteLine("Harap isi password");
//    }
//    else if (password.Length < 6)
//    {
//        Console.WriteLine("Password paling tidak harus 6 karakter");
//    }
//    else if (password != confPassword)
//    {
//        Console.WriteLine("Konfirmasi password tidak sesuai");
//    }
//    else
//    {
//        /* Kode untuk menyimpan data pendaftaran
//          * Akan dijelaskan pada saat belajar database
//          * Untuk saat ini kita akan membohongi user
//          * Dengan mengatakan "Pendaftaran berhasil"
//          */
//        Console.WriteLine("Pendaftaran berhasil");
//    }
//}

//Validasi username
if (userName.Trim() == "") { Console.WriteLine("Harap isi username"); return; }
if (userName.Length < 5 || userName.Length > 25) { Console.WriteLine("Panjang username harus di antara 5 dan 25 karakter"); return; }
if (userName.ToLower() == "fandi") { Console.WriteLine("Username sudah terpakai"); return; }

//Validasi password
if (password.Trim() == "") { Console.WriteLine("Harap isi password"); return; }
if (password.Length < 6) { Console.WriteLine("Password paling tidak harus 6 karakter"); return; }
if (password != confPassword) { Console.WriteLine("Konfirmasi password tidak sesuai"); return; }

//Validasi umur
int validatedUmur;
bool umurBenar = Int32.TryParse(Umur, out validatedUmur);
if (!umurBenar) { Console.WriteLine("Harap input umur yang benar"); return; }

//Registrasi
string tipeRegistrasi;
if (validatedUmur < 18) tipeRegistrasi = "Anak anak"; else tipeRegistrasi = "Dewasa";
Console.WriteLine("Pendaftaran " + tipeRegistrasi + " berhasil");

Saya memperkenalkan perintah return pada kode di atas. Perintah return akan mengakhiri eksekusi suatu fungsi, sehingga semua baris setelah perintah return tidak akan dijalankan. Menurut pendapat saya, kode di atas jauh lebih rapi dibandingkan kode if bersarang

Perhatikan juga bahwa pada bagian registrasi, terdapat perintah if satu baris. Pada perintah if else sederhana, lebih baik menggunakan bentuk ini agar dapat lebih mudah membaca dan memahami kode kita sendiri. Jika kita menggunakan if berbentuk blok-blok seperti sebelumnya, kodenya akan tampak seperti:


if (umur < 18) {
  tipeRegistrasi = "Anak anak";
} else {
  tipeRegistrasi = "Dewasa";
}

If berbentuk blok memakan 5 baris kode, sedangkan if satu baris hanya menggunakan satu baris.

Operator ternary pada C#

Ada yang lebih baik lagi. Pada pengisian variabel yang berkondisi, kita dapat menggunakan operator ternary untuk membuat kode kita lebih pendek lagi:


tipeRegistrasi = (umur < 18) ? "Anak anak" : "Dewasa";

Format ternary operator adalah: (kondisi) ? [nilai jika benar] : [nilai jika salah];

Perintah switch pada C#

Perintah switch adalah salah satu struktur kode yang pernah saya gunakan. Hampir selalu, struktur if dapat menggantikan struktur switch. Bentuk perintah switch pada C# adalah:


switch (variabelUji) {
  case [literal 1]:
    //Blok kode 1
    break;
  case [literal 2]:
    //Blok kode 2
    break;
  case [literal 3]:
    //Blok kode 3
    break;
  default:
    //Jika yang lain tidak terpenuhi
    break;
}

Sebagai contoh, buatlah suatu aplikasi console bernama cobaSwitch dan ketikkan kode berikut:


class Program {
  static void Main(string[] args) {
    Console.WriteLine("1. Utara");
    Console.WriteLine("2. Timur");
    Console.WriteLine("3. Barat");
    Console.WriteLine("4. Selatan");
    Console.WriteLine("Ke mana anda akan pergi?");
    string strInput = Console.ReadLine();
 
    int arah;
    bool berupaAngka = Int32.TryParse(strInput, out arah);
    if (!berupaAngka) {
      Console.WriteLine("Input tidak benar");
    } else {
      switch (arah) {
        case 1: Console.WriteLine("Tampak sebuah danau"); break;
        case 2: Console.WriteLine("Tampak sebuah hutan"); break;
        case 3: Console.WriteLine("Tampak sebuah padang rumput"); break;
        case 4: Console.WriteLine("Tampak sebuah gurun"); break;
        default: Console.WriteLine("Arah tidak benar"); break;
      }
    }
    Console.ReadKey();
  }
}

untuk file projectnya kalian bisa download disini

Sekian artikel untuk Kondisi pada C# kali ini, semoga bermanfaat 😀.

0 komentar:

Posting Komentar