-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 1
BAB 4
ARRAY (LARIK)
1. Definisi Array
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. Array adalah suatu struktur
data yang terdiri dari sejumlah elemen yang memiliki tipe data yang
sama. Elemen-elemen array tersusun secara sekuensial dalam memori
komputer. Array (Larik) adalah suatu himpunan hingga elemen,
terurut dan homogen. Terurut artinya, elemen tersebut dapat
diidentifikasikan sebagai elemen pertama, kedua, ketiga dan
seterusnya hingga elemen ke-n. Sedang homogen artinya bahwa setiap
elemen data dalam array mempunyai tipe yang sama. Posisi
masing-masing komponen dalam larik dinyatakan sebagai nomor index.
Array adalah kumpulan data bertipe sama yang menggunakan nama sama.
Dengan menggunakan array, sejumlah variabel dapat memakai nama yang
sama. Antara satu variabel dengan variabel lain di dalam array
dibedakan berdasarkan subscript. Sebuah subscript berupa bilangan
di dalam kurung siku atau biasa disebut dengan indek.
Pemahaman lain mengenai array (larik) adalah sebagai berikut
:
Array adalah suatu tipe data terstuktur yang berupa sejumlah
data sejenis (bertipe data sama) yang jumlahnya bisa statis ataupun
dinamis dan diberi suatu nama tertentu.
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 2
Elemen-elemen array tersusun secara berderet dan sekuensial di
dalam memori sehingga memiliki alamat yang
bersebelahan/berdampingan.
Array dapat berupa array 1 dimensi, 2 dimensi, bahkan
n-dimensi.
Elemen-elemen array bertipe data sama tapi bisa bernilai sama
atau berbeda-beda.
Keuntungan struktur data Larik: 1. Paling mudah pengoperasiannya
2. Ekonomis dalam pemakaian memori, bila semua elemen terisi. 3.
Akses ke setiap elemen memerlukan waktu yang sama.
Kerugiannya: Memboroskan tempat jika banyak elemen yang tidak
digunakan.
2. Pengaksesan Array
Elemen-elemen array dapat diakses oleh program menggunakan suatu
indeks tertentu. Pengaksesan elemen array dapat dilakukan berurutan
atau random berdasarkan indeks tertentu secara langsung. Pengisian
dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan
mengeset nilai atau menampilkan nilai pada indeks yang
dimaksud.
Dalam C, tidak terdapat error handling terhadap batasan nilai
indeks, apakah indeks tersebut berada di dalam indeks array yang
sudah didefinisikan atau belum. Hal ini merupakan tanggung jawab
programmer. Sehingga jika programmer mengakses indeks yang salah,
maka nilai yang dihasilkan akan berbeda atau rusak karena mengakses
alamat memori yang tidak sesuai.
3. Array Dimensi Satu
Array dimensi satu tidak lain adalah kumpulan elemen-elemen
identik yang tersusun dalam satu baris. Elemen-elemen tersebut
memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh
berbeda.
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 3
Setiap elemen array dapat diakses melalui indeks.
Indeks array secara default dimulai dari 0.
Untuk mendeklarasikan Array dengan notasi sebagai berikut :
tipe_data nama_array[ukuran]; Contoh : int bil[6]; maka dalam
memori komputer akan terbentuk sederet barisan memori linier yang
dialokasikan untuk variabel bilangan, yang digambarkan sebagai
berikut :
bil[0] bil[1] bil[2] bil[3] bil[4] bil[5] bil[6]
Bil
index 0 1 2 3 4 5 6
Untuk memberi nilai terhadap variabel array, bisa dilakukan
dengan beberapa cara, antara lain : 1. Pemberian nilai langsung
serentak
Contoh : int bil[6]={25,8,73,2,6,83};
2. Pemberian nilai satu-satu berdasarkan nomor indexnya Contoh:
bil[0]=25; bil[2]=73; bil[4]=6; bil[1]=8; bil[3]=2; bil[5]=83;
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 4
3. Pemberian nilai melalui input data / perintah masukan Contoh
: for(i=0;i
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 5
Contoh Program Array Dimensi Satu /* Program 4.1
Praktikum Struktur Data
Materi : Type Data Array
Kasus : Menentukan bilangan terbesar dari bilangan-bilangan
yang
tersimpan dalam variabel array.
*/
#include
#include
void main()
{
int bil[15] ;
int x,Max ;
clrscr();
//Memberi nilai variabel array
bil[1]=17; bil[2]=23; bil[3]=20;bil[4]=10;bil[5]=15;
bil[6]=5; bil[7]=33; bil[8]=95;bil[9]=8;bil[10]=88;
// Menampilkan Bilangan dari var Array
for(x=1;x
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 6
4. Array 2 Dimensi Jika array satu dimensi digambarkan sebagai
barisan memori linier, maka array dua dimensi digambarkan sebagai
sebuah tabel. Sebuah tabel mempunyai beberapa baris dan beberapa
kolom yang mana isi elemennya bertipe sama, sehingga dapat
digambarkan sebagai berikut:
0 1 2 3 4
0 10 55 22 12 23
1 23 33 34 54 56
2 12 45 56 76 76
Data diatas merupakan gambaran array dua dimensi dengan jumlah
baris 3 dan jumlah kolom 5. Untuk mendeklarasikan Array dua dimensi
dengan notasi sebagai berikut :
tipe_data nama_array[m][n];
Dimana m : jumlah baris dan n : jumlah kolom
Penting untuk Diingat! Indek di Turbo C++ secara default dimulai
dari 0 (nol). Cara mengakses array dua dimensi sama saja dengan
array sati dimensi, yaitu dengan menuliskan kedua indeknya dalam
kurung siku. Contoh : printf(“%d”,matrik[1][2]); artinya perintah
tersebut befungsi untuk mencetak matrik pada elemen baris ke-1 dan
kolom ke-2. Contoh pemberian nilai dan pengkasesan array dua
dimensi dapat dilihat pada contoh program berikut :
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 7
/* Program 4.2
Praktikum Struktur Data
Materi : Array Dua Dimensi
Kasus : Operasi Matrik
*/
#include
#include
void main()
{
int MatrikA[2][3],MatrikB[2][3],MatrikC[2][3];
int x,y;
clrscr();
MatrikA[0][0]=1;
MatrikA[0][1]=2;
MatrikA[0][2]=3;
MatrikA[1][0]=4;
MatrikA[1][1]=5;
MatrikA[1][2]=6;
MatrikB[0][0]=11;
MatrikB[0][1]=12;
MatrikB[0][2]=13;
MatrikB[1][0]=14;
MatrikB[1][1]=15;
MatrikB[1][2]=16;
printf("Matrik A :\n");
for(x=0;x
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 8
printf("| \n");
}
printf("\nMatrik B :\n");
for(x=0;x
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 9
5. Panjang Array Panjang suatu larik/array dapat ditentukan
dengan rumus sebagai berikut :
1. Array 1 Dimensi
L = UB – LB +1
2. Array 2 Dimensi
L = (UB1 – LB1 + 1) * (UB2 – LB2 + 1)
Adapun untuk menentukan Alamat Awal (Base Address ) dari
penyimpanan data dalam
storage dirumuskan sebagai berikut :
1. Array 1 Dimensi
Dimisalkan array A(LB:UB), dengan Base Array = B, dan Size
setiap cellnya = S
AlamatAwal(x) = B + S(x – LB)
2. Array 2 Dimensi
Dimisalkan array A(LB1:UB1 , LB2:UB2), dengan Base Array = B,
dan Size setiap
cellnya = S, maka alamatnya dirumuskan sebagai berikut :
AlamatAwal(i, j) = B+((i –LB1)*(UB2-LB2+1)*S)+((j – LB2)*S)
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 10
Dimana L = Length Array, UB = Upper Bound (Batas Atas) , LB =
Lower Bound (Batas
Bawah) dari array yang bersangkutan.
/* Program 4.3
Praktikum Struktur Data
Materi : Array
Kasus : Program ini adalah program untuk menentukan Ukuran dan
Alamat
Awal dari penyimpanan data Array
*/
#include
#include
//prototype fungsi sendiri
void Input_Dimensi_Satu();
void Input_Dimensi_Dua();
void Input_Base_Location();
void Size_Dimensi_Satu();
void Size_Dimensi_Dua();
void Address_Dimensi_Satu();
void Address_Dimensi_Dua();
const Kol = 15;
int LowerBound, UpperBound,LowerBound1, UpperBound1,
LowerBound2, UpperBound2, Size, Dimensi, Pilih,
BaseLoc, BaseAddress, Alamat, SizeElemen;
//(* Program Utama Menu Array *)
void main()
{
clrscr();
do {
textbackground(0);
clrscr();
textbackground(5);
gotoxy(Kol,
4);printf("+------------------------------------+\n");
gotoxy(Kol, 5);printf("| MENU UTAMA DATA ARRAY |\n");
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 11
gotoxy(Kol,
6);printf("+------------------------------------+\n");
gotoxy(Kol, 7);printf("| 1. Size Array Satu Dimensi |\n");
gotoxy(Kol, 8);printf("| 2. Size Array Dua Dimensi |\n");
gotoxy(Kol, 9);printf("| 3. Address Awal Array Satu
Dimensi|\n");
gotoxy(Kol,10);printf("| 4. Address Awal Array Dua Dimensi
|\n");
gotoxy(Kol,11);printf("| 5. Selesai |\n");
gotoxy(Kol,12);printf("+------------------------------------+\n");
gotoxy(Kol,13);printf("| Pilihan Anda [1..5] : [ ] |\n");
gotoxy(Kol,14);printf("+------------------------------------+\n");
gotoxy(Kol+26,13);scanf("%d",&Pilih);
textbackground(0);
clrscr();
switch (Pilih)
{
case 1 : Size_Dimensi_Satu();break; //(* Panggil Prosedur *)
case 2 : Size_Dimensi_Dua();break; //(* Panggil Prosedur *)
case 3 : Address_Dimensi_Satu();break; //(* Panggil Prosedur
*)
case 4 : Address_Dimensi_Dua();break; //(* Panggil Prosedur
*)
}
}while(Pilih
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 12
void Input_Base_Location()
{
printf("Masukkan Base Location :
");scanf("%d",&BaseLoc);
printf("Masukkan Size Tiap Elemen :
");scanf("%d",&SizeElemen);
}
void Size_Dimensi_Satu()
{
Input_Dimensi_Satu(); // Panggil Prosedure
//Panjang/Size/Length Array
Size = (UpperBound - LowerBound) + 1;
printf("Size/Length Array : %d",Size);
getch();
}
void Size_Dimensi_Dua()
{
Input_Dimensi_Dua(); //(* Panggil Prosedur *)
//(* Panjang/Size/Length Array *)
Size =(UpperBound1-LowerBound1 + 1)*(UpperBound2 - LowerBound2 +
1);
printf("\nSize/Length Array : %d",Size);
getch();
}
void Address_Dimensi_Satu()
{
Input_Dimensi_Satu(); //(* Panggil Prosedure *)
Input_Base_Location();
printf("Masukkan Alamat Awal yang dicari :
");scanf("%d",&Alamat);
BaseAddress = BaseLoc + SizeElemen * (Alamat - LowerBound);
printf("Base Address dari Alamat %d adalah :
%d",Alamat,BaseAddress);
getch();
}
-
Data Array dalam C++ 2010 Suyanto
Praktikum Struktur Data dengan Turbo C++ Hal 13
void Address_Dimensi_Dua()
{
int Alamat1, Alamat2;
Input_Dimensi_Dua(); //(* Panggil Prosedure *)
Input_Base_Location();
printf("Masukkan Alamat Awal 1 yang dicari :
");scanf("%d",&Alamat1);
printf("Masukkan Alamat Awal 2 yang dicari :
");scanf("%d",&Alamat2);
BaseAddress = BaseLoc + ((Alamat1-LowerBound1)*(UpperBound2-
LowerBound2+1)*
SizeElemen)+((Alamat2-LowerBound2)*SizeElemen);
printf("Base Address dari Alamat (%d , %d) adalah :
%d",Alamat1,Alamat2,BaseAddress);
getch();
}