Job Sheet 5 (Algoritma)
Job Sheet 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
Algoritma
Pemrograman
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
Elemen kedua adalah
Elemen ketiga adalah
...
Elemen kesepuluh adalah
bil[0]
bil[1]
bil[2]
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.
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
Elemen kedua adalah
dst.............hingga
Elemen ke sepuluh adalah
bil[1]
bil[2]
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
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 fungsifungsi 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
Algoritma
Pemrograman
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]=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
Algoritma
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:
adalah sbb,:
1.1
1.2
1.3
1.4
1.5
Algoritma
Pemrograman
2.1
2.2
2.3
2.4
2.5
Algoritma
Pemrograman
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;
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 bilanganbilangan 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
Jobsheet 5: Larik (Array)
Halaman 88
Algoritma
Pemrograman
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
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();
}
Buatlah program seperti dibawah ini dan simpan dengan nama Con52, kemudian
lakukanlah compile dan run, catat hasilnya pada lembar kerja yang tersedia.
Algoritma
Pemrograman
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();
}
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()
Algoritma
Pemrograman
{
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 ();
}
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 ();
}
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);
Algoritma
Pemrograman
/* 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)
{
if (x[i]>maksimum)
maksimum=x[i];
}
return (maksimum);
}
/* fungsi untuk menentukan 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);
}
Algoritma
Pemrograman
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 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*/
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)
{
for(j=i;j<n;++j)
{
if(A[i-1]>A[j])
{
dummy=A[i-1];
A[i-1]=A[j];
A[j]=dummy;
}
}
}
/* i= jumlah tahapan*/
/* j = jumlah perbandingan */
Algoritma
Pemrograman
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]);
}
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)
Algoritma
Pemrograman
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);
quick(i+1,bt_atas);
}
else
{
quick(i+1,bt_atas);
quick(bt_bwh, j-1);
}
}
/*Rekursi */
/*Rekursi */
5.5 Lembar
No
Nama File
1
2
3
4
5
6
7
Keluaran
Algoritma
Pemrograman
8
9
10
11
5.6 Pertanyaan dan Tugas
1. 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. Selisih
3. Perkalian