Kamis, 31 Mei 2012

STRUKTUR ARRAY Bahasa C++


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:
floatnilai_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]
nilai_tes[1]
nilai_tes[2]


tipe float
total 5
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
S1 Reguler
S1 Ekstensi
S2 Reguler


120
160
140
80


130
156
140
60


140
129
130
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
1
2
3


120 130 140
160 156 129
140 140 130
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
0
1



1 2
129





2
3










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’
… 

Tidak ada komentar:

Posting Komentar