RSS

Struktur Data - Array


Struktur Data
Muhamad Nicky - 2010 430 1382

ARRAY


PENGERTIAN ARRAY
Menurut definisinya, array(larik) adalah sebuah variable yang dapat menyimpan lebih dari satu nilai sejenis (memiliki tipe data yang sama). Hal ini tentu berbeda dengan variable biasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang disimpan di dalam array di sebut dengan elemen array, sedangkan nilai urut yang digunakan untuk mengakses elemennya disebut dengan indeks array
DEKLARASI ARRAY
Sama seperti variable lain, array juga dideklarasikan di dalam bagian deklarasi variable. Bila akan didefinisikan sebagai tipe bentukan, maka array juga akan dideklarasikan dibagian definisi tipe (dibawah kata kunci tipe). Dalam bahasa pascal, pendeklaraasian array dilakukan dengan menggunakan kata kunci array dan tipe data yang akan disimpan di dalamnya, selain itu juga harus disertai dengan batas-batas indeksnya yang diapit oleh tanda bracket([]). Berikut ini bentuk umum pendeklarasiannya.
Bentuk Umum Penulisan :
Tanda_pengenal : array [..tipe index ..] of tipe data;

Contoh :
Var
A : array[1..4] of integer;
B : array[1..5] of string;
C: array[1..10] of real;

Keterangnan :
A,B,C merupakan tanda pengenal/ nama variabel dari array;
1..4 : merupakan tipe indek dari array, yang menunjukan banyaknya data yang mampu disimpan.
Integer : menunjukan bahwa data yang diinput berupa bilangan bulat.
Fungsi dari Array
Sebagai langkah efisiensi penggunan memori komputer,sebab data elemen array dialokasikan pada suatu deretan sel memori tertentu. Hal ini jauh lebih efisien dibandingkan dengan jika kita mendefinisikan masing – masing data pada suatu variabel tersendiri yang pastinya akan banyak menyita memori.
Agar memudahkan programmer dalam menyusun aplikasi yang berhubungan dengan banyak data terutama dalammasalah pencarian dan pengurutan data secara cepat. Bahan ajar Pemtrograman Terstruktur






Array Subscript
Array subscript adalah nilai atau expresi (pernyataan)dalam tanda kurung setelah nama array untuk menunjukkan elemen array mana yang harus diakses(indeks).
Contoh :
x[2] 2 = array subscript
n=10;
x[n – 8] n – 8 = array subscript

Mengakses Elemen Array
Untuk dapat mengakses elemen – elemen array sebagian besar sama seperti tipe variabel lainnya, tapi kita harus menyertakan indeksnya yang bisa didapat secara langsung atau menggunakan subscript.
Contoh :

int x[2];
x[1]=10;
printf(“%d”, x[1]);

Inisialisasi Array
Array dapat diinisialisasi secara langsung pada saat pertama kali dideklarasikan (efisien untuk array berdimensi sedikit).
Contoh :
int x[2]={1, 2};
Array dapat dideklarasikan terlebih dahulu, baru kemudian diisi elemennya.
Contoh :
int x[2];
x[0]=1;
x[1]=2;

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh suatu index.
Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi-dimensi.











1 ARRAY DIMENSI SATU
• Setiap elemen array dapat diakses melalui indeks.
• Indeks array secara default dimulai dari 0.
Deklarasi Array
Bentuk umum :
Tipe_array nama_array[ukuran];

Contoh :
Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]
int Nilai[5];
70 80 82 60 75

Contoh Program :
/* Program untuk menginput nilai mahasiswa ke dalam array satu dimensi */
#include “stdio.h”
#include “conio.h”
void main();
{ int index, nilai[10];
clrscr();
/* input nilai mahasiswa */
printf(“Input nilai 10 mahasiswa : “);
for(index=0; index < 10; index++)
{ printf(“Mahasiswa %i : “, index+1);
scanf(“%i”, &nilai[index]);
}
/* tampilkan nilai mahasiswa */
printf(“Nilai mahasiswa yang telah diinput”);
for(index=0; index < 10; index++)
{ printf(“%5.0i”, nilai[index]);
}
getch();
}

CATATAN :
String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen array menyatakan jumlah string.





