• Tidak ada hasil yang ditemukan

Bab. 6 Larik (Array)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Bab. 6 Larik (Array)"

Copied!
15
0
0

Teks penuh

(1)

Bab. 6

Larik (Array)

6.1 Tujuan Instruksional Khusus

1. Mahasiswa mampu membuat program menggunakan array satu dimensi dan dua dimensi. 2. Mahasiswa mampu membuat program sortir menggunakan metoda bubble –sort dan

quick-sort.

6.2 Pendahuluan

Array adalah sekelompok data sejenis,yang disimpan ke dalam variabel dengan nama yang

sama, untuk membedakan variabel yang satu dengan yang lainya diberilah indeks. Misalkan ada 10 bilangan yang akan disimpan kedalam variabel bil, maka bilangan yang pertama akan disimpan kedalam varibel bil[0],b ilangan kedua akan disimpan kedalamvariabel bil[1], bilangan ketiga akan disimpan kedalam variabel [2], da n seterusnya. Penulisan [0], [1], [2], [3],dan seterusnya disebut sebagai indeks dari variabel bil.

6.2.1 Variabel Array

Strukt ur variabel array satu dimensi dituliskan sebagai:

Nama_variabel [indeks]

Ketent uan mengenai nama variabel array sama dengan nama variabel biasa, sedangkan indeks menunjukkan nomor dari variabel tadi. Array dapat berdimensi lebih dari satu, misalnya dua, tiga, dan seterusnya. Untuk array berdimensi dua,variabelnya dituliskan:

Nama_variabel[indeks_1][indeks_2].

Indeks_1 menunjukkan baris, sedangkan indeks_2 menunjukkan kolom

6.2.2 Deklarasi Variabel Array

Sebelum digunakan,variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama dengan variabel biasa, hanya disini diikuti oleh suatu indeks yang menunjukkan jumlah maksimum variabel yang akan disediakan. Bentuk umum deklarasi variabel array:

(2)

Tipe nama_va riabel[indeks]:

Sebagai contoh,kita akan mempersiapkan variabel array dengan nama bil yang akan menampung 10 data yang bertype float:

float bil [10]:

Indeks 10 menunjukkan bahwa variabel bil akan terdiri dari 10 buah elemen, dimana setiap elemen akan menampung sebuah data. Elemen array akan diberi nomor secara berurutan mulai dari nol(0) hingga sejumlah data tadi. Jadi bila pada deklarasi ditentukan:

float bil[10]:

Berarti ke 10 elemen variabel bil akan diurutkan sebagai berikut:

Elemen pertama adalah bil[0]

Elemen kedua adalah bil[1]

Elemen ketiga adalah bil[2]

……… ………...

Elemen kesepuluh adalah bil[9]

Karena indeks array dimulai dari nol (0), sedangkan nomor elemen biasanya dimulai dari satu (1), maka ada selisih satu antara nomor elemen dan nomor indeks.

Nomor elemen dapat dibuat sama dengan nomor indeks.untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan

(3)

karena elemen dengan indeks nol tidak akan digunakan. Sebagai contoh untuk deklarasi array dengan 10 bilangan,akan menjadi:

float bil [11];

Dengan bil[0] tidak digunakan .sehingga:

Elemen pertama adalah bil[1]

Elemen kedua adalah bil[2]

dst...hingga

Elemen ke sepuluh adalah bil[10 ]

Tetapi apakah hal ini diperlukan? jawabannya saya serahkan kepada anda masing- masing. Yang harus diinga t, yaitu bila variabe l array yang diguna ka n suda h lebih dari satu jenis, maka maka variabel yang dikorbankan bukan hanya satu lagi, tetapi sejumlah array yang ada, karena semua elemen ke nol dari masing- masing array tidak akan digunakan. Contoh lain adalah cara untuk mendeklarasikan variabel array kar yang akan menampung 4 buah karakter.

char kar [4];

