Anda di halaman 1dari 22

LAPORAN PRAKTIKUM PROGRAM KOMPUTER Modul 4 : ARRAY

Pelaksanaan Praktikum Hari : Jumat Tanggal : 30 Maret 2012 Jam: 3 - 4

Oleh: FAUZIYAH FIRDAUSI M. S


NIM: 08101700825

PROGRAM STUDI S1 TEKNOBIOMEDIK

FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS AIRLANGGA


Praktikum IV

ARRAY
I. TEORI DASAR ARRAY Digunakan untuk menyimpan sekelompok data yang tipenya sama. Deklarasi Array 1 Dimensi tipe nama_var[max_data]; Contoh: int a[5]; float x[100]; char nama[25]; . dst. Cara mengakses data bertipe array nama_variabel[alamat] Misal : Array a 2 7 3 0 2 5 1 3 6 2 4 7 3 8 4

data yang tersimpan di array alamat array (dimulai dari 0)

a[0] = 27 a[1] = 23 . . a[4] = 87 Menginputkan data ke array

Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen array banayk, tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan instruksi perulangan untuk input datanya. Contoh 1: #include <iostream.h> #include <conio.h> main() { int a[5]; cout<<"Data ke 0 = ";cin>>a[0]; cout<<"Data ke 1 = ";cin>>a[1]; cout<<"Data ke 2 = ";cin>>a[2]; cout<<"Data ke 3 = ";cin>>a[3]; cout<<"Data ke 4 = ";cin>>a[4]; int jumlah; jumlah=a[0]+a[1]+a[2]+a[3]+a[4]; cout<<"\n\nJumlahnya = "<<jumlah; getch(); } Contoh 2: #include <iostream.h> #include <conio.h> main() { int a[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch(); }

Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan perubahan pada contoh 3 menjadi sebagai berikut: Contoh 3: #include <iostream.h> #include <conio.h> main() { int *a=new int[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch(); } Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan sebagai pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array.Tetapi kita tetap bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat arraynya. Jika demikian maka data akan diambilkan dari data pertama, atau data pada alamat ke 0. Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan instruksi : cout<<"\nData = "<<*a; atau instuksi : cout<<"\nData = "<<a[0]; akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0). Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk fungsi seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter fungsi, jumlah data yang tersimpan dalam array boleh ditulis boleh tidak (optional). Sehingga bisa ditulis dengan : b[] saja Contoh 4 :

#include <iostream.h> #include <conio.h> void input_array(int b[],int n) { for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = ";cin>>b[i]; } } int jumlah(int b[],int n) { int hasil=0; for(int i=0;i<n;i++) hasil+=b[i]; return hasil; } main() { int a[100]; int bd; cout<<"Masukkan banyaknya data = ";cin>>bd; input_array(a,bd); cout<<"\n\nJumlahnya = "<<jumlah(a,bd); getch(); }

Penggunaan array 1D untuk sorting data Pada proses berikut ingin akan diurutkan n data yang tersimpan di array dengan metode Bubble Sort. Contoh 5: #include <iostream.h> #include <conio.h> void masukan(int a[],int n)

