74437222 Pemrograman Berorientasi Objek Dengan Bahasa C Part 5 Www Digizoneku Com
-
Upload
yovandro-e-liunome -
Category
Documents
-
view
34 -
download
4
Transcript of 74437222 Pemrograman Berorientasi Objek Dengan Bahasa C Part 5 Www Digizoneku Com
Bimo Adi Pradono www.digizoneku.com 31045
BAB I PENDAHULUAN Tujuan Praktikum
o Mampu membuat dan menggunakan array dan tipe nilai o Mampu mengoper argumen ke Main o Mampu Membuat dan menggunakan array berukuran terkomputasi o 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 www.digizoneku.com 31045
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; // Console using System.IO; // 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 www.digizoneku.com 31045
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; // Console using System.IO; // 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 www.digizoneku.com 31045
//menampilkan hasil pembacaan 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(); } //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 www.digizoneku.com 31045
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 www.digizoneku.com 31045
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 www.digizoneku.com 31045
} }
___________
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] + 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]; //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 www.digizoneku.com 31045
--- 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] * 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; } } }
___________
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 www.digizoneku.com 31045
} //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, 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]; //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] * b[1, c]; } } return hasil; } } }
___________
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 www.digizoneku.com 31045
{ 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 www.digizoneku.com 31045
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 www.digizoneku.com 31045
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 www.digizoneku.com 31045
Bimo Adi Pradono www.digizoneku.com 31045
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 www.digizoneku.com 31045
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 www.digizoneku.com 31045
//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 www.digizoneku.com 31045
{ 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 www.digizoneku.com 31045
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.