Keempat elemen variabel array ini adalah : kar[1],kar[2],da n kar[3]. Contoh yang berikutnya,k ita akan mendeklarasika n variabe l array nomor yang aka n menampung 5 data integer:

int nomor[5];

Dengan elemen-elemen array nomor [0], nomor [1], nomor [2], nomor [3] dan nomor [4]. Deklarasi variabel array dapat dilakukan baik didalam suatu fungsi, maupun diluar fungsi-fungsi yang ada.jika deklarasi dilakukan didalam suatu fungsi-fungsi,maka variabel array ini akan bersifat loka l yang hanya akan dikenal oleh fungs i tersebut.sebaiknya bila deklarasi dilakukan diluar fungsi,maka variabel array ini akan bersifat global,yang akan dikenal oleh beberapa atau seluruh fungsi.

6.2.3 Inisialisasi Array Satu Dimensi

Bila diperluka n,variabel array dapat juga diberi nilai awal (inisialisasi). Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Cara menginisialisasi suatu array adalah dengan meletakkan elemen-elemen array diantara tanda kurung kurawal seperti:

(4)

Dan diantara elemen yang satu dengan yang lainnya dipisahka n dengan koma. Contoh inisialisasi di atas menyatakan bahwa:

Bil[0]=0 Bil[1]=1 Bil[2]=3 Bil[3]=5 Bil[4]=2

Sedangka n cara yang kedua yaitu de ngan mende finisika n array tadi seba gai static array. Static array adalah suatu array yang diinisilisasikan didalam suatu fungsi dan bersifat seperti variable local, artinya array ini hanya dike nal oleh fungsi yang bersangkutan, tidak oleh fungsi- fungsi yang lain.sama halnya dengan external array atau global,nilai yang dimiliki oleh elemen-elemen static array masih tetap akan tersimpan didalam memori meskipun program dihentikan,jadi nilai- nilai tersebut tidak hilang sehingga masih dapat digunakan oleh program yang lain. Cara mendeklarasikan static array yaitu dengan menambahkan kata static didepan tipe variable atau type specifier seperti:

static int bil[5]={0,0,0,0,0};

apakah keuntungan lain menggunakan global static array diba ndingkan dengan automatic array. Pada automatic array yang tidak diinisialisasi, elemen-elemen array tersebut akan memiliki nilai yang tidak beraturan.

6.2.4 Array Dua Dime nsi

Struktur array dua dimensi memiliki dua macam indeks yang dituliskan seperti berikut ini: Nama_variabel [indeks1] [indeks2]

Indeks1 menunjukkan jumlah atau nomor baris, sedangkan indeks2 menunjukkan jumlah atau nomor kolom

(5)

Jumlah ele men yang dimilik i oleh array dua dimensi dapat ditentukan dari hasil perkalian Indeks1 * Indeks2. Misalkan: array A[2][3] akan memiliki 2 * 3 = 6 elemen, B[7][8] akan me miliki 7 * 8 = 56 ele men. Penanganan terhadap array dua dlmens i mir ip sekali dengan array satu dimensi. Pertama, akan diberikan contoh meng inisia lisasi array dua dimensi:

atau dapat pula dituliskan dengan # def ine:

Selanjutnya adalah contoh menginisialisasi array dua dimensi:

Keluaran dari contoh di atas adalah sbb,: elemen bil [0] [0] adalah 1.1

elemen bil [0] [1] adalah 1.2 elemen bil [0] [2] adalah 1.3 elemen bil [0] [3] adalah 1.4 elemen bil [0] [4] adalah 1.5 elemen b il [1] [0] adalah 2.1 elemen b il [1] [1] adalah 2.2 elemen bil [1] [2] adalah 2.3 elemen bil [1] [3] adalah 2.4 elemen bil [1] [4] adalah 2.5 dst ………

(6)

6.2.5 Mengurutkan Array

