Algoritma dan Pemrograman C#

Topik :

  • Conditional Situation
  • Perintah If – Else


 


 

Conditional Situation


 

Dalam proses bisnis sehari-hari terkadang suatu pekerjaan dilakukan jika suatu kondisi tertentu dipenuhi, jika tidak maka aktivitas lain akan dikerjakan.


 

Misalnya, saat seseorang makan di sebuah restoran yang menyelenggarakan promo tertentu, maka pada saat akan membayar pelayan akan mengajukan pertanyaan :

"Apakah anda akan membayar memakai kartu kredit X ? "

Jika jawabannya ya, maka pelayan akan menghitung harga seluruh makanan dikurangi discount 50% misalnya. Sedangkan jika jawabannya tidak, maka harga seluruh makanan tidak akan mendapatkan discount. Demikianlah aktivitas menghitung jumlah yang harus dibayar seorang pelanggan tergantung pertanyaan "Apakah pembayaran memakai kartu kredit X ?"


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 


 

Contoh yang lain adalah, jika seseorang akan membeli 10 lembar tiket bioskop, maka untuk menghitung jumlah uang yang harus dibayar beberapa pertanyaan berikut harus dijawab :

  • Apakah ia menonton film 3D ?
  • Jika ya :
    • Apakah ini adalah hari Sabtu/Minggu/Libur ?
    • Jika ya maka harga tiket per lembar adalah Rp 50.000,-
    • Jika tidak, apakah ini adalah hari Jumat ? Jika ya maka harga tiket per lembar adalah Rp.35.000,-
    • Jika tidak maka harga tiket per lembar adalah Rp. 25.000,-
  • Jika tidak :
    • Apakah ini adalah hari Sabtu/Minggu/Libur ?
    • Jika ya maka harga tiket per lembar adalah Rp 40.000,-
    • Jika tidak, apakah ini adalah hari Jumat ? Jika ya maka harga tiket per lembar adalah Rp. 25.000,-
    • Jika tidak maka harga tiket per lembar adalah Rp. 20.000,-


 

Perintah If - Else


 

Syntax :

if ( condition )

{

    statement ;

    statement ;

    …..

}

else

{

    statement ;

    statement ;

    …..

}


 

Condition pada syntax di atas diisi dengan pertanyaan kondisi (biasanya perbandingan) yang jawabannya hanya ada dua kemungkinan yaitu true (betul) atau false (salah).


 

Contoh pertanyaan kondisi adalah :

  • nilai > 50

    nilai adalah suatu variable/object bertype int

  • huruf == 'A'

    huruf adalah suatu variable/object bertype char

  • ipk <= 2.0

    ipk adalah suatu variable/object bertype Double


 

Sedangkan statement-statement yang ada di antara kurung kurawal buka dan tutup { } di bawah "if" menunjukkan perintah-perintah yang harus dikerjakan jika suatu kondisi bernilai benar (terpenuhi). Sebaliknya statement-statement yang ada di antara kurung kurawal buka dan tutup { } di bawah "else" menunjukkan perintah-perintah yang harus dikerjakan jika suatu kondisi bernilai salah ( tidak terpenuhi).


 

Operator-operator yang dapat dipakai dalam pertanyaan kondisi adalah :

  • < (apakah lebih kecil dari)
  • <= (apakah lebih kecil atau sama dengan)
  • > (apakah lebih besar dari)
  • >= (apakah lebih besar atau sama dengan)
  • == (apakah sama dengan),
  • != (apakah tidak sama dengan)


 

Note :

Berhati-hatilah dalam memakai tanda "=" dan tanda "==" (double =). Tanda "=" berarti nilai di sisi kanan tanda tersebut akan dimasukkan ke object di sisi kiri tanda. Sedangkan tanda "==" berarti suatu pertanyaan apakah object di sisi kiri memiliki nilai yang sama dengan object di sisi kanan. Biasanya tanda "==" hanya dipakai di bagian kondisi, misalnya pada perintah "if-else".


 

Contoh :

