(Array)

Apa sich itu Array?? Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.seperti : VARIABEL ARRAY
nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];
deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
float bil[11]

INISIALISASI ARRAY 1 DIMENSI
Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
int bil[2] = {4,1,8}

bil[0] = 4
bil[1] = 1
bil[2] = 8

AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan array dari compiler yg tidak mengikuti standar ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
int bil[2]={0,0,0};
main()

2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
main()
{
static int bil[2]={0,0,0};
………

Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).

Contoh :
main()
{
int y;
int hitung=0;
int x[0];
for(y=0;y<5;y++)
{
hitung+=y;
x[y]=hitung;
printf("%3d – %3d\n",y,x[y]);
}
}

OUTPUT:
0- 0
1- 1
2- 3
3- 6
4- 10

MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentukan dengan menggunakan
preprocessor directives #define
#define N 40
main()
{
int no[N],gaji[N],gol[N],status[N],juman[N];

Bila besari indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50

ARRAY 2 DIMENSI
nama_variabel [indeks1][indeks2]

indeks1 : jumlah/nomor baris
indeks2 : jumlah/nomor kolom
Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian indeks1 * indeks2

misal : array A[2][3] akan memiliki 2*3 = 6 elemen.

main()
{
float bil [5] [5]
…….

dapat dituliskan dengan #define
#define N 5
main()
{
float bil [N] [N]
…….

INISIALISASI ARRAY 2 DIMENSI
main()
{
float bil[2] [3] =
{ { 1,2,3}, /*baris 0*/
{ 4,5,6}, /*baris 1*/
}

elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6

Contoh :
main()
{
int x[3][5];
int y,z;
int hitung=0;
for(y=0;y<3;y++)

{
printf("y = %d\n",y);
for(z=0;z<5;z++)
{
hitung+=z;
x[y][z] = hitung;
printf("%/t%3d – %3d\n",z,x[y][z]);
}
}
}

OUTPUT:
y = 0
0- 0
1- 1
2- 2
3- 6
4- 10
y = 1
0- 10
1- 11
2- 13
3- 16
4- 20
y = 2
0- 20
1- 21
2- 23
3- 26
4- 30

STRING dan ARRAY
1. Pada string terdapat karakter null() di akhir string
2. String sudah pasti array, array belum tentu string

CONTOH – CONTOH :
1. array dengan pengisian input melalui keyboard
baca_input()
{
float nilai[10];
for(i=0;i=0;i–)
scanf(“%3f”,nilai[i]);
}
3. Menghitung rata – rata isi array nilai
rata_rata()
{
float nilai[10],jum*rata;
for(i=0,jum=0;i<=9;i++)
jum+=nilai[i];
rata=jum/i;
}

4. Mencari nilai terbesar
besar()
float temp,nilai[10];
{
for(temp=nilai[0],i=1;i temp)
temp=nilai[i];
}
return(temp). adapun Bentuk penyajian tipe data array menggunakan stack,tetapi sebenarnya
penyajian stack menggunakan array kurang tepat karena banyaknya elemen dalam array
bersifat statis, sedangkan jumlah elemen stack sangat bervariasi atau dinamis. Meskipun
demikian, array dapat digunakan untuk penyajian stack, tetapi dengan anggapan bahwa
banyaknya elemen maksimal suatu stack tidak melebihi batas maksimum banyaknya
array. Pada suatu saat ukuran stack akan sama dengan ukuran array. Bila diteruskan
menambah data, maka akan terjadi overflow. Oleh karena itu, perlu ditambahkan data
untuk mencatat posisi ujung stack. Ada dua jenis bentuk stack menggunakan array, yaitu
single stack dan double stack.
2.4.1 Single Stack
Single stack dapat dianalogikan dengan sebuah wadah yang diisi benda melalui
satu jalan keluar dan masuk.
A B C D
Gambar 2.2 Ilustrasi Single Stack
Contoh deklarasi single stack adalah sebagai berikut:
#define MAX 50
#define true 1
#define false 0
char stack[MAX];
int top;
Operasi-operasi Single Stack
1. Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang
masih kosong.
void init(void){
33
top=0;
}
2. Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
int full(void){
if(top==MAX) return(true);
else return(false);
}
3. Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
int empty(void){
if(top==0) return(true);
else return(false);
}
4. Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila
puncak stack berada pada posisi 0.
void clear(void){
top=0;
printf(“Stack telah dikosongkan\n”);
}
5. Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data
tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah:
a. menambahkan nilai top.
b. memasukkan data pada posisi top.
void push(char info){
if (full() != true)
{
top++;
stack[top]=info;
}
else printf(“Stack overflow…\n”);
}
6. Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa
stack tidak kosong. Urutan perintahnya adalah:
a. mengambil data pada posisi top.
b. menurunkan nilai top.
34
char pop(void){
char info;
if(empty() != true)
{
info=stack[top];
top–;
return(info);
}
else printf(“Stack underflow…\n”);
}
2.4.2 Double Stack
Double stack merupakan bentuk pengembangan single stack dengan maksud
untuk menghemat memori. Dalam double stack terdapat dua stack dalam satu array.
Stack 1 bergerak ke kanan dan stack 2 bergerak ke kiri. Double stack dikatakan penuh
apabila puncak stack 1 bertemu dengan puncak stack 2.
top 1 top 2
stack 1 stack 2
1 max
Gambar 2.3 Ilustrasi Double Stack
Deklarasi umum double stack:
#define MAX 50
#define true 1
#define false 0
char stack[MAX];
int top1;
int top2;
Operasi-operasi Double Stack
1. Fungsi init: mendeklarasikan double stack yang kosong.
void init(void){
top1=0;
top2=MAX+1;
}
35
2. Fungsi full: digunakan untuk mengetahui double stack penuh atau tidak.
int full(void){
if (top+1>=top2)
return(true);
else
return(false);
}
3. Fungsi empty: digunakan untuk mengetahui double stack kosong atau tidak.
int empty(int nostack){
switch (nostack)
{
case 1: if (top1==0) return (true);
else return (false);
break;
case 2: if (top2==MAX+1) return (true);
else return (false);
break;
default: printf(“Nomor stack invalid\n”);
break;
}
}
4. Fungsi clear: digunakan untuk mengosongkan salah satu stack.
void clear(int nostack){
switch(nostack)
{
case 1: top1=0;
break;
case 2: top2=MAX+1;
break;
default: printf(“Nomor stack invalid\n”);
break;
}
}
5. Fungsi push: digunakan untuk menambah data ke dalam salah satu stack.
void push(char info, int nostack){
36
if (full() != true)
{
switch(nostack)
{
case 1: top1++;
stack[top1]=info;
break;
case 2: top2–;
stack[top2]=info;
break;
default: printf(“Invalid PUSH…\n”);
break;
}
}
else printf(“Stack overflow…\n”);
}
6. Fungsi pop: digunakan untuk mengeluarkan data teratas salah satu stack.
char pop(int nostack){
char info;
if (empty(nostack) != true)
{
switch(nostack)
{
case 1: info=stack[top1];
top1–;
return(info);
break;
case 2: info=stack[top2];
top2++;
return(info);
break;
default: printf(“Invalid POP…\n”);
break;
}
}
37
else printf(“Stack underflow…\n”);
}
38

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: