author Ahmad Muhardian

Belajar C++ #09: Menggunakan Array untuk Menyimpan Banyak Data


Tutorial Array di C++

Apa yang akan kamu lakukan jika diminta untuk menyimpan banyak data di program?

Misalkan kita ingin menyimpan nama-nama teman untuk data kontak.

Mungkin saja, kita akan menyimpannya seperti ini:

string namaKontak1 = "Ayu";
string namaKontak2 = "Bunga";
string namaKontak3 = "Cyntia";
string namaKontak4 = "Deni";
string namaKontak5 = "Elisa";

Hal ini boleh-boleh saja..

Akan tetapi, masalahnya:

“Gimana nanti kalau ada banyak sekali data, pasti capek bikin variabel terus?”

Karena itu, kita membutuhkan Array.

Apa itu Array, dan bagaimana cara menggunakannya?

Mari kita bahas…

Apa itu Array?

Array merupakan struktur data yang digunakan untuk menyimpan sekumpulan data dalam satu tempat.

Setiap data dalam Array memiliki indeks, sehingga kita akan mudah memprosesnya.

Array

Indeks array selalu dimulai dari angka nol (0).

Pada teori struktur data…

…ukuran array akan bergantung dari banyaknya data yang disimpan di dalamnya.

Cara Membuat Array pada C++

Pada C++, array dapat kita buat dengan cara seperti ini.

// membuat array kosong dengan tipe data integer dan panjang 10
int nama_array[10];

// membuat array dengan langsung diisi
int nama_arr[3] = {0, 3, 2}

Cara membuat array hampir sama seperti cara membuat variabel biasa.

Bedanya… pada array kita harus menentukan panjangnya.

Cara Membuat Array pada C

Cara Mengambil Data dari Array

Seperti yang sudah kita ketahui…

Array akan menyimpan sekumpulan data dan memberinya nomer indeks agar mudah diakses.

Indeks array selalu dimulai dari nol 0.

Misalkan kita punya array seperti ini:

char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

Bagaimana cara mengambil huruf c?

Jawabannya:

huruf[2];

Mengapa bukan huruf[3]?

Ingat: indeks array selalu dimulai dari nol.

Biar lebih jelas, mari kita coba dalam program. Silakan buat file baru dengan nama contoh_array.cpp, kemudian isi dengan kode berikut:

#include <iostream>
using namespace std;

int main(){
    char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

    // mengambil data pada array
    cout << "Huruf: " << huruf[2] << endl;

    return 0;
}

Setelah itu, coba compile dan jalankan.

Maka hasilnya:

Mengambil data dari array

Mengisi Ulang Data pada Array

Data pada array dapat kita isi ulang dengan cara seperti ini:

huruf[2] = 'z';

Maka isi array huruf pada indeks ke-2 akan bernilai 'z'.

Kalau tidak percaya…

Kamu bisa coba buktikan sendiri.

Silakan ubah kode pada contoh_array.cpp menjadi seperti ini:

#include <iostream>
using namespace std;

int main(){
    // isi awal array
    char huruf[5] = {'a', 'b', 'c', 'd', 'e'};

    // mengubah isi data array
    huruf[2] = 'z';

    // mencetak isi array
    cout << "Huruf: " << huruf[2] << endl;

    return 0;
}

Hasil outputnya:

Huruf: z

Contoh lain: array_data.cpp

#include <iostream>
using namespace std;

int main(){
    // membuat array kosong
    int nilai[5];

    // mengisi array
    nilai[0] = 32;
    nilai[1] = 42;
    nilai[2] = 76;
    nilai[3] = 31;
    nilai[4] = 57;

    // mencetak isi array
    cout << "Nilai ke-1: " << nilai[0] << endl;
    cout << "Nilai ke-2: " << nilai[1] << endl;
    cout << "Nilai ke-3: " << nilai[2] << endl;
    cout << "Nilai ke-4: " << nilai[3] << endl;
    cout << "Nilai ke-5: " << nilai[4] << endl;

    return 0;
}

Hasilnya:

Mengisi data ke array

Menggunakan Perulangan dan Array

Pada contoh di atas, kita menggunakan perintah cout secara berulang untuk mencetak semua isi array.

