Anda di halaman 1dari 11

Struktur Array 86

VII STRUKTUR ARRAY

VII.1 Pendahuluan

- Array disebut juga larik, merupakan runtun data dengan setiap


elemen data menggunakan nama yang sama dan mesing-masing
elemen data bertipe sama.
- Setiap komponen (elemen) array dapat dibedakan dan diakses
melalui nomor indeksnya.
- Struktur array dapat digolongkan menjadi:
o Array berdimensi satu
o Array berdimensi dua
o Array berdimensi banyak

VII.2 Array Satu Dimensi

- Struktur arrai satu dimensi dapat dideklarasikan dengan bentuk


umum berupa:

Tipe nama_var [ukuran];

- dengan:
o tipe: untuk menyatakan jenis elemen array (misalnya char,
int, unsigned).
o Ukuran untuk menyatakan jumlah maksimal elemen array.
- contoh pendeklarasian suatu array lima elemen dengan tipe float
adalah sebagai berikut:

float nilai_tes [5];

VII.3 Mengakses Elemen Array

- Pada bahasa C, data array akan disimpan dalam memori pada


lokasi yang berurutan.
- Elemen pertama mempunyai indeks bernilai 0.
- Jika pada contoh variabel nilai_tes mempunyai 5 elemen, maka
elemen pertama mempunyai indeks sama dengan 0, elemen kedua
mempunyai indeks 1, dan seterusnya.
- Gambar 7.1 memperlihatkan urutan komponen array dalam
memori.
- Bentuk umum pengaksesan suatu elemen variabel array adalah:

Nama_var [indeks];

- Untuk variabel array nilai_tes,


Struktur Array 87

o Nilai_tes[1] Æ elemen ke-1 dari nilai_tes


o Nilai_tes[3] Æ elemen ke-3 dari nilai_tes

nilai_tes[0] tipe float


nilai_tes[1]
total 5
nilai_tes[2] elemen
nilai_tes[3]
nilai_tes[4]

float nilai_tes[5]

Gambar 7.1 Struktur array satu dimensi.

- Contoh untuk memasukkan data ke variabel array:

nilai_tes[0] = 70; /* contoh 1*/

scanf(“%f”, &nilai_tes[3]); /* contoh 2*/

- Contoh pertama merupakan pemberian nilai 70 ke elemen variabel


nilai_tes ke-0.
- Contoh kedua merupakan perintah untuk membaca data bilangan
dari keyboard dan diberikan ke elemen nilai-tes yang ke-3.
- Statemen &nilai_tes[3] menunjukkan “alamat dari elemen
variabel nilai_tes yang ke-3”.
- Perlu diingat bahwa instruksi scanf( ) membutuhkan argumen
berupa alamat dari variabel yang digunakan untuk menyimpan
nilai masukan.

/* ------------------------------------------------ */
/* File program : baca.c */
/* Contoh pengaksesan array satu dimensi */
/* ------------------------------------------------ */

#include <stdio.h>
#define maks_tes 5

main()
{
int i;
float nilai_tes[maks_tes]; /* deklarasi array */
Struktur Array 88

/* Membaca data dari keyboard */


for (i=0;i<maks_tes;i++)
{
printf("Nilai tes ke-%d: ",i+1);
scanf("%f", &nilai_tes[i]);
}

/* Menampilkan data yang telah dimasukkan */


for (i=0;i<maks_tes;i++)
{
printf("Nilai tes ke-%d: %f",i+1,nilai_tes[i]);
}
}

Program 7-1.

- Program 7-1 diatas memperlihatkan cara memasukkan data larik


dari keyboard sebanyak lima buah data dan kemudian
menampilkan data tersebut ke layar monitor.
- Data array juga dapat dideklarasikan dalam bentuk variabel yang
bersifat statis, serta dapat dilakukan inisialisasi terhadap masing-
masing elemen array.
- Contoh proses deklarasi dan inisialisasinya adalah:

static int jum_hari[12] =


{ 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31
};

- Dengan deklarasi di atas, maka


o jum_hari[0] bernilai 31
o jum_hari[1] bernilai 28
o jum_hari[2] bernilai 31
o jum_hari[3] bernilai 30
o dan seterusnya.

- Nilai yang ada pada array menyatakan banyaknya hari untuk setiap
bulan.

Latihan
1. Buatlah program untuk menjumlahkan vektor A dengan vektor B
dan hasilnya disimpan di vektor C. Mula-mula buatlah suatu fungsi
untuk membaca larik.
2. buatlah program untuk melakukan proses normalisasi atas 50 buah
data.
Struktur Array 89

VII.4 Array Sebagai Parameter

- Array juga dapat dilewatkan sebagai parameter fungsi.