Proses lain yang cukup penting dipelajari adalah menngurutkan array. Sebenarnya cukk up banyak metode untuk mengurutkan aray ini, namun pada kesempatan ini hanya dua metode saja yang akan dibahas, yaitu bubble sort da n quick sort. Bubb le sort dipillih karena metode ini memiliki metode yang mudah dipelajari, Sedangkan quick sort dipilih karena pengurutan data dengan metode ini merupakan salah satu proses pengurutan yang tercepat.

a. Bubble Sort

Untuk mempermudah memberikan gambaran tentang proses bubble sort, maka dsini akan dijelaskan dengan suatu contoh. Misalkan anda memiliki empat buah bilangan yang perlu diurutkan mulai nilai terkecil hingga nilai terbesar atau pengurutan naik (untuk pengurutan turun, dari besar ke kecil).

Bubble sort membagi proses pengurutan menjadi beberapa tahap. Tahap pertama, kita

membandingkan bilangan pertama dengan bilangan yang lain, bilangan-bilangan lain lebih kecil dari pada bilangan pertama, maka akan dilakukan penukaran tempat antara bilangan pertama dengan bilangan tadi. Pada akhir tahap ini, bilangan tahap pertama telah berada pada posisi yang benar, artinya bilangan ini sekarang merupakan bilangan yang terkkecil (atau yang terbesar, tergantung jenis pengurutan). Pada tahapan pertama ini dilakukan tiga kali perbandinngan.

Tahapan kedua membandingkan bilangan kedua de ngan bilangan-bilangan yang terletak dibawahnnya (ketiga, keempat, dst.). Jika bilangan-bilangan tersebut lebih kecil daripada bilangan kedua, maka akaan dilakukan pertukaran tempat. Pada akhir tahap kedua, bilangan kedua akan menduduki posisi yang benar, artinya bilangan kedua ini merupakan billangan kedua terkecil. Pada tahapan kedua diadakan dua kkali perbandingan. Tahap ketiga membandingka n bilangan ketiga dengan bilangan keempat (kelima dan seterusnyya bila ada). Penukaran tempat akan dilakukan bila bilangan-bilangan lain lebih kecil daripada bilangan ketiga. Pada tahap akhir ini, bilangan ketiga telah menempati posisinya yang benar. Sejauh ini, bilangan-bilangan pertama, kedua, dan ketiga telah memilliki urutan yang benar. Sehingga bila bilangan yang kita miliki hanya empat, maka bilanganyang keempat otomatis akan berada pada letaaknya yang benar (lihat contoh di atas). Pada tahap ketiga ini diadakan sekali perba ndingan.

(7)

Jika bilangan yang akan diurutkaan terdiri dari lima bilangan, maka anda masih membutuhkan tahap keempat, yang akan membandingkan bilangan keempat dan kelima. Dan bila ada enam bilangan, tentunya proses pengurutan masih akan dilanjutkan hingga tahap keempat, dan kelima. Dari sini disimpulkan bahwa:

Jumlah tahap = jumlah bilanga n -1;

Banyaknya perbandingan pada setiap tahap = Jumlah bb ilangan – no tahap. Contoh: Mengurutkan 6 b ilangan, Jumlah tahapa n = 6-1= 5 jumlah bilangan Banyaknya perbandingan pada:

Tahapa n 1 : 6-1 = 5 Tahapa n 2 : 6-2 = 4 Tahapa n 3 : 6-3 = 3 Tahapa n 4 : 6-4 = 2 Tahapa n 5 : 6-5 = 1 b. Quick Sort

