Anda di halaman 1dari 18

BAB I PENDAHULUAN

Tujuan Praktikum
o o o o Mampu membuat dan menggunakan array dan tipe nilai Mampu mengoper argumen ke Main Mampu Membuat dan menggunakan array berukuran terkomputasi Mampu Menggunakan array dengan berbagai kegunaan

Teori Pengantar
Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan, serta bertipe data sama. Nilai indeks untuk sebuah array diawali dari nol, sehingga suatu array dengan n elemen akan diindeks dari 0 hingga n-1. Elemen dari sebuah array bisa berupa variabel apa saja (bisa juga berisi array). Array merupakan reference type, yaitu tipe data hanya bisa diakses melalui referensi (nilai yang mengizinkan program untuk mengakses suatu data item secara tidak langsung). Nilai default dari elemen array adalah nol (null). Tipe-tipe array: Single-dimensional array adalah tipe array yang linear. Array yang dengan konsep satu tumpukan variabel atau tabel dan hanya memiliki satu kolom. Multidimensional array adalah array yang lebih dari 1 dimensi. Memiliki 2 atau lebih kolom. Variabel dapat dimasukkan ke dalam sel yang dimiliki tiap tabel. Jagged array merupakan array yang elemennya berupa array. Dengan kata lain, elemennnya masih memiliki ruang untuk diisi variabel. Untuk mendeklarasikan array dalam suatu kelas, contohnya adalah sebagai berikut:
// contoh deklarasi single-dimensional array int[] array = new int[5]; // cara deklarasi sambil memasukkan nilai untuk elemen array int[] array = new int[] { 1, 3, 5, 7, 9 }; // contoh deklarasi multidimensional array int[,] multiDimensionalArray = new int[2, 3]; // mendeklarasikan sambil memasukkan nilai dalam dua dimensi int[,] multiDimensionalArray = { { 1, 2, 3 }, { 4, 5, 6 } }; // mendeklarasikan jagged array int[][] jaggedArray = new int[6][]; // mengisi elemen array[0], array pertama jaggedArray[0] = new int[4] { 1, 2, 3, 4 };

Bimo Adi Pradono 31045

www.digizoneku.com

BAB II PEMBAHASAN
I. MENGGUNAKAN ARRAY TIPE NILAI
I.1 Menangkap nama dari file teks sebagai parameter pada method main Inti dari program ini adalah mengambil masukan dari console, menghitung panjang array-nya dan menampilkan kembali masukannya. Panjang array-nya akan terlihat di baris pertama, kemudian pada baris kedua dan seterusnya akan tampak elemen-elemen penyusunnya. Jika tanpa input, maka nilai default keluarannya adalah null (0). ___________ Source Code ___________
using System; using System.IO; // Console // FileStream, FileReader

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

___________ Run Program ___________

Bimo Adi Pradono 31045

www.digizoneku.com

I. 2 Menentukan dan merangkum isi dari file Program ini mampu membaca file teks, menghitung jumlah karakter yang ada di dalam file-nya, jumlah huruf vokal, konsonan, dan jumlah barisnya. ___________ Source Code ___________
using System; using System.IO; // Console // FileStream, FileReader

class DetilFile { //method pembaca vokal, konsonan dan baris static void Rangkuman(char[] isi) { //memberi nilai 0 pada ketiga variabel int Vokal = 0, Konsonan = 0, Baris = 0; //membaca tiap masukan foreach (char sekarang in isi) { //membaca huruf if (char.IsLetter(sekarang)) { //membedakan perhitungan huruf vokal dan konsonan if ("AEIOUaeiou".IndexOf(sekarang) != -1) { Vokal++; } else { Konsonan++; } } //membaca baris baru else if (sekarang == '\n') { Baris++; } }

Bimo Adi Pradono 31045

www.digizoneku.com

//menampilkan hasil pembacaan Console.WriteLine("Jumlah total Console.WriteLine("Jumlah total Console.WriteLine("Jumlah total Console.WriteLine("Jumlah total Console.ReadLine(); }

karakter : {0}", isi.Length); vokal : {0}", Vokal); konsonan : {0}", Konsonan); baris : {0}", Baris);

