Algoritma : Array dan Record
Dalam kehidupan sehari-hari, kita seringkali bertemu dengan kebutuhan penyimpanan data sejenis yang dalam jumlah atau kuantitas banyak. Sebagai contoh sederhana, kita akan mencatat nilai suhu ruangan setiap hari selama 1 tahun. Tentunya kita akan membutuhkan sebuah data untuk menyimpan data suhu tersebut. Mengingat dalam 1 tahun ada 12 bulan dan tiap minggu ada 7 hari, maka yang kita butuhkan adalah variabel dengan tipe data terstruktur seperti array. Dan tidak mungkin kita menggunakan variabel tunggal sebanyak 366 buah.
Definisi Array
Array adalah suatu set dari alokasi data, dengan jenis data yang sama untuk tiap alokasi tersebut. Setiap alokasi data disebut sebagai elemen dari array. Untuk mendeklarasikan sebuah array, tuliskan jenis data dalam array tersebut, nama array dan diikuti dengan subscript. Subscript disini adalah menyatakan jumlah elemen array yang dituliskan di dalam kurung siku.
Contohnya : int IntArray[25];
Sebagai deklarasi sebuah array yang memiliki 25 alokasi data (elemen) dengan jenis data integer bernama IntArray. Perbedaan deklarasi variabel array dengan variabel biasa.
int a; //* hanya 1 nilai untuk variabel a
int a[10]; //* terdapat 10 slot nilai untuk variabel a int a[7] = {1,2,3,5,43,5,6};
Array dapat menggunakan nama apapun (yang dapat digunakan dalam bahasa C/C++), selama tidak memiliki nama yang sama dengan variabel tunggal lain. Dalam bahasa C/C++, array dimulai dari 0. Jika A merupakan array dengan jumlah elemen 10, maka variabelnya adalah A[0], A[1], ..., A[9]
5
|
9
|
15
|
8
|
-7
|
21
|
0
|
-3
|
11
|
-1
|
→ Isi Array
|
[0]
|
[1]
|
[2]
|
[3]
|
[4]
|
[5]
|
[6]
|
[7]
|
[8]
|
[9]
|
→ indeks Array
|
A[0] bernilai 5
A[4] bernilai -7 Berapa nilai A[6] ? Berapa nilai A[9] ?
Contoh lain :
1. int angka[10];
mendeklarasikan sebuah variable bernama angka berupa array satu dimensi untuk menampung/ menyimpan sepuluh data bertipe integer.
1
|
3
|
2
|
4
|
5
|
7
|
8
|
6
|
9
|
10
|
|
Indeks =
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
2. float bilangan[4][4];
mendeklarasikan sebuah variable bernama bilangan berupa array dua dimensi untuk menampung/ menyimpan enam belas data bertipe float.
Kolom = 0
|
Kolom = 1
|
Kolom = 2
|
Kolom = 3
|
|
Baris = 0
|
1.2
|
2.3
|
3.4
|
4.5
|
Baris = 1
|
1.3
|
1.4
|
1.5
|
1.8
|
Baris = 2
|
2.2
|
2.2
|
2.9
|
2.8
|
Baris = 3
|
3.0
|
3.7
|
3.5
|
3.6
|
3. char huruf[3][5][5];
mendeklarasikan sebuah variable bernama huruf berupa array tiga dimensi untuk menampung/ menyimpan tujuh puluh lima data bertipe char.
1. langsung dari program (statik)
2. diisi oleh user melalui input dari keyboard (dinamik)
Berikut contoh pengisian array yang diinput langsung dari program (statik). Artinya user tidak dapat merubah isi elemen array kecuali merubah dari kode programnya.
A[0] = 100; /*Nilai elemen A[0] adalah 100*/
B[5] = 35; /*Nilai elemen B[5] adalah 35 */
A[0] = B[5]; /*Nilai elemen A[0] adalah 35 */
C = -99; /*C adalah variabel biasa, bukan array. C bernilai -99 */
B[5] = C; /*Nilai elemen B[5] adalah -99. A[0] tetap bernilai 35 */
Berikut algoritma menampilkan elemen nilai array
Mengisi Nilai Elemen Array
Mengisi nilai pada elemen array dapat dilakukan dengan 2 cara, yaitu :1. langsung dari program (statik)
2. diisi oleh user melalui input dari keyboard (dinamik)
Berikut contoh pengisian array yang diinput langsung dari program (statik). Artinya user tidak dapat merubah isi elemen array kecuali merubah dari kode programnya.
A[0] = 100; /*Nilai elemen A[0] adalah 100*/
B[5] = 35; /*Nilai elemen B[5] adalah 35 */
A[0] = B[5]; /*Nilai elemen A[0] adalah 35 */
C = -99; /*C adalah variabel biasa, bukan array. C bernilai -99 */
B[5] = C; /*Nilai elemen B[5] adalah -99. A[0] tetap bernilai 35 */
Berikut algoritma menampilkan elemen nilai array
Deklarasi
int A[3];
int B = 35;
Deskripsi
Mulai
A[0] = 70;
A[1] = B;
Print “Isi nilai A[0] adalah A[0]”;
Print “Isi nilai A[1] adalah A[1]”;
Print “Silakan user mengisi nilai A[2]:”
Scan A[2];
Print “Isi nilai A[2] adalah A[2]”;
Selesai
Tampilan hasil yang diharapkan adalah sebagai berikut:
Inisialisasi Array
Meskipun tidak dimungkinkan mengoperasikan array secara langsung, namun pemberian nilai
dapat dilakukan.
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Bila initializers-nya lebih sedikit dari elements array, sisanya akan dianggap bernilai 0.
int a[10] = {0, 1, 2, 3, 4, 5, 6};
maka nilai a[7], a[8], dan a[9] dianggap 0.
Bila terdapat initializer, maka dimensi array dapat diabaikan.
int b[] = {10, 11, 12, 13, 14};
b merupakan array yang memiliki 5 elemen karena di-inisialisasi dengan 5 angka. Perhatikan
bahwa variable b dinyatakan sebagai b[] untuk menjelaskan bahwa b adalah sebuah array.
Jika elemen array adalah karakter, maka initializer dapat berupa string constant:
char s1[7] = "Hello,";
char s2[10] = "there,";
char s3[] = "world!";
Untuk memberikan nilai atau mengoperasikan suatu array, dapat digunakan sebuah loop:
for(int i = 0; i < 10; i = i + 1)
{ a[i] = 0; }
/* a[0] hingga a[9] bernilai 0 */
for(i = 0; i < 10; i++) /* i++ adalah sama dengan i=i+1 */
{ b[i] = a[i]+1; }
/* b[0] hingga b[9] bernilai 1 */
for(i = 0; i < 10; i++)
{ c[i] = b[i]+i; }
/* untuk i=0 → c[0]=1+0=1,
untuk i=1 → c[1]=1+1=2,
untuk i=2 → c[2]=1+2=3,
berapa nilai c[9]? */
Berikut contoh notasi algoritma deklarasi array dengan memanfaatkan proses iterasi (loop).
Deskripsi
int n[10]
Deklarasi
Mulai
for (int i=0; i<10; i++)
n[i] = 0
Print ”Indeks Elemen Nilai”
for (i=0; i<10; i++)
Print “i” ”n[i]”
Selesai
Tampilan hasil keluaran yang diharapkan:
Definisi Record
Array sangat seringkali digunakan bersamaan dengan struktur data lain, yaitu record (rekaman).
Deklarasi
typedef struct SISWA
long NIM;
char Nama[25];
char Kota[30];
// deklarasi array A berisi 2 record SISWA;
Deskripsi
//menerima masukan user
for (int i=0;i<2;i++){
Print "NIM: "; Scan A[i].NIM;
Print "Nama: ";Scan A[i].Nama;
Print "Kota: ";Scan A[i].Kota;
//menampilkan isi
for (int i=0;i<2;i++){
Print "Siswa ke-i ";
Print A[i].Nama "("A[i].NIM")";
Print "dari "A[i].Kota";
Selesai