Meskipun tidak semuda h pe ngertian bubb le sor t namun proses pengurutan dengan quick sort akan lebih cepat. Hal ini akan terasa sekali jika jumlah da ta yang aka n diur utkan cukup banyak. Misalka n terdapat 7 buah data, langkah pertama adalah menentukan elemen pivot, yaituu elemen yang dipakai sebagai acuan untuk mengurutkan data, elemen ini boleh dipilih sembarang dari ke 7 bilangan yang ada. Dalam contoh ini diambil elemen terakhir. Langkah berikutnya adalah membandingkan seluruh bilangan yang ada tadi dengan pivot ini, tujuanya adalah elemen-elemen yang lebih kecil diletakan di sebelah kiri elemen pivot dan bilangan-bilangan yang lebih kecil diletakan di sebelah kiri elemen pivot dan bilangan-bilangan-bilangan-bilangan yang lebih besar di kananya. Hal ini dapat dilakukan dengan membandingkan bilangan-bilangan tersebut dari dua arah , yaitu kiri dan kanan. Gerakan dari kiri diwakili oleh I, sedangkan dari kanan diwakili oleh J. Bila elemen I lebih besar dari pada elemen pivot dan elemen J lebih kecil dari elemen pivot.pivot maka kedua elemen ini ditukar letaknya. Proses ini berlangsung terus hingga gerakan dari kiri bertemu dengan gerakan dari kanan di suatu titik tertentu. Semua bilangan yang terletak di sebelah kiri elemen pivot pasti lebih kecil dari elemen tersebut, sedangkan yang disebelah kanannya lebih besar. Urutan bilangan disebelah kiri ataupun disebelah ka nan elemen pivot, tidak p erlu be rurutan.

6.3 Peralatan

(8)

2. Software Turbo C atau C++

6.4 Langkah Kerja

1 Buatlah program seperti dibawah ini dan simpan dengan nama Con61, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* array satu dimensi */ main()

{

float bil [10] int i=0,n; clrscr()

/*inputkan bilangan-bilangan tersebut*/ printf (“ inputkan sejumlah bilangan ”); printf (“\n\n”);

do {

printf (“bilangan ke %d : “,i+1); scanf (“%f”,&bil[i]) ;

i++; }

while (i<10);

/*Tampilkan bilangan yang diinginkan */ while (1)

{

printf (“\nNomor bilangan yang anda tampilkan : ”); scanf (“%d”,&n);

if (n==0) break;

printf (“ bilangan ke %d : %f”,n,bil[n-1]); }

getche(); }

2 Buatlah program seperti dibawah ini dan simpan dengan nama Con62, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* inisialisasi array satu dimensi */ main()

{

int bil[5]={0,0,0,0,0}; int i,n;

clrscr();

/*mengganti nilai elemen suatu array*/

printf (“\ninputkan nomor elemen yang akan diganti\n”); printf(“\n\tinputkan nol(0) untuk berhenti : ”);

scanf(“%d”,&n); if (n==0)

(9)

break;

printf (“\nElemen ke %2d nilai lama %10d nilai baru : “,n ,bil[n-1]); scanf (“%d”,%bil[n-1]);

}

/* mencetak nilai elemen array yang baru*/

printf (“\n\nnilai elemen –elemen yang baru : ”); for (i=0;i<5;i++)

printf (“ \n\telemen ke %2d = %d”,i+1,b il[i]); printf (“ \n\n tekan sembarang tombo l”); getche();

}

3 Buatlah program seperti dibawah ini dan simpan dengan nama Con63, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* automatic array tanpa inisialisasi /* main()

{

int bil[5]; int i; clrscr();

printf (“\xdb \xdb a utomatic array tanpa inisialisasi \xdb\xdb ”); for ( i=0; i<5; ++i)

printf (“ \n elemen ke %2d = %d” , i+1, bil[i]); printf (“ \n\ntekan sembarang tombol ”); getche();

}

4 Buatlah program seperti dibawah ini dan simpan dengan nama Con64, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/*static array tanpa inisialisasi */ main()

{

static int bil[5]; int i;

clrscr();

printf (“ Static array tanpa inisialisasi \n ”); for (i=0;i<5;++i)

printf (“ \nelemen ke %2d = %d ” ,i+1,bil[i] ); printf (“ tekan sembarang tombo l”);

getche (); }

5 Buatlah program seperti dibawah ini dan simpan dengan nama Con65, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

(10)