Depot wareg adalah depot yang berjualan nasi bungkus dengan berbagai macam jenis yang memiliki harga yang berbeda-beda. Pembeli yang membeli lebih dari 10 bungkus nasi dengan harga yang sama akan mendapatkan discount 30%. Buatlah program untuk mengisikan jumlah nasi bungkus dan harga untuk menghitung jumlah total yang harus dibayar seorang pembeli.


 


 


 

Langkah-langkah :


 

  1. Buatlah form seperti tampilan di atas.


 

  1. Pada event click dari button Proses tambahkan perintah berikut :

    

    int iJumlah, iHarga, iTotal;

    iJumlah = int.Parse(txtJumlah.Text);

    iHarga = int.Parse(txtHarga.Text);

    iTotal = iJumlah * iHarga;


 

    Penjelasan :

    Mula-mula sediakan 3 variable yaitu iJumlah, iHarga, dan iTotal untuk     menampung nilai jumlah, harga dan total bayar. iJumlah dan iHarga diisi dengan     konversi isi textbox ke integer. Kemudian lakukan perhitungan total bayar     normal tanpa discount.


 

    if (iJumlah > 10)

    {

        txtDisc.Text = "30%";

        iTotal = (int) (iTotal * 0.7);

    }

    else

    {

        txtDisc.Text = " 0%";

    }

    txtTotal.Text = iTotal.ToString( );


 

    Penjelasan :

    Kemudian periksa apakah pembelian lebih dari 10, jika ya, maka tampilkan     "30%" pada textbox discount dan hitung kembali total bayar menjadi 70% dari     total bayar normal (karena discount 30%). Perhatikan bahwa nilai 70% tidak     dapat dituliskan dengan 70% (karena tanda % sudah dipakai untuk sisa bagi),     maka tanda 70% ( 70 per 100 ) diganti dengan nilai yang setara yaitu 0.7.     Setelah semua perhitungan selesai, maka iTotal diubah menjadi string dan     ditampilkan di textbox Total.

    

    Kemudian perhatikan tanda (int) pada perintah ini :

            iTotal = (int) (iTotal * 0.7);

    Perintah di atas semula adalah seperti ini :

            iTotal = iTotal * 0.7;

    iTotal adalah suatu int, sedangkan 0.7 selalu dianggap sebagai Double, maka     hasil perkalian di sisi kanan akan disimpan sebagai Double. Masalah terjadi     karena hasil perkalian (Double) tersebut harus disimpan di iTotal (int). Oleh     karena itu, casting harus dilakukan agar Double dapat disimpan di object int.     Casting adalah cara untuk mengubah type data suatu nilai menjadi suatu type     data tertentu. Casting dilakukan dengan menempatkan suatu type data tujuan     dalam tanda kurung ( ) di depan nilai yang akan diubah type datanya.


 

Persoalan di atas dapat diselesaikan dengan pemeriksaan satu kondisi saja dan satu kali pemanggilan perintah if saja. Sebenarnya dalam sebuah perintah if dapat dibuat lebih dari satu kondisi. Misalnya jika soal di atas dimodifikasi menjadi discount 30% diberikan jika pembelian lebih dari 10 tetapi maximal 50 ( jadi jumlah yang dibeli harus lebih kecil atau sama dengan 50 ).

Maka perintah if pada solusi di atas harus diubah menjadi :


 

if ((iJumlah > 10) && (iJumlah <= 50))


 

Tanda && di atas adalah contoh operator logika yang menyatakan hubungan "dan", artinya kondisi yang dinyatakan di kiri dan kanan keduanya harus bernilai benar agar "if"dianggap benar.


 

Beberapa operator logika :

  • &&

    Sebutan : AND

    Contoh pemakaian :

    if ((iJumlah > 10) && (iJumlah <= 50))

    Keterangan :

    Dianggap benar jika kedua kondisi sama-sama bernilai benar.

  • ||

    Sebutan : OR

    Contoh pemakaian :

    if ((iJumlah > 100) || (iJumlah <= 50))

    Keterangan :

    Dianggap benar jika salah satu atau kedua kondisi ada yang bernilai     benar.

  • !

    Sebutan : NOT

    Contoh pemakaian :

    if (!(iJumlah > 100))

    Keterangan :

    Dianggap benar jika kondisi bernilai salah.


 