//method utama static void Main(string[] args) { string Program = args[0]; //mengkonversi file menjadi stream FileStream stream = new FileStream(Program, FileMode.Open); StreamReader Pembaca = new StreamReader(stream); //menyimpan isi teks int ukuran = (int)stream.Length; char[] isi = new char[ukuran]; //membaca stream for (int i = 0; i < ukuran; i++) { isi[i] = (char)Pembaca.Read(); } //menutup stream Pembaca.Close(); //memanggil method Rangkuman dengan 'isi' sebagai parameter //perhitungan dilakukan di sini Rangkuman(isi); Console.WriteLine(args.Length); foreach (string arg in args) { Console.WriteLine(arg); } } }

___________ Run Program ___________

Bimo Adi Pradono 31045

www.digizoneku.com

II. MATRIK PERKALIAN


II.1 Mengalikan dua buah matrik Program ini adalah proses untuk perkalian matrik dengan input 2 matrik yang memiliki nilai static yang sudah ditulis di dalam program (tidak memperoleh input dari keyboard). ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik { static void Main(string[] args) { //deklarasi array dua dimensi (matrik a) //matrik a[2x2] dengan nilai static untuk 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 b) //matrik b[2x2] dengan nilai static untuk 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 dari tiap elemen matrik Console.WriteLine(hasil[0, 0]); Console.WriteLine(hasil[0, 1]); Console.WriteLine(hasil[1, 0]); Console.WriteLine(hasil[1, 1]); } } }

___________ Run Program ___________

Bimo Adi Pradono 31045

www.digizoneku.com

II.2 Membuat output dari hasil dengan menggunakan method dengan parameter array Program ini hanya mengganti kode dari WriteLine untuk menulis hasilnya. Hasil keluaran dalam program ini masih sama dengan sebelumnya. Untuk lebih jelasnya, ikuti penjelasan berikut: ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik { //method untuk mendeklarasikan matrik dan perkaliannya static void Main(string[] args) { --- Scriptnya sama dengan sebelumnya ----- yang diganti dalam program ini adalah WriteLine nilai hasil[] --//memanggil method Output dengan parameter masukan hasil[] Output(hasil); } //method untuk menampilkan hasil perkalian dengan parameter array //untuk menggantikan script yang menampilkan nilai hasil[] dengan cara: // Console.WriteLine(hasil[0, 0]); // Console.WriteLine(hasil[0, 1]); // Console.WriteLine(hasil[1, 0]); // Console.WriteLine(hasil[1, 1]); static void Output(int[,] hasil) { for (int r = 0; r < hasil.GetLength(0); r++) { for (int c = 0; c < hasil.GetLength(1); c++) { Console.WriteLine("{0} ", hasil[r, c]); } Console.WriteLine(); } }

Bimo Adi Pradono 31045

www.digizoneku.com

} }

___________ Run Program ___________

Hasilnya masih sama dengan sebelumnya. Method tambahan ini berfungsi untuk meringkas program. II. 3 Menghitung hasil dalam sebuah method dan mengembalikannya Program ini hanya mengganti kode dari perhitungan matrik. Hasil keluaran dalam program ini masih sama dengan sebelumnya. Untuk lebih jelasnya, ikuti penjelasan berikut: ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik { static void Main(string[] args) { --- scriptnya sama dengan sebelumnya ----- yang diganti adalah hasil perkalian matrik a dan b --//Menggantikan baris-baris berikut: //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] + a[0, a[0, a[1, a[1, 1] 1] 1] 1] * * * * b[1, b[1, b[1, b[1, 0]; 1]; 0]; 1];

//dengan memanggil method baru yang menghitung perkalian matrik int[,] hasil = Perkalian(a, b); //memanggil method Output dengan parameter masukan hasil[] Output(hasil); } //method Output untuk menampilkan isi matrik dengan parameter array hasil[] static void Output(int[,] hasil) {

Bimo Adi Pradono 31045

www.digizoneku.com

--- scriptnya sama dengan sebelumnya --} //method untuk proses perkalian matrik 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] hasil[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] hasil[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] hasil[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] return hasil; } } }

* * * *

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

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

___________ Run Program ___________

II. 4 Menghitung hasil dalam sebuah method dengan menggunakan kalimat pemrograman Program ini hanya mengganti kode dari perhitungan matrik dengan nested loop. Hasil keluaran dalam program ini masih sama dengan sebelumnya. Untuk lebih jelasnya, ikuti penjelasan berikut: ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik { static void Main(string[] args) { --- scriptnya sama dengan sebelumnya ----- program ini menerapkan nested loop for untuk perkalian matrik --//dengan memanggil method baru yang menghitung perkalian matrik int[,] hasil = Perkalian(a, b); //memanggil method Output dengan parameter masukan hasil[] Output(hasil);

Bimo Adi Pradono 31045

www.digizoneku.com

} //masih method yang sama; method untuk menampilkan hasil static void Output(int[,] hasil) { --- scriptnya sama dengan sebelumnya --} //method perkalian yang baru //menggantikan cara perkalian: // hasil[0, 0] = a[0, 0] * b[0, 0] + a[0, 1] * b[1, // hasil[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] * b[1, // hasil[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] * b[1, // hasil[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] * b[1, //dengan menerapkan nested loop yang menggunakan for 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] } } return hasil; } } }

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

* b[1, c];

___________ Run Program ___________

II. 5 Memasukkan matrik pertama dari konsol Program ini hanya mengganti kode dari input matrik a, yang sebelumnya bersifat static. Hasil keluaran dalam program ini masih sama dengan sebelumnya apabila diberi masukan yang sama. Untuk lebih jelasnya, ikuti penjelasan berikut: ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik

Bimo Adi Pradono 31045

www.digizoneku.com

{ static void Main(string[] args) { //mengubah deklarasi matrik a menjadi fungsi Input dari keyboard //nilai dari matrik a tergantung input dari keyboard //script line di bawah untuk deklarasi objek dan memanggil method Input int[,] a = new int[2, 2]; Input(a); --- scriptnya sama dengan sebelumnya --//memanggil method perkalian int[,] hasil = Perkalian(a, b); //memanggil method hasil Output(hasil); } //deklarasi method untuk menampilkan keluaran static void Output(int[,] hasil) { --- scriptnya sama dengan sebelumnya --} //deklarasi method Perkalian; sama dengan kode sebelumnya static int[,] Perkalian(int[,] a, int[,] b) { --- scriptnya sama dengan sebelumnya --} //method untuk meminta masukan dari user //dengan method ini, matrik tidak lagi dideklarasikan secara static 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(); } } }

Bimo Adi Pradono 31045

www.digizoneku.com

Dengan pengubahan model input di mana meminta input dari user, dapat dipastikan hasil running program berbeda dengan sebelumnya. Matrik a menjadi matrik yang meminta input dari keyboard, sementara matrik b masih matrik static yang nilanya diatur oleh program. Dengan adanya modifikasi tersebut, user dapat memasukkan nilai berapa pun ke dalam matrik a. Jika nilai yang dimasukkan sama dengan nilai static matrik a sebelumnya (1, 2, 3, dan 4), hasil eksekusi kode di atas masih akan sama, yaitu: ___________ Run Program ___________

II.6 Memasukkan matrik kedua dari konsol Program ini hanya mengganti kode dari input matrik b, yang sebelumnya bersifat static. Hasil keluaran dalam program ini masih sama dengan sebelumnya apabila diberi masukan yang sama. Untuk lebih jelasnya, ikuti penjelasan berikut: ___________ Source Code ___________
using System; namespace PerkalianMatrik { class PerkalianMatrik { static void Main(string[] args) { //matrik a dan b dideklarasikan untuk meminta input dari user //konsepnya sama dengan method Input untuk matrik a int[,] a = new int[2, 2]; Input(a); int[,] b = new int[2, 2]; Input(b); //deklarasi matrik hasil dengan memanggil method Perkalian int[,] hasil = Perkalian(a, b); //menampilkan matrik hasil dengan memanggil method Output

Bimo Adi Pradono 31045

www.digizoneku.com

Output(hasil); } //method output; menampilkan matrik yang dimasukkan sebagai parameternya static void Output(int[,] hasil) { --- scriptnya sama dengan sebelumnya --} //method perkalian; mengalikan metriks yang dimasukkan sebagai paramternya static int[,] Perkalian(int[,] a, int[,] b) { --- scriptnya sama dengan sebelumnya --} //method untuk menerima masukan dari user //keluarannya akan disimpankan ke dalam matrik yang menjadi parameternya //matrik a dan b diisi nilainya dengan method ini 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(); } } }

Sama seperti kode sebelumnya, keluaran dari kode ini sama dengan hasil eksekusi sebelumnya. Hanya saja, perlu dipastikan bahwa masukan yang di-input-kan harus sama dengan nilai static matrik sebelumnya. ___________ Run Program ___________

Bimo Adi Pradono 31045

www.digizoneku.com

Bimo Adi Pradono 31045

www.digizoneku.com

BAB III PERTANYAAN PEMAHAMAN


1. Buatlah sebuah class yang merupakan class dengan dukungan matrik 2x2 dan dapat melakukan perhitungan determinan!
Jawab: _______________ Class Determinan _______________
using System; namespace PerkalianMatrik { public class Determinan { public static int Det(int[,] hasil) { //perhitungan determinan matrik hasil perkalian matrik a dan b int det = hasil[0, 0] * hasil[1, 1] - hasil[0, 1] * hasil[1, 0]; return det; } } } __________________

Class PerkalianMatrik __________________ Untuk memanggil fungsi determinan, cukup menuliskan 2 line di bawah pada main method:
//memanggil method Determinan, perhitungan determinan matrik dari hasil perkalian matrik a dan b int det = Determinan.Det(hasil); Console.WriteLine("Determinan dari hasil kali matrik a dan b: {0}", det);

___________ Run Program ___________

Bimo Adi Pradono 31045

www.digizoneku.com

2. Gunakan konsep interface atau inheritance untuk menurunkan class yang dibuat pada poin satu untuk mendukung perhitungan matrik 3x3!
Jawab: _______________ Class Determinan _______________
using System; namespace PerkalianMatrik { public class Determinan { public static int Det(int[,] hasil) { //perhitungan determinan matrik hasil perkalian matrik a dan b int det = hasil[0, 0] * hasil[1, 1] * hasil[2, 2] + hasil[0, 1] * hasil[1, 2] * hasil[2, 0] + hasil[0, 2] * hasil[1, 0] * hasil[2, 1] - hasil[0, 1] * hasil[1, 2] * hasil[2, 1] - hasil[0, 1] * hasil[1, 0] * hasil[2, 2] - hasil[0, 2] * hasil[1, 1] * hasil[2, 0]; return det; } } } __________________

Class PerkalianMatrik __________________


using System; namespace PerkalianMatrik { public class PerkalianMatrik { public static void Main(string[] args) { //sekarang, kedua matriks 3x3 dideklarasikan untuk

Bimo Adi Pradono 31045

www.digizoneku.com

//meminta input dari user int[,] a = new int[3, 3]; Input(a); int[,] b = new int[3, 3]; Input(b); //deklarasi matriks hasil dengan memanggil method Perkalian 3x3 int[,] hasil = Perkalian(a, b); //memanggil method Determinan, perhitungan determinan matrik dari hasil perkalian matrik a dan b int det = Determinan.Det(hasil); //menampilkan matriks hasil dengan memanggil method Output Output(hasil); Console.WriteLine("Determinan dari hasil kali matrik a dan b: {0}", det); Console.ReadLine(); } //method output; menampilkan matriks dimasukkan sebagai parameternya static void Output(int[,] hasil) { for (int r = 0; r < hasil.GetLength(0); r++) { for (int c = 0; c < hasil.GetLength(1); c++) { Console.WriteLine("{0} ", hasil[r, c]); } Console.WriteLine(); } } //method perkalian matrik 3x3; mengalikan metriks yang dimasukkan sebagai paramternya static int[,] Perkalian(int[,] a, int[,] b) { int[,] hasil = new int[3, 3]; for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { //perkalian matrik untuk dimensi 3x3 hasil[r, c] += a[r, 0] * b[0, c] + a[r, 1] * b[1, c] + a[r, 2] * b[2, c]; } } return hasil; } //method untuk menerima masukan dari user //keluarannya aakan disimpankan ke matriks yang menjadi parameternya //dalam kasus ini, matriks a dan b diisi nilainya dengan method ini //sekarang matrik a dan b berdimensi 3x3 static void Input(int[,] dst)

Bimo Adi Pradono 31045

www.digizoneku.com

{ for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { Console.Write("Masukkan nilai untuk [{0},{1}] : ", r, c); string s = Console.ReadLine(); dst[r, c] = int.Parse(s); } } Console.WriteLine(); } } }

___________ Run Program ___________ Memberi input semua 2:

Hasil perkalian matrik dan determinan:

Bimo Adi Pradono 31045

www.digizoneku.com

BAB IV KESIMPULAN
1. Array merupakan stack dari tipe data yang sama. 2. Method yang memberikan keluaran array bisa meminta variabel sebagai parameter dan bisa meminta array lain sebagai masukan. 3. Nested loop dengan perulangan for adalah looping paling ideal untuk digunakan mengisi array.

Bimo Adi Pradono 31045

www.digizoneku.com