int bil [5]; main() { int i ; clrscr();

printf (“ Globa l array tanpa inisialisasi \n”); for (i=0;i<5;++i)

printf (“ \nElemen ke %2d = %d ” ,i+1,bil[i] ); printf (“ tekan sembarang tombol”);

getche (); }

6 Buatlah program seperti dibawah ini dan simpan dengan nama Con66, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* mencari nilai maksimum dan nilai minimum */ #define n 20

/* deklarasi array dan variabel global */ float maks(),min();

int i; main() {

float nl_max,nl_min,b il[n]; int jml_bil;

clrscr();

printf(“\xb1 \xb2 mmencari nilai maksimum dan minimum \xb1 \xb1 ”); /* input jumlah bilangan */

printf(“\n\njumlah bilangan : ”); scanf(“%f”.&bil[i]);

}

/* menentukan nilai maksimum dan minimum */ nl_max=maks(bil,jml_bil);

nl_min=min(bil,jml_b il);

/* mencetaknilai maksimum dan minimum */ printf(“\n\nnilai maksimum : %.3 f,nl_max); printf(“\nnilai minimum :%.3f”,nl_min); printf(“\ntekan sembarang tombol ”); getche();

}

/* fungsi untuk menentukan nilai maksimum */ float maks(x,no)

float x[]; int no;

(11)

{ float maksimum=x[0]; for (i=0;i<no;++i) { if (x[i]>maksimum) maksimum=x[i]; } return (maksimum); }

/* fungsi untuk enentukan nilai minimum */ float min(x, no)

float x[]; int no; { float minimum=x[0]); for (i=0;1<no;++i) { if (x[i]<minimum) minimum=x[i]; } return(minimum); }

7 Buatlah program seperti dibawah ini dan simpan dengan nama Con67, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* mengurutkan data dengan bubble sort */ #define n 20 int i,j,A[N]; main() { int jml; clrscr();

printf(“\ninputkan jumlah bilangann ;”); scanf(“%d”,&jml); /*input data */ for(i=0; 1<jml;++i) { printf(“\n\tbilangan ke %d : “,1+1); scanf(“%d”,&A[I]); }

/* mengurutkan data dengan bubble sort */ bubble(jml);

/*mencetak output*/

priintf(“\n\nda ta yang suda h di urutkka n : ”); getche();

(12)

/* mengurutkan data */ bubble(N)

int n;; {

int dummy;

for(i=1;<=n-1;++1) /* I = jumlah tahapan*/

{

for(j=i;<n;++j) /* j = jumlah perbandingan */

{ if(A[i-1]>A[j]) { dummy=a[i-1]; A[i-1]=A[j]; A[j]=dummy; } } } getche(); }

8 Buatlah program seperti dibawah ini dan simpan dengan nama Con68, kemudian lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* mengurutkan data dengan quick sort */ #define n 20 int i,j,A[N]; main() { int jml; clrscr();

printf(“\ninputkan jumlah bilangan :”); scanf(“%d”,&jml); /*input data*/ for(i=0;i<jml;++i) { printf(“\n\tbilangan ke %d : ”,i+1); scanf(“%d”,&A[I]); } /* mencetak output*/

printf(“\n\ndata yang suda h diur utka n : ”); for(i=0;i<jml;++i)

{ printf(“\n%d”,A[I]); pr intf

(“\tekan sembarang tombol””); getche();

(13)

printf (“\nTekan sembarang tombol “); getch();

}

/* Mengurutkan data dengan Quick Sort */ Quick (bt_bwh,bt_atas)

int bt_bwh, bt_atas; {

int pivot,dummy;

/* looping dilakukan selama batas bawah lebih kecil dari batas atasnya */ if(bt_bwh,bt_atas) { i=bt_bwh; j=bt_atas; pivot=A[j]; do {

while (i<j && A[i]<=pivot ) i++;

while (j>I &&A[j]>=pivot )

j--; if (i<j) { dummy=A[i]; A[i]=A[j]; A[j]=dummy; } } while (i<j); dummy =A[j]; A[j]=A[bt_atas]; A[bt_atas]=dummy; if(j-bt_bwh,bt_atas- i) { quick(bt_bwh,j-1); /*Rekursi */ quick(i+1,bt_atas); } else { quick(i+1,bt_atas); /*Rekursi */ quick(bt_bwh,j-1); } } }

