Anda di halaman 1dari 14

Pr.

Algoritma dan Pemrograman

JOBSHEET 5
Larik (Array)
5.1 Tujuan Instruksional Khusus
1. Mahasiswa mampu membuat program menggunakan 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


Sebelum digunakan,variabel array perlu dideklarasikan terlebih dahulu. Cara
mendeklarasikan variabel array sama dengan variabel biasa, hanya disini diikuti oleh

Jobsheet 5: Larik (Array)


Halaman 61
Pr. Algoritma dan Pemrograman

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.

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

Jobsheet 5: Larik (Array)


Halaman 62
Pr. Algoritma dan Pemrograman

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 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];

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

Jobsheet 5: Larik (Array)


Halaman 63
Pr. Algoritma dan Pemrograman

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]=0
Bil[1]=1
Bil[2]=3
Bil[3]=5
Bil[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 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

Jobsheet 5: Larik (Array)


Halaman 64
Pr. Algoritma dan Pemrograman

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:

atau dapat pula


dituliskan dengan #
define:

Selanjutnya adalah
contoh
menginisialisasi array
dua dimensi:

Keluaran dari contoh


di atas ad
alah 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 bil [1] [0] adalah 2.1
elemen bil [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 ………

Jobsheet 5: Larik (Array)


Halaman 65
Pr. Algoritma dan Pemrograman

6.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
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

Jobsheet 5: Larik (Array)


Halaman 66
Pr. Algoritma dan Pemrograman

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;
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 = 5
Tahapan 2 : 6-2 = 4
Tahapan 3 : 6-3 = 3
Tahapan 4 : 6-4 = 2
Tahapan 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

Jobsheet 5: Larik (Array)


Halaman 67
Pr. Algoritma dan Pemrograman

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


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()
{
Jobsheet 5: Larik (Array)
Halaman 68
Pr. Algoritma dan Pemrograman

int bil[5]={10,20,30,40,50};
int i,n;
clrscr();
/*mengganti nilai elemen suatu array*/
printf(“\xB0 Mengganti Nilai Elemen Suatu Array \xB0”);
while(1)
{
printf (“\ninputkan nomor elemen yang akan diganti\n”);
printf(“\n\tinputkan nol(0) untuk berhenti : ”);
scanf(“%d”,&n);
if (n==0)
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.
Jobsheet 5: Larik (Array)
Halaman 69
Pr. Algoritma dan Pemrograman

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

Jobsheet 5: Larik (Array)


Halaman 70
Pr. Algoritma dan Pemrograman

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

5 Buatlah program seperti dibawah ini dan simpan dengan nama Con55, 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; i<jml;++i)
{
printf(“\n\tbilangan ke %d : “,i+1);
scanf(“%d”,&A[i]);
}
/* mengurutkan data dengan bubble sort */
bubble(jml);
/*mencetak output*/
priintf(“\n\ndata yang sudah di urutkkan : ”);
for(i=0; i<jml;++i)
{
printf(“\n%d”,A[i]);
}

Jobsheet 5: Larik (Array)


Halaman 71
Pr. Algoritma dan Pemrograman

getche();
}

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

}
}

6 Buatlah program seperti dibawah ini dan simpan dengan nama Con56, 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]);
}

Jobsheet 5: Larik (Array)


Halaman 72
Pr. Algoritma dan Pemrograman

/* mencetak output*/
printf(“\n\ndata yang sudah diurutkan : ”);
for(i=0;i<jml;++i)
{ printf(“\n%d”,A[I]);
printf
(“\tekan sembarang tombol””);
getche();
}
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

Jobsheet 5: Larik (Array)


Halaman 73
Pr. Algoritma dan Pemrograman

{
quick(i+1,bt_atas); /*Rekursi */
quick(bt_bwh,j-1);
}
}
}

5.5 Lembar Kerja

No Nama File Keluaran

5.6 Pertanyaan dan Tugas


Ceritakanlah cara sorting menggunakan buble sort seperti pada langkah kerja nomor
5.

Jobsheet 5: Larik (Array)


Halaman 74

Anda mungkin juga menyukai