Anda di halaman 1dari 27

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

Disusun oleh:

Wiji Lestari Matematika A / 11810 Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada Yogyakarta 2007

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN A. Permasalahan


Buatlah data untuk mengisi data, menyisipkan data, menghapus data dan menampilkan data untuk data mahasiswa yang terdiri dari nama,

alamat, prodi, dan orang tua. Adapun data orang tua terdiri atas data nama, pekerjaan, dan gaji. Buatlah program untuk menghitung hasil perkalian dua matriks berordo nxn dan determinan hasil perkalian dengan eliminasi gauss!

B. Algoritma dan Pembahasan


Untuk permasalahan pertama Dalam hal ini kita akan menggunakan array,record, procedure. Sebuah program yang baik adalah program yang membagi permasalahan utama menjadi bagian-bagian kecil dimana setiap bagian kecil ditangani oleh sebuah subprogram, cara ini disebut modular programming (pemrograman terbagi. terpecah). Nah, inilah yang akan kita gunakan untuk memetakan masalah di atas. Ini merupakan pemrograman terstruktur. Ada dua macam yaitu dengan prosedur dan fungsi. Dalam hal ini kita akan menggunakan prosedur. Dengan modular programming, program lebih mudah dibaca dan dimengerti. Selain itu, pembenahan program dan penelusuran jalannya program (debugging) menjadi lebih mudah sebab

dapat langsung diketahui subprogram mana yang berjalan tidak sesuai dengan yang diharapkan. Procedure Untuk memudahkan membuat program, kita menggunakan procedure. Adapun dari program di atas, kita bisa membuat membagi-bagi menjadi: 1. prosedur isi disini kita dapat mengisikan apa saja yang nantinya dibutuhkan dalam data program. Misalnya nama, nim, prodi, dst. 2. prosedur menampilkan data data yang kita buat, tentunya sebagian besar, tujuannya adalah untuk ditampilkan. Maka gunakan prosedur untuk menampilkan data. 3. prosedur pencarian search, ya inilah gunanya. Dengan program ini, kita bias mengakses, mencari data yang kita inginkan dengan memasukkan kunci pencarian. 4. prosedur hapus data prosedur ini dapat kita gunakan untuk menghapus data yang kiranya tidak penting dan tidak terpakai. Agar tidak memenuhi memori. 5. prosedur sisipan

prosedur

ini

akan

kita

gunakan

untuk

menyisipkan data yang kiranya lupa atau apa sehingga belum dimasukkan ke dalam data. Prosedur memiliki struktur yang sama dengan program. Yaitu terdiri dari nama prosedur, deklarasideklarasi dan bagian utama prosedur itu sendiri. Daftar nama parameter formal dan tanda kurung (setelah nama prosedur) bersifat opsional. Artinya bias dugunakan bias pula tidak. Pada waktu terjadi pemanggilan prosedur, maka isi parameter actual diberikan pada parameter formalnya. Banyaknya parameter actual harus sama dengan banyaknya parameter formal. Tiap-tiap parameter actual harus bertipe sama dengan parameter formal yang bersesuaian. Tiap-tiap parameter actual harus diekspresikan yang sesuai dengan parameter formal. Nah, dalam program di atas, ada parameter by value dan by reference. Membedakannya bias dengan cara melihat apakah ada var atau tidak. Pendeklarasian parameter reference didahului oleh var. parameter ini nantinya dijadikan sebagai variable keluaran dari prosedur.

Lihat perbedaan berikut ini: Procedure isi; Procedure MenampilkanData(var d: dat); Procedure search(name: string; var d:dat; var i:integer; var found:Boolean); Procedure HapusData(nama:string; var d:dat); Procedure menyisipkan: var k,I : integer; Record Record adalah sebuah tipe data yang mengumpulkan beberapa item data di mana masingmasing tipe data dari item data ini berbeda-beda. Masing-masing item data ini bisa disebut dengan field.

Mendeklarasikan Record Dalam Pascal, semua variabel harus dideklarasikan sebelum bisa dipakai. Sebagai contoh, kitaingin memakai variabel dengan nama Nama untuk

dimasukkan nilai nama-nama mahasiswa. Kita akan mendefinisikannya menjadi:var Nama: String; . Dari kode di atas kita memberitahukan ke Pascal bahwa kita akan memakai variabel Nama yang tipe datanya string. Nah, dalam Pascal, kita dimungkinkan untuk memiliki judul tipe data yang kita definisikan sendiri. Perhatikan beda pendefinisian variabel dan pendefinisian type. Untuk pendefinisian variabel kita menggunakan titik dua (:), sedangkan pendefinisian type kita menggunakan sama dengan (=).
.

Untuk mendeklarasikan record, kita memakai reserved

word record, diikuti dengan daftar field dan diakhiri dengan end. Berikut adalah contoh dari deklarasi sebuah record. Lihat kembali program berikut:

Menggunakan Record Menggunakan/ mengakses nilai field dari record adalah menggunakan nama variabel yang sudah dideklarasikan, diikuti dengan tanda titik (.) dan nama field. Dari contoh di atas, apabila kita ingin mengakses nilai field nama dari record recordMahasiswa, kode dalam Pascal adalah sebagai berikut:recordMahasiswa.nama:=Wiji Lestari Array Array adalah tipe data kompleks yang elemenelemennya mempunyai tipe data yang sama. Jumlah elemen array bersifat tetap dan tidak bisa ditambah atau dikurangi setelah pendeklarasiannya. Tiap elemen mempunyai nomer indeks sendiri dan pengaksesan terhadap elemen array dilakukan dengan menunjukkan nomer indeks dari elemen yang akan diakses. Antara dimensi satu dengan dimensi lainnya dipisahkan oleh tanda koma (,), demikian juga untuk mendeklarasikan array berdimensi lebih dari dua. Cara mengakses elemen array juga tidak jauh berbeda dengan cara mengakses elemen array berdimensi satu, yaitu menggunakan nomer indeksnya