Contoh aplikasi array satu dimensi :
/* Program untuk menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/
#include “stdio.h”
#include “conio.h”
#include “string.h”
void main()
{ char jurusan[25], jenjang[10], nim[10], nama[20];
crlscr();
printf(“Masukkan nama Anda : “); gets(nama);
printf(“Masukkan NIM Anda : “); gets(nim);
/***** cari jurusan *****/
switch(nim[2])
{ case ‘1’ : strcpy(jurusan, “Teknik Informatika”);
break;
case ‘2’ : strcpy(jurusan, “Sistem Informasi”);
break;
case ‘3’ : strcpy(jurusan, “Teknik Komputer”);
break;
case ‘4’ : strcpy(jurusan, “Komputerisasi Akuntansi”);
break;
default : printf(“Anda salah memasukkan NIM. Coba periksa lagi !”);
break;
}
/***** cari jenjang *****/
if(nim[4] == ‘5’)
{ strcpy(jenjang, “Strata-1”);
}
else
{ if(nim[4] == ‘3’)
{ strcpy(jenjang,”Diploma-3”);
}
else
printf(“ANda salah memasukkan NIM. Coba periksa lagi !”);
}
/***** tampilkan data mahasiswa *****/
printf(“ <>“);
printf(“Nama : %s”, nama);
printf(“NIM : %s”, nim);
printf(“Jurusan : %s”, jurusan);
printf(“Jenjang : %s”, jenjang);
getch();
}




2 ARRAY DIMENSI DUA
• Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom.
• Bentuknya dapat berupa matriks atau tabel
Deklarasi array :
Tipe_array nama_array[baris][kolom];
Contoh :
Int X[3][4];
X[0][0] X[0][1] X[0][2] X[0][3]
X[1][0] X[1][1] X[1][2] X[1][3]
X[2][0] X[2][1] X[2][2] X[2][3]

• Cara mengakses array :
Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya adalah sbb : X[1][2] = 10;
• Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :
. Row Major Order (secara baris per baris)
. Column Major Order (secara kolom per kolom
Contoh Program 1 :
/* Program menginput nilai(bilangan) ke dalam array dimensi dua dan menampilkannya */
#include “stdio.h”
#include “conio.h”
void main()
{ int baris, kolom, matriks[3][4];
crlscr();
// Input elemen array secara Row Major Order
printf(“Input elemen Array : \n“);
for(baris=0; baris<3; baris++)
{ for(kolom=0; kolom<4; kolom++)
{ printf(“matriks[%i][%i]”, baris+1, kolom+1);
scanf(“%i”, &matriks[baris][kolom]);
}
printf(“\n”);
}
// Tampilkan elemen Array secara Row Major Order
printf(“Isi array : \n”);
for(baris=0; baris<3; baris++)
{ for(kolom=0; kolom<4; kolom++)
{ printf(“%i”, &matriks[baris][kolom]);
}
printf(“\n”);
}
getch();
}






Contoh aplikasi array DUA dimensi :
/* Program penjumlahan matriks dua dimensi */
#include "stdio.h"
#include "conio.h"
void main()
{ int A[3][4], B[3][4], X[3][4], Y[3][4], C[3][4], i, j;
clrscr();
/******* Masukkan matriks A *******/
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ printf("input data matrik A[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&A[i][j]);
}
}
/******** Masukkan matriks B ********/
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ printf("input data matrik B[%i][%i] : ",i+1,j+1);
fflush(stdin);scanf("%i",&B[i][j]);
}
}
/******** Proses penjumlahan matriks A dan B ********/
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ X[i][j]=A[i][j]+B[i][j];
}
}
/******** Cetak isi matriks A ********/
printf("\n matrik A\n");
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%6i",A[i][j]);
printf("\n");
}
printf("\n");
/******** Cetak isi matriks B *******/
printf("\n matrik B\n");
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%6i",B[i][j]);printf("\n");
}
printf("\n");

/******** Cetak hasil penjumlahan matriks A dan B *******/
printf("\n matrik penjumlahan A+B\n");
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%6i",X[i][j]);printf("\n");
}
printf("\n\n");
getch();
}


3 ARRAY MULTI-DIMENSI
• Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua.
Bentuk umumnya yaitu :
tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];

Contoh :
float X[2][4][3];
X[0][0][0] X[0][0][1] X[0][0][2]
X[0][1][0] X[0][1][1] X[0][1][2]
X[0][2][0] X[0][2][1] X[0][2][2]
X[0][3][0] X[0][3][1] X[0][3][2]

X[1][0][0] X[1][0][1] X[1][0][2]
X[1][1][0] X[1][1][1] X[1][1][2]
X[1][2][0] X[1][2][1] X[1][2][2]
X[1][3][0] X[1][3][1] X[1][3][2]

Contoh Program :
#include “stdio.h”
#include “conio.h”

void main()
{ int i, j, k;
static int data_huruf[2][8][8] =
{ { { 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 1, 0 },
{ 1, 1, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }

}
{ { 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 0, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 1, 1, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 1, 1, 1, 0, 0, 1, 1, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0 }
}
};

/* Tampilkan Huruf */
for(i=0; i<2; i++)
{ for(j=0; j<8; j++)
{ for(k=0;k<8; k++)
if(data_huruf[i][j][k])
putchar(‘\xDB’);
else
putchar(“ “); /* spasi */
puts(“”);
}
puts(“”);
}
getch(); }