{ for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = "; cin>>a[i]; } }

void urutkan(int a[], int n) { int temp; for(int i=0;i<n;i++) for(int j=0;j<(n-i);j++) if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } void tampil(int a[], int n) { for(int i=0;i<n;i++) cout<<a[i]<<" } main() { int a[100]; int jml; cout<<"Banyak data = ";cin>>jml; masukan(a,jml); urutkan(a,jml); cout<<"\n\nSetelah diurutkan "; tampil(a,jml); ";

getch(); } Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan fungsi ketiga untuk menampilkan data yang tersimpan di array ke layar. Array 2 Dimensi Contoh deklarasi : int a[4][5]; 0 0 5 1 2 3 5 4 2 0 6 1 1 2 0 1 4 6 8 2 3 2 3 5 2 2 2 1 8 1 9 7 5 Mengakses data : a[0][0] = 25 a[0][1] = 40 . . dst Penggunaan array 2D untuk menjumlahkan dua matrik Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama. 3 1 5 9 1 1

Baris matrik 1 = Baris matrik 2 Kolom matrik 1 = Kolom matrik 2 Contoh 6: #include <iostream.h> #include <conio.h> void masukan(int a[10][10],int b,int k) { for(int i=0;i<b;i++) for(int j=0;j<k;j++) {cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; } } void { jumlah(int a1[][10],int a2[][10],int a3[][10],int

b1,int k1) for(int i=0;i<b1;i++) for(int j=0;j<k1;j++) a3[i][j]=a1[i][j]+a2[i][j]; } void tampilkan(int a[10][10],int b,int k) { for(int i=0;i<b;i++) { for(int j=0;j<k;j++) cout<<a[i][j]<<" cout<<"\n"; } } main() { int dt1[10][10],dt2[10][10],dt3[10][10]; int b1,k1; cout<<"Jumlah baris matrik cout<<"Jumlah kolom matrik cout<<"\nMatrik pertama\n"; = ";cin>>b1; = ";cin>>k1; ";

masukan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; masukan(dt2,b1,k1); jumlah(dt1,dt2,dt3,b1,k1); clrscr(); cout<<"\nMatrik pertama\n"; tampilkan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; tampilkan(dt2,b1,k1); cout<<"\nMatrik hasil penjumlahan\n"; tampilkan(dt3,b1,k1); getch(); } Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh ditulis boleh tidak, tetapi jumlah kolom harus ditulis. Tipe array dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan sebagainya. II. LISTING 1.a #include<iostream.h> void main () { int i, jum; float rata; int A[5]={87, 76, 90, 54, 54} ; jum=0; for(i=0;i<5;i++) jum+=A[i]; rata=jum/5; cout<<"Tampilkan salah satu elemen array\n";

cout<<"Elemen ke-2\n"; cout<<"A[1]"<<endl; // pengaksesan elemen array cout<<"Jumlah = "<<jum<<endl; cout<<"Rata - rata = "<<rata<<endl; } 1.b #include<iostream.h> void main () { int i, jum; int A[5]; float rata;

for (i=0;i<5;i++) { cout<<"Masukkan bilangan"<<(i+1)<<" = "; cin>>A[i]; } jum=0; for(i=0;i<5;i++) jum+=A[i]; rata=jum/5; cout<<"Tampilkan salah satu elemen array\n"; cout<<"Elemen ke-2\n"; cout<<"A[1]"<<endl; // pengaksesan elemen array cout<<"Jumlah = "<<jum<<endl; cout<<"Rata - rata = "<<rata<<endl; }

2.a #include<iostream.h> #include<iomanip.h> void main () { int i, j; int a[2][2]; int b[2][2]; int c[2][2]; cout<<"Program jumlah matriks 2x2:\n"; cout<<"Input elemen matriks A\n"; for(i=0;i<2;i++) for(j=0;j<2;j++) { cout<<"A["<<(i+1)<<","<<(j+1)<<"] = "; cin>>a[i][j]; } cout<<"input elemen matriks B\n"; for(i=0;i<2;i++) for(j=0;j<2;j++) { cout<<"B["<<(i+1)<<","<<(j+1)<<"] = "; cin>>b[i][j]; } for(i=0;i<2;i++) for(j=0;j<2;j++) c[i][j]=a[i][j]+b[i][j]; cout<<"Hasil jumlah A + B = \n"; for(i=0;i<2;i++) {

for(j=0;j<2;j++) { cout<<c[i][j]<<setw(5); } cout<<endl; } } 2.b #include<iostream> #include<stdlib.h> using namespace std; int main(){ int m,n; cout<<"Ordo matriks:\nBaris = "; cin>>m; //(2) ini dia input user nya cout<<"Kolom = "; cin>>n; cout<<endl; int A[m][n],B[m][n],C[m][n]; //(1) perhatikan baris ini, ini yang bisa bikin arraynya sesuai dengan input user for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout<<"A["<<i+1<<"]["<<j+1<<"] = "; cin>>A[i][j]; } } cout<<endl;

for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout<<"B["<<i+1<<"]["<<j+1<<"] = "; cin>>B[i][j]; } } cout<<endl; cout<<"Matriks A ditambah matriks B sama dengan\n"; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ C[i][j]=A[i][j]+B[i][j]; cout<<C[i][j]<<" "; } cout<<endl; } cout<<endl; system("pause"); return 0; } 3. #include<iostream.h> void main () { int i, j,barisA,barisB, kolomA, kolomB, k; int a [2] [2]; int b [2] [2]; int c [2] [2]; cout<<"Program perkalian matriks 2x2:\n";

cout<<"Syarat kolomA=barisB"<<endl; cout<<"Ordo matriks A\n"; cout<<"jumlah baris=";cin>>barisA; cout<<"jumlah kolom=";cin>>kolomA; cout<<"Ordo matriks B\n"; cout<<"jumlah baris=";cin>>barisB; cout<<"jumlah kolom=";cin>>kolomB; cout<<"Input elemen matriks A\n"; for(i=0;i<barisA;i++) for (j=0;j<kolomA;j++) { cout<<"A["<<(i+1)<<","<<(j+1)<<"] ="; cin>>a[i][j]; } cout<<"Input elemen matriks B\n"; for (i=0;i<barisB;i++) for (j=0;j<kolomB;j++) { cout<<"B["<<(i+1)<<","<<(j+1)<<"] ="; cin>>b[i][j]; } cout<<"Hasil perkalian A * B=\n"; //Proses perkalian matriks for (i=0;i<barisA;i++) for (j=0;j<kolomB;j++) { c[i][j]=0; for (k=0;k<kolomA;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; }

