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.
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.
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;
Praktikum Struktur Data dengan Turbo C++ Hal 4
3. Pemberian nilai melalui input data / perintah masukan
Contoh :
for(i=0;i<=5;i++) {
printf(“Masukkan Bilangan ke %d : “,i);scanf(“%d”,&bil*i+);
}
Dengan dua cara pemberian nilai diatas ( 1 dan 2), maka bilangan-bilangan tersebut akan mengisi variabel bil sesuai index nya, dan dapat digambarkan sebagai berikut :
bil[0] bil[1] bil[2] bil[3] bil[4] bil[5]
bil 25 8 73 2 6 83
index 0 1 2 3 4 5
Sedangkan cara ketiga, nilai yang akan disimpan tergantung dari si user, jadi tidak bisa ditentukan sebelum program tersebut dijalankan.
Penting untuk Diingat!
 String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen
array menyatakan jumlah string.
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<stdio.h>
#include<conio.h>
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<=10;x++)
{
printf("Bilangan Array ke %2d adalah : %2d\n",x,bil[x]);
}
//Menentukan Bilangan Terbesar Max=0;
for(x=1;x<=10;x++) {
if(bil[x] > Max) Max = bil[x];
}
printf("\nBilangan Terbesarnya adalah : %d",Max);
getch();
}
Tugas 4.1 : Buat Program Untuk Menentukan Bilangan Terkecil dari Angka yang Dimasukkan
melalui piranti masukan!
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 :
Praktikum Struktur Data dengan Turbo C++ Hal 7 /* Program 4.2
Praktikum Struktur Data Materi : Array Dua Dimensi Kasus : Operasi Matrik
*/
#include<stdio.h>
#include<conio.h>
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<=1;x++) // Baris Matrik {
printf("| ");
for(y=0;y<=2;y++) //Kolom Matrik
{
printf("%d ",MatrikA[x][y]);
}
Praktikum Struktur Data dengan Turbo C++ Hal 8 printf("| \n");
}
printf("\nMatrik B :\n");
for(x=0;x<=1;x++) // Baris Matrik {
printf("| ");
for(y=0;y<=2;y++) //Kolom Matrik
{
printf("%d ",MatrikB[x][y]);
}
printf("| \n");;
}
printf("\n\nPenambahan dari Matrik A & B = Matrik C\n");
for(x=0;x<=1;x++) // Baris Matrik *) for(y=0;y<=2;y++) // Kolom Matrik *)
MatrikC[x][y] = MatrikA[x][y] + MatrikB[x][y];
printf("\nMatrik C :\n");
for(x=0;x<=1;x++) // Baris Matrik {
printf("| ");
for(y=0;y<=2;y++) //Kolom Matrik
{
printf("%d ",MatrikC[x][y]);
}
printf("| \n");;
}
getch();
}
Tugas 4.2 : Buat Program Penambahan & Perkalian Matrik Ukuran 2 x 3 yang nilai-nilainya
didapat dari pemasukan data!
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)
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<stdio.h>
#include<conio.h>
//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");
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<5);
}
//kumpulan fungsi-fungsi yang akan dipanggil void Input_Dimensi_Satu()
{
printf("\nMasukkan Batas Bawah : ");scanf("%d",&LowerBound);
printf("\nMasukkan Batas Atas : ");scanf("%d",&UpperBound);
}
void Input_Dimensi_Dua() {
printf("Masukkan Batas Bawah 1 : ");scanf("%d",&LowerBound1);
printf("Masukkan Batas Atas 1 : ");scanf("%d",&UpperBound1);
printf("Masukkan Batas Bawah 2 : ");scanf("%d",&LowerBound2);
printf("Masukkan Batas Atas 2 : ");scanf("%d",&UpperBound2);
}
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();
}
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();
}