cout << "Nilai ke-1: " << nilai[0] << endl;
cout << "Nilai ke-2: " << nilai[1] << endl;
cout << "Nilai ke-3: " << nilai[2] << endl;
cout << "Nilai ke-4: " << nilai[3] << endl;
cout << "Nilai ke-5: " << nilai[4] << endl;

Kalau isi array-nya ada ribuan, apa kamu akan sanggup menulis ini berulang-ulang?

Tentu saja tidak!

Karena itu, kita bisa memanfaatkan perulangan untuk mencetaknya.

Contoh: array_loop.cpp

#include <iostream>
using namespace std;

int main(){
    // membuat array kosong
    int nilai[5];

    // mengisi array
    nilai[0] = 32;
    nilai[1] = 42;
    nilai[2] = 76;
    nilai[3] = 31;
    nilai[4] = 57;

    // mencetak isi array dengan perulangan
    for(int i; i < 5; i++){
        printf("Nilai ke-%d: %d\n", i, nilai[i]);
    }

    return 0;
}

Hasilnya:

Mengisi data ke array

Jauh lebih sederhana ‘kan…

Tapi ada yang masih kurang.

Pada perulangan di atas kita memberikan batas maksimal secara manual, yaitu: i < 5.

Nilai 5 seharusnya diganti dengan ukuran atau jumlah isi array.

Sehingga akan menjadi seperti ini:

int length = sizeof(nilai) / sizeof(*nilai);
for (int i = 0; i < length; i++){
    printf("Nilai ke-1: %d\n", nilai[i]);
}

Mengambil Panjang Array

Ada dua cara untuk mendapatkan panjang array:

  1. Partama cara seperti di atas (seperti bahasa C);
  2. Menggunakan Class array dari C++.

Kita bahas dulu cara yang pertama..

Pada contoh di atas, kita menggunakan fungsi sizeof() untuk mengambil panjang atau ukuran array.

Fungsi sizeof() sebenarnya akan mengambil ukuran memori dari array.

Misalkan saya punya array seperti ini:

int nilai[2] = {1, 2};

Isi array-nya berupa integer, tipe data integer memiliki ukuran 4 byte dalam memori. Maka ukuran array tersebut adalah 8 byte.

Lalu bagaimana cara mendapatkan banyaknya isi array?

Karena di bahasa C belum memiliki fungsi khusus untuk mengambil banyaknya isi array.

Kita harus membaginya dengan panjang pointernya.

Contoh:

int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

/* ukuran array dalam byte */
int size = sizeof(array);

/* banyaknya isi array `array` */
int length = sizeof(array) / sizeof(*array);

Mari kita coba…

Buatlah program dengan nama panjang_array.cpp, kemudian isi dengan kode berikut:

#include <stdio.h>

void main(){
    // membuat array
    string contact[] = {"Ami", "Ayu", "Budi", "Agus", "Mila"};

    //  mengambil banyaknya isi array
    int length = sizeof(contact) / sizeof(*contact);

    printf("Banyaknya isi array nilai: %d\n", length);
}

Hasilnya:

Banyaknya isi data pada array

Cara kedua, kita bisa gunakan Class Template dari C++. Class Template ini mulai ditambahkan pada C++11.

Contoh:

// membuat array dengan class
array<string, 5> names = {"Ali", "Abi", "Ami", "Mia", "Nia"};
// mengambil ukuran array
cout << names.size();

Tapi sebelum kita dapat menggunakan Class Template array<>, kita harus mengimpornya dengan #include.

Contoh lengkap: array_class.cpp

#include <iostream>
#include <array>
using namespace std;

int main(){
    array<string, 5> names = {"Ali", "Abi", "Ami", "Mia", "Nia"};

    printf("Ada %d data di dalam array: \n", names.size());

    for(int i = 0; i < names.size(); i++){
        cout << i << ". " << names[i] << endl;
    }

    return 0;
}

Hasilnya:

Membuat Array dengan Array Class Template

Bisa dibilang, Class Template array ini adalah pengembangan dari cara yang sebelumnya.

Array dianggap sebagai sebuah objek..

Objek itu apa?

Buat kamu yang belum paham OOP, pasti akan menanyakan hal ini.