// Tampilan hasil perkalian matriks for (i=0;i<barisA;i++) { for (j=0;j<kolomB;j++) { cout<<c[i][j]<<" } cout<<endl; } } 4. #include<iostream> #include<stdlib.h> using namespace std; int main(){ int m,n; cout<<"Ordo matriks:\nBaris = "; cin>>m; //(2) ini dia input user nya cout<<"Kolom = "; cin>>n; cout<<endl; int A[m][n],B[m][n]; //(1) perhatikan baris ini, ini yang bisa bikin arraynya sesuai dengan input user cout<<"Input manual matriks citra medis (A[i][j]):\n"; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout<<"A["<<i+1<<"]["<<j+1<<"] = "; cin>>A[i][j]; } ";

} cout<<endl; cout<<"Matriks citra medis:\n"; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout<<A[i][j]<<" "; } cout<<endl; } cout<<endl; cout<<"Hasil pencerminan matriks citra medis:\n"; for(int i=0;i<m;i++){ int k=n; for(int j=0;j<n;j++){ B[i][j]=A[i][k-1]; cout<<B[i][j]<<" "; k--; } cout<<endl; } cout<<endl; system("pause"); return 0; }

IV.

TUGAS a. Soal

1. a. Salinlah listing program contoh 1, jalankan dan pelajari! b. Pada program contoh 1, pengisian array melalui inisialisasi, modifikasi contoh program 1, sehingga pengisian elemen array dilakukan oleh user! 2. a. Salinlah listing program contoh 2, jalankan dan pelajari! b. Pada program contoh 2, array berordo 2x2, modifikasi program contoh 2 sedemikian hingga penjumlahan array dapat dilakukan untuk sembarang ordo! 3. a. Buat program perkalian matriks 2 dimensi! 4. Array dari sebuah citra medis dinyatakan sebagai berikut :
4 8 6 3 1 3 9 2 9 5 6 2

Buat program untuk mencerminkan citra tersebut terhadap sumbu Y sedemikian sehingga matriks hasil pencerminan adalah :
4 8 6 3 3 1 9 2 5 9 6 2 8 2 4 2 9 9 5 3 6 1 3 6

b. Jawaban 1. a. Listing pada contoh 1 ini merupakan dasar dari penggunaan array satu dimensi sehingga tergolong cukup mudah. b. Pada no 1.b ini penggunaan array 1 dimensi di kolaborasikan dengan penggunaan for untuk perulangan penjumlahan dan rerata. Pernyataan for pada program ini memiliki batas bawah 0 dan batas atas kuang dari 5, agar jumlah elemen yang dimasukkan tidak lebih dari 5 sehingga perhitungan rata rata akan sesuai dengan yang dikehendaki oleh user..

2. a. Listing pada contoh 2 ini untuk melakukan perhitungan jumlah pada matriks A dan B dengan ordo 2x2. Ordo ditentukan oleh kita (yang membuat program), sedangkan elemen elemen (angka angka) pada matriks nantinya akan dimasukkan sendiri oleh user. Yang perlu dilakukan user hanya memasukkan elemen elemen matriks A dan B lalu kedua matriks tersebut akan menjumlahkan sendiri karena sudah terprogram lalu akan di tampilkan. b. Pada nomor b ini diperintahkan untuk memodifikasi program contoh 2 agar user dapat menentukan baris dan kolom matriks sesuai dengan kebutuhannya. Modifikasi dilakukan dengan menambahkan inisialisasi pada program yaitu baris dan kolom yang digunakan untuk mengganti tiap batas pada inisialisasi i dengan baris dan inisialisasi j dengan kolom. Lalu inisialisasi jumlah awal ordo juga digantikan dengan jumlah awal yang cukup besar yaitu 100. Pada program contoh 2 ini digunakan perintah setw(5) yang sudah digunakan oleh teman2 saya pada praktikum sebelumnya tapi baru saya gunakan pada praktikum ini karena baru memahami. Perintah setw ini berfungsi untuk memberikan jarak yang sama pada tiap tiap elemen matriks yang telah dijumlahkan. Pasangan dari perintah ini adalah #include <iomanip.h>, jadi tanpa #include <iomanip.h> ini perintah setw(5) tidak akan berjalan. 3. Pada nomor 3 ini meminta kami untuk membuat program yang dapat menampilkan hasil kali dari matriks dengan ordo 2x2. Program ini mirip dengan program nomor 2 hanya saja operasi penjumlahan pada nomor 2 digantikan dengan operasi perkalian khusus yang digunakan untuk matriks saja. Sehingga memiliki perumusan yang berbeda dengan perkalian yang biasa. 4. Soal nomor 4 ini unik. Yaitu kami diminta untuk menampilkan pencerminan dari matriks yang telah ditentukan. Hanya saja disini saya membuat program yang ordonya bias ditentukan sendiri oleh user jadi bisa berordo berapa saja. Program yang digunakan pada nomor 4 hampir sama dengan nomor 2b hanya ada penambahkan perintah yang digunakan untuk membuat pencerminan matriks. Sehingga terdapat perubahan pada kolomnya. Pada no.2b dan 4 saya mencoba menggunakan DevC++ karena anak ITS yang member tutor kepada saya menggunakan program tersebut. Dan ternyata tidak serumit yang saya bayangkan meskipun saya tetap lebih suka memakai Turbo.

c. Output 1.a

1.b

2.a

2b

3.

4.

Anda mungkin juga menyukai