0% menganggap dokumen ini bermanfaat (0 suara)
156 tayangan84 halaman

Modul Praktikum PBO PDF

Modul ini membahas pembuatan dan penggunaan tipe data dalam bahasa pemrograman C#. Terdapat dua latihan yaitu membuat tipe enum untuk mengkategorikan tipe rekening bank dan menggunakan tipe enum tersebut dalam struct. Modul ini juga menjelaskan syarat yang harus dipenuhi sebelum mengerjakan latihan yaitu memahami sistem tipe data dan tipe variabel dalam C#.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
156 tayangan84 halaman

Modul Praktikum PBO PDF

Modul ini membahas pembuatan dan penggunaan tipe data dalam bahasa pemrograman C#. Terdapat dua latihan yaitu membuat tipe enum untuk mengkategorikan tipe rekening bank dan menggunakan tipe enum tersebut dalam struct. Modul ini juga menjelaskan syarat yang harus dipenuhi sebelum mengerjakan latihan yaitu memahami sistem tipe data dan tipe variabel dalam C#.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 84

Modul ini berisi 7 modul tatap-muka

pengenalan
konsep
pemograman
beroreintasi Objek menggunakan bahasa
pemograman C#.

Modul
Praktikum
PBO
Pemograman Beroreintasi
Objek

Ridi Ferdiana

MODUL 1: PENGENALAN PROGRAM C# SEDERHANA


Materi
Setelah menyelesaikan latihan ini, Anda akan mampu untuk

Membuat sebuah program C#.


Meng-compile dan menjalankan sebuah program C#.
Menggunakan Visual Studio Debugger.
Menambahkan exception handling ke program C#.

Waktu : 60 menit

LATIHAN 1 : MEMBUAT PROGRAM C# SEDERHANA


Pada latihan ini, Anda akan menggunakan Visual Studio untuk menulis program C#.
Program tersebut akan meminta nama Anda dan akan menyapa Anda
.
Untuk membuat aplikasi konsol C# baru
1. Buka Microsoft Visual C# 2010 Express
2. Pada menu File, Arahkan cursor ke New, dan klik Project.

3. Klik Visual C# Projects pada kotak Project Types.


4. Klik Console Application pada kotak Templates.
5. Ketikkan Sambutan pada kotak Name box dan tekan OK.

6. Anda akan masuk ke editorial program, untuk menyimpan tekan menu File dan
pilih Save All

Maka akan muncul jendela seperti berikut

7. Simpan project dengan menekan Save.

Untuk menulis kalimat yang memandu dan menyapa user


1. Pada method Main, setelah komentar TODO:, masukan baris berikut :
string NamaKu;
2. Tulis kalimat yang memandu ke nama user.
3. tulis kalmat lain yang membaca respon user dari keyboard dan
memasukkannya ke string NamaKu.
4. tambahkan satu atau lebih kalimat yang mencetak Assalamualaikum NamaKu
ke layar (dimana NamaKu adalah nama yang user ketikkan).
5. Ketika telah selesai, method Main akan seperti berikut:

static void Main(string[] args)


{
string NamaKu;
Console.WriteLine("Masukan namamu:");
NamaKu= Console.ReadLine();
Console.WriteLine("Assalamualailkum {0}", NamaKu);
Console.ReadLine();
}

6. Simpan project tersebut.


Berikut ini capture dari hasil proses eksekusi program:

LATIHAN 2 : MELAKUKAN PROSES COMPILE DAN MENJALANKAN PROGRAM C# DARI


COMMAND LINE
Pada latihan kali ini, Anda akan melakukan compile dan menjalankan program dari
command line
Untuk meng-compile dan menjalankan aplikasi dari command line
1. Mulai dengan membuka Start Window , arahkan ke All Programs, kemudian
klik Visual Studio .NET, kemudian klik Visual Studio .NET Tools, dan kemudian
Visual Studio .NET Command Prompt.
2. Masuk ke ke folder tempat Anda menyimpan hasil project sebelumnya
3. Lakukan compile dengan menggunakan command berikut:
csc /out:Greet.exe Class1.cs

4. Jalankan program dengan memasukkan :


Greet

5. Tutup jendela command

LATIHAN 3 : MENGGUNAKAN DEBUGGER


Pada latihan kali ini, Anda akan menggunakan Visual Studio Debugger untuk melakukan
eksekusi perlangkah sekaligus untuk memeriksa nilai dari variabel.
Untuk mengatur breakpoint dan mulai debugging dengan menggunakan Visual
Studio
1. Buka Visual Studio .NET jika belum dijalankan.
2. Pada menu File, arahkan ke Open, kemudian klik Project.
3. Buka projek Sambutan.sln di folder tempat Anda menyimpan project tersebut.
4. Klik pada bagian margin paling kiri pada bagian Console.WriteLine pada class
Salam, maka akan muncul breakpoint (tanda merah bulat) pada sisi margin.

5. Pada menu Debug, klik Start (atau tekan F5).


Maka program akan mulai berjalan dengan muncul jendela konsol. Program
kemudian akan berhenti pada breakpoint.

Untuk melihat nilai dari variabel


1. Pada menu Debug, arahkan Windows lalu arahkan ke Watch, kemudian klik
Watch 1.

2. Pada jendela Watch, tambahkan variabel NamaKu ke daftar variabel yang


diawasi.
3. Variabel Namaku akan muncul di jendela Watch dengan nilai null.

Untuk melakukan eksekusi per langkah pada code


1. Pada menu Debug, klik Step Over (atau tekan F10) untuk menjalankan kalimat
pertama Console.WriteLine.
2. Eksekusi lagi baris berikutnya dengan menekan F10.

3. Kembali ke jendela konsol dan ketikkan nama Anda, kemudian tekan tombol
RETURN. Kembali ke Visual Studio. Nilai dari Namaku pada jendela Watch
akan diisi nama Anda.

4. Eksekusi baris berikutnya yang berisi kalimat Console.WriteLine dengan


menekan F10
5. Alihkan jendela konsol ke bawah. Maka sambutan tersebut akan muncul.
6. Kembali ke Visual Studio. Pada menu Debug, klik Continue (atau tekan F5)
untuk menjalankan program sampai akhir.

LATIHAN 4 : MENAMBAHKAN EXCEPTION HANDLING KE PROGRAM C#


Pada latihan kali ini, Anda akan menulis program yang menggunakan exception handling
(menangani eksepsi) untuk menangkap kesalahan yang tidak diharapkan yang terjadi
saat program berjalan. Program tersebut akan memandu user untuk memasukkan dua
nilai integer. Integer pertama akandibagi integer kedua dan menampilkan hasilnya.

Untuk membuat program C# baru


1. Buka Microsoft Visual C# 2010 Express
2. Pada menu File, Arahkan cursor ke New, dan klik Project.
3. Klik Visual C# Projects pada kotak Project Types.
4. Klik Console Application pada kotak Templates.
5. Ketikkan Pembagian pada kotak Name box dan tekan OK.
6. Anda akan masuk ke editorial program, untuk menyimpan tekan menu File
dan pilih Save All.
7. Pilih lokasi penyimpanan yang Anda inginkan
8. Simpan project dengan menekan Save
.
Untuk menulis kalimat yang memandu user untuk membuat dua integer
1. Pada method Main, tuliskan sintaks yang memandu user pada integer pertama.
2. Tulis sintaks lainnya yang membaca respon user dari keyboard dan mengacu
pada variabel yang bernama temp daengan tipe string.
3. Tambahkan sintaks untuk mengubah nilai string di temp menjadi integer dan
menyimpan hasilnya ke i seperti berikut:
int i = Int32.Parse(temp);
4. Tambahkan sintaks ke kode Anda untuk:
a. Memandu user untuk integer kedua.
b. Membaca response user dan memasukkan hasilnya ke temp.
c. Mengubah nilai temp ke integer dan menyimpannya di j.
Kode nya akan seperti berikut
Console.WriteLine("Masukkan nilai integer pertama");
string temp = Console.ReadLine();
int i = Int32.Parse(temp);
Console.WriteLine("Masukkan nilai integer kedua");
temp = Console.ReadLine();
int j = Int32.Parse(temp);
5. Simpan hasil kerja Anda.

Untuk membagi integer pertama dengan integer kedua dan menampilkan hasilnya
1. Tulislah kode untuk membuat variabel integer baru k yang memberikan nilai
hasil dari pembagian i oleh j, dan masukkan ke akhir dari prosedur
sebelumnya.
Kodenya akan seperti berikut :
int k = i / j;

2. Tambahkan sintaks yang menampilkan nilai dari k.


3. Simpan hasil kerja Anda.

Berikut tampilan di editor

Pengujian Program
1. Pada menu Debug klik Start Without Debugging (atau tekan CTRL+F5).
2. Ketikkan 10 untuk nilai variabel integer yang pertama dan tekan ENTER.
3. Ketikkan 5 untuk nilai variabel integer yang kedua dan tekan ENTER.
4. Periksa nilai yang ditampilkan oleh k adalah 2.

5.
6.
7.
8.

Jalankan program lagi dengan menekan CTRL+F5.


Ketikkan 10 untuk nilai variabel integer yang pertama dan tekan ENTER.
Ketikkan 0 untuk nilai variabel integer yang kedua dan tekan ENTER.
Program akan melemparkan eksepsi (pembagian oleh nol).

9. Klik silang untuk membersihkan dialog Just-In-Time Debugging.

Menambahkan exception handling ke program


1. Tempatkan kode di method Main di dalam blok try seperti berikut :
try
{
Console.WriteLine (...);

...
int k = i / j;
Console.WriteLine(...);
}
2. Tambahkan sintaks catch ke Main, setelah blok try. Kalimat catch nantinya kan
mencetak pesan singkat seperti yang dibawah ini :
catch(Exception e)
{
Console.WriteLine("An exception was thrown: {0}" , e);
}
...
3. Simpan hasil kerja Anda.
4. The completed Main method should look similar to the following:
static void Main(string[] args)
{
try
{
Console.WriteLine("Masukkan nilai integer pertama");
string temp = Console.ReadLine();
int i = Int32.Parse(temp);
Console.WriteLine("Masukkan nilai integer kedua");
temp = Console.ReadLine();
int j = Int32.Parse(temp);
int k = i / j;
Console.WriteLine("hasil pembagian {0} oleh {1} adalah {2}", i, j, k);
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("Eksepsi: {0}", e);
}
Console.ReadLine();
}

Untuk menguji kode exception-handling


1. Jalankan program lagi dengan menekan CTRL+F5.
2. Ketikkan 10 untuk nilai variabel integer yang pertama dan tekan ENTER.
3. Ketikkan 0 untuk nilai variabel integer yang kedua dan tekan ENTER.
Program akan tetap melemparkan exception (pembagian oleh nol), namun kali
ini kesalahan bisa ditangkap dan pesan Anda akan muncul.

PERTANYAAN PEMAHAMAN
1. Apakah fungsi static void main dalam sebuah program. Dapatkah sebuah
program tidak memiliki static void main, bila ada program apa yang tidak
menggunakannya?
2. Apakah

perbedaan

debug

dan

release

pada

saat

suatu

program

dijalankan?
3. Apakah makna finally dalam suatu program, apakah finnaly mutlak ada
dalam sebuah statement try catch, bila tidak kapan sebaiknya finnaly
digunakan?
4. Apa arti step in, step over, dan watch pada mekanisme debugging suatu
program C#?
5. Apa perbedaan antara Write dan WriteLine, dan apa makna fungsi Parse
pada latihan 4.

MODUL 2 : MEMBUAT DAN MENGGUNAKAN TIPE


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk

Membuat tipe data baru


Mendefinisikan dan menggunakan variabel

Syarat
Sebelum mengerjakan latihan ini, Anda harus paham tentang :
Sistem tipe secara umum
Tipe nilai variabel dalam C#.

Skenario
Pada latihan 1, Anda akan membuat program untuk membuat tipe enum sederhana,
kemudian mengatur dan mencetak nilai dengan menggunakan kalimat Console.WriteLine.
Pada latihan 2 Anda akan membuat program yang menggunakan tipe enum yang
dideklarasikan di latihan 1 dalam sebuah struct.
Jika waktu masih tersisa, Anda akan menambahkan fungsionalitas input/output ke program
yang Anda buat pada latihan 2.

File Starter dan Solution


Terdapat file starter dan solution yang akan digunakan dalam latihan ini. File tersebut
diletakkan di folder HOL atau mintalah pada asisten lab yang tengah bertugas.

Waktu : 35 menit

LATIHAN 1: MEMBUAT SEBUAH TIPE ENUM


Pada latihan kali ini, Anda akan membuat sebuah tipe enum untuk menggambarkan
perbedaan tipe pada bank accounts (checking dan savings). Anda akan membuat dua
variabel dengan menggunakan tipe enum, dan mengatur nilainya untuk Checking dan
Deposit. Kemudian nantinya Anda akan mencetak nilai dari variabel dengan menggunakan
fungsi System.Console.WriteLine.

Untuk membuat tipe enum


1. Buka project BankAccount.sln pada folder
HOL\MODUL2\STARTER\BankAccount.
2. Buka file Enum.cs file dan tambahkan sebuah enum yang disebut AccountType
sebelum pendefinisian class berikut:
public enum AccountType { Checking, Deposit }
tipe enum akan berisi tipe Checking dan Deposit.
3. Deklarasikan dua variabel dari tipe AccountType dalam Main seeprti berikut:
AccountType goldAccount;
AccountType platinumAccount;
4. Atur nilai dari variabel pertama untuk Checking dan nilai variabel lainnya untuk
Deposit seperti berikut:
goldAccount = AccountType.Checking;
platinumAccount = AccountType.Deposit;
5. tambahkan dua kalimat Console.WriteLine untuk menampilkan nilai dari setiap
variabel seperti berikut :
Console.WriteLine("The Customer Account Type is {0}",goldAccount);
Console.WriteLine("The Customer Account Type is {0}",platinumAccount);
6. Lakukan compile dan jalankan program.
Berikut ini adalah tampilan di bagian editorial.

Sedangkan hasil running programnya adalah sebagai berikut :

LATIHAN 2 :MEMBUAT DAN MENGGUNAKAN TIPE STRUCT


Pada latihan kali ini Anda akan mendefiniskan sebuah struct
yang biasanya untuk
menampilkan sebuah bank account. Anda akan menggunakan variabel untuk mengambil
account number (long), account balance (decimal), dab account type (enum yang sudah
Anda buat di latihan 1). Anda akan membuat sebuah variabel bertipe struct, dan
mengembangkan tipe struct tersebut dengan sejumlah data contoh dan menampilkan
hasilnya.
Untuk membuat sebuah tipe struct type
1. Buka project StructType.sln dalam folder
HOL\MODUL2\STARTER\StructType
2. Buka file Struct.cs dan tambahkan sebuah public struct yang disebut BankAccount
yang berisi berikut ini :
Tipe
public long
public decimal
public AccountType

variabel

accNo
accBal
accType

3. Deklarasikan sebuah variabel goldAccount dari tipe BankAccount dalam Main.


BankAccount goldAccount;
4. Atur accType, accBal, dan accNo dari variabel goldAccount.
goldAccount.accType = AccountType.Checking;
goldAccount.accBal = (decimal)3200.00;
goldAccount.accNo = 123;
5. Tambahkan kalimat Console.WriteLine untuk menampilkan nilai dari masing-masing
elemen dalam varibel struct.
Console.WriteLine("Acct Number {0}", goldAccount.accNo);
Console.WriteLine("Acct Type {0}", goldAccount.accType);
Console.WriteLine("Acct Balance ${0}",goldAccount.accBal);
6. Lakukan compile dan jalankan program.

Berikut ini adalah editorialnya dan hasil running program

LATIHAN3 : MENAMBAH FUNGSI INPUT/OUTPUT


Pada latihan kali ini Anda akan memodifikasi kode yang sudah dibuat dalam latihan 2.
Sebagai gantinya penggunaan account number 123, Anda akan memandu user untuk
memasukkan account number. Anda akan mempergunakan nomor tersebut untuk
menampilkan account summary.

Untuk menambah fungsi input/output


1. Buka project StructType.sln pada folder
HOL\MODUl2\STARTER\Optional.
2. Buka file Struct.cs dang anti baris-baris berikut:
goldAccount.accNo = 123; //remove this line and add code
below
dengan kalimat Console.Write untuk memandu user memasukkan account
number:
Console.Write("Enter account number: ");
3. Baca account number dengan menggunakan kalimat Console.ReadLine. masukkan
nilainya ke goldAccount.accNo .
goldAccount.accNo = long.Parse(Console.ReadLine());
Anda perlu menggunakan method long.Parse untuk mengubah pembacaan string
dengan kalimat Console.ReadLine ke nilai desimal sebelum memasukkannya ke
goldAccount.accNo.
4. Lakukan compile dan jalankan program. Masukkan sebuah account number ketika
diminta.

PERTANYAAN PEMAHAMAN
1. Sebut tiga manfaat enum dan tipe-tipe data apakah yang tidak didukung oleh
Enum?
2. Buat sebuah tabel perbandingan antara struct dan class, dan mana yang lebih
efisien antara scruct dan class.
3. Sebutkan keunggulan struct dibanding class dan kelemahan struct dibanding class.

MODUL 3 : MENGGUNAKAN KALIMAT PEMROGRAMAN


Materi
Setelah menyelesaikan latihan ini, Anda akan mampu untuk

Menggunakan kalimat pemrograman untuk mengatur alur eksekusi


Menggunakan kalimat pemrograman looping

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memamahi:
Membuat variabel dalam C#
Menggunakan operator yang umum dalam C#
Membuat tipe enum dalam C#

WAKTU : 30 menit

LATIHAN 1 : MENGUBAH HARI DALAM TAHUN MENJADI HARI DALAM BULAN


Pada latihan kali ini, Anda akan membuat sebuah program untuk membaca sebuah
integer jumlah hari (antara 1 sampai 365) dari konsol dan menyimpannya dalam
variabel integer. Program akan mengubah angka tersebut ke dalam bulan dan hari
dalam bulan dan kemudian menampilkan hasilnya ke konsol. Contohnya dengan
memasukkan 40 maka hasilnya yang ditampilkan adalah 9 Februari. (pada latihan kali ini
efek dari tahun-tahun sebelumnya diabaikan)

Untuk membaca jumlah hari dari konsol