Penggunaan elemen array sebagai argument atau parameter pada suatu fungsi
Contoh :
void fnIniFungsi(double Param1, double *Param2, double *Param3);
Potongan program tersebut dapat dioptimalkan dengan menggunakan array seperti terlihat pada contoh :
double Param[3];
void fnIniFungsi(Param[0], &Param[1], &Param[2]);
Sehingga dapat penggunaan memori komputer, selain itu tidak perlu ada pengarahan ke variabel output (*) karena secara otomatis akan diisikan kembali ke array tersebut kedalam elemen yang sesuai (&).

Pencarian Dan Pengurutan Menggunakan Array
Dengan menggunakan array, maka kita dapat lebih mudah untuk melakukan pencarian dan pengurutan berdasarkan pada indeks elemen array tersebut.

Algoritma Pencarian Array
- Asumsikan bahwa target yang dicari belum ditemukan
- Mulai dengan melakukan inisialisasi elemen – elemen array
- Ulangi jika target belum ditemukan dan masih terdapat elemen array yang belum dibaca
- Jika elemen yang dicari belum sesuai dengan target, maka
Asumsikan kembali bahwa target belum ditemukan
Jika tidak, maka lanjutkan ke elemen array selanjutnya
Jika target ditemukan, maka kembalikan indeks target sebagai hasil pencarian Jika tidak, maka kembalikan nilai -1 sebagai hasil pencarian

Apabila ternyata data berjumlah 100 atau 1000, maka anda hanya perlu mengganti nilai dari konstanta max di atas dengan nilai yang sesuai. Alasan seperti inilah yang menyebabkan kita perlu menggunakan array.
contoh program:
{author: Noor Fitriana, S1 Ilmu Komputer 2008}
Program rata2;
uses wincrt;
const max=100;
var
nilai : array[1..max] of integer;
jml, rata: real;
n,i:integer;
begin
writeln(’*****************WELCOME***************’);
writeln(’***program untuk mencari rata-rata ***’);
writeln(’**************************************’);
writeln;
writeln(’TEKAN ENTER UNTUK MENAMPILKAN DATA!’);
readln;
write(’Masukkan jumlah nilai yang di masukkan: ‘); readln(n);
writeln;
for i:=1 to n do begin
write(’nilai ke-’,i:2,’: ‘); readln(nilai[i]);
end;
jml:=0;
for i:=1 to n do
jml:=jml+nilai[i];
rata:=jml/n;
writeln;
writeln(’—————————’);
writeln(’Jumlah    = ‘,jml:9:2);
writeln(’Rata-rata = ‘,rata:9:2);
writeln(’—————————’);
readln;
end.
MENGAPA HARUS MENGGUNAKAN ARRAY ???
Mungkin anda yang merupakan pemula akan bertanya mengapa kita perlu untuk mendeklarasikan array? untuk menjawab pertanyaan tersebut, coba Anda perhatikan dulu contoh kasus berikut. Apabila kita akan membuat program untuk menyimpan sekumpulan data, misalnya data-data hasil penelitian yang berupa bilangan, dimana jumlah dari data tersebut puluhan, ratusan, atau bahkan ribuan, apakah anda akan menggunakan variable sebanyak data yang ada? Jawabanya tentu tidak, karena hal tersebut merupakan hal yang sangat tidak efisien. Sebagai contoh, asumsikan bahwa banyak data tersebut adalah sepuluh, maka apabila kita menggunakan variabel biasa tentu kita akan menuliskannya melalui contoh kode berikut.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10: real;
Begin
Writeln(‘masukkan data ke-1 : ‘); readln(n1);
Writeln(‘masukkan data ke-2 : ‘); readln(n2) ;
Writeln(‘masukkan data ke-3 : ‘); readln(n3) ;
Writeln(‘masukkan data ke-4 : ‘); readln(n4) ;
Writeln(‘masukkan data ke-5 : ‘); readln(n5) ;
Writeln(‘masukkan data ke-6 : ‘); readln(n6);
Writeln(‘masukkan data ke-7 : ‘); readln(n7);
Writeln(‘masukkan data ke-8 : ‘); readln(n8);
Writeln(‘masukkan data ke-9 : ‘); readln(n9);
Writeln(‘masukkan data ke-10 : ‘); readln(n10);
End.
Hal ini tentu akan merepotkan diri kita. Apabila dilihat, program di atas memang masih pendek karena datanya hanya sepuluh, bagaimana bila ratusan atau bahkan ribuan?

Untuk mengatasi masalah ini, seharusnya kita menggunakan array untuk menyimpan data-data tersebut sehingga program akan jauh lebih sederhana dan mudah dalam pengerjaannya. Berikut iini perbaikan program diataas apabila kita menampung data-datanya kedalam sebuah array..

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comments:

Post a Comment

Comment-Comment Dong