Array
1
Agenda
1. One Dimension Array
2. Two Dimension Array
3. Many Dimension Array
4. Not Sized Array Initialization
5. Arrays as Parameters
6. Limitation of Array Index Value
2
One Dimension Array
Bentuk umum array berdimensi satu :
tipe nama_variabel[ukuran];
Tipe untuk menyatakan jenis elemen array (misal :
char, int, unsigned).
Ukuran untuk menyatakan jumlah maksimal
elemen array.
Pada C, data array akan disimpan dalam memori
pada lokasi yang berurutan. Elemen pertama
mempunyai indeks bernilai 0.
Bentuk umum pengaksesan elemen array :
nama_variabel[indeks]
3
One Dimension Array
(next…)
#include<stdio.h>
#define maksimum_tes 5
main()
{
int i;
float total_nilai, rata_rata, nilai_tes[maksimum_tes];
for (i = 0; i < maksimum_tes; i++)
{
printf("nilai tes ke-%d = ", i+1);
scanf("%f", &nilai_tes[i]);
}
total_nilai = 0;
for (i = 0; i < maksimum_tes; i++)
total_nilai = total_nilai + nilai_tes[i];
rata_rata = total_nilai / maksimum_tes;
printf("Nilai rata-rata = %.2f\n", rata_rata);
}
6
Two Dimension Array
(next…)
#include <stdio.h>
main()
{
int tahun, kode_program; int data_lulus[4][3];
data_lulus[0][0] = 80, data_lulus[0][1] = 540, data_lulus[0][2] = 1032;
data_lulus[1][0] = 15, data_lulus[1][1] = 83, data_lulus[1][2] = 301;
data_lulus[2][0] = 8, data_lulus[2][1] = 12, data_lulus[2][2] = 15;
data_lulus[3][0] = 10, data_lulus[3][1] = 129, data_lulus[3][2] = 257;
puts("Masukkan tahun dari data yang ingin Anda ketahui");
printf("1986..1988 : "), scanf("%d", &tahun);
puts("Masukkan kode program dari data yang ingin Anda ketahui");
printf("1 = Intro, 2 = Basic, 3 = Cobol, 4 = dBase : "), scanf("%d", &kode_program);
printf("Total kelulusan = %d\n", data_lulus[kode_program - 1][tahun - 1986]);
}
9
Many Dimension Array
(next…)
#include <stdio.h>
main()
{
int i, j, k;
static int data_huruf[2][8][8] =
{{{1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1},
{1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}},
{{1, 1, 1, 1, 1, 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, 1},
{1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}}};
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
for (k = 0; k < 8; k++)
if (data_huruf[i][j][k])
putchar('\xDB');
else
putchar(' ');
puts("");
}
}
}
10
Not Sized Array Initialization
Inisialisasi array tidak berukuran dapat
dilakukan untuk array berdimensi satu atau
lebih. Untuk array berdimensi lebih dari satu,
dimensi sebelah paling kiri yang boleh tidak
berukuran. Dengan cara ini tabel dalam
array dapat diperluas atau dikurangi tanpa
mengubah ukuran array.
11
Not Sized Array Initialization
(next…)
#include <stdio.h>
#include <conio.h>
#define Enter 13
#define jumlah_kolom 2
main()
{
static char konversi[][jumlah_kolom] = {'A', 'T', 'a', 't', 'E', 'N', 'e', 'n', 'I', 'V', 'i', 'v', 'O', 'S', 'o', 's', 'U', 'J', 'u', 'j'};
char kalimat[256], karakter; int i = 0, j, jumlah_karakter, jumlah_penyandi;
printf("Kalimat : ");
while ((kalimat[i] = getche()) != Enter)
i++;
jumlah_karakter = i;
puts("Hasil setelah disandikan :");
jumlah_penyandi = sizeof(konversi)/(jumlah_kolom * sizeof(char));
for (i = 0; i < jumlah_karakter; i++)
{
karakter = kalimat[i];
for (j = 0; j < jumlah_penyandi; j++)
{
if (karakter == konversi[j][0])
{
karakter = konversi[j][1];
break;
}
if (karakter == konversi[j][1])
{
karakter = konversi[j][0];
break;
}
}
putchar(karakter);
} 12
puts("");
}
Arrays as Parameters
Array dapat juga dilewatkan sebagai
parameter fungsi. Untuk melakukan sorting
(proses pengurutan data), cara yang dipakai
yaitu algoritma bubble sort (suatu algoritma
pengurutan yang paling sederhana dan
memiliki kecepatan pengurutan yang sangat
lambat).
13
Arrays as Parameters
(next…)
#include <stdio.h>
#define maksimum 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[maksimum]; int jumlah_data; pemasukan_data(data, &jumlah_data); pengurutan_data(data, jumlah_data);
penampilan_data(data, jumlah_data);
}
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 sementara;
for (i=0; i<jumlah-1; i++)
for (j=i+1; j<jumlah; j++)
if (x[i]>x[j])
{
sementara = x[i]; x[i] = x[j]; x[j] = sementara;
}
}
void penampilan_data(float x[], int jumlah)
{
int i; puts("Data setelah diurutkan :");
for (i=0; i<jumlah; i++)
printf("data ke-%d, %g\n", i+1, x[i]); 14
}
Limitation of Array Index Value
Jika suatu array dideklarasikan misalnya
sebagai array berdimensi satu dengan banyak
elemen 5 buah, pengaksesan terhadap array
melalui indeks array haruslah diusahakan agar
tidak melebihi nilai indeks terbesar. Pada array
berdimensi satu dengan 5 buah elemen, tentu
saja nilai indeks terbesar adalah 4. Jika hal ini
tidak dilakukan,oleh kompiler memang akan
dibiarkan saja, akan tetapi dapat menimbulkan
kesalahan.
15
Limitation of Array Index Value
(next…)
#include <stdio.h>
main()
{
int x[5], jumlah;
jumlah = 5, x[5] = 60;
printf("jumlah = %d\n", jumlah);
printf("x[5] = %d\n", x[5]);
printf("alamat dari x[5] = %p\n", &x[5]);
printf("alamat dari jumlah = %p\n", &jumlah);
}
17