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.
/* 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();
}
• 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 :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
/* 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.
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..
0 comments:
Post a Comment
Comment-Comment Dong