1. Buka porject TanggalBerapa1.sln dalam folder . Class tanggalBerapa berisi
variabel tentang jumlah hari dalam setiap bulan yang disimpan dalam satu
kelompok.
2. Tambahkan kalimat pemrograman System.Console.Write ke tanggalBerapa.Main
yang menulis untuk memandu pertanyaan melalui konsol ke user untuk
memasukkan jumlah hari antara 1 sampai 365
3. Tambahkan kalimat ke Main yang mendeklarasikan sebuah variabel string
yang disebut baris dan inisialisasikan dengan pembacaan baris dari konsol
dengan method System.Console.ReadLine.
4. Tambahkan kalimat ke Main yang mendeklrasikan sebuah variabel int yang
disebut jmlHari dan menginisialisasikan dengan integer yang dikembalikan dari
method int.Parse.
Kode lengkapnya seperti berikut ini:
using System;
class TanggalBerapa
{
static void Main( )
{

Console.Write("Silakan masukkan angka jumlah hari antara 1 sampai


365: ");
string baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
//
// To do: Tambahkan kode disini
//
}
...
}
5. Simpan hasil kerja Anda
6. Lakukan proses compile program TanggalBerapa1.cs dan benahi kesalahan
yang ada. Jalankan program tersebut.
Berikut hasil capture running program

Untuk menghitung bulan dan hari dari jumlah hari


1. Tambahkan kalimat ke Main yang mendeklarasikan sebuah variabel int yang
disebut jmlBulan dan inisialisasikan dengan nilai nol.
2. Di sana terdapat komentar 10 kalimat pemrograman if (kalimat yang diawali
dengan // , masing-masing satu untuk setiap bulan dari Januari sampai
Oktober) telah disediakan untuk Anda. Ubah komentar kalimat if menjadi
kalimat pemorgraman dan tambahkan dua buah kalimat if yang serupa untuk
bulan November dan Desember ke Main.
Tips : Komentar ganda bisa dihapuskan (namun isinya tetap sama) dengan
memilih baris dan kemudian memilih Edit, Advanced, dan kemudian
Uncomment Selection.

3. Tambahkan sebuah label pengenal End ke Main setelah kalimat if terakhir.


4. Tambahkan sebuah kalimat setelah label End yang mendeklarasikan sebuah
variabel string yang belum diinisialisasikan yang disebut namaBulan.
5. Sebuah kalimat switch telah tersedia sebagian untuk Anda setelah label End.
Sepuluh kalimat komentar yang berlabel case untuk bulan Januari sampai
Oktober sudah tersedia. Ubah kalimat tersbut menjadi bukan sekedar
komentar dan tambahkan dua buah label case yang serupa dan tambahkan
isinya untuk bulan November dan Desember. Tambahkan kalimat ke label
default yang mengacu pada literal string
belum selesai ke variabel
namaBulan.

6. Setelah kalimat switch gunakan method WriteLine untuk mengeluarkan nilai


jmlHari dan namaBulan.
7. Program lengkapnya akan seperti dibawah.
8. Simpan hasil kerja Anda.

using System;
class TanggalBerapa
{
static void Main()
{
Console.Write("Silakan masukkan angka jumlah hari antara 1
sampai 365: ");
string baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
int jmlBulan= 0;
if (jmlHari <= 31) { // Januari
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 28) { // Februari
goto End;
} else {
jmlHari -= 28;
jmlBulan++;
}
if (jmlHari <= 31) { // Maret
goto End;

} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 30) { // April
goto End;
} else {
jmlHari -= 30;
jmlBulan++;
}
if (jmlHari <= 31) { // Mei
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}

if (jmlHari <= 30) { // Juni


goto End;
} else {
jmlHari -= 30;
jmlBulan++;
}
if (jmlHari <= 31) { // Juli
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 31) { // Agustus
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 30) { // September
goto End;
} else {
jmlHari -= 30;
jmlBulan++;
}
if (jmlHari <= 31) { // Oktober
goto End;
} else {
jmlHari -= 31;
jmlBulan++;
}
if (jmlHari <= 30)
{ // November
goto End;
}
else
{
jmlHari -= 30;
jmlBulan++;
}
if (jmlHari <= 31)
{ // Desember
goto End;
}
else
{
jmlHari -= 31;
jmlBulan++;
}
End:
string namaBulan;
switch (jmlBulan) {

case 0 :
namaBulan
case 1 :
namaBulan
case 2 :
namaBulan
case 3 :
namaBulan
case 4 :
namaBulan
case 5 :
namaBulan
case 6 :
namaBulan
case 7 :
namaBulan
case 8 :
namaBulan
case 9 :
namaBulan
case 10:
namaBulan
case 11:
namaBulan
default:
namaBulan

= "Januari"; break;
= "Februari"; break;
= "Maret"; break;
= "April"; break;
= "Mei"; break;
= "Juni"; break;
= "Juli"; break;
= "Agustus"; break;
= "September"; break;
= "Oktober"; break;
= "November"; break;
= "Desember"; break;
= "Tidak ada"; break;

}
Console.WriteLine("{0} {1}", jmlHari, namaBulan);
}

}
9. Lakukan proses compile program TanggalBerapa1.cs dan benahi kesalahan
yang ada. Jalankan program tersebut. Periksa apakah program bekerja baik
dengan menggunakan data berikut.
Jumlah Hari
32
60
91
186
304
309
327
359

Bulan dan Tanggal


1 Februari
1 Maret
1 April
5 Juli
31 Oktober
5 November
23 November
25 Desember

Untuk menghitung nama bulan dengan menggunakan sebuah enum


1. Sekarang Anda akan mengganti kalimat switch yang dibatasi oleh nama bulan
dari jumlah bulan dengan mekanisme yang lebih ringkas. Deklarasikan sebuah
tipe enum yang disebut namaBulan dan kembangkan dengan nama kedua
belas bulan, mulai dari Januari dan berakhir pada Desember
2. Ubah semua kalimat komentar switch menjadi bukan komentar.
3. Pada tempat kalimat switch, tambahkan kalimat yang mendeklarasikan sebuah
variabel enum namaBulan yang disebut temp. Inisialisasikan temp dari variabel
int jmlBulan .
Anda akan membutuhkan cast expression berikut :
(namaBulan)jmlBulan
4. Ganti semua inisialisasi dari namaBulan dengan ekpresi:
temp.ToString( )
5. Program lengkapnya akan seperti berikut :
using System;
enum namaBulan
{
Januari,
Februari,
Maret,
April,
Mei,
Juni,
Juli,
Agustus,
September,
Oktober,
November,
Desember
}
class TanggalBerapa
{
static void Main( )
{
Console.Write("Silakan masukkan angka jumlah hari antara 1 sampai
365: ");
string baris= Console.ReadLine( );
int jmlHari = int.Parse(baris);
int jmlBulan = 0;
// 12 kalimat if, seperti di atas
End:
namaBulan temp = (namaBulan)jmlBulan;

string namaBulan = temp.ToString( );


Console.WriteLine("{0} {1}", jmlHari, namaBulan);
}
...
}
6. Simpan hasil kerja Anda.
7. Lakukan proses compile program TanggalBerapa1.cs dan benahi kesalahan
yang ada. Jalankan program. Gunakan tabel data yang ada sebelumnya untuk
memeriksa ketepatan hasil kerja program.
Hasil nya akan sesuai dengan capture program sebelumnya.

Untuk mengganti 12 kalimat if dengan satu kalimat foreach.


1. Sekarang Anda akan mengganti 12 kalimat yang menghitung hari dan bulan
dengan satu kalimat foreach. Ubah komentar 12 kalimat if menjadi bukan
komentar if. Anda akan mengganti kalimat tersebut di langkah berikutnya.
2. Tulislah kalimat foreach yang akan berulang pada bagian HariDlmBulans yang
sudah ada. Untuk melakukan hal ini, tambahkan kalimat berikut:
foreach (int hariDlmBulan in HariDlmBulans) ...
3. Tambahkan kalimat blok sebagai bagian utama dari kalimat foreach. Isi dari
blok tersebut akan serupa dengan komentar kalimat if tunggal kecuali pada
variabel hariDlmBulan yang digunakan untuk menggantikan beberapa jenis
integer literal.
4. Berikan label End di atas komentar kalimat switch. Gantikan kalimat goto
pada kalimat foreach dengan kalimat break.
5. Program lengkapnya seperti berikut :
using System;
enum NamaBulan { ... }
class TanggalBerapa
{
static void Main( )
{
Console.Write("Silakan masukkan angka jumlah hari antara 1 sampai
365: ");
string baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
int jmlBulan = 0;
foreach (int hariDlmBulan in HariDlmBulans) {
if (jmlHari <= hariDlmBulan)
{
break;
}
else
{
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}
namaBulan temp = (namaBulan)jmlBulan;

string namaBulan = temp.ToString( );


Console.WriteLine("{0} {1}", jmlHari, namaBulan);
}
...
}
6. Simpan hasilkerja Anda.
7. Lakukan proses compile program TanggalBerapa1.cs dan benahi kesalahan
yang ada. Jalankan program. Gunakan tabel data yang ada sebelumnya untuk
memeriksa ketepatan hasil kerja program.
8. Jalankan program, masukkan jumlah hari kurang dari 1 dan lebih dari 365,
untuk melihat tanggapannya.
Berikut contoh hasil capture gambar running program saat dimasukkan nilai
kurang dari 1 dan lebih dari 365

MODUL 3: MENGGUNAKAN EXCEPTION


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk

Throw dan Catch Exception (melempar dan menangkap sebuah eksepsi)


Menampilkan pesan kesalahan

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memamahi:
Membuat variabel dalam C#
Menggunakan operator yang umum dalam C#
Membuat tipe enum dalam C#

WAKTU : 30 menit

LATIHAN 1 : MELAKUKAN VALIDASI JUMLAH HARI


Pada latihan kali ini, Anda akan menambah fungsi pada program yang Anda buat pada
latihan 1. Program tersebut akan memeriksa masukan jumlah hari yang dimasukkan oleh
user. Jika kurang dari 1 atau lebih dari 365, program akan melemparkan kalimat
InvalidArgument (Day out of range). Program akan menangkap exception tersebut
dalam sebuah klausa catch dan akan menampilkan sebuah pesan diagnose ke konsol
Anda.

Untuk melakukan validasi jumlah hari


1. Buka project TanggalBerapa2.sln dalam folder.
2. Masukkan seluruh isi dari TanggalBerapa.Main dalam satu blok try.
3. Setelah blok try, tambahkan sebuaj klausa catch yang menangkap exceptions
bertipe System.Exception dan beri nama dengan caught. Pada blok catch,
tambahkan sebuah kalimat WriteLine untuk menulis proses menangkap
exception pada console.
4. Tambahkan sebuah kalimat if setelah deklarasi variabel jmlHari. Kalimat if akan
melemparkan
objek
exception
new
dengan
tipe
System.ArgumentOutOfRangeException jika jmlHari kurang dari 1 atau lebih
dari 365. Gunakan literal string Jumlah hari melebihi batas untuk membuat
objek exception.
5. Program lengkapnya adalah seperti berikut :
using System;
enum namaBulan {}
class TanggalBerapa
{
static void Main( )
{
try {
Console.Write("Silakan masukkan angka jumlah hari antara 1
sampai 365: ");
string baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
if (jmlHari < 1 || jmlHari > 365) {
throw
new
ArgumentOutOfRangeException("Jumlah
melebihi batas ");
}
int jmlBulan = 0;
foreach (int hariDlmBulan in HariDlmBulan) {
if (jmlHari <= hariDlmBulan) {
break;
} else {
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}

hari

namaBulan temp = (namaBulan)jmlBulan;


string namaBulan = temp.ToString( );
Console.WriteLine("{0} {1}", jmlHari,namaBulan);
}
catch (Exception caught) {
Console.WriteLine(caught);
}
}

}
6. Simpan hasil kerja Anda.
7. Lakukan compile pada program TanggalBerapa2.cs dan benahi
ada. Jalankan program. Gunakan tabel yang tersedia di bab
untuk memeriksa hasil kerja program.
8. Jalankan program, masukkan jumlah hari kurang dari 1 dan
Pastikan masukan yang salah bisa direspond dengan baik dan
bisa dilemparkan, ditangkap, dan ditampilkan.
Berikut capture running program

kesalahan yang
3.1 (Latihan 1)
lebih dari 365.
objek exception

LATIHAN 2 : MENANGANI TAHUN KABISAT


Pada latihan kali ini, Anda akan menambahkan fungsi ke program yang Anda buat pada
latihan 1. Setelah menyelesaikan latihan ini, program akan mendeteksi apakah tahun
tersebut merupakan tahun kabisat. Program ini akan melakukan validasi apakah jumlah
hari antara 1 sampai 366 untuk tahun kabisat, dan 1 sampai 365 jika tahun biasa.
Akhirnya, akan digunakan kalimat foreach baru untuk menghitung bulan dan hari dengan
benar untuk tahun kabisat.

Untuk memasukkan tahun ke konsol


1. Buka project TanggalBerapa3.sln dalam folder
2. Tambahkan
pada
awal
TanggalBerapa.Main
sebuah
kalimat
System.Console.Write yang menuliskan panduan agar konsol memberi
pertanyaan pada user untuk memasukkan tahun.
3. Ubah deklarasi dan inisialisasi baris string.
Ubah string baris = Console.ReadLine( ); to
baris = Console.ReadLine( );.
4. Tambahkan kalimat pada Main yang mendeklarasikan variabel string yang
disebut baris dan inisialisasikan dengan pembacaan baris dari konsol dengan
method System.Console.ReadLine.
5. Tambahkan kalimat Main yang mendeklarasikan variabel int yang disebut
jmlTahun dan inisialisasikan dengan integer yang dikembalikan oleh method
int.Parse.
6. Program langkapnya seperti berikut:
using System;
enum NamaBulan { ... }
class TanggalBerapa
{
static void Main( )
{
try {
Console.Write("Silakan masukkan tahun: ");
string baris = Console.ReadLine( );
int jmlTahun = int.Parse(baris);
Console.Write("Silakan masukkan
hari antara 1 sampai 365: ");
baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);

angka

jumlah

// seperti sebelumnya....
}
catch (Exception tangkap) {
Console.WriteLine(tangkap);
}
}
...
}
7. Simpan hasil kerja Anda.
8. Lakukan compile program TanggalBerapa3.cs dan benahi kesalahan yang ada.

Berikut hasil running program :

Untuk menentukan apakah tahun tersebut merupakan tahun kabisat


1. Tambahkan sebuah kalimat langsung setelah deklarasi jmlTahun yang
mendeklarasikan variabel bool
yang dinamakan thnKabisat. Inisialisasi
variabel tersebut dengan ekspresi Boolean yang menentukan apakah jmlTahun
merupakan tahun yang panjang. Tahun panjang memenuhi dua kondisi
bernilai benar di bawah ini:
Habis dibagi oleh 4.
Tidak habis dibagi oleh 100, atau habis dibagi oleh 400.
2. Tambahkan sebuah kalimat if langsung setelah deklarasi thnKabisat. Jika pada
kalimat if, tuliskan string Merupakan tahun kabisat atau bukan tahun
Kabisat pada konsol, bergantung pada nilai dari thnKabisat. Anda akan
menggunakan kalimat if ini untuk memeriksa bahwa pembatasan Bolean untuk
tahun kabisat sudah benar.
3. Program lengkapnya seperti berikut :
using System;
enum NamaBulan { ... }
class TanggalBerapa
{
static void Main( )
{
try
{
Console.Write("Silakan masukkan tahun: ");
string baris = Console.ReadLine( );
int jmlTahun = int.Parse(baris);
bool thnKabisat = (jmlTahun % 4 == 0)
&& (jmlTahun % 100 != 0
|| jmlTahun % 400 == 0);
if (thnKabisat)
{
Console.WriteLine("
merupakan
tahun
kabisat");
} else
{
Console.WriteLine("
bukan
tahun
kabisat");
}
Console.Write("Silakan masukkan
hari antara 1 sampai 365: ");
baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
// seperti sebelumnya...
}
catch (Exception tangkap)
{
Console.WriteLine(tangkap);
}

angka

jumlah

}
...
}
4. Simpan hasil kerja Anda.
5. Lakukan compile program TanggalBerapa3.cs dan benahi kesalahan yang ada.
Gunakan tabel berikut untuk memeriksa apakah Boolean dari tahun panjang
tersebut sudah berjalan dengan benar.
Tahun Kabisat
1996
2000
2004
6.

Bukan Tahun Kabisat


1999
1900
2001

Ubah kalimat if yang Anda tambahkan pada langkah 2 menjadi komentar.

Berikut hasil running program

Untuk memvalidasi apakah jumlah hari 365 atau 366


1. Tambahkan sebuah variabel int langsung setelah deklarasi thnKabisat. Beri
nama variabel tersebut dengan maxJmlHari. Inisialisasikan maxJmlHari dengan
366 atau 365, bergantung apakah thnKabisat bernilai true atau false.
2. Ubah kalimat WriteLine untuk memandu user ke jumlah hari. Kalimat tersebut
akan menampilkan angka 1 sampai 366 jika tahun kabisat yang dimasukkan
dan 1 sampai 365 jika tahun biasa yang dimasukkan.
3. Lakukan compile pada program TanggalBerapa3.cs dan benahi kesalahan
yang ada. Jalankan program dan periksa apakah yang Anda implementasikan
pada langkah sebelumnya sudah tepat.
4. Ubah kalimat if yang berfungsi untuk melakukan validasi nilai dari jmlHari
untuk menggunakan variabel maxJmlHari pada literal ke 365.
5. Program selengkapnya sepertu berikut :
using System;
enum namaBulan {}
class TanggalBerapa
{
static void Main( )
{
try {
Console.Write("Silakan masukkan tahun: ");
string baris = Console.ReadLine();
int jmlTahun = int.Parse(baris);
bool thnKabisat = (jmlTahun % 4 == 0)
&& (jmlTahun % 100 != 0 || jmlTahun % 400 == 0);
int maxJmlHari = thnKabisat ? 366 : 365;
Console.Write("Silakan masukkan angka jumlah hari antara
1 sampai {0}: ", maxJmlHari);
baris = Console.ReadLine( );

int jmlHari = int.Parse(baris);


if (jmlHari < 1 || jmlHari > maxJmlHari) {
throw new ArgumentOutOfRangeException("Jumlah hari
melebihi batas ");
}
// Seperti sebelumnya
}
catch (Exception tangkap) {
Console.WriteLine(tangkap);
}
}

}
6. Simpan hasil kerja Anda.
7. Lakukan compile pada TanggalBerapa3.cs dan benahi kesalahan yang muncul.
Jalankan program dan periksa apakah yang Anda implementasikan pada
langkah sebelumnya sudah benar.
Berikut hasil capture running program di atas :

Untuk mengoreksi perhitungan bulan dan tanggal pada tahun kabisat


1. Setelah kalimat if yang memvalidasi jumlah hari dan deklarasi dari integer
jmlBulan, tambahkan kalimat if-else. Ekspresi Boolean yang digunakan pada
kalimat if-else ini akan menjadi variabel dari thnKabisat.
2. Pindahkan kalimat foreach sehingga menjadi kesatuan kalimat pada kalimat ifelse baik pada kasus bernilai true dan false. Setelah langkah ini, maka
kodenya akan menjadi seperti berikut:
if (thnKabisat)
{
foreach (int hariDlmBulan in HariDlmBulanKabisat) {
...
}
}
else
{

foreach (int hariDlmBulan in HariDlmBulan) {


...
}
}
3. Simpan hasil kerja Anda.
4. Lakukan compile pada program TanggalBerapa3.cs dan benahi kesalahan
yang ada. Jalankan program dan periksa apakah jumlah hari pada tahun
biasa telah ditangani dengan benar.
5. Pada langkah selanjutnya akan menggunakan bagian HariDlmBulanKabisat
yang telah disediakan. Bagian ini merupakan kumpulan nilai int seperti
HariDlmBulan, kecuali nilai kedua pada bagian ini (jumlah hari pada Februari)
adalah 29 bukan 28.
6. Gunakan HariDlmBulanKabisat pada HariDlmBulan pada bagian kalimat if-else
yang bernilai true.
7. Berikut ini adalah program lengkapnya :
using System;
enum namaBulan
{
Januari,
Februari,
Maret,
April,
Mei,
Juni,
Juli,
Agustus,
September,
Oktober,
November,
Desember
}

class TanggalBerapa
{
static void Main( )
{
try {
Console.Write("Silakan masukkan tahun: ");
string baris = Console.ReadLine();
int jmlTahun = int.Parse(baris);
bool thnKabisat = (jmlTahun % 4 == 0)
&& (jmlTahun % 100 != 0 || jmlTahun % 400 == 0);
int maxJmlHari = thnKabisat ? 366 : 365;
Console.Write("Silakan masukkan angka jumlah hari antara
1 sampai {0}: ", maxJmlHari);
baris = Console.ReadLine( );
int jmlHari = int.Parse(baris);
if (jmlHari < 1 || jmlHari > maxJmlHari) {
throw new ArgumentOutOfRangeException("Jumlah hari
melebihi batas ");

}
int jmlBulan = 0;
if(thnKabisat) {
foreach (int hariDlmBulan in HariDlmBulanKabisat)
{
if (jmlHari <= hariDlmBulan)
{
break;
}
else
{
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}
}
else {
foreach (int hariDlmBulan in HariDlmBulan){
if (jmlHari <= hariDlmBulan) {
break;
} else {
jmlHari -= hariDlmBulan;
jmlBulan++;
}
}
}
namaBulan temp = (namaBulan)jmlBulan;
string namaBulan = temp.ToString( );
Console.WriteLine("{0} {1}", jmlHari,namaBulan);
}
catch (Exception tangkap) {
Console.WriteLine(tangkap);
}
Console.ReadLine();
}
// jangan mengubah apapun kode yang di bawah ini
static System.Collections.ICollection HariDlmBulan
= new int[12] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static System.Collections.ICollection HariDlmBulanKabisat
= new int[12] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
}

8. Simpan hasil kerja Anda.


9. Lakukan compile pada TanggalBerapa3.cs dan benahi kesalahan yang ada.
Jalankan program, gunakan tabel dibawah ini untuk memeriksa apakah
program berjalan dengan benar.

Year
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000
1999
2000

Day Number
32
32
60
60
91
91
186
186
304
304
309
309
327
327
359
359

Month-Day Pair
February 1
February 1
March 1
February 29
April 1
March 31
July 5
July 4
October 31
October 30
November 5
November 4
November 23
November 22
December 25
December 24

PERTANYAAN PEMAHAMAN
1.

Buat sebuah perbandingan mengenai fungsi case dan if else, kapan sebuah if else

2.

lebih cocok dibanding dengan case


Apakah keunggulan foreach dibanding dengan for, apapula kelemahan foreach dibanding dengan loop
yang lain seperti do while.

MODUL 4: MEMBUAT DAN MENGGUNAKAN METHOD


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk

Membuat dan memanggil method dengan atau tanpa menggunakan parameter


Menggunakan berbagai mekanisme untuk penggunaan parameter

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat dan menggunakan variabel
Kalimat pemrograman dalam C#

WAKTU : 60 menit

LATIHAN 1: MENGGUNAKAN PARAMETER YANG MENGEMBALIKAN NILAI PADA METHOD


Pada latihan kali ini, Anda akan mendefinisikan dan menggunakan parameter input
dalam sebuah method yang bisa mengembalikan sebuah nilai. Anda juga akan membuat
sebuah framework uji coba untuk membaca dua nilai dari konsol dan menampilkan
hasilnya.
Anda akan membuat sebuah class dengan nama Guna. Pada class ini, Anda akan
membuat sebuah method yang dinamai LebihBesar. Method ini akan mengambil dua
parameter integer sebagai input dan akan mengembalikan nilai yang lebih besar dari
dua nilai tersebut.
Sebagi uiji coba dari class tersebut, Anda akan membuat class lainnya yang dinamai
test yang memandu user untuk memasukkan dua angka, kemudian akan memanggil
Guna.LebihBesar untuk menentukan angka manakah yang lebih besar dari keduanya, dan
menampilkan hasilnya.

Untuk membuat method LebihBesar


1. Buka project Guna.sln pada folder
Project ini berisi namespace Guna yang ini berisi sebuah class yang juga
bernama Guna. Anda akan membuat method LebihBesar pada class ini.
2. Buatlah method Greater seperti berikut :
a. Buka Guna class.
b. Tambahkan method public static yang disebut LebihBesar ke class
Guna.
c. Method akan mengambil dua parameter int , a dan b, dimana akan
dimasukkan nilainya. Method akan mengembalikan sebuah nilai int
yang lebih besar dari keduanya.
Kode class Guna akan menjadi seperti berikut ini :
using System;
namespace Guna
{
class Guna
{
//
// mengembalikan nilai yang lebih besar dari kedua nilai
// integer
public static int LebihBesar(int a, int b)
{
if (a > b)
return a;
else
return b;
}
}
}

Untuk menguji coba method LebihBesar


1. Buka class Coba
2. Di dalam method Main, tuliskan kode sebagai berikut :
a. Definisikan dua variabel integer , x dan y
b. Tambahkan kode untuk membaca dua integer dari input keyboard dan
gunakan untuk mengembangkan x dan y. Gunakan method
Console.Readline dan intParse yang pernah digunakan pada modul
sebelumnya.
c. Coba method LebihBesar dengan memanggilnya, dan masukkan nilai
yang dikembalikan ke variabel lebihbesar.
3. Tulis kode untuk menampilkan nilai yang lebih besar dari kedua integer
tersebut dengan menggunakan Console.WriteLine.
Kode class Coba akan seperti berikut :
using System;
namespace Guna
{
public class Coba
{
public static void Main()
{
int x; // Input nilai 1
int y; // Input nilai 2
int lebihbesar; // hasil dari LabihBesar( )
// mengambil angka dari input
Console.WriteLine("Masukkan angka pertama:");
x = int.Parse(Console.ReadLine());
Console.WriteLine("Masukkan angka kedua:");
y = int.Parse(Console.ReadLine());
// uji coba method LebihBesar()
lebihbesar = Guna.LebihBesar(x, y);
Console.WriteLine("Nilai yang lebih besar adalah " +
lebihbesar);
Console.ReadLine();
}
}
}

4. Simpan hasil kerja Anda.


5. Lakukan proses compile dan benahi kesalahan yang ada. Jalankan dan uji
coba program.

Berikut ini adalah hasil uji coba program :

LATIHAN 2 : MENGGUNAKAN METHOD DENGAN REFERENCE PARAMETER


Pada latihan kali ini Anda akan membuat method dengan nama Tukar yang akan
menukar nilai dari parameternya. Anda akan menggunakan parameter yang digunakan
secara bersama

Untuk membuat method Tukar


1. Buka project Guna.sln pada folder
2. Tambahkan method Tukar ke class Guna seperti berikut:
a. Tambahkan method public static void yang disebut Tukar.
b. Method Tukar akan mengambil dua parameter int yang disebut a dan
b, dimana diambil berdasarkan referensi
c. Tulis kalimat dia dalam bagian utama method Tukar yang menukar
nilai dari a dan b. Anda akan perlu membuat sebuah variabel int lokal
dalam method Tukar untuk penyimpanan sementara salah satu nilai
selama proses penukaran. Beri nama variabel tersebut dengan temp.
3. Kode dari class Guna akan seperti berikut :
using System;
namespace Guna
{
class Guna
{
//
// menukar dua integer dengan menggunakan reference
// integer
public static void Tukar(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
}
}

Untuk menguji method Tukar


1. Ubah method Main pada class Coba dengan melakukan langkah-langkah
berikut :
a. Kembangkan variabel integer x dan y.
b. Panggil method Tukar , masukkan nilai dari variabel tersebut sebagai
parameter.
Tampilkan nilai baru dari dua integer sebelum dan sesudah mengubahnya.
Kodenya akan seperti berikut ini :
using System;
namespace Guna
{
public class Coba
{
public static void Main()
{

... kode sebelumnya dihilangkan untuk mempermudah...


// uji coba method Tukar
Console.WriteLine("Sebelum ditukar : " + x + "," + y);
Guna.Swap(ref x, ref y);
Console.WriteLine("Setelah ditukar : " + x + "," + y);
}
}
}

2. Simpan hasil kerja Anda.


3. Lakukan compile pada project dan benahi kesalahan yang ada. Jalankan
program, apakah parameter nya berubah sesuai dengan yang diharapkan.

Tips : Jika parameter tidak berubah seperti yang diharapkan, pastikan apakah
parameter sudah dideklarasikan sebagai ref parameter.

Berikut ini adalah hasil capture running program :

LATIHAN 3 : MENGGUNAKAN METHOD DENGAN OUTPUT PARAMETER


Pada latihan kali ini, Anda akan membuat dan mempergunakan sebuah method static
yang memiliki parameter output.
Anda akan membuat method baru yaitu Faktorial yang mengambil nilai int dan
menghitung hasil faktorialnya. Faktorial dari angka adalah hasil perkalian dari semua
bilangan dari angka 1 sampai angka tersebut. Faktorial dari 0 didefinisikan sebagai 1.
Berikut ini adalah contoh dari faktorial :
o Faktorial(0) = 1
o Faktorial(1) = 1
o Faktorial(2) = 1 * 2 = 2
o Faktorial(3) = 1 * 2 * 3 = 6
o Faktorial(4) = 1 * 2 * 3 * 4 = 24

Untuk membuat method Faktorial


1. Buka projek Guna.sln pada folder.
2. Tambahkan method Faktorial ke class Guna, sebagai berikut :
a. Tambahkan method baru public static yang bernama Faktorial
b. Method ini akan menggunakan dua parameter yaitu n dan jawaban.
Parameter pertama diisi dengan nilai int dari faktorial yang akan
dihitung. Parameter kedua adalah parameter out int yang digunakan
untuk mengembalikan hasil.
c. Method faktorial akan mengembalikan nilai bool yang menandakan
apakah method tersebut berhasil atau tidak. (apakah mampu overflow
atau melemparkan exception)
3. Tambahkan fungsi ke method Faktorial.
Cara termudah untukmenghitung factorial adalah dengan menggunakan loop.
Lakukan langkah-langkah sebagai berikut untuk menambahkan fungsi tersebut
ke dalam method:
a. Buatlah sebuah variabel int k pada method Faktorial. Variabel ini
digunakan sebagai loop counter (penghitung kalang).
b. Buatlah variabel int lainnya yaitu f yang digunakan untuk mengolah
nilai di dalam loop. Inisialisasikan variabel f dengan nilai 1.
c. Gunakan loop for untuk melakukan proses perulangan. Variabel k diisi
dengan nilai 2, dan selesai saat k mencapai nilai dari parameter n.
kenaikan k setiap terjadi loop.
d. Pada bagian utama loop, perkalian f terus menerus oleh setiap nilai k,
dan menyimpan hasilnya di f.
e. Hasil faktorial bisa jadi sangat besar meskipun hanya dengan input
yang kecil, jadi pastikan bahwa semua perhitungan integer telah benar,
dan juga harus bisa menangkap exception seperti overflow aritmatis.
f. Masukkan hasil nilai dari f ke parameter out jawaban.
g. Berikan nilai true pada method jika perhitungan telah berhasil, dan
false
jika perhitungan tidak berhasil dilakukan (ketika muncul
exception)
Kode dari class Guna akan jadi seperti berikut :

using System;
namespace Guna
{
class Guna
{

... kode sebelumnya tidak ditampilkan untuk mempermudah...


//
// menghitung faktorial
// dan mengembalikan hasilnya sebagai parameter out
//
public static bool Faktorial(int n, out int jawaban)
{
int k; // Loop counter
int f; // hasil perhitungan
bool ok = true; // True jika berhasil, false jika gagal
// periksa nilai dari input
if (n < 0)
ok = false;
// hitung nilai faktorial sebagai
// hasil perkalian dari semua angka dari 2 sampai n
try
{
checked
{
f = 1;
for (k = 2; k <= n; ++k)
{
f = f * k;
}
}
}
catch (Exception)
{
// jika terjadi kesalahan dalam perhitungan,
// tangkap disini. Semua exception
// ditangani dengan cara yang sama: atur
// menjadi nol dan mengembalikan nilai false.
f = 0;
ok = false;
}
// masukkan nilai hasil
jawaban = f;
// kembali ke caller
return ok;

hasil

}
}
}

Untuk menguji method Faktorial


1. Ubah class Coba seperti berikut :
a. Deklarasikan variabel bool dengan nama ok untuk menangkap hasil
true atau false.
b. Deklarasikan variabel int dengan nama f untuk menangkap hasil
factorial.

c. Permintaan sebuah integer dari user. Masukkan nilai input ke variabel


int x.
d. Panggil method Faktorial, pasang x sebagai parameter pertama dan f
sebagai parameter kedua. Hasilnya akan dikembalikan ke ok.
e. Jika ok bernilai true, tampilkan nilai dari x dan f, begitu juga
sebaliknya, tampilkan pesan yang menunjukan munculnya error.
Kode dari class Guna akan seperti berikut :
using System;
namespace Guna
{
public class Coba
{
public static void Main()
{
int f; // hasil Faktorial
bool ok; // Faktorial berhasil atau gagal

... kode sebelumnya dihilangkan untuk mempermudah...


// memberikan imput untuk faktorial
Console.WriteLine("Angka untuk faktorial:");
x = int.Parse(Console.ReadLine());
// menguji fungsi faktorial
ok = Guna.Faktorial(x, out f);
// hasil output faktorial
if (ok)
Console.WriteLine("Faktorial(" + x + ") = " +
f);
else
Console.WriteLine("Tidak bisa menghitung factorial
ini");
}
}
}

2. Simpan hasil kerja Anda.


3. Lakukan compile program dan benahi kesalahan yang ada, kemudian jalankan
uji coba program.
Berikut ini adalah hasil capture running program :

TUGAS : MENGIMPLEMENTASIKAN METHOD DENGAN MENGGUNAKAN REKURSI


Pada latihan kali ini , Anda akan mengimplementasikan ulang method Faktorial yang
Anda buat pada Latihan 3 dengan menggunakan rekursi daripada dengan loop.
Angka Faktorial bisa didefinisikan secara rekursif sebagai berikut : Faktorial dari nol
adalah 1, dan Anda bisa menemukan faktorial dari integer apapun yang lebih besar
dengan mengalikan integer tersebut dengan faktorial dari angka sebelumnya. Singkatnya:
Jika n=0, maka Faktorial(n) = 1; begitupun n * Faktorial(n-1)

Untuk memodifikasi method Faktorial yang sudah ada


1. Ubah class Guna dan modifikasi method Faktorial yang sudah ada
sehinggamenjadi menggunakan rekursi bukan iterasi.
Parameter dan tipe pengembalian akan tetap sama, namun fungsi internal
dari method akan berbeda. Jika Anda ingin tetap menyimpan solution yang
ada dengan latihan 3, Anda perlu menggunakan nama lain untuk method ini.
2. Gunakan pseudo code yang ditampilkan di atas untuk mengimplementasikan
bagian utama dari method Faktorial (Anda perlu mengubahnya ke sintak C#)
3. Tambahkan kode tersebut ke class Coba ke method baru Anda.
4. Simpan hasil kerja Anda.
5. Lakukan proses compile dan benahi kesalahan yang ada kemudian jalankan
dan uji program tersebut.
Versi rekursi dari method Faktorial (FaktorialRekursif) adalah sebagai berikut :
//
// Cara lain untuk menyelesaikan masalah factorial,
// kali ini untuk fungsi rekursif
//
public static bool FaktorialRekursif(int n, out int f)
{
bool ok=true;
// mengenali input negatif
if (n<0)
{
f=0;
ok = false;
}
if (n<=1)
f=1;
else
{
try
{
int pf;
checked
{
ok = FaktorialRekursif(n-1,out pf);
f = n * pf;
}
}
catch(Exception)
{
// Ketika terjdi kesalahan. Atur error
// flag dan kembali ke nol.
f=0;
ok=false;
}

}
return ok;

Hasil running program akan seperti pada sama seperti pada penggunaan method
Faktorial

PERTANYAAN PEMAHAMAN
1.

Jelaskan sekumpulan dan jenis jenis method di lihat dari jenis masukannya,
keluarannya, dan parameternya?

2.

Apakah makna reskursi dalam latihan yang dilakukan di atas?

MODUL 5: MEMBUAT DAN MENGGUNAKAN ARRAY


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk
Membuat dan menggunakan array dari tipe nilai
Melemparkan argument ke Main.
Membuat dan menggunakan array berukuran terkomputasi
Menggunakan array dengan berbagai kegunaan

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
menggunakan kalimat pemrograman dalam C#
membuat dan menggunakan method dalam C#

WAKTU : 60 menit

LATIHAN 1 : MENGGUNAKAN ARRAY TIPE NILAI


Pada latihan kali ini Anda akan membuat sebuah program yang akan membuat nama
dari sebuah file teks adalah sebuah argument pada Main. Program akan merangkum isi
dari file teks dan akan membacakan isinya dari file teks menjadi sebuah array karakter
dan kemudian mengulangnya sepanjang array, menghitung jumlah dari huruf hidup dan
konsonan. Pada akhirnya akan menampilkan jumlah total karakter, huruf hidup,
konsonan, dan baris baru pada konsol.

Untuk menangkap nama dari file teks sebagai parameter pada method Main.
1. Buka projek DetilFile.sln pada folder.
2. Tambahkan sebuah array string args sebagai parameter ke method Main dari
class DetilFile. Array ini akan berisi semua argument command-line yang
dimasukkan ketika program dijalankan. Isinya tentang bagaimana argument
dilewatkan ke Main pada saat program berjalan. Pada latihan ini, argumen
command-line yang dilewatkan ke Main adalah nama dari file teks.
3. Tambahkan kalimat ke Main yang menuliskan panjang args pada konsol.
Kalimat ini akan memastikan panjang dari args adalah nol ketika tidak ada
argument command-line yang dilewatkan ke Main pada saat runtime.
4. Tambahkan kalimat foreach ke Main yang menuliskan setiap string di args ke
konsol. Kalimat ini akan memastikan bahwa Main menerima argument
command-line dari runtime.
Kode lengkapnya akan seperti berikut :
static void Main(string[ ] args)
{
Console.WriteLine(args.Length);
foreach (string arg in args)
{
Console.WriteLine(arg);
}
}
5. Lakukan compile pada program DetilFile.cs dan benahi setiap error yang
muncul. Jalankan program dari command-line, jangan masukkan argument
command-line. Pastikan apakah panjang dari args adalah nol.
Untuk menjalankan program dari command-line, buka jendela command dan
masuk ke folder. File yang bisa dieksekusi akan berada pada folder ini.
6. Jalankan program dari command line, masukkan nama dari DetilFile.cs.
Pastikan bahwa runtime melewatkan nama ke Main.
7. Uji coba program dengan memasukkan berbagai macam argument commandline yang lainnya, dan pastikan bahwa setiap argumen dari command-line
ditulis di konsol sesuai yang diharapkan. Ubah komentar menulis ke konsol
menjadi kalimat pemrograman.
8. Tambahkan kalimat ke Main yang mendeklarasikan variabel string NamaFile
dan inisialisasikan dengan args[0]

Untuk membaca dari file teks menjadi sebuah array


1. Pindahkan komentar dari deklarasi FileStream
inisialisasi kode.
2. Tentukan panjang dari file teks.

dan

StreamReader

dan

Untuk menempatkan property yang tepat untuk class Stream, carilah Stream
class pada dokumen .NET Framework SDK Help
3.

4.

Tambahkan kalimat ke Main yang mendeklarasikan variabel karakter array isi.


Inisialisasikan isi dengan instance array baru yang panjangnya sama dengan
panjang file teks yang telah Anda tentukan.
Tambahkan kalimat for ke Main. Pada bagian utama kalimat for akan
membaca karakter tunggal dari pembaca dan menambahkannya ke isi.
Gunakan method Read yang tidak memerlukan parameter dan mengembalikan
sebuah int. Ubah hasil ke char sebelum menyimpannya dalam array.

5.

Tambahkan kalimat foreach ke Main yang menulis seluruh karakter array ke


konsol per karakter. Kalimat ini akan memastikan bahwa file teks telah
berhasil dibaca ke array isi.
Kode lengkapnya akan seperti berikut :
static void Main(string[] args)
{
string Program = args[0];
FileStream stream = new FileStream(Program, FileMode.Open);
StreamReader pembaca = new StreamReader(stream);
int ukuran = (int)stream.Length;
char[] isi = new char[ukuran];
for (int i = 0; i < ukuran; i++)
{
isi[i] = (char)pembaca.Read();
}
pembaca.Close();
Rangkuman(isi);
}

6.

7.
8.

Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program, masukkan nama dari DetilFile.cs sebagai argument command-line.
Pastikan bahwa isi dari file telah ditulis di konsol dengan benar.
Ubah komentar foreach menjadi kalimat pemrograman.
Tutup objek Reader dengan memanggil method StreamReader yang tepat.

Untuk menentukan dan merangkum isi dari file


1. deklarasikan method static baru Rangkuman pada class DetilFile. Method ini
tidak akan mengembalikan apapun dan akan meminta sebuah parameter
karakter array. Tambahkan kalimat ke Main yang memanggil method
Rangkuman, yang melewatkan isi sebagai argument.
2. Tambahkan kalimat foreach ke Rangkuman yang memeriksa setiap karakter
pada argument array. Hitung jumlah karakter huruf hidup, konsonan, dan
baris baru yang muncul, simpan hasilnya pada variabel berbeda.
Untuk menentukan apakah karakter merupakan huruf hidup, buatlah string
yang berisi semua kemungkinan huruf hidup dan gunakan method IndexOf
pada string tersebut untuk menentukan apakah ada karakter huruf hidup yang
ada di string, berikut kodenya :
if ("AEIOUaeiou".IndexOf(myCharacter) != -1)
{
// myCharacter is a vowel
}
else
{
// myCharacter is not a vowel
}
3. Tampilkan empat baris pada konsol :
a. Jumlah total karakter pada file.
b. Jumlah total huruf Vokal pada file.
c. Jumlah total konsonan pada file.
d. Jumlah total baris pada file
Kode lengkapnya sebagai berikut :
static void Rangkuman(char[] isi)
{
int Vokal = 0, konsonan = 0, baris = 0;
foreach (char sekarang in isi)
{
if (Char.IsLetter(sekarang))
{
if ("AEIOUaeiou".IndexOf(sekarang) != -1)
{
Vokal++;
}
else
{
konsonan++;
}
}
else if (sekarang == '\n')
{
baris++;
}
}
Console.WriteLine("Jumlah total karakter : {0}", isi.Length);
Console.WriteLine("Jumlah total vokal: {0}", Vokal);
Console.WriteLine("Jumlah total konsonan: {0}", konsonan);
Console.WriteLine("Jumlah total baris: {0}", baris);
Console.ReadLine();
}

4. Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program dari command line ke rangkuman dari isi pada file Solution :
Jumlah total yang tepat adalah sebagai berikut:

o 1.453 karakter
o 243 huruf vocal
o 396 konsonan
o 48 baris
Berikut hasil capture

LATIHAN 2 : MATRIK PERKALIAN


Pada latihan kali ini, Anda akan membuat sebuah program yang menggunakan array
untuk mengalikan matrik. Program akan membaca empat nilai integer dari konsol dan
menyimpannya dalam matrik integer 2 x 2. Selanjutnya akan membaca matrik serupa
lainnya dari konsol dan menyimpannya dalam matrik integer 2 x 2 lainnya. Program
akan mengalikan du amtrik tersebut dan menyimpan hasilnya dalam matrik integer
ketiga berukuran 2 x 2. Pada akhirnya nanti akan menampilkan hasil matrik ke konsol.
Rumus perkalian dua matrik A dan B adalah seperti berikut :
A1
A3

A2
A4

B1
B3

B2
B4

A1.B1 + A2.B3
A3.B1 + A4.B3

A1.B2 + A2.B4
A3.B2 + A4.B4

Untuk mengalikan dua buah matrik


1. Buka project PerkalianMatrik.sln di folder.
2. Pada class PerkalianMatrik, tambahkan kalimat ke Main yang mendeklarasikan
sebuah array int 2 x 2 dan beri nama dengan array a. Hasil akhir dari
program akan membaca nilai a dari konsol. Mulai sekarang, inisialisasikan a
dengan nilai integer pada tabel berikut. (hal ini untuk memudahkan
memeriksa kebenaran hasil perkalian dan refaktor selanjutnya sesuai dengan
aturannya).
1
3

2
4

3. Tambahkan kalimat ke Main yang mendeklarasikan array int 2 x 2 dan namai


array b. Hasil akhir dari program akan membaca nilai b dari konsol. Mulai
sekarang inisialisasikan b dengan nilai integer pada tabel berikut:
5
7

6
8

4. Tambahkan kalimat pada Main yang mendeklarasikan array int 2 x 2 dan beri
nama denga array hasil. Inisialisasikan hasil dengan menggunakan rumus
kolom berikut :
a[0,0] * b[0,0] + a[0,1] * b[1,0]

a[0,0] * b[0,1] + a[0,1] * b[1,1]

a[1,0] * b[0,0] + a[1,1] * b[1,0]

a[1,0] * b[0,1] + a[1,1] * b[1,1]

5. Tambahkan empat kalimat ke Main yang menuliskan empat nilai int dalam
hasil ke konsol. Kalimat tersebut akan membantu memeriksa ketepatan dalam
menggandakan rumus. Kode lengkapnya akan seperti berikut :
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik

{
static void Main(string[] args)
{
int[,] a = new int[2, 2];
a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
int[,] hasil = new int[2, 2];
hasil[0, 0] = a[0, 0] * b[0, 0]
hasil[0, 1] = a[0, 0] * b[0, 1]
hasil[1, 0] = a[1, 0] * b[0, 0]
hasil[1, 1] = a[1, 0] * b[0, 1]
Console.WriteLine(hasil[0, 0]);
Console.WriteLine(hasil[0, 1]);
Console.WriteLine(hasil[1, 0]);
Console.WriteLine(hasil[1, 1]);

+
+
+
+

a[0,
a[0,
a[1,
a[1,

1]
1]
1]
1]

*
*
*
*

b[1,
b[1,
b[1,
b[1,

0];
1];
0];
1];

}
}
}

6. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program.
Pastikan ke empat nilai hasil adalah seperti berikut:
19
43

22
50

Hasildari capture running program adalah sebagai berikut :

Untuk membuat out put dari hasil dengan menggunakan method dengan
parameter array
1. Deklarasikan method static baru yang disebut Output. dalam class
PerkalianMatrik. Method ini tidak akan mengembalikan apapun dan akan
meminta sebuah array int dengan pangkat 2 sebagai parameter yang disebut
hasil.
2. Ambil dari Main empat kalimat yang menuliskan empat nilai dari hasil ke
konsol dan pindahkan ke Output.
3. Tambahkan kalimat ke Main yang memanggil method Output, untuk
melewatkan hasil sebagai argument. (kode ini untuk menggantikan yang telah
diambil pada langkah sebelumnya).
Berikut kode lengkapnya:
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
int[,] a = new int[2, 2];

a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
int[,] hasil = new int[2, 2];
hasil[0, 0] = a[0, 0] * b[0, 0]
hasil[0, 1] = a[0, 0] * b[0, 1]
hasil[1, 0] = a[1, 0] * b[0, 0]
hasil[1, 1] = a[1, 0] * b[0, 1]
Output(hasil);

+
+
+
+

a[0,
a[0,
a[1,
a[1,

1]
1]
1]
1]

*
*
*
*

b[1,
b[1,
b[1,
b[1,

0];
1];
0];
1];

}
static void Output(int[,] hasil)
{
Console.WriteLine(hasil[0, 0]);
Console.WriteLine(hasil[0, 1]);
Console.WriteLine(hasil[1, 0]);
Console.WriteLine(hasil[1, 1]);
Console.ReadLine();
}
}
}

4. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program.
Pastikan bahwa ke empat nilai yang muncul di konsol adalah tetap seperti
ini:
19
22
43
50
5. Lakukan refaktor method Output untuk menggunakan kalimat for bersarang
sebagai ganti empat kalimat yang WriteLine. Gunakan nilai literal 2 untuk
pengujian kedua array.
Kode lengkapnya akan seperti berikut:
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
... sama seperti kode sebelumnya ...
}
static void Output(int[,] hasil)
{
for (int r = 0; r < 2; r++)
{
for (int c = 0; c < 2; c++)
{
Console.Write("{0} ", hasil[r, c]);
}
Console.WriteLine();
}
}

}
}

6. Lakukan compile pada program dan benahi kesalahan yang muncul. Jalankan
program. Pastikan ke empat nilai yang muncul di konsol seperti berikut:
19
43

22
50

7. Modifikasi lagi method Output untuk membuatnya menjadi lebih sederhana.


Ganti nilai literal 2 untuk membatasi ukuran array dengan memanggil method
GetLenght di setiap array.
Kode lengkapnya akan seperti berikut:
using System;
namespace PerkalianMatrik
{
class PerkalianMatrik
{
static void Main(string[] args)
{
... sama seperti kode sebelumnya ...
}
static void Output(int[,] hasil)
{
for (int r = 0; r < hasil.GetLength(0); r++)
{
for (int c = 0; c < hasil.GetLength(1); c++)
{
Console.Write("{0} ", hasil[r, c]);
}
Console.WriteLine();
}
}
}

8. Lakukan compile program dan benahi kesalahan yang muncul. Jalankan


program. Pastikan nilai dari ke empat adalah seperti berikut:
19
43

22
50

Untuk menghitung hasil dalam sebuah method dan mengembalikannya


1. Deklarasikan method static baru Perkalian di dalam class PerkalianMatrik.
Method ini akan mengembalikan sebuah array int dengan derajat 2 dan akan
meminta dua array int dengan derajat 2 yaitu a dan b, sebagai parameter.
2. Salin (jangan di potong) deklarasi dan inisialisasi hasil dari Main ke Perkalian.
3. Tambahkan kalimat return ke Perkalian yang mengembalikan hasil.
4. Gantikan inisialisasi hasil di Main dengan memanggil Perkalian dengan
melewatkan a dan b sebagai argument.
Kode selengkapnya adalah sebagai berikut:
static int[,] Perkalian(int[,]
{
int[,] hasil = new
hasil[0, 0] = a[0,
hasil[0, 1] = a[0,
hasil[1, 0] = a[1,
hasil[1, 1] = a[1,
return hasil;
}

a, int[,] b)
int[2, 2];
0] * b[0, 0]
0] * b[0, 1]
0] * b[0, 0]
0] * b[0, 1]

+
+
+
+

a[0,
a[0,
a[1,
a[1,

1]
1]
1]
1]

*
*
*
*

b[1,
b[1,
b[1,
b[1,

0];
1];
0];
1];hod dengan

5. Lakukan compile dan benahi kesalahan yang ada. Jalankan program. Pastikan
ke empat nilainya adalah sebagai berikut:
19
43

22
50

Untuk menghitung hasil dalam sebuah method dengan menggunakan kalimat


pemrograman.
1. Ganti inisialisasi hasil pada Perkalian dengan array bertipe int dengan dimensi
2 x 2 yang baru dibuat.
2. Tambahkan dua kalimat for bersarang ke Perkalian. Gunakan integer r pada
bagian terluar kalimat for untuk melakukan perulangan pada setiap index
dimensi pertama dari hasil. Gunakan integer c untuk bagian terdalam kalimat
for untuk perulangan pada setiap index dimensi kedua. Gunakan nilai derajat
2 untuk membatasi ukuran dimensi array. Bagian paling dalam kalimat for
perlu dihitung dan diatur nilai dari hasil[r,c] dengan menggunakan rumus
berikut :
hasil[r,c] = a[r,0] * b[0,c]
+ a[r,1] * b[1,c]
Berikut kode lengkapnya
static int[,] Perkalian(int[,] a, int[,] b)
{
int[,] hasil = new int[2, 2];
for (int r = 0; r < 2; r++)
{
for (int c = 0; c < 2; c++)
{
hasil[r, c] += a[r, 0] * b[0, c] + a[r, 1] * b[1, c];
}
}
return hasil;
}

3. Lakukan compile program dan benahi kesalahan yang muncul. Jalankan


program. Pastikan nilai yang muncul di konsul sama seperti sebelumnya.

Untuk memasukkan matrik pertama dari konsol


1. Ganti inisialisasi hasil pada Perkalian dengan array bertipe int dengan dimensi
2 x 2 yang baru dibuat.
2. Tambahkan kalimat ke Main yang memandu user dan membaca keempat nilai
ke a dari konsol. Kalimat tersebut ditempatkan sebelum pemanggilan method
Perkalian. Kalimat untuk membaca satu nilai dari konsol:
string s = Console.ReadLine( );
a[0,0] = int.Parse(s);
3. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program,
masukkan ke empat nilai dari a dari konsol (1, 2, 3, 4). Pastikan bahwa nilai
yang ditampilkan oleh konsol sama dengan sebelumya.
4. Deklarasikan method static baru Input didalam class PerkalianMatrik. Method
ini tidak akan mengembalikan apapun dan meminta sebuah array int
berderajat 2 sebagai paramater disebut dst.
5. Pindahkan kalimat yang membaca ke empat nilai a dari Main dan tempatkan
di Input. Tambahkan kalimat pada Main yang memanggil Input, untuk
melewatkan a sebagai parameter. Kalimat tersebut ditempatkan sebelum
pemanggilan Perkalian.
6. Lakukan compile program dan benahi kesalahan yang muncul. Jalankan
program. Pastikan nilai yang muncul di konsul sama seperti sebelumnya.
7. Ubah method Input menjadi menggunakan dua kalimat for bersarang.
Gunakan nilai derajat 2 untuk membatasi dimensi array. Termasuk kalimat
Write didalam method Input yang memandu yang memandu user memasukkan
setiap input.
Kode lengkapnya sebagai berikut:
static void Input(int[,] dst)
{
for (int r = 0; r < 2; r++)
{
for (int c = 0; c < 2; c++)
{
Console.Write("Masukkan nilai untuk [{0},{1}] : ", r, c);
string s = Console.ReadLine();
dst[r, c] = int.Parse(s);
}
}
Console.WriteLine();
}

8. Lakukan compile program dan benahi kesalahan yang muncul. Jalankan


program. Pastikan nilai yang muncul di konsul sama seperti sebelumnya
Berikut tampilan dari capture running program

Untuk memasukkan matrik kedua dari konsol


1. Ganti inisialisasi b pada Main dengan array bertipe int dengan dimensi 2 x 2
yang baru dibuat dengan nilai default semuanya nol.
2. Tambahkan kalimay ke Main yang membaca nilai ke b dari konsol dengan
memanggil method Input dan melewatkan b sebagai argumen.
3. Lakukan compile program dan benahi kesalahan yang ada. Jalankan program,
masukkan ke empat nilai dari a dari konsol (1, 2, 3, 4) dan b (5, 6, 7, 8).
Pastikan bahwa nilai yang ditampilkan oleh konsol sama dengan sebelumya
4. Jalankan program dengan data yang berbeda. Bandingkan dengan hasil kerja
rekan Anda apakah memberikan hasil yang sama untuk input yang sama.
Berikut hasil capture running program

PERTANYAAN PEMAHAMAN
1. Buatlah sebuah class yang merupakan class dengan dukungan matrik 2x2 dan dapat
melakukan perhitungan determinan.
2. Gunakan konsep interface atau inheritance untuk menurunkan class yang dibuat
pada poin satu untuk mendukung perhitungan matrik 3x3

MODUL 6 : MEMBUAT DAN MENGGUNAKAN CLASS


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk
Membuat class dan menginstankan objek
Menggunakan data dan method yang bersifat non-static
Menggunakan data dan method yang bersifat static

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat method dalam C#
Melewatkan argument sebagai parameter method dalam C#

WAKTU : 45 menit

LATIHAN 1: MEMBUAT DAN MENGGUNAKAN CLASS


Pada latihan ini Anda akan menggunakan bank account yang dibuat pada modul
sebelumnya dan mengubahnya menjadi sebuah class. Anda akan mendeklarasikan data
membernya sebagai private namun memberikan akses ke data dengan cara
menggunakan method yang public dan non-static. Anda akan membuat uji ketahanan
yang nantinya akan membuat sebuah objek account dan mengembangkannya dengan
account number dan balance yang telah ditentukan oleh user. Akhirnya, anda akan
menampilkan datanya pada account.

Untuk mengubah BankAccount dari tipe data struct menjadi sebuah class
1. Buka project CreateAccount.sln pada folder HOL SOLUTION\BAB 6\STARTER.
2. Pelajari kode pada file BankAccount.cs, bahwa BankAccount mempunyai tipe
data struct.
Struct BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}

3. Lakukan proses compile dan jalankan program. Anda akan dipandu untuk
memasukkan sebuah account number dan balance awal. Ulangi proses ini
untuk membuat account lainya.
4. Modifikasi BankAccount pada BankAccount.cs untuk mengubahnya menjadi
sebuah class dari yang sebelumnya berupa tipe data struct.
class BankAccount
{
public long accNo;
public decimal accBal;
public AccountType accType;
}

5. Lakukan compile pada program, maka akan mengalami kegagalan. Buka file
CreateAccount.cs dan lihat pada class CreateAccount. Class akan Nampak
seperti berikut:
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created;
...
created.accNo = number; // Error here
...
}
...
}

6. Pengeksekusian created.accNo akan berhasil dicompile ketika BankAccount


masih bertipe data struct. Sekarang ketika menjadi sebuah class, maka tidak
bisa dicompile. Hal ini disebabkan ketika BankAccount masih bertipe data
struct, deklarasi variabel created, membuat nilai (value) dari BankAccount
(pada stack). Namun ketika BankAccount menjadi sebuah class, deklarasi
variabel created tidak membuat nilai dari BankAccount;
tapi membuat
BankAccount reference yang tidak menghubungkan ke BankAccount object.

7. Ubah deklarasi dari created sehingga bisa menginisialisasikan objek dari


BankAccount seperti berikut:
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created = new BankAccount( );
...
created.accNo = number;
...
}
...
}

8. Simpan hasil kerja anda.


9. Lakukan proses compile dan jalankan program. Pastikan data yang
dimasukkan ke konsol bisa dibaca kembali dan ditampilkan dengan baik pada
method CreateAccount.Write.

Untuk mengenkapsulasi class BankAccount


1. Semua data member dari class BankAccount saat ini masih bersifat public.
Modifikasi data nya sehingga menjadi private, seperti berikut :
class BankAccount
{
private long accNo;
private decimal accBal;
private AccountType accType;
}

2. Lakukan compile program. Hasilnya akan gagal. Error muncul pada class
CreateAccount seperti berikut :
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created = new BankAccount( );
...
created.accNo = number; // Error disini lagi
...
}
...
}

3. Pengeksekusian data member dari BankAccount akan gagal dikompile karena


data member sekarang menjadi bersifat private. Hanya method BankAccount
yang bisa mengakses data member BankAccount yang private. Anda perlu
menambahkan sebuah mehod BankAccount yang bersifat public untuk
mengolah data tersebut. Lakukan langkah-langkah seperti berikut :
Tambahkan method yang bersifat public dan non-static yaitu Populate ke
BankAccount. Method ini akan mengembalikan void dan meminta dua
parameter: long (bank account number) dan desimal (bank account
balance/saldo). Bagian utama dari method ini akan memasukkan parameter
long ke bagian accNo dan desimal ke bagian accBal. Selain itu juga akan
mengatur bagian accType ke AccountType.Checking seperti berikut :
class BankAccount
{
public void Populate(long number, decimal balance)
{

accNo = number;
accBal = balance;
accType = AccountType.Checking;
}
private long accNo;
private decimal accBal;
private AccountType accType;
}

4. Ubah kalimat komentar menjadi kalimat pemrograman dari tiga sintaks


pengolahan variabel created pada method CreateAccount.NewbankAccount.
Pada bagian tersebut tambahkan kalimat yang memanggil method Populate
pada variabel created untuk melewatkan number dan balance sebagai
argumen. Maka seperti berikut kodenya:
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created = new BankAccount( );
...
// created.accNo = number;
// created.accBal = balance;
// created.accType = AccountType.Checking;
created.Populate(number, balance);
...
}
...
}

5. Simpan hasil kerja Anda.


6. Lakukan compile pada program. Bila mengalami kegagalan hal itu disebabkan
adanya tiga kalimat pada method CreateAccount.Write yang mengakses
secara langsung ke bagian BankAccount. Anda perlu menambahkan tiga buah
method ke BankAccount yang bersifat public yang mengembalikan nilai dari
tiga field tadi. Lakukan langkah berikut :
a. Tambahkan method ke BankAccount yang public dan non-static yaitu
Number. Method ini akan mengembalikan nilai bertipe long dan tidak
memerlukan parameter. Method ini akan mengembalikan nilai dari field
accNo seperti yang ditunjukan berikut :
class BankAccount
{
public void Populate(...) ...
public long Number( )
{
return accNo;
}
...
}

b. Tambahkan method ke BankAccount yang public dan non-static yaitu


balance seperti yang ditampilkan pada kode berikut. Method ini akan
mengembalikan nilai desimal dan tidak memerlukan parameter. Method
ini akan mengembalikan nilai dari field accBal.
class BankAccount
{
public void Populate(...) ...
...
public decimal Balance( )
{
return accBal;
}

...
}

c. Tambahkan Tambahkan method ke BankAccount yang public dan nonstatic yaitu Type seperti yang ditampilkan pada kode berikut. Method
ini akan mengembalikan sebuah AccountType dan tidak memerlukan
parameter. Method ini akan mengembalikan nilai dari field accType.
class BankAccount
{
public void Populate(...) ...
...
public AccountType Type( )
{
return accType;
}
...
}

d. Akhirnya ganti kalimat pada method CreateAccount.Write yang


mengakses secara langsung field BankAccount yang bersifat private
dengan tiga kalimat yang baru dibuat seperti berikut :
class CreateAccount
{
...
static void Write(BankAccount toWrite)
{
Console.WriteLine("Account number is {0}", toWrite.Number( ));
Console.WriteLine("Account balance is {0}", toWrite.Balance( ));
Console.WriteLine("Account type is {0}",toWrite.Type( ));
}
}

7. Simpan hasil kerja Anda


8. Lakukan compile pada program dan benahi kesalahan yan ada. Jalankan
program. Pastikan data yang dimasukkan ke konsol dan dilewatkan ke
method BankAccount.Populate bisa dibaca kembali dan ditampilkan dengan
benar pada method CreateAccount.Write.

Untuk melakukan enkapsulasi lebih jauh pada class BankAccount


1. Ubah method BankAccount.Type sehingga bisa mengembalikan tipe dari
account sebagai string bila yang sebelumnya berupa tipe enum AccountType
seperti berikut :
class BankAccount
{
...
public string Type( )
{
return accType.ToString( );
}
...
private AccountType accType;
}

2. Simpan hasil kerja Anda.


3. Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program. Pastikan data yang dimasukkan ke konsol dan dilewatkan ke
method BankAccount.Populate bisa dibaca kembali dan ditampilkan dengan
benar pada method CreateAccount.Write

Berikut tampilan capture program

LATIHAN 2: MENGHASILKAN ACCOUNT NUMBER


Pada latihan kali ini Anda akan memodifikasi class BankAccount dari latihan 1 sehingga
bisa menghasilkan account number yang unik. Anda akan melakukan hal ini dengan
menggunakan variabel static pada class di BankAccount dan method yang menaikkan
dan mengembalikan nilai dari variabel tersebut. Ketika uji ketahan membuat account
baru, maka akan memanggil method tersebut untuk menghasilkan account number.
Kemudian nantinya akan memanggil method dari class BankAccount yang nantinya akan
mengatur angka dari account, yang dilewatkan sebagai parameter.

Untuk memastikan setiap angka di BankAccount adalah unik.


1. Buka project UniqueNumbers.sln di folder HOL SOLUTION\BAB 6\STARTER.
2. Tambahkan variabel bertipe long yang bersifat private dan static dengan
nama nextAccNo ke class BankAccount seperti berikut :
class BankAccount
{
...
private long accNo;
private decimal accBal;
private AccountType accType;
private static long nextAccNo;
}

3. Tambahkan method bersifat public static yaitu NextNumber ke class


BankAccount, seperti yang ditampilkan pada kode berikut. Method ini akan
mengembalikan sebuah nilai bertipe long dan tidak meminta parameter.
Nantinya akan mengembalikan nilai dari field nextAccNo sebagai tambahan
untuk menaikkan field ini.
class BankAccount
{
...
public static long NextNumber( )
{
return nextAccNo++;
}
private long accNo;
private decimal accBal;
private AccountType accType;
private static long nextAccNo;
}

4. Ubah kalimat komentar menjadi kalimat pemrograman


CreateAccount.NewBankAccount
yang
akan
memandu
menanyakan nomor bank account seperti berikut:

pada method
konsol
untuk

//Console.Write("Enter the account number: ");

5. Ganti inisialisasi number pada method CreateAccount.NewBankAccount dengan


memanggil method BankAccount.NextNumber yang baru saja dibuat seperti
berikut:
//long number = long.Parse(Console.ReadLine( ));
long number = BankAccount.NextNumber( );

6. Simpan hasil kerja Anda.


7. Lakukan proses compile pada program dan benahi kesalahan yang ada.
Jalankan program. Pastikan dua account memiliki nomor 0 dan 1.
8. Sekarang field static BankAccount.nextAccNo
memiliki inisialisasi default
bernilai 0. Maka inisialisasikan field ini menjadi nilai 123

9. Lakukan proses compile pada program dan benahi kesalahan yang ada.
Jalankan program. Pastikan dua account memiliki nomor 123 dan 124
Berikut hasil capture program:

Untuk mengenkapsulasi class BankAccount lebih lanjut


1. Ubah method BankAccount.Populate sehingga hanya meminta satu parameter
saja balance bertipe decimal. Di dalam method ini, masukkan field accNo
dengan menggunakan method static BankAccount.NextNumber seperti berikut:
class BankAccount
{
public void Populate(decimal balance)
{
accNo = NextNumber( );
accBal = balance;
accType = AccountType.Checking;
}
...
}

2. Ubah BankAccount.NextNumber menjadi method yang bersifat private, seperti


berikut:
class BankAccount
{
...
private static long NextNumber( ) ...
}

3. Ubah kalimat komentar menjadi kalimat pemrograman dari deklarasi dan


inisialisasi dari number pada method CreateAccount.NewBankAccount ubah
method created.Populate sehingga hanya memanggil sebuah parameter
tunggal, sepeti berikut:
class CreateAccount
{
...
static BankAccount NewBankAccount( )
{
BankAccount created = new BankAccount( );
//long number = BankAccount.NextNumber( );
...
created.Populate(balance);
...
}
...
}

4. Simpan hasil kerja Anda.


5. Lakukan proses compile pada program dan benahi kesalahan yang ada.
Jalankan program. Pastikan dua account tetap memiliki nomor 123 dan 124.

LATIHAN 3 : MENAMBAHKAN LEBIH BANYAK METHOD BERSIFAT PUBLIC


Pada latihan kali ini, Anda akan menambahkan dua buah method ke class Account:
Withdraw dan Deposit.
Withdraw akan mengambil parameter bertipe decimal dan akan mengurangi jumlah yang
diberikan oleh balance. Namun, sebelum memotongnya parameter tersebut akan
melakukan pengecekan terlebih dahulu untuk memastikan bahwa dana yang dibutuhkan
tersedia, karena account tidak mengijinkan untuk kondisi pengambilan yang berlebihan.
Parameter ini akan mengambalikan nilai bool yang member indikasi apakan pengambilan
dana sudah berhasil.
Deposit juga akan mengambil nilai parameter bertipe decimal yang nilainya akan
ditambahkan ke balance pada account. Parameter ini akan memberikan nilai terbaru dari
balance

Untuk menambahkan method Deposit ke class BankAccount


1. Buka project MoreMethods.sln pada folder HOL SOLUTION\BAB 6\STARTER.
Catatan : Project ini sama dengan project UniqueNumber dari latihan 2.
2. Tambahkan method public non-static yaitu Deposit ke class BankAccount,
seperti ditunjukan pada kode berikut. Method ini akan mengambul parameter
desimal yang nilainya akan ditambahkan ke balance di account. Parameter ini
akan mengembalikan nilai baru dari balance.
class BankAccount
{
...
public decimal Deposit(decimal amount)
{
accBal += amount;
return accBal;
}
...
}

3. Tambahkan method public static yaitu TestDeposit ke class CreateAccount,


seperti kode di bawah ini. Method ini akan mengembalikan void dan meminta
sebuag parameter BankAccount. Method tersebut akan memandu konsol untuk
memasukkan jumlah dari deposit, menangkap jumlah yang dimasukkan
sebagai parameter dan melewatkan jumlah tersebut sebagai sebuah argument.
class CreateAccount
{
...
public static void TestDeposit(BankAccount acc)
{
Console.Write("Enter amount to deposit: ");
decimal amount = decimal.Parse(Console.ReadLine());
acc.Deposit(amount);
}
...
}

4. Tambahkan kalimat ke CreateAccount.Main yang memanggil method


TestDeposit yang baru dibuat, seperti kode di bawah nanti. Pastikan Anda
memanggil TestDeposit untuk kedua objek account. Gunakan method
CreateAccount.Write untuk menampilkan account setelah deposit dimasukkan.

class CreateAccount
{
static void Main( )
{
BankAccount berts = NewBankAccount( );
Write(berts);
TestDeposit(berts);
Write(berts);
BankAccount freds = NewBankAccount( );
Write(freds);
TestDeposit(freds);
Write(freds);
}
}

5. Simpan hasil kerja Anda


6. Lakukan compile pada program dan benahi kesalahan yang ada. Jalankan
program. Pastikan bahwa deposit bekerja sesuai dengan harapan.
Catatan : Jika masih ada waktu tersisa, Anda mungkin ingin menambahkan ke
Deposit untuk pengecekan lebih lanjut untuk memastikan parameter
desimal yang dilewatkan tidak bernilai negatif

Untuk menambahkan method Withdraw ke class BankAccount


1. Tambahkan method bersifat public non-static yang disebut Withdraw to ke
class BankAccount, seperti kode di bawah nanti. Method ini akan meminta
parameter desimal yang menentukan jumlah dari pengambilan. Parameter ini
akan memotong jumlah dari balance jika tersedia dana yang diperlukan,
karena Account tidak diijinkan untuk mengambil melebihi batas. Parameter ini
akan mengembalikan nilai bolean yang memeberi indikasi apakah pengambilan
telah berhasil dilakukan.
class BankAccount
{
...
public bool Withdraw(decimal amount)
{
bool sufficientFunds = accBal >= amount;
if (sufficientFunds) {
accBal -= amount;
}
return sufficientFunds;
}
...
}

2. Tambahkan method public static yaitu TestWithdraw ke class CreateAccount,


seperti yang ditunjukan di bawah nanti. Method ini akan mengembalikan void
dan akan meminta parameter BankAccount. Method akan memandu konsol
untuk membuat user memasukkan jumlah dalam desimal kemudian memanggil
method Withdraw pada parameter BankAccount, melewatkan jumlah sebagai
sebuah argument. Method akan menanggkap hasil bolean yang dikembalikan
oleh Withdraw dan memberikan pesan ke konsol jika penarikan mengalami
kegagalan.
class CreateAccount
{
...
public static void TestWithdraw(BankAccount acc)

{
Console.Write("Enter amount to withdraw: ");
decimal amount = decimal.Parse(Console.ReadLine());
if (!acc.Withdraw(amount)) {
Console.WriteLine("Insufficient funds.");
}
}
...
}

3. Tambahkan ke kalimat CreateAccount.Main yang memanggil TestWithdraw


yang baru saja dibuat seperti kode berikut. Pastikan bahwa anda memanggil
TestWithdraw
untuk
kedua
objek
account.
gunakan
method
CreateAccount.Write untuk menampilkan account setelah terjadi penarikan.
class CreateAccount
{
static void Main( )
{
BankAccount berts = NewBankAccount( );
Write(berts);
TestDeposit(berts);
Write(berts);
TestWithdraw(berts);
Write(berts);
BankAccount freds = NewBankAccount( );
Write(freds);
TestDeposit(freds);
Write(freds);
TestWithdraw(freds);
Write(freds);
}
}

4. Simpan hasil kerja Anda.


5. Lakukan proses compile program dan benahi kesalahan yang ada. Jalankan
program. Pastikan penarikan bekerja sesuai dengan harapan. Uji coba
penarikan yang berhasil dan gagal.

Berikut hasil capture program :

PERTANYAAN PEMAHAMAN
1. Apakah perbedaan antara abstract class dengan concrete class.
2. Apakah yang dimaksud dengan access modifier dan kemukakan berbagai jenis access
modfier yang terdapat pada C# berserta penjelasannya

MODUL 7.1 : MENDEFINISIKAN DAN MENGGUNAKAN


VARIABEL BERTIPE REFERENCE
Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk
Membuat variabel referensi dan melewatkannya sebagai parameter method
Menggunakan framework sistem

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Membuat dan menggunakan class
Memanggil method dan melewatkan parameter
Menggunakan array

WAKTU : 45 menit

LATIHAN 1 : MENAMBAHKAN SEBUAH METHOD INSTANCE DENGAN DUA PARAMETER


Pada Bab 6 , Anda mengembangkan class BankAccount. Pada latihan ini, Anda akan
menggunakannya lagi class tersebut dan menambahkan method instance baru disebut
TransferFrom, yang akan mentransfer uang dari account tertentu ke salah satu account.

Untuk membuat method TransferFrom


1. Buka project Bank.sln pada folder HOL SOLUTION\BAB 7\STARTER.
2. Ubah class BankAccount seperti berikut :
a. Buatlah method instance bersifat public yaitu TransferForm pada class
BankAccount.
b. Parameter pertama direferensikan ke object BankAccount lainnya, yaitu
accForm berasal dari uang yang akan ditransfer.
c. Parameter kedua adalah nilai desimal yaitu amount dilewatkan dengan
nilai dan menunjukan jumlah uang yang ditransfer.
d. Method ini tidak mengembalikan suatu nilai
3. Pada batang utama TransferForm, tambahkan dua kalimat yang mampu
melakukan tugas berikut :
a. Debit amount dari saldo dari accForm (dengan menggunakan
Withdraw)
b. Menguji apakah proses penarikan dilakukan berhasil. Jika berhasil,
credit amount ke saldo dari account saat ini (dengan menggunakan
Deposit)
Class BankAccount akan seperti berikut :
class BankAccount
{
... additional code omitted for clarity ...
public void TransferFrom(BankAccount accFrom, decimal amount)
{
if (accFrom.Withdraw(amount))
this.Deposit(amount);
}
}

Untuk menguji method TransferFrom


1. Tambahkan file Coba.cs ke project saat ini.
2. Tambahkan class berikut ke file tersebut. Ini untuk menguji.
using System;
public class Coba
{
public static void Main()
{
}
}

3. Pada method Main, tambahkan kode untuk membuat object BankAccount,


setiap memiliki saldo awal $100. (Gunakan method Populate.)
4. Tambahkan kode untuk menampilkan tipe, angka account, dan saldo saat ini
dari setiap account.
5. Tambahkan kode untuk memanggil TransferFrom dan memindahkan $10 dari
satu account ke account lainnya.
6. Tambahkan kode untuk menampilkan dari saldo saat ini setelah transfer.
Class Coba akan menjadi seperti berikut:
public static void Main( )
{
BankAccount b1 = new BankAccount( );
b1.Populate(100);
BankAccount b2 = new BankAccount( );
b2.Populate(100);
Console.WriteLine("Before transfer");
Console.WriteLine("{0}
{1}
{2}",
b1.Type(
b1.Balance( ));
Console.WriteLine("{0}
{1}
{2}",
b2.Type(
b2.Balance( ));

),

b1.Number(

),

),

b2.Number(

),

b1.Type(

),

b1.Number(

),

b2.Type(

),

b2.Number(

),

b1.TransferFrom(b2, 10);
Console.WriteLine("After transfer");
Console.WriteLine("{0}
{1}
{2}",
b1.Balance( ));
Console.WriteLine("{0}
{1}
{2}",
b2.Balance( ));
}

7. Simpan hasil kerja Anda.


8. Lakukan proses compile dan benahi kesalahan yang ada. Jalankan dan uji
program.
Berikut hasil program :

LATIHAN 2 : MEMBALIK SEBUAH STRING


Pada bab 4, Anda telah mengembangkan class Guna yang berisi berbagai macam
method kelengkapan.
Pada latihan kali ini, Anda akan menambahkan sebuah method static baru disebut
Pembalik ke class Guna. Method ini akan mengambil sebuah string dan mengembalikan
nilai string baru dengan posisi karakter yang Pembalik .

Untuk membuat method Pembalik


1. Buka project Guna.sln pada folder HOL SOLUTION\BAB 7\STARTER.
2. Tambahkan method bersifat public dan static disebut Pembalik
ke class
Guna, sebagai berikut :
a. Memiliki parameter tunggal yaitu s yang mereferensikan ke string
b. Method memiliki tipe pengembalian nilai void.
3. Pada method Pembalik, buatlah variabel string disebut sBalik untuk
menangkap nilai string hasil pengembalian. Inisialisasikan string menjadi
4. Untuk membuat string menjadi Pembalik :
a. Tulislah sebuah untuk mengambil sebuah karakter pada satu waktu
dari s. Dimulai dengan pada akhir (gunakan property Length), dan
bekerja secara mundur ke awal dari string. Anda bisa
menggunakan penulisan array ([ ]) untuk memeriksa karakter
satuan pada sebuah string.
Tip : Karakter terakhir pada sebuah string pada posisi Length -1.
Karakter pertama berada posisi 0
b. Tahan karakter tersebut pada akhir dari sBalik.
Class Guna mungkin akan jadi seperti berikut :
class Guna
{
... method lainnya ditiadakan untuk memudahkan...
//
// Membalik sebuah string
//
public static void Pembalik(ref string s)
{
string sBalik = "";
for (int k = s.Length 1; k >= 0 ; k--)
sBalik = sBalik + s[k];
// Mengembalikan hasil ke caller
s = sBalik;
}
}

Untuk menguji method Pembalik


1. Tambahkan file Coba.cs ke project saat ini
2. Tambahkan class berikut ke file tersebut. Ini untuk menguji ketepatan..
namespace Guna
{
using System;
public class Coba
{
public static void Main()
{
}
}

3.
4.
5.
6.

Pada method Main, buatlah sebuah variabel string.


Baca sebuah nilai ke variabel string dengan menggunakan Console.ReadLine
Lewatkan string ke Pembalik . Jangan lupa kata kunci ref.
Displaykan nilai yang dikembalikan oleh Pembalik .
Class Coba akan berisi seperti berikut:
static void Main( )
{
string pesan;
// Mengambil sebuah input string
Console.WriteLine("Masukkan sebuah string untuk dibalik ");
pesan = Console.ReadLine( );
// Membalikkan string
Guna.Pembalik(ref pesan);
// Menampilkan hasil
Console.WriteLine(pesan);
}

7. Simpan hasil kerja Anda.


8. Lakukan proses compile dan benahi kesalahan yang ada. Jalankan dan uji
program
Berikut hasil capture :

LATIHAN 3 : MEMBUAT SEBUAH SALINAN HURUF BESAR DARI SEBUAH FILE


Pada latihan kali ini, Anda akan membuat program yang memandu user untuk nama
dari sebuah file teks. Program tersebut akan memeriksa apakah file benar-benar ada,
menampilkan pesan dan keluar apabila ternyata file tersebut tidak ada. File ini akan
dibuka dan disalin ke file lainnya (memandu user untuk nama file), tapi dengan setiap
karakter diubah menjadi huruf kapital.
Sebelum dimulai, Nda perlu melihat terlebih dahulu dokumentasi untuk System.IO pada
dokumen .NET Framework SDK Help. Lebih khusus, silakan pelajari pada dokumentasi
untuk class StreamReader dan StreamWriter.

Untuk membuat aplikasi penyalin-file


1. Buka project SalinFileKapital.sln pada folder HOL SOLUTION\BAB 7\STARTER
2. Ubah class SalinFileKapital dan tambahkan sebuah kalimat using untuk
namespace System.IO.
3. Pada method Main, deklarasikan dua varibel string yaitu sDari and sKe untuk
menahan input dan output nama file.
4. Deklarasikan sebuah variabel bertipe StreamReader yaitu srDari. Variabel ini
akan menahan referensi ke file input
5. Deklarasikan sebuah variabel bertipe StreamReader yaitu srKe. Variabel ini
akan menahan referensi ke stream output.
6. Buatlah perintah yang memandu ke nama untuk file input, membaca nama,
dan menyimpannya ke variabel string sDari.
7. Buatlah perintah yang memandu ke nama untuk file output, membaca nama,
dan menyimpannya ke variabel string sKe
8. Operasi I/O yang akan Anda gunkan bisa menangkap exception, sehingga
awali
dengan
sebuah
blok
trycatch
yang
bisa
menangkap
FileNotFoundException (untuk file yang tidak ada) dan Exception (untuk
exception lainnya). Displaykan pesan yang tepat untuk setiap exception.
9. Pada blok try, buatlah sebuah objek StreamReader dengan menggunakan
nama file input dalam sDari, dan menyimpannya dalam variabel referensi
StreamReader srDari.
10. Sama seperti sebelumnya, buatlah sebuah objek baru StreamWriter dengan
menggunakan nama file input dalam sKe, dan menyimpannya dalam variabel
referensi StreamWriter swKe
11. Tambahkan sebuah kalang while yang berulang jika method Puncak dari input
stream tidak mengembalikan -1. Di dalam loop :
a. Gunakan method ReadLine pada input stream untuk membaca baris
berikutnya dari input menjadi variabel string yaitu sBuffer.
b. Pergunakan method KeKapital pada sBuffer.
c. Gunakan method WriteLine untuk mengirimkan sBuffer ke output stream.
12. Setelah kalang selesai, tutup input dan output stream

13. File SalinFileKapital.cs akan seperti akan berikut :


using System;
using System.IO;
class SalinFileKapital
{
static void Main( )
{
string sDari, sKe;
StreamReader srDari;
StreamWriter swKe;
// Untuk nama file input
Console.Write("Salin dari:");
sDari = Console.ReadLine( );
// Untuk nama file output
Console.Write("Salin ke :");
sKe = Console.ReadLine( );
Console.WriteLine("Salin dari {0} to {1}", sDari, sKe);
try
{
srDari = new StreamReader(sDari);
swKe = new StreamWriter(sKe);
while (srDari.Puncak( )!=-1)
{
string sBuffer = srDari.ReadLine( );
sBuffer = sBuffer.KeKapital( );
swKe.WriteLine(sBuffer);
}
swKe.Close( );
srDari.Close( );
}
catch (FileNotFoundException)
{
Console.WriteLine("File input tidak ditemukan");
}
catch (Exception e)
{
Console.WriteLine("Exception tidak diharapkan");
Console.WriteLine(e.ToString( ));
}
}
}

14. Simpan hasil kerja Anda dan benahi kesalahan yang muncul.

Untuk menguji program


1. Buka jendela command dan masuk ke folder
2. Eksekusi SalinFileKapital
3. Ketika diminta, tentukan nama file sumber drive:\path\SalinFileKapital (ini file
sumber yang baru Anda buat)
4. Tentukan file tujuan dari Coba.cs.
5. Ketika program selesai, gunakan text editor untuk memeriksa file Coba.cs.
Maka akan berisi salinan dari source code anda dalam huruf capital.

Berikut hasil capture running program

Maka Test.cs akan menampilkan SalinFileKapital.cs dalam bentuk Kapital

BAB 7.2: MENGUBAH DATA


Materi
Setelah menyelesaikan latihan ini , Anda akan mampu untuk
Mengubah nilai dari satu tipe referensi ke tyipe lain.
Menguji apakah sebuah variabel referensi mendukung interface yang diberikan.

Persyaratan
Sebelum mengerjakan latihan ini, Anda harus memahami:
Konsep dari pemrograman berorentasi objek
Membuat class
Mendefiniskan method

WAKTU : 30 menit

LATIHAN 1 : MENGUJI IMPLEMENTASI DARI SEBUAH INTERFACE


Pada latihan kali ini Anda akan menambah sebuah method static disebut IsItFormattable
ke class Utils mirip dengan class Guna yang Anda buat pada bab 4.
Method IsItFormattable mengambil satu dari type object dan menguji apakah parameter
mengimplementasikan interface System.IFormattable. Jika object tidak memiliki interface
ini, maka method akan mengembalikan true. Selain itu maka akan mengembalikan false.
Sebuah class mengimplementasikan interface System.IFormattable untuk mengembalikan
sebuah string yang merepresentasikan sebuah instance dari sebuah class. Berdasarkan
tipenya seperti int dan ulong mengimplemantasikan interface ini (setelah nilai
dikelompokkan). Banyak type referensi, misalnya string tidak mengimplementasikan. Tipe
user-defined
bisa
mengimplementasikan
interface
jika
pihak
pengembang
mensyaratkannya. Untuk informasi tentang interface ini, konsultasikan dengan
dokumentasi .NET Framework SDK Help.
Anda akan membuat sebuah kode percobaan yang akan memanggil method
IsItFormattable dengan argument dari tipe yang berbeda dan menampilkan hasilnya di
layar.

Untuk membuat method IsItFormattable


1. Buka project InterfaceTest.sln pada folder HOL SOLUTION\BAB 7\STARTER.
2. Ubah class Utils sebagai berikut:
a. Buatlah sebuah mehod disebut IsItFormattable pada class Utils.
b. Method ini mengambil sebuah parameter disebut x dari tipe object yang
dilewatkan berdasarkan nilainya. Method akan mengembalikan sebuah
bolean
c. Gunkan operator is untuk menentukan apakah objek yang dilewatkan
mendukung interface System.IFormattable. Jika benar, maka akan
mengembalikan nilai true; yang selainnya akan mengembalikan false.
Method selengkapnya akan seperti berikut:
using System;
...
class Utils
{

public static bool IsItFormattable(object x)


{
if (x is IFormattable)
return true;
else
return false;
}
}

Untuk menguji method IsItFormattable


1. Ubah file class Test.
2. Pada method Main, deklarasikan dan inisialisasikan variabel bertipe int, ulong,
dan string.
3. Lewatkan setiap variabel ke Utils.IsItFormattable(), dan Displayakn hasil dari
setiap pemanggilan.
4. Class Utils mungkin akan sebagai berikut :
using System;
public class Test
{
static void Main( )
{
int i = 0;
ulong ul = 0;
string s = "Test";
Console.WriteLine("int: {0}", Utils.IsItFormattable(i));
Console.WriteLine("ulong: {0}", Utils.IsItFormattable(ul));
Console.WriteLine("String: {0}", Utils.IsItFormattable(s));
}
}

5. Lakukan compile dan uji kode tersebut. Anda akan melihat nilai true untuk
nilai int dan ulong, sedangkan false untuk nilai string.
Berikut hasil capture program :

LATIHAN 2 : BEKERJA DENGAN INTERFACE


Pada latihan kali ini, Anda akan membuat sevauah method Display yang akan
menggunakan operator as untuk menentukan apakah objek yang dilewatkan sebagai
parameter pendukung sebagai interface user-defined yaitu IPrintable dan memanggil
method yang interface nya mendukung.

Untuk membuat method Display


1. Buka project TestDisplay.sln pada folder HOL SOLUTION\BAB 7\STARTER.
Kode awal memasukkan definisi untuk sebuah interface yang disebut
IPrintable, yang berisi method Print. Sebuah class yang mengimplementasikan
interface ini seharusnya menggunakan method Print untuk menampilkan nilai
yang ada dalam object ke konsol. Selain itu pada file kode awal juga akan
didefinisikan sebuah class Coordinate yang mengimplementasikan interface
IPrintable.
Objek Coordinate menahan sepasang angka yang bisa menentukan posisi
dalam ruang dua dimensi. Anda tidak perlu memahami detail kerja class
Coordinate bekerja (walaupun Anda mungkin ingin melihatnya). Yang Anda
perlu tahu adalah class tersebut mengimplementasikan interface IPrintable dan
Anda bisa menggunakan method Print untuk menampilkan isinya.
2. Ubah class Guna sebagai berikut :
a. Tambahkan method void bersifat public static Display pada class Utils.
Method ini akan mengambil satu parameter, yaitu barang (sebuah object
diteruskan berdasarkan nilai)
b. Pada Display deklarasikan sebuah variabel interface it dari tipe IPrintable
c. Ubah referensi pada parameter barang ke referensi untuk interface
IPrintable yang menggunakan operator as. Simpan hasilnya pada it.
d. Jika nilai dari it tidak null, gunakan interface IPrintable untuk memanggil
Print. Jika nilainya nul, objek tidak mendukung untuk interface. Pada kasus
ini gunakan ConsoleWriteLine untuk menampilkan hasil dari method
ToString secara langsung pada parameter.
Method selengkapnya adalah sebagai berikut:
public static void Display(object barang)
{
IPrintable it;
it = (item as IPrintable);
if (it != null)
it.Print( );
else
Console.WriteLine(item.ToString( ));
}

Untuk mencoba method Display


1. Didalam method Main pada class Coba, buat sebuah variabel bertipe int,
sebuah variabel bertipe string, dan sebuah variabel bertipe Coordinate. Untuk
menginisialisasikan variabel Coordinate, Anda bisa menggunakan konstruktor
berparameter dua:
Coordinate c = new Coordinate(21.0, 68.0);
2. Lewatkan variabel tersebut, kebalikannya, pada Guna.Display untuk
menampilkannya keluar.
3. Kodenya akan sebagai berikut :
namespace Utils
{
using System;
/// <summary>
///
This the test harness
/// </summary>
public class Test
{
public static void Main()
{
int num = 65;
string msg = "A String";
Coordinate c = new Coordinate(21.0, 68.0);
Utils.Display(num);
Utils.Display(msg);
Utils.Display(c);
Console.ReadLine();
}
}
}

4. Lakukan compile dan uji coba program.


Berikut ini hasil capture program

PERTANYAAN PEMAHAMAN
1. Apakah keunggulan dan kelemahan menggunakan interface dibanding menggunakan
pewarisan.
2. Buat sebuah tabel perbedaan antara tipe data valiue dan reference plus keunggulan
dan kekurangannya.

Anda mungkin juga menyukai