Anda di halaman 1dari 14

LAPORAN PRAKTIKUM

PEMROGRAMAN
BERORIENTASI OBJEK
(TIF 201P)

Modul 5: Membuat dan Menggunakan Array


Nama : Nanang Makfi Mubarok
NIM : 38411
Tanggal Praktikum : 13 November 2013


TEKNIK ELEKTRO & TEKNOLOGI INFORMASI
FAKULTAS TEKNIK UGM
2013



I. PENDAHULUAN
A. Tujuan
Mampu untuk membuat dan menggunakan array dari tipe nilai
Mampu untuk melemparkan argument ke Main
Mampu untuk membuat dan menggunakan array berukuran terkomputasi
Mampu untuk menggunakan array dengan berbagai kegunaan
B. Dasar Teori
Array adalah sekumpulan variabel yang memiliki tipe data yang sama dan
dinyatakan dengan nama yang sama. Array merupakan konsep yang penting dalam
pemrograman, karena array memungkinkan untuk menyimpan data maupun referensi
objek dalam jumlah banyak dan terindeks. Array menggunakan indeks integer untuk
menentukan urutan elemen-elemennya, dimana elemen pertamanya dimulai dari
indeks 0,elemen kedua memiliki indeks 1, dan seterusnya.
Mendeklarasikan variabel array dengan tipe data yang diinginkan yaitu dengan
cara yang sama dengan mendeklarasikan variabel biasa. Bentuk umumnya adalah
sebagai berikut:
Tipe_data nama_array[jumlah_maks_data];
Contoh: int Nilai[5];
Macam-macam dari array adalah sebagai berikut:
Array Satu Dimensi
Array satu dimensi adalah suatu array yang terdiri dari 1 subskrip array, yaitu
jumlah data maksimum.
Bentuk umum:
Tipe_data nama_array[jumlah_maks_data];
Contoh :
int Nilai[5];
Array Dua Dimensi
Array dua dimensi adalah suatu array yang terdiri dari 2 subskrip, yaitu jumlah
elemen baris dan jumlah elemen kolom.
Bentuknya dapat berupa matriks atau tabel.
Deklarasi array :
Tipe_array nama_array[baris][kolom];
Contoh:
Int X[1][2]=10;
Array Multidimensi
Array multidimensi adalah suatu array yang mempunyai subskrip lebih dari dua.
Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array
dimensi dua.
Bentuk umumnya yaitu :
tipe_array nama_array[ukuran1][ukuran2][ukuranN];
Contoh:
float X[2][4][3];

Matriks adalah sekumpulan bilangan yang disusun secara baris dan kolom dan
ditempatkan pada kurung biasa atau kurung siku.
Penulisan matriks:

atau

Ordo suatu matriks adalah bilangan yang menunjukkan banyaknya baris (m) dan
banyaknya kolom (n).
Matriks di atas berordo 3x2.





























II. PEMBAHASAN
A. Analisis Hasil Praktikum
Latihan 1 : Menggunakan Array Tipe Nilai
Untuk menangkap nama dari file teks sebagai parameter pada method Main
class DetilFile
{
static void Main(string[] args)
{
//menerima masukan string dan menghitung panjangnya
Console.WriteLine(args.Length);
//menampilkan setiap string dalam array args
foreach(string arg in args)
{
Console.WriteLine(arg);
}
}
}
Pada program di atas cara kerjanya adalah setiap masukan dari pengguna akan
dimasukkan kedalam array dan pada tampilan console tersebut akan ditampilkan
panjang array beserta isinya. Jika tidak ada masukan maka nilai defaulnya adalah
null (0).
Untuk membaca dari file teks menjadi sebuah array
class DetilFile
{
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);

}
}
Pada program diatas cara kerjanya adalah membaca setiap karakter masukan
suatu file dan akan dimasukkan kedalam array. Pada program diatas tidak
menampilkan isi dari array karena belum ada perintah untuk menampilkan
datanya. Pada program diatas method rangkuman belum diinisialisasi sehingga
data tidak ditampilkan tetapi hanya dibaca. Jika program diatas ditambahkan kode
Console.Writeline maka program diatas akan menampilkan selutruh isi file yang
dibaca.
Untuk menentukan dan merangkum isi dari file
class DetilFile
{
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);

}

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();
}
}
Pada program diatas adalah lanjutan dari program sebelumnya dengan
tambahan method Rangkuman yang berfungsi untuk menghitung jumlah karakter
yang ada pada suatu file yang dieksekusi, jumlah huruf vokal, konsonan dan
jumlah barisnya (pada percobaan ini menggunakan DetilFile.cs). Cara kerja dari
method ini adalah dengan menggunakan properti Length untuk mendapatkan
jumlah karakter. Sedangkan untuk mendapatkan total huruf vokal dan konsonan
yaitu dengan membedakan eksekusi yang akan dilakukan. Jika hurufnya adalah
AIUEOaiueo, maka huruf tersebut dihitung huruf vokal. Untuk menyeleksi hanya
karakter huruf saja yang dihitung, maka menggunakan perintah char.IsLetter.