Karena itu, saran saya pahami saja dulu cara yang pertama.

Nanti kita akan bahas OOP di tutorial yang berbeda.

Latihan: Program Hitung Rata-Rata

Anggap saja kita diminta untuk membuat program untuk menghitung tinggi rata-rata dari sepuluh orang.

Pertama kita pasti akan membutuhkan sebuah array dengan panjang 10 yang berisi kumpulan tinggi badan.

int tinggi_badan[10] = {175, 165, 166, 157, 184, 156, 163, 176, 171, 169};

Berikutnya kita harus menghitung nilai rata-rata dari sekumpulan nilai tersebut.

Rumus nilai rata-rata:

Rumus nilai rata-rata dalam matematika

Mari kita buat programnya…

#include <iostream>
using namespace std;

int main(){
    // membuat array dari tinggi badan
    int tinggi_badan[10] = {175, 165, 166, 157, 184, 156, 163, 176, 171, 169};

    //  length itu sama dengan n
    int length = sizeof(tinggi_badan) / sizeof(tinggi_badan[0]);
    int sum = 0;

    for(int i = 0; i < length; i++){
        sum += tinggi_badan[i];
    }

    // rata-rata tinggi badan
    float rata_rata = (float)sum / (float)length;

    printf("Rata-rata tinggi badan: %.2f\n", rata_rata);

    return 0;
}

Hasilnya:

Program nilai rata-rata dengan C

Array Multi Dimensi

Array yang kita buat pada contoh-contoh program di atas adalah array satu dimensi.

Array bisa dibuat dua dimensi bahkan lebih.

Array multidimensi biasanya digunakan untuk membuat matriks.

Contoh array dua dimensi:

int matriks[3][3] = {
    {1, 3, 5},
    {5, 3, 1},
    {6, 2, 3}
};

Array dua dimensi biasanya digunakan untuk membuat matriks.

Lalu bagaimana cara mengambil data dari array dua dimensi?

Begini caranya:

matriks[1][2];

Contoh program:

#include <iostream>
using namespace std;

int main(){
    int matriks[3][3] = {
        {1, 3, 5},
        {5, 3, 1},
        {6, 2, 3}
    };

    printf("Isi Data pada indeks ke-(1,0): %d\n", matriks[1][0]);

    return 0;
}

Hasilnya:

Program matriks

Apa Selanjutnya?

Saya sudah menjelaskan hal-hal dasar yang harus kamu ketahui tentang array.

Intinya:

Array adalah tempat menyimpan sekumpulan data dalam satu tempat atau variabel.

Kalau belum paham tentang array, kamu bisa tanyakan melalui komentar.

Selanjutnya silakan pelajari tentang:

📖 Untuk daftar tutorial C++ lainnya, lihat di List Tutorial C++

Daftar isi tutorial

  1. Belajar C++ #01: Pengenalan Bahasa Pemrograman C++
  2. Belajar C++ #02: Persiapan Pemrograman C++ di Linux
  3. Belajar C++ #02: Persiapan Pemrograman C++ di Windows
  4. Belajar C++ #03: Struktur Dasar Program C++ yang Harus dipahami
  5. Belajar C++ #04: Fungsi Input dan Output
  6. Belajar C++ #05: Variabel, Konstanta, dan Tipe Data
  7. Belajar C++ #06: Operator
  8. Belajar C++ #07: Percabangan
  9. Belajar C++ #08: Perulangan
  10. Belajar C++ #09: Struktur Data Array
  11. Belajar C++ #10: Prosedur dan Fungsi
  12. Belajar C++ #11: Tipe Data Enum (Coming soon)
  13. Belajar C++ #12: Tipe Data Structure (Coming soon)
  14. Belajar C++ #13: Tipe Data Union (Coming soon)
  15. Belajar C++ #14: Pointer
  16. 🚧 Work in Progress 🚧

    Maaf jika ada link yang belum aktif. Link tersebut masih dalam draft atau sedang dikerjakan. Do'akan agar penulis tetap sehat dan tulisannya cepat terbit 🙏. Kamu juga bisa memberikan dukungan dengan mentrakteer kopi ☕ supaya penulis kuat begadang, hehe.