Jobsheet 5

22
Algoritma Pemrograman JOBSHEET 5 Larik (Array) 5.1 Tujuan Instruksional Khusus 1. Mahasiswa mampu membuat program menggunakan algoritma array satu dimensi dan algoritma array dua dimensi. 2. Mahasiswa mampu membuat program sortir menggunakan metoda bubble –sort dan quick-sort. 5.2Pendahuluan 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],bilangan kedua akan disimpan kedalamvariabel bil[1], bilangan ketiga akan disimpan kedalam variabel [2], dan seterusnya. Penulisan [0], [1], [2], [3],dan seterusnya disebut sebagai indeks dari variabel bil. 5.2.1 Variabel Array Struktur variabel array satu dimensi dituliskan sebagai: Nama_variabel [indeks] Jobsheet 5: Larik (Array) Halaman 82

description

pemrograman

Transcript of Jobsheet 5

Page 1: Jobsheet 5

Algoritma Pemrograman

JOBSHEET 5

Larik (Array)

5.1 Tujuan Instruksional Khusus

1. Mahasiswa mampu membuat program menggunakan algoritma array satu dimensi dan

algoritma array dua dimensi.

2. Mahasiswa mampu membuat program sortir menggunakan metoda bubble –sort dan

quick-sort.

5.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],bilangan kedua akan disimpan kedalamvariabel bil[1],

bilangan ketiga akan disimpan kedalam variabel [2], dan seterusnya. Penulisan [0], [1], [2],

[3],dan seterusnya disebut sebagai indeks dari variabel bil.

5.2.1 Variabel Array

Struktur variabel array satu dimensi dituliskan sebagai:

Nama_variabel [indeks]

Ketentuan 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

5.2.2 Deklarasi Variabel Array

Jobsheet 5: Larik (Array) Halaman 82

Page 2: Jobsheet 5

Algoritma Pemrograman

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:

Tipe nama_variabel[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.

Jobsheet 5: Larik (Array) Halaman 83

Page 3: Jobsheet 5

Algoritma Pemrograman

Nomor elemen dapat dibuat sama dengan nomor indeks.untuk mempermudah pembuatan

program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan

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.............hinggaElemen ke sepuluh adalah bil[10]

Tetapi apakah hal ini diperlukan? jawabannya saya serahkan kepada anda masing-masing.

Yang harus diingat, yaitu bila variabel array yang digunakan sudah 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];

Jobsheet 5: Larik (Array) Halaman 84

Page 4: Jobsheet 5

Algoritma Pemrograman

Keempat elemen variabel array ini adalah : kar[1],kar[2],dan kar[3]. Contoh yang

berikutnya,kita akan mendeklarasikan variabel array nomor yang akan 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,maka variabel array ini akan

bersifat lokal yang hanya akan dikenal oleh fungsi tersebut.sebaiknya bila deklarasi dilakukan

diluar fungsi,maka variabel array ini akan bersifat global,yang akan dikenal oleh beberapa

atau seluruh fungsi.

5.2.3 Inisialisasi Array Satu Dimensi

Bila diperlukan,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:

int bil[5] = {0,1,3,5,2};

Dan diantara elemen yang satu dengan yang lainnya dipisahkan dengan koma. Contoh

inisialisasi di atas menyatakan bahwa:

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

Sedangkan cara yang kedua yaitu dengan mendefinisikan array tadi sebagai static array.

Static array adalah suatu array yang diinisilisasikan didalam suatu fungsi dan bersifat seperti

variable local, artinya array ini hanya dikenal 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

Jobsheet 5: Larik (Array) Halaman 85

Page 5: Jobsheet 5

Algoritma Pemrograman

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 dibandingkan dengan automatic

array. Pada automatic array yang tidak diinisialisasi, elemen-elemen array tersebut akan

memiliki nilai yang tidak beraturan.

5.2.4 Array Dua Dimensi

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

Jumlah elemen yang dimiliki 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 memiliki 7 * 8 = 56 elemen. Penanganan terhadap array dua dimensi mirip

sekali dengan array satu dimensi. Pertama, akan diberikan contoh menginisialisasi array

dua dimensi:

Jobsheet 5: Larik (Array) Halaman 86

Page 6: Jobsheet 5

Algoritma Pemrograman

atau dapat pula dituliskan dengan # define:

Selanjutnya adalah contoh menginisialisasi array dua dimensi:

Keluaran dari contoh di atas adalah sbb,:elemen bil [0] [0] adalah 1.1elemen bil [0] [1] adalah 1.2elemen bil [0] [2] adalah 1.3elemen bil [0] [3] adalah 1.4 elemen bil [0] [4] adalah 1.5elemen bil [1] [0] adalah 2.1elemen bil [1] [1] adalah 2.2elemen bil [1] [2] adalah 2.3elemen bil [1] [3] adalah 2.4 elemen bil [1] [4] adalah 2.5dst ………

5.2.5 Mengurutkan Array

Proses lain yang cukup penting dipelajari adalah menngurutkan array. Sebenarnya cukkup

banyak metode untuk mengurutkan aray ini, namun pada kesempatan ini hanya dua metode