(14)

8.1 Lembar Kerja

No Nama File Keluaran

1 2 3 4 5 6 7 8 9 10 11

8.2 Pertanyaa n dan Tugas

1. Buatlah program untuk menent uka n status seorang mahasiswa apakah dia LULUS (L) atau GUGUR (G). Ketentuan untuk lulus dan gugur adalah :

Nilai <60 GUGUR

Nilai >=60 LULUS

Sebagai input :

Nomor pokok Mahasiswa integer

Nilai Mahasiswa float

Sebagai contoh:

Nomor pokok, N ilai, dan Status dalam bentuk tabel Jumlah, mahasiswa, jumlah yang lulus, % kelulusan

Bila diketahui jumlah mahasiswa dalam satu kelas tidak akann melebihi 20 orang. Setelah selesai, tentukanlah tiga mahasiswa dengan urutan tertinggi.

2. Buatlah program yang dapat digunakan untuk operasi matriks bujursangkar yang meliputi : 1. Penjumlahan

(15)

2. Selisih 3. Perkalian 4. Transpose

Daftar Pustaka

1. Al Fatt, Hanif. Dasar Pemrograman C++

.

Andi O ffset, Jogyakarta, 2007.

2. Hartanto, Jogiyanto. Buku Konsep Dasar Pemrograman Bahasa C. Ando Offset, Jogyakarta, 2006.

3. Kadir, Abdul. Algoritma Pemrograman Menggunakan C++. Andi O ffset, Jogyakarta, 2007.

4. Ngeon, Thomson Susabda . Pengantar Algoritma Dengan Bahasa C. Salemba Infotek, Jakarta, 2006.

5. Nugroho, Adi. Algoritma dan Struktur Dara Dengan C. Andi Offset, Jogyakarta, 2009. 6. Partoharsojo, Hartono. Tuntunan Praktis Pemrograman Bahasa C 2.0. PT Elex Media

Komputindo, Jakarta, Indonesia, 1989.

7. Supardi, Yuniar. Cara Mudah Belajar Bahasa C dan Flow Chart Dalam Praktek. Dinastindo, Jakarta, 2006.

Referensi

Dokumen terkait

Akibat yang terlihat pada individu yang mengalami luka bakar merupakan hasil Akibat yang terlihat pada individu yang mengalami luka bakar merupakan hasil dari penyebab efek panas

Kesimpulan dari penelitian ini adalah: Semakin baik pengetahuan, sikap, dan perilaku terhadap pemeliharaan kebersihan gigi dan mulut, semakin baik status kesehatan periodontal

Memang pada saat ini ada beberapa merger yang dalam proses menuju ke arah kerja sama dengan kita dengan lebih erat namun kami berada dalam kondisi dimana kami belum

Metode penelitian : Penelitian dilakukan dengan pendekatan kuantitatif Jenis penelitian adalah penelitian exsperimental, dengan menggunakan pendekatan quasi exsperimental

Pembangunan Rumah Oleh Perum Perumnas Provinsi Jawa Barat Tahun 2011. No Nama

Pertumbuhan : Merupakan tanaman vigor, type semi determinate,toleran layu bakteri dan cocok didataran rendah dan tinggi.. Cabai

Penentuan varians bersyarat dari sebuah peubah acak diberikan peubah acak lainnya, baik diskrit maupun kontinu dijelaskan dalam Definisi 7.12... 2 FUNGSI PEMBANGKIT

Halaman 6 LAMPIRAN II PENJABARAN PERTANGGUNGJAWABAN - PENJABARAN LAPORAN REALISASI ANGGARAN PENDAPATAN DAN