- Sebagai contoh diperlihatkan pada program 7-2 di bawah. Program
ini digunakan untuk memasukkan sejumlah data, kemudian data
tersebut diurutkan dan data yang sudah urut akan ditampilkan ke
layar monitor.
- Untuk melakukan proses sorting (pengurutan data), cara yang
dipakai yaitu buble sort (suatu model pengurutan data yang paling
sederhana dan kecepatan pengurutannya lambat).
- Algoritma pengurutan datanya adalah:
o Atur i bernilai 0
o Bandingkan x[i] dengan x[j], dengan j berjalan dari i+1
sampai dengan n-1. Pada satiap perbandingan, jika x[i] > x[j],
maka isi x[i] dan x[j] ditukarkan.
o Naikkan nilai i sebesar satu.
o Bila i < (n-1), ulangi mulai langkah 2
- Catatan :
o i = indeks array
o x = nama array untuk menyimpan data
o n = jumlah data
o Algoritma di atas berlaku untuk pengurutan naik (ascending).
Untuk pengurutan turun (descending), penukaran dilakukan
jika x[i] < x[j}.

/* ------------------------------------------- */
/* File program : sorting.c */
/* Contoh program sorting urut naik */
/* ------------------------------------------- */
#include <stdio.h>
#define maks 20

void pemasukan_data (float x[], int *pjumlah);


void pengurutan_data (float x[], int jumlah);
void penampilan_data (float x[], int jumlah);

main()
{
float data[maks];
int jum_data;

pemasukan_data(data, &jum_data);
pengurutan_data(data, jum_data);
penampilan_data(data, jum_data);
Struktur Array 90

void pemasukan_data (float x[], int *pjumlah)


{
int i, jum;

printf("Jumlah data ");


scanf("%d", &jum);

for(i=0;i<jum;i++)
{
printf("data ke-%d: ", i+1);
scanf("%f", &x[i]);
}
*pjumlah = jum;
}

void pengurutan_data (float x[], int jumlah)


{
int i, j;
float bantu;

for(i=0;i<jumlah-1;i++)
for(j=i+1;j<jumlah;j++)
if(x[i] >x[j])
{
/* penukaran data */
bantu = x[i];
x[i] = x[j];
x[j] = bantu;
}
}

void penampilan_data (float x[], int jumlah)


{
int i;

puts("\nData setelah diurutkan : \n");

for(i=0;i<jumlah;i++)
printf("data ke-%d, %g\n",i+1, x[i]);
}

program 7-2
Struktur Array 91

VII.5 Array 2-Dimensi

- Tipe data array dua dimensi biasa digunakan untuk menyimpan,


mengolah maupun menampilkan suatu data dalam bentuk tabel
maupun matriks.
- Untuk data dalam bentuk tabel, seperti yang diperlihatkan pada
tabel berikut ini, dimensi pertama array digunakan untuk
menyatakan nama Program Studi dan dimensi kedua untuk
menyatakan jumlah penerimaan mahasiswa per tahun pada tahun
tertentu.
Tabel 7.1 Jumlah Mahasiswa yang diterima
di Jurusan Teknik Elektro UGM.

Tahun 1999 2000 2001


Program
Diploma 3 120 130 140
S1 Reguler 160 156 129
S1 Ekstensi 140 140 130
S2 Reguler 80 60 65

- Untuk mendeklarasikan array agar dapat menyimpan data


penerimaan mahasiswa dari tabel di atas adalah sebagai berikut:

int Jumlah_mhs [4][3];

- Nilai indeks 3 untuk menyatakan banyaknuya tahun dan 4


menyatakan banyaknya program studi.
- Gambar 7.2 memperlihatkan ilustrasi untuk memudahkan
pemahaman tentang arrau dua dimensi.

0 1 2 indeks pertama
(tahun)

0 120 130 140

1 160 156 129

2 140 140 130

3 80 60 65

indeks kedua
(program studi)

Gambar 7.2 Array dua dimensi.


Struktur Array 92

- Seperti halnya pada arrau satu dimensi, data array dua dimensi
akan ditempatkan pada memori secara berurutan, seperti yang
diperlihatkan pada Gambar 7.3.

120 130 140 160 156 129 140 140

Gambar 7.3 Model penyimpanan array dua dimensi pada memori.

VII.5.1 Mengakses Elemen Array 2 Dimensi

- Untuk mengakses elemen array dua dimensi dapat dilakukan


dengan statemen:

nama_variabel[indeks pertama][indeks kedua];

- Sebagai contoh:
o Jumlah_mhs[1][2] = 129;
o Merupakan instruksi untuk mengakses elemen array pada
baris ke-1, kolom ke-2.

0 1 2

1 129

jumlah_mhs[1][2] = 129;

Gambar 7.4. Pengakessan elemen array dua dimensi.

- Dalam program, untuk membaca atau memasukkan data array dua


dimensi dari keyboard dapat dilakukan dengan memanfaatkan
statemen nested loop.
Struktur Array 93

- Contoh program berikut memperlihatkan bagaimana memasukkan


data sebuah matriks n x n ke memori dan menampilkan hasil
pembacaan ke layar monitor.

/* ------------------------------------------------ */
/* File program : baca2.c */
/* Contoh pengaksesan array dua dimensi */
/* ------------------------------------------------ */

#include <stdio.h>

main()
{
int i,j;
int matriks[4][3]; /* deklarasi array */

/* Membaca data dari keyboard */


for (i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("matriks (%d, %d): ",i,j);
scanf("%d", &matriks[i][j]);
}
}
printf("\n\n");

/* Menampilkan data matriks yang telah dimasukkan */


for (i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf(" Matriks(%d, %d): %d",i,j,matriks[i][j]);
}
printf("\n");
}
}