saja yang akan dibahas, yaitu bubble sort dan quick sort. Bubble 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

Jobsheet 5: Larik (Array) Halaman 87

Page 7: Jobsheet 5

Algoritma Pemrograman

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 dengan 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

membandingkan 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

perbandingan.

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 bilangan -1;

Jobsheet 5: Larik (Array) Halaman 88

Page 8: Jobsheet 5

Algoritma Pemrograman

Banyaknya perbandingan pada setiap tahap = Jumlah bbilangan – no tahap.

Contoh: Mengurutkan 6 bilangan, Jumlah tahapan = 6-1= 5 jumlah bilangan

Banyaknya perbandingan pada:

Tahapan 1 : 6-1 = 5Tahapan 2 : 6-2 = 4Tahapan 3 : 6-3 = 3Tahapan 4 : 6-4 = 2Tahapan 5 : 6-5 = 1

b. Quick Sort

Meskipun tidak semudah pengertian bubble sort namun proses pengurutan dengan quick sort

akan lebih cepat. Hal ini akan terasa sekali jika jumlah data yang akan diurutkan cukup

banyak. Misalkan 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 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 kanan elemen pivot, tidak perlu berurutan.

5.3 Peralatan

1. Satu set computer

2. Software Turbo C atau C++

5.4 Langkah Kerja

Jobsheet 5: Larik (Array) Halaman 89

Page 9: Jobsheet 5

Algoritma Pemrograman

1 Buatlah program seperti dibawah ini dan simpan dengan nama Con51, 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 Con52, 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*/while(1){ printf (“\ninputkan nomor elemen yang akan diganti\n”); printf(“\n\tinputkan nol(0) untuk berhenti : ”); scanf(“%d”,&n); if (n==0)

Jobsheet 5: Larik (Array) Halaman 90

Page 10: Jobsheet 5

Algoritma Pemrograman

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,bil[i]); printf (“ \n\n tekan sembarang tombol”); getche();}

3 Buatlah program seperti dibawah ini dan simpan dengan nama Con53, 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 automatic 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 Con54, 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 tombol”); getche ();}

Jobsheet 5: Larik (Array) Halaman 91

Page 11: Jobsheet 5

Algoritma Pemrograman

5 Buatlah program seperti dibawah ini dan simpan dengan nama Con55, kemudian

lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

/* global array tanpa inisialisasi */int bil [5];main(){ int i ; clrscr(); printf (“ Global 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 Con56, 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,bil[n];int jml_bil;clrscr();printf(“\xb1\xb2 mmencari nilai maksimum dan minimum \xb1\xb1”);/* input jumlah bilangan */printf(“\n\njumlah bilangan : ”);scanf(“%d”.&jml_bil);

/* input data */for (i=0; i<jml_bil; i++)

{ printf(“\n\tBilangan ke %d : “,i+1);scanf(“%f”,&bil[i]);}

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

Jobsheet 5: Larik (Array) Halaman 92

Page 12: Jobsheet 5

Algoritma Pemrograman

nl_min=min(bil,jml_bil);

/* mencetaknilai maksimum dan minimum */printf(“\n\nnilai maksimum : %.3f,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;{

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 Con57, kemudian

lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.

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

Jobsheet 5: Larik (Array) Halaman 93

Page 13: Jobsheet 5

Algoritma Pemrograman

int jml;clrscr();printf(“\ninputkan jumlah bilangann ;”);scanf(“%d”,&jml);

/*input data */for(i=0; i<jml;++i){

printf(“\n\tbilangan ke %d : “,i+1);scanf(“%d”,&A[i]);

}/* mengurutkan data dengan bubble sort */bubble(jml);/*mencetak output*/printf(“\n\ndata yang sudah di urutkkan : ”);for (i=0; i<jml; i++) printf(“\n%d”, A[i]);printf(“\nTekan sembarang tombol”);getche();

}

/* mengurutkan data */bubble(n)int n ; { int dummy; for(i=1;i<=n-1;++1) /* i= jumlah tahapan*/ { for(j=i;j<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.

Jobsheet 5: Larik (Array) Halaman 94

Page 14: Jobsheet 5

Algoritma Pemrograman

/* mengurutkan data dengan quick sort */#define N 20int 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]); }

quick(0, jml-1); /* mencetak output*/ printf(“\n\ndata yang sudah diurutkan : ”); for(i=0;i<jml;++i) printf(“\n%d”,A[i]); printf (“\tekan sembarang tombol””); getche();}

/* 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)

Jobsheet 5: Larik (Array) Halaman 95

Page 15: Jobsheet 5

Algoritma Pemrograman

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

}}

}

5.5 Lembar

No Nama File Keluaran

1

2

3

4

5

6

7

8

Jobsheet 5: Larik (Array) Halaman 96

Page 16: Jobsheet 5

Algoritma Pemrograman

9

10

11

5.6 Pertanyaan dan Tugas1. Buatlah program untuk menentukan 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, Nilai, 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 2. Selisih3. Perkalian

Jobsheet 5: Larik (Array) Halaman 97