untuk permasalahan kedua program matriks sebenarnya juga menggunakan prosedur untuk memudahkan membuat program. Nah, tak perlu dijelaskan lagi kan tentang apa itu prosedur? Tak jauh beda dengan prosedur di atas. Matriks merupakan dimensi dua. Biasanya kan kita membuat program dimensi 1. nah ini beda. Array berdimensi dua ini banyak digunakan dalam perhitungan matrik, oleh sebab itu array berdimensi dua disebut juga dengan array matrik. Sistem persamaan linier Didefinisikan sebagai suatu set persamaanpersamaan aljabar yang variable-variabelnya berpangkat tunggal (linier) dengan notasi berikut: a1,1 x1 + a1,2 x2 ++a1,n xn = b1 a2,1 x1 + a2,2 x2 + +a2,nxn = b2 .............................................= An,1x1 + an,2 x2 +.+an,nxn = bm Dapat ditulis,

[A] [x]

[b]

SPL di atas memiliki n buah variabel atau bilangan anu (xj, j = 1, 2,, n) yang identik dengan jumlah persamaannya. Koefisien koefisien xi,j, (x1,1 . . . xn,n) merupakan konstanta (diketahui), demikian juga bi (b1 . . . bn) yang dikenal sebagai vektor ruas kanan (VRK). Menurut konvensi : indeks pertama dari elemen ai,j menyatakan baris (= i) sedangkan indeks kedua menyatakan kolom (= j). Agar solusi SPL di atas dapat diperoleh, maka persayaratan (teorema) berikut harus dipenuhi: 1. A x = b mempunyai jawab unik x V untuk setiap b V, 2. A x = b hanya mempunyai satu solusi x V untuk setiap b V, 3. Jika A x = 0, berarti x = 0, 4. A-1 atau inversi dari matriks A ada, 5. Determinan(A) 0, 6. Rank(A) = n, atau matriks A berorder n. Seperti telah dijelaskan di atas, matriks A merupakan matriks bujur sangkar. Bila teorema di atas tak terpenuhi, maka akan terjadi kombinasi linier (akan

mengakibatkan persamaan aljabar di atas bersifat SINGULAR). Kombinasi Linier :


per baris, cukup hanya 2 baris yang

menyebabkannya,
per kolom, bila semua baris yang menyebabkanya.

Solusi SPL secara numeris Solusi SPL secara numeris umumnya selalu (harus) lebih efisien dan cepat dibandingkan dengan metodemetode analitis, seperti metode Cramer. Namun demikian, solusi numerik ini secara teknis adakalanya juga berkendala, karena
ada beberapa persamaan yang mendekati kombinasi

linier, akibat adanya round off error dari mesin penghitung pada suatu tahap perhitungan
adanya akumulasi round off error pada proses

komputasi akan berakibat domain bilangan nyata (fixed point) dalam perhitungan akan terlampaui (overflow), biasanya akibat dari jumlah persamaan yang terlalu besar Metode-metode solusi numerik yang banyak dipakai, a. Metode Langsung

Eliminasi Gauss (EGAUSS), prinsipnya: merupakan

operasi eliminasi dan substitusi variabel-variabelnya sedemikian rupa sehingga dapat terbentuk matriks segitiga atas, dan akhirnya solusinya diselesaikan menggunakan teknik substitusi balik (backsubstitution). Perkalian Dua Matrik Operasi perkalian dua buah matrik hanya bisa dilakukan bila jumlah kolom matrik pertama sama dengan jumlah baris matrik kedua. Jadi kedua matrik tersebut tidak harus berukuran sama seperti pada penjumlahan dua matrik. Misalnya matrik A23 dikalikan dengan matrik B32, lalu hasilnya (misalnya) dinamakan matrik E22 E22 = A23.B32 Bila dijabarkan, maka elemen-elemen matrik E22 adalah e11 = a11.b11 + a12.b21 + a13.b31 e12 = a11.b12 + a12.b22 + a13.b32 e21 = a21.b11 + a22.b21 + a23.b31 e22 = a21.b12 + a22.b22 + a23.b32 kemudian secara sederhana dapat diwakili oleh rumus berikut eij =

dimana i=1,2, dan j=1,2. Berdasarkan contoh ini, maka secara umum bila ada matrik Anm yang dikalikan dengan matrik Bmp, akan didapatkan matrik Enp matrix=array[1..25,1..25] of real n,m,i,j: integer a,b,c,d,e:matrix Program utama: Disini kita bias memasukkan berapa ordo yang kita inginkan. Kemudian, elemen-elemen akan terisi. Nah, disinilah fungsi baca data. Setelah itu, kita akan menggunakan prosedur tambah, untuk penambahan matrik.setelah itu, gunakan prosedur tulis hasil. Jika sudah, panggil prosedur pengurangan. Panggil kembali prosedur tulis hasil. Jika sudah, panggilah prosedur perkalian dan tulis data. Disini nanti ada prosedur eliminasi gauss.

C. Kode Program
Program data

2. matrik

D. Tampilan Program
1. program data

Data Mahasiswa =================== banyak data yang akan dimasukkan: 1 nama mahasiswa alamat :A : yogya

prodi nama orang tua gaji

: kimia :B : 1 juta

2. matrik