Program 7-3

VII.5.2 Inisialisasi Array 2 Dimensi

- Untuk memasukkan data arrau dua dimensi selain melalui


keyboard, juga dapat dilakukan emlalui proses inisialisasi dari
program.
Struktur Array 94

- Proses inisialisasi ini dilakukan bersamaan dengan deklarasi


variabel array-nya.
- Sebagai contoh, misalkan akan dilakukan proses inisialisasi atas
data matriks dengan nilai masing-masing elemen seperti pada
gambar 7.5 berikut.

0 1 2 3 4 5 6 7
0 0 1 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0
2 1 1 0 0 0 1 1 0
3 1 1 0 0 0 0 1 0
4 1 1 0 0 0 0 1 0
5 1 1 0 0 0 0 1 0
6 1 1 0 0 0 0 1 0
7 0 0 0 0 0 0 0 0

Gambar 7.5 Nilai awal elemen-elemen suatu matriks.

Deklarasi dan inisialisasi yang dilakukan berupa:

static int huruf_A[8][8] =


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

atau dapat dapat juga ditulis sebagai berikut:

static int huruf_A[8][8] =


{ 0, 1, 1, 1, 1, 1, 0, 0 ,
0, 1, 0, 0, 0, 1, 0, 0 ,
0, 1, 0, 0, 0, 1, 0, 0 ,
1, 1, 1, 1, 1, 1, 1, 0 ,
1, 1, 0, 0, 0, 0, 1, 0 ,
1, 1, 0, 0, 0, 0, 1, 0 ,
1, 1, 0, 0, 0, 0, 1, 0 ,
0, 0, 0, 0, 0, 0, 0, 0 ,
};
Struktur Array 95

VII.6 Aray Dimensi Banyak

- Bahasa C memungkinkan untuk membuat struktur data array yang


mempunyai dimensi lebih dari dua.
- Bentuk umum pendeklarasian array berdimensi banyak adalah:

tipe nama_variabel[ukuran 1][ukuran 2] … [ukuran n];

- Sebagai contoh :

int data_huruf[2][8][8];
- Merupakan pendeklarasian array data_huruf sebagai array tiga
dimensi.
- Sama halnya dengan array dimensi satau atau dua, arrau dimensi
banyak juga dapat diinisialisasi. Contohnya adalah sebagai berikut:

Static int data_huruf[2][8][8] =


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

VII.7 Inisialisasi Array Tak Berukuran

- Inisialisasi arrau yang tak berukuran dapat dilakukan untuk array


berdimensi satu atau lebih.
- Untuk array berdimensi lebih dari satu, dimensi terkirilah yang
boleh tidak berukuran.
Struktur Array 96

- Dengan cara ini maka tabel dalam array dapat diperluas atau
dikurangi tanpa mengubah ukuran array.
- Sebagai contoh:

int data[] =
{ 1, 2, 4, 7, 9 };
- Merupakan pendeklarasian arrau dimensi satu yang tidak
berukuran. Secara otomatis:
data[0] bernilai 1
data[1] bernilai 2
data[2] bernilai 4
data[3] bernilai 7
data[4] bernilai 9
- Contoh lain untuk arrau berdimensi dua:

char konversi[ ][2] =


{ ‘A’, ‘T’,
‘E’, ‘N’,
‘I’, ‘V’,
‘O’, ‘S’,
‘U’, ‘J’
};

- Pada contoh di atas, maka

konversi[0][0] bernilai ‘A’


konversi[0][1] bernilai ‘T’
konversi[1][0] bernilai ‘E’
konversi[1][1] bernilai ‘M’

Anda mungkin juga menyukai