Latihan 2 : Matriks Perkalian
Untuk mengalikan dua buah matrik
static void Main()
{
//deklarasi array dua dimensi matrik a[2x2] dengan nilai static tiap
elemennya
int[,] a = new int[2,2];
a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
//deklarasi array dua dimensi matrik a[2x2] dengan nilai static tiap
elemennya
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
//perkalian tiap elemen matrik a dengan elemen matrik b
//yang disesuaikan dengan hukum perkalian matrik
int[,] hasil = new int[2,2];
hasil[0, 0] = a[0, 0] * b[0, 0] + a[0, 1] * b[1, 0];
hasil[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] * b[1, 1];
hasil[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] * b[1, 0];
hasil[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] * b[1, 1];
//menampilkan hasil perkalian tiap elemen matrik
Console.WriteLine(hasil[0, 0]);
Console.WriteLine(hasil[0, 1]);
Console.WriteLine(hasil[1, 0]);
Console.WriteLine(hasil[1, 1]);
Console.ReadLine();
}
Pada program diatas adalah program yang berfungsi untuk mengalikan dua
buah matrik 2 dimensi yang telah diinisialisasikan sebelumnya pada array a dan
array b.
Untuk membuat output dari hasil dengan menggunakan method dengam
parameter array
static void Main()
{
//deklarasi array dua dimensi matrik a[2x2] dengan nilai static tiap
elemennya
int[,] a = new int[2,2];
a[0, 0] = 1; a[0, 1] = 2;
a[1, 0] = 3; a[1, 1] = 4;
//deklarasi array dua dimensi matrik a[2x2] dengan nilai static tiap
elemennya
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
//perkalian tiap elemen matrik a dengan elemen matrik b
//yang disesuaikan dengan hukum perkalian matrik
int[,] hasil = new int[2,2];
hasil[0, 0] = a[0, 0] * b[0, 0] + a[0, 1] * b[1, 0];
hasil[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] * b[1, 1];
hasil[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] * b[1, 0];
hasil[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] * b[1, 1];
output(hasil);
}
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();
}
Pada program diatas sama seperti program sebelumnya namun output
dipisahkan menggunakan method yang berbeda yaitu method output.
Pada isi method tersebut dapat disederhanakan dengan menggunakan kode
looping for. Kode pengganti dari method output adalah sebagai berikut:
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();
}
Console.Readline();
}
Pada kode method diatas cara kerjanya adalah untuk setiap baris = 0 dilakukan
hasil dua kali yaitu pada column 0 dan column 1. Penulisan yang dilakukan
adalah dengan menggunakan Console.Write dan hasil yang didapat adalah output
yang berjajar pada baris 0. Sehingga tampilan akan seperti bentuk matrik.
Pada program di atas hanya menggunakan perkalian matrik 2x2. Selanjutnya
akan dilakukan percobaan menggunakan perkalian yang tidak hanya 2x2
melainkan semua dimensi mtarik. Berikut adalah kodenya:
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();
}
Console.ReadLine();
}
Pada program di atas merupakan perubahan bagian dari program sebelumnya
yaitu dapat melakukan melakukan perkalian lebih dari 2x2. Pada program
tersebut nilai perulangan yang dilakukan selama r dan c kurang dari dimensi array
hasil.
Untuk menghitung hasil dalam sebuah method dan mengembalikannya
static int[,] Perkalian(int[,] a, int[,] b)
{
int[,] hasil = new int[2, 2];
hasil[0, 0] = a[0, 0] * b[0, 0] + a[0, 1] * b[1, 0];
hasil[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] * b[1, 1];
hasil[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] * b[1, 0];
hasil[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] * b[1, 1];
return hasil;
}
Pada method di atas adalah method tambahan yang bernama Perkalian yang
isinya hanyalah source code yang sebelumnya ada di method Main, lalu
dipisahkan secara terpisah menggunakan method Perkalian. Sedangkan pada
method Main untuk mengakses kode tersebut ditambahkan kode untuk
mengakses ke method Perkalian. Berikut kodenya:
int[,] hasil = Perkalian(a,b);
Untuk menghitung hasil dalam sebuah method dengan menggunakan
kalimat pemrograman
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;
}
Pada kode method di atas adalah penyederhanaan dari kode sebelumnya yang
fungsinya sama yaitu perkalian dengan menggunakan metode perulangan atau
lebih dikenal dengan istilah nested loop. Cara kerja dari kode tersebut adalah
dalam kasus tersebut menggunakan matrik dua dimensi, maka terdiri dari 2 baris
dan 2 kolom. Pada baris pertama (0) dilakukan 2x perulangan yaitu pada kolom
pertama (0) dan kolom kedua (1). Lalu baru masuk ke baris kedua (1) dengan
perulangan sama seperti sebelumnya. Hal ini cara kerjanya sama dengan metode
perkalian sebelumnya.
Untuk memasukkan matrik pertama dari konsol
class PerkalianMatrik
{
static void Main(string[] args)
{
int[,] a = new int[2, 2];
a=Input(a);
Console.WriteLine();
int[,] b = new int[2, 2];
b[0, 0] = 5; b[0, 1] = 6;
b[1, 0] = 7; b[1, 1] = 8;
int[,] hasil = Perkalian(a,b);
Output(hasil);
}

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();
}
Console.ReadLine();
}

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;
}

