Pemrograman Dasar dan Lab
Array / Larik
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.
Beberapa Pemrograman indeks dimulai dari 1
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);
}
puts("");
}
12
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
Next…
17