Latihan Soal C# VB

  1. User menginputkan sebuah bilangan. Jika tombol "Cek" di-klik, maka akan ditampilkan di sebuah objek label sebuah keterangan apakah angka tersebut merupakan bilangan genap atau ganjil.
  2. User menginputkan sebuah huruf (asumsi user menginput huruf kecil, bukan huruf capital). Jika tombol "Cek" di-klik maka akan muncul keterangan di sebuah objek label apakah huruf itu adalah huruf vocal atau bukan.
  3. Seseorang bisa menjadi asisten dosen jika dia sudah mencapai semester 5 dan IP nya minimum 2.75. Buatlah program yang menerima inputan dari user, yaitu semester saat ini dan jumlah IP nya. Jika tombol "Cek" ditekan, program akan memberitahukan apakah layak menjadi asisten dosen atau tidak.
  4. Terdapat ketentuan nilai berikut :

    0-40 = E

    41-50 = D

    51-65 = C

    66-70 = BC

    71-75 = B

    76-85 = AB

    86-100 = A

    Buatlah program untuk mengetahui kategori nilai dari nilai angka yang diinput oleh user.

  5. Terdapat klasifikasi predikat nilai berikut :

    A = Sangat memuaskan

    B = Memuaskan

    C = Baik

    D = Kurang

    E = Buruk

    Buatlah program untuk menampilkan predikat ke dalam sebuah objek label jika nilai nya diinput oleh user (nilai yang diinput menggunakan huruf besar saja).

  6. Pada awalnya, program memiliki tampilan seperti ini:


     

    User diharuskan mengisi ketiga textbox yang tersedia. Jika ketiga nya diisi dengan lengkap, lalu tombol "Simpan" di-klik, maka akan tampil seperti berikut :


     


     

    Di sebelah bawah muncul keterangan: "Data berhasil disimpan".


     

    Seandainya tadi ada textbox yang belum diisi, maka akan muncul peringatan untuk masing-masing textboxnya jika tombol "Simpan" di-klik


     

    Atau


     

    Atau


     


     

    Jika tombol "Hapus" di-klik, maka akan mengembalikan program menjadi seperti tampilan semula (tulisan di textbox menjadi bersih, dan keterangan-keterangan yang muncul menjadi hilang), dan posisi kursor berada di textbox NRP.


     

  7. properties "Backcolor" nya menjadi warna merah / "Red".


     


     

    Lalu buatlah 2 object label lagi, properties "Autosize" nya diubah menjadi "False", tapi properties "Backcolor" nya menjadi "Green". Dan tambahkan pula 2 buah object Button di bawahnya.


     


     

    Tujuan dari program ini adalah untuk membuat "animasi" sederhana. Jika tombol "Ke Kiri" di-click, maka warna merah akan berpindah ke kiri, kecual sudah mencapai label paling kiri (label1).

    Jika tombol "Ke Kanan" di-click, maka warna merah akan berpindah ke kanan, kecuali sudah mencapai label paling kanan (label3).


     

    Petunjuk:

        Untuk pewarnaan lewat program, maka source code nya seperti ini:

            label1.BackColor = Color.Green;

        atau

            label1.BackColor = Color.Red;

    Contoh:

  • Kondisi Awal :


     

  • Jika di-click tombol "Ke Kiri", maka warna merah sudah tidak bisa berpindah ke mana-mana lagi.
  • Jika di-click tombol "Ke Kanan", maka warna merah akan berpindah ke label2.


     

  •  


     


 

  • Jika label3 sudah bewarna merah, maka jika di-click tombol "Ke Kanan", tidak terjadi apa-apa. Tetapi jika di-click tombol "Ke Kiri", maka warna merah akan berpindah ke label2.


     

  • Jika tombol "Ke Kiri" di-click, maka warna merah akan berpindah ke label1.

 

