Anda di halaman 1dari 17

Konsep Pemrograman

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);
}

Hasil Eksekusi Program :


nilai tes ke-1 = 2
nilai tes ke-2 = 4
nilai tes ke-3 = 6
nilai tes ke-4 = 8
nilai tes ke-5 = 10
Nilai rata-rata = 6.00
4
One Dimension Array
(next…)
#include <stdio.h>
main()
{
static int jumlah_hari[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int bulan, tahun, jum_hari;
printf("Masukkan bulan (1..12) = ");
scanf("%d", &bulan);
printf("Masukkan tahun = ");
scanf("%d", &tahun);
if (bulan == 2)
if ((tahun % 4 == 0) && (tahun % 100 != 0))
jum_hari = 29;
else
jum_hari = 28;
else
jum_hari = jumlah_hari[bulan-1];
printf("Jumlah hari = %d\n", jum_hari);
}

Hasil Eksekusi Program :


Masukkan bulan (1..12) = 2
Masukkan tahun = 2010
Jumlah hari = 28 5
Two Dimension Array
Bentuk umum array berdimensi dua :
tipe nama_variabel[ukuran1][ukuran2];
Bentuk umum pengaksesan elemen array :
nama_variabel[indeks_pertama][indeks_kedua];

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]);
}

Hasil Eksekusi Program :


Masukkan tahun dari data yang ingin Anda ketahui
1986..1988 : 1987
Masukkan kode program dari data yang ingin Anda ketahui
1 = Intro, 2 = Basic, 3 = Cobol, 4 = dBase : 1
Total kelulusan = 540 7
Two Dimension Array
(next…)
#include <stdio.h>
main()
{
int i, j;
static int huruf_A[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}};
for (i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
if (huruf_A[i][j])
putchar('\xDB');
else
putchar(' ');
puts("");
}
}

Hasil Eksekusi Program :


████████
██ ██
██ ██
██ ██
████████
██ ██
██ ██
██ ██
8
Many Dimension Array
Bentuk umum array berdimensi banyak :
tipe nama_variabel[ukuran1] [ukuran2]…[ukuranN];
Sama halnya dengan array berdimensi satu atau dua, array
berdimensi banyak juga dapat diinisialisasi

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);
}

Hasil Eksekusi Program :


jumlah = 5
x[5] = 60
alamat dari x[5] = 0022FF34
alamat dari jumlah = 0022FF1C 16
See You Next Time

17

Anda mungkin juga menyukai