static int[,] 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();
return dst;
}
}
Pada program diatas terdapat penggantian metode yaitu inisialisasi array a
diganti dengan inputan dari pengguna dengan menggunakan kode berikut:
int[,] a = new int[2, 2];
a=Input(a);
Kemudian terdapat method baru untuk proses input dari penggunanya yaitu
method Input.
Untuk memasukkan matrik kedua dari konsol
Pada program ini sama seperti program sebelumnya, namun inisialisasi array b
diganti dengan masukan dari pengguna. Kode penggantinya adalah sebagai
berikut:
int[,] b = new int[2, 2];
b = Input(b);
Pada inisialisasi array b juga menggunakan method Input untuk memasukkan data
dari pengguna

B. Jawaban Pertanyaan
1. Buatlah sebuah class yang merupakan class dengan dukungan matrik 2x2 dan dapat
melakukan perhitungan determinan?
class Determinan
{
static int HitDeter(int[,] y)
{
int hitung = y[0,0]*y[1,1] y[0,1]*y[1,0];
return hitung;
}
}
2. Gunakan konsep interface atau inheritance untuk menurunkan class yang dibuat
pada poin satu untuk mendukung perhitungan matrik 3x3?
class DeterminanTur : Determinan
{
static int HitDeter(int[,] y)
{
int hitung = y[0,0]*y[1,1] *y[2,2] + y[0,1]*y[1,2]*y[2,0] +
y[0,2]*y[1,0]*y[2,1] y[0,2]*y[1,1]*y[2,0]
y[0,0]*y[1,2]*y[2,1] y[0,1]*y[1,0]*y[2,2];
return hitung;
}
}









III. PENUTUP
Kesinpulan:
Array adalah sekumpulan variabel yang memiliki tipe data yang sama dan
dinyatakan dengan nama yang sama.
Method yang memberikan keluaran array dapat meminta variabel sebagai
parameter dan dapat meminta array lain sebagai masukan
Nested loop menggunakan perulangan for adalah perulangan paling ideal yang
digunakan untuk mengisi array.
FileStream dan StreamReader digunakan untuk mengakses dan membaca suatu
file.

IV. DAFTAR PUSTAKA
- Nurul, Dwi. Pengertian Array dan Contoh Program Array.
http://belajarpemrograman-programmer.blogspot.com/2012/03/pengertian-array-
contoh-program-array.html diakses tanggal 19 November 2013
- Pradono, Bimo Adi. 2001. Pemrograman Berorientasi Objek Dengan Bahasa C#
Part 5. http://www.scribd.com/doc/74437222/Pemrograman-Berorientasi-Objek-
Dengan-Bahasa-C-Part-5 diakses tanggal 19 November 2013
- Yofiyanto, Evan. Fungsi & Array : Macam-macam Array.
http://kuliahinformatika.wordpress.com/2009/12/07/fungsi-array-macam-macam-
array/ diakses tanggal 19 November 2013
- Anonim. Matriks.
http://id.wikibooks.org/wiki/Subjek:Matematika/Materi:Matriks diakses tanggal 19
November 2013



















V. LAMPIRAN
Latihan 1 : Menggunakan Array Tipe Nilai





Latihan 2 : Matriks Perkalian