Soal Latihan Analitik smansa rembang

1. Di suatu kampung terdapat sekian rumah.
Setiap rumah didiami satu keluarga. Setiap
keluarga terdiri dari tepat 2 orang tua (dewasa)
dan sejumlah anak-anak yang kebetulan
semuanya belum dewasa (apalagi menikah!).
Pada suatu sensus diketahui jumlah dewasa
lebih banyak dari jumlah anak laki-laki, jmlah
anak laki-laki lebih banyak dari jumlah anak
perempuan, dan jumlah anak perempuan lebih
banyak dari jumlah keluarga itu. Paling
sedikitnya (tidak bisa lebih sedikit lagi) ada
berapa orang-orang di kampung itu?
(A) 15 orang
(B) 100 orang
(C) 20 orang
(D) 50 orang
(E) 10 orang
2. Berapakah digit keempat dari kanan pada
bilangan 55231?
(A) 3
(B) 5
(C) 6
(D) 8
(E) 9
3. Biji-biji catur hendak ditempatkan pada papan
catur dengan syarat, tidak ada biji catur pada
baris (jalur horisontal) yang sama, tidak ada
biji catur pada kolom (jalur vertikal) yang
sama, dan tidak ada biji catur pada kedua
diagonalnya. Ukuran papan catur 8 baris 8
kolom. Berapa banyak biji catur yang bisa
ditempatkan?
(A) 6
(B) 7
(C) 8
(D) 9
(E) 10
4. Jika a dan b adalah bilangan bulat, dan a+b
adalah bilangan genap. Manakah berikut ini
yang pasti tidak mungkin menghasilkan
bilangan ganjil:
(A) 2*a+b
(B) a *a + b*b
(C) ab
(D) a * b
(E) aa * ab
5. Andi menaruh ke dalam 10 gelas 44 buah
kelereng. Gelas-gelas semula kosong. Ia ingin
membagikannya sedemikian rupa agar sebanyak
mungkin gelas-gelas berisikan kelereng dalam
jumlah yang berbeda satu sama lain (unik).
Berapa banyak gelas yang tidak unik itu
minimal?
(A) 0
(B) 1
(C) 2
(D) 3
(E) 4
6. Jika a dan b masing-masing adalah sebuah
angka antara 0 sampai dengan 9 (termasuk 9), a
dan b boleh sama, tentukan bilangan mana kah
yang tidak mungkin merupakan hasil dari
perkalian 5a3b x 63:
(A) 355134
(B) 323316
(C) 374157
(D) 316890
(E) 348831
7. Bila z bilangan bulat positif terkecil yang
memberikan sisa 5 jika dibagi dengan 13 dan
memberikan sisa 3 jika dibagi dengan 18, berapa
sisanya jika dibagi dengan 7 ?
(A) 8
(B) 5
(C) 11
(D) 3
(E) 1
8. Seorang pedagang barang elektronik menjual
sebuah televisi berwarna layar datar seharga Rp.
3.000.000, jika tarif pajak barang elektronik yang
tergolong barang mewah tersebut adalah antara
5 % sampai 8 %, maka harga yang paling
mungkin untuk televisi tersebut setelah
ditambah pajak adalah :
(A) Rp. 3.180.000
(B) Rp. 3.100.000
(C) Rp. 3.120.000
(D) Rp. 3.140.000
(E) Rp. 3.250.000
Soal Bidang Informatika Halaman 2 OSP 2007 - TOKI XIV 2008
9. Suatu bilangan pecahan, bila pembilangnya
dikali dua dan penyebutnya dibagi dua maka
nilai bilangan itu akan :
(A) sama dengan nilai awal dari pecahan itu
(B) mempunya nilai dua kali lipat dari nilai
awal
(C) mempunyai nilai setengah dari nilai awal
(D) mempunyai nilai seperempat dari nilai
awal
(E) mempunya nilai empat kali dari nilai awal
10. Jika x2 + 2xy + y2 = 9 maka (x + y)4 adalah :
(A) 3
(B) 18
(C) 27
(D) 36
(E) 81