Array (Tabel)
[Dalam Bahasa C++]
1
2019/11/28
Tujuan Perkuliahan
• Mahasiswa memahami makna dan kegunaan array (tabel)
• Mahasiswa dapat menggunakan notasi pendefinisian dan
pengacuan array dengan benar hingga proses pencarian
terhadap elemen array
• Mahasiswa dapat membuat program dengan
menggunakan array
2
2019/11/28
BAGIAN 1
3
2019/11/28
Mengolah 3 data
• Tuliskan program yang menerima 3 nama, lalu
menampilkan semua kombinasi pasangan nama.
• Contoh keluaran:
Ali int main () {
// KAMUS
Budi string nama1, nama2, nama3;
Caca //ALGORITMA
Ali - Budi cin >> nama1;
cin >> nama2;
Ali - Caca cin >> nama3;
Budi - Caca cout << nama1 " – " nama2 << endl;
cout << nama1 " – " nama3 << endl;
cout << nama2 " – " nama3 << endl;
}
4
2019/11/28
Mengolah 10 data
• Tuliskan program yang menerima 10 nama, lalu
menampilkan semua kombinasi pasangan nama.
• Contoh keluaran:
int main () {
Nama-1: Ali // KAMUS
Nama-2: Budi string nama1, nama2, nama3,nama 4, nama5;
string nama6, nama7, nama8, nama9, nama10;
… //ALGORITMA
cin >> nama1;
Nama-9: Ina cin >> nama2;
Nama-10: Jaja … // lanjutkan sendiri!!
cin >> nama10;
Ali – Budi cout << nama1 << " – " << nama2 << endl;
Ali – Caca cout << nama1 << " – " << nama3 << endl;
… // lanjutkan sendiri!!
… cout << nama9 << " – " << nama10 << endl;
Ina - Jaja }
5
2019/11/28
Bagaimana kalau…
Anda diminta menampilkan semua kombinasi pasangan
nama yang mungkin dari …
100 nama ???
1000 nama ???
10000 nama ???
1000000 nama ???
….
2019/11/28
6
Array / Tabel / Vektor / Larik
NMin NMin+1 NMin+2 NMin+3 NMax-2 NMax-1 NMax
Array Elemen Array, dengan
tipe homogen untuk
Indeks Array
setiap elemen
• Type array adalah type yang mengacu kepada sebuah atau
sekumpulan elemen melalui indeks
• Merepresentasikan sekumpulan informasi yang bertype sama
dan disimpan dengan urutan yang sesuai dengan definisi
indeks 7
2019/11/28
Array dalam C/C++ (1)
• Variabel dapat dideklarasikan ber-type array dari suatu
type tertentu
• Setiap elemen array diakses dengan alamat berupa indeks
yang bertype integer
• Cara deklarasi: <type> <namatabel>[<ukuran>];
• Contoh: int TabInt[10];
Array bernama TabInt dengan setiap elemen bertype
integer, dengan ukuran 10 elemen, dengan alamat setiap
elemen array (indeks) adalah dari indeks ke-0 s.d. 9
8
2019/11/28
Array dalam C/C++ (2)
• Cara akses elemen:
<namatabel>[<indeks>]
• Contoh: int TabInt[10];
1 2 4 -1 100 2 0 -1 3 9
0 1 2 3 4 5 6 7 8 9
cout << TabInt[4]; // akan tercetak: 100
int x = TabInt[0] + TabInt[5]; // x bernilai 3
TabInt[9] = 8; // Elemen array indeks 9 menjadi 8
TabInt[10] ??? // Berada di luar range, tidak terdefinisi!!
9
2019/11/28
Contoh Deklarasi Array yang lain
int main() {
// KAMUS
int TabJumlahHari[12]; // indeks 0..11
float TabNilai[15]; // indeks 0..14
char TabHuruf[100]; // indeks 0..99
string TabKata[100]; // indeks 0..99
Point TabTitik[20]; // indeks 0..19, Point terdefinisi
// ALGORITMA
…
}
• Elemen dari array dapat diakses langsung jika dan hanya jika
indeks terdefinisi
• Cara mengacu sebuah elemen:
TabInt[2]
TabInt[i] jika i terdefinisi 10
2019/11/28
Mengisi Array
• Mengisi array merupakan aktifitas memberi nilai elemen
array
• Pemberian nilai satu elemen, contoh: TabInt[0]=31;
• Pemberian nilai beberapa elemen, contoh:
for (i=0;i<10;i++) {
TabInt[i]=i*10;
}
• Hati-hati!
• Jangan mengakses elemen yang indeks-nya berada di luar
definisi, misalnya TabInt[10] index ke-10 tidak terdefinisi
untuk TabInt
• Jangan membaca elemen yang belum diisi nilainya
11
2019/11/28
// File: [Link]
// Mengisi array dan menampilkan
Mengisi dan // seluruh elemen pada array
#include <iostream>
membaca isi
using namespace std;
int main ()
{ // KAMUS
Array int TabInt[10]; int i;
// Algoritma
• Elemen array yang telah // mengisi array
for (i=0; i<10; i++) {
diberi nilai dapat diakses TabInt[i]=i*10;
kembali }
// membaca dan menuliskan isi
• Contoh berikut // array ke layar
menampilkan semua isi for (i=0; i<10; i++) {
array ke layar cout << TabInt[i] << endl;
}
return 0; 12
}
2019/11/28
Memroses
// File: [Link]
// menghitung jumlah seluruh elemen pada array
#include <iostream>
using namespace std;
Array
int main ()
{ // KAMUS
int sum, i;
int TabInt[10];
• Pemrosesan koleksi // ALGORITMA
// mengisi data nilai dari input user
data pada array cout << "Isilah 10 data nilai dalam range 0-100:"
<< endl;
dilakukan secara for (i=0; i<10; i++) {
sekuensial cin >> TabNilai[i];
}
• Asumsi : seluruh // menjumlahkan nilai dan menghitung rata-rata
cout << "Data input:" << endl;
elemen array sum=0;
for (i=0; i<10; i++) {
terdefinisi cout << TabInt[i] << endl;
sum = sum + TabInt[i];
• Contoh: }
cout << "Rata-rata: ";
menjumlahkan data cout << (float)sum/10.0 << endl;
dan menghitung rata- return 0;
rata
} 13
2019/11/28
// File: [Link]
// mencari indeks di mana nilai ditemukan
#include <iostream>
using namespace std;
Mencari Indeks
int main ()
{ // KAMUS
Suatu Nilai
int X, i; bool found;
int TabInt[10];
// ALGORITMA
(searching) // Pengisian data: asumsi array terisi
// mencari suatu nilai, yaitu X
cin >> X;
i = 0; found = false;
while ((i < 10) && (!found)) {
Dengan asumsi semua if (TabInt[i]==X) {
found = true;
elemen array terdefinisi, } else {
dapat dilakukan pencarian i++;
}
indeks suatu nilai } // i = 10 atau found
if (found) { // X ada di
ditemukan pertama kali cout << X << " ada di indeks " << i;
dalam array } else {
cout << X << " tidak ditemukan";
} 14
return 0;
} 2019/11/28
// File: [Link]
Mencari Nilai
// mencari nilai maksimum pada array
#include <iostream>
using namespace std;
Ekstrim Array
int main ()
{ // KAMUS
int max, i;
int TabInt[10];
// Algoritma
// Pengisian data: Buat sebagai
// latihan
• Dengan asumsi array // mencari nilai maksimum
max=TabInt[0]; //inisialisasi
tidak kosong, dapat //max dgn elemen ke-0
dilakukan pencarian for (i=1; i<10; i++) {
//ganti max kalau ada nilai elemen
elemen array bernilai //array yang lebih besar
if (TabInt[i]>max) {
ekstrim max=TabInt[i];
}
• Contohnya: mencari }
cout << "Nilai maksimum: “ << max <<
nilai maksimum endl; 15
return 0;
} 2019/11/28
Mencari // File: [Link]
// mencari indeks nilai maksimum array
#include <iostream>
Indeks Nilai
using namespace std;
int main ()
{ // KAMUS
Ekstrim Array
int idxmax, i;
int TabInt[10];
// Algoritma
// Pengisian data: Buat sebagai
• Dengan asumsi array // latihan
// mencari indeks nilai maksimum
tidak kosong, dapat idxmax = 0;
for (i=1; i<10; i++) {
dilakukan pencarian //ganti idxmax jika ada nilai
//elemen array yang lebih besar
indeks elemen array if (TabInt[i]>TabInt[idxmax]) {
idxmax = i;
bernilai ekstrim }
}
• Contohnya: mencari cout << "Index nilai maksimum: " <<
idxmax << endl;
indeks nilai maksimum return 0; 16
}
2019/11/28
Latihan 1
• Deklarasikan sebuah array of character dengan ukuran
10.
• Isilah character dengan nilai dari keyboard (pengguna)
• Tuliskan ke layar semua elemen array
• Hitunglah ada berapa banyak character ‘A’ yang ada
dalam array
17
2019/11/28
Latihan 2
• Lakukanlah modifikasi terhadap program [Link]
untuk mencari elemen array bernilai minimum
• Lakukanlah juga modifikasi terhadap program
[Link] untuk mencari indeks elemen array
bernilai minimum
19
2019/11/28
Latihan 3
1. Buatlah sebuah program yang menghitung frekuensi
kemunculan sebuah nilai X di dalam suatu array. Nilai
X didapatkan dari input pengguna.
2. Buatlah sebuah program KemunculanTerakhir yang
mencari indeks array terakhir IX yang berisi suatu nilai
X. IX akan bernilai -1 jika X tidak terdapat di dalam
TabInt.
Contoh: TabInt={4,3,7,6,3,8,4,3,6}, X=3, maka IX=7
22
2019/11/28
BAGIAN 2
25
2019/11/28
Array yang terisi sebagian (1)
• Dalam banyak persoalan, kita mendefinisikan sejumlah
elemen array, namun tidak selalu harus menggunakan
seluruhnya
• Asumsi: array terisi secara kontigu dan “rata kiri” (mulai
dari elemen ke-0)
• Contoh: Array di bawah ini hanya terdefinisi sampai
elemen ke-4, elemen sisanya tidak terdefinisi
1 2 4 -1 100
0 1 2 3 4 5 6 7 8 9
26
2019/11/28
Array yang terisi sebagian (2)
• Kita membutuhkan sebuah nilai yang banyaknya
elemen array yang terdefinisi
• Nilai ini disebut sebagai nilai efektif array (Neff)
• Contoh:
1 2 4 -1 100
0 1 2 3 4 5 6 7 8 9
Neff = 5
Artinya, hanya 5 elemen yang terdefinisi, yaitu dari
indeks ke-0 s.d. ke-4
• Memungkinkan definisi array kosong, yaitu Neff = 0
27
2019/11/28
// File: [Link]
Mengisi dan
// Mengisi array dan menampilkan
// seluruh elemen pada array
#include <iostream>
membaca isi using namespace std;
int main ()
{ // KAMUS
Array int TabInt[100]; int i, Neff;
// ALGORITMA
cin >> Neff; // nilai efektif[0..100]
• Membaca sejumlah Neff // mengisi array
i = 0;
elemen pada array dan while (i<Neff) {
menampilkannya ke cin >> TabInt[i];
i++;
layar } // i = Neff
// menulis isi array
• Neff adalah nilai efektif i = 0;
masukan dari pengguna while (i<Neff) {
cout << TabInt[i] << endl;
• Apa yang terjadi jika i++;
} // i = Neff
Neff = 0?? return 0; 28
}
2019/11/28
// File: [Link]
// mencari indeks di mana nilai ditemukan
#include <iostream>
Mencari Indeks using namespace std;
int main ()
Suatu Nilai { // KAMUS
int X, i, Neff; bool found;
(searching) int TabInt[10];
// ALGORITMA
// Pengisian data: asumsi array terisi,
// Neff terdefinisi
• Dilakukan pencarian
// mencari suatu nilai, yaitu X
indeks suatu nilai cin >> X;
ditemukan pertama kali i = 0; found = false;
dalam array while ((i < Neff) && (!found)) {
if (TabInt[i]==X) {
• Neff adalah banyaknya found = true;
} else {
elemen yang terdefinisi i++;
dalam array }
} // i = Neff atau found
• Apa yang terjadi jika Neff if (found) { // X ada di
= 0?? cout << X << " ada di indeks " << i;
} else {
cout << X << " tidak ditemukan"; 29
}
return 0; 2019/11/28
}
// File: [Link]
// mencari nilai maksimum pada array
Mencari Nilai
#include <iostream>
using namespace std;
int main ()
Ekstrim Array
{ // KAMUS
int max, i;
int TabInt[100];
// Algoritma
// Pengisian data: Buat sebagai
• Dengan asumsi array // latihan
// mencari nilai maksimum
tidak kosong, dapat max=TabInt[0]; //inisialisasi
//max dgn elemen ke-0
dilakukan pencarian for(i=1; i<Neff; i++) {
elemen array bernilai //ganti max kalau ada nilai elemen
//array yang lebih besar
ekstrim if (TabInt[i]>max) {
max=TabInt[i];
• Contohnya: mencari }
}
nilai maksimum cout << "Nilai maksimum: " << max <<
endl;
return 0; 30
}
2019/11/28
Latihan 4
• Buatlah sebuah program yang mendeklarasikan sebuah
array of integer berukuran 100, mengisi array sampai
salah satu dari 2 kondisi ini terpenuhi:
• Array terisi penuh
• Pengguna mengisikan -999 (tidak termasuk sebagai elemen
array)
• Tuliskan ke layar berapa banyak elemen array dan jumlah
total seluruh elemen
31
2019/11/28
Latihan 4
// File: [Link]
// membaca masukan array of integer dari pengguna dan menghasilkan total nilai
#include <iostream>
using namespace std;
int main ()
{ // KAMUS
int i, sum, Neff;
int TI[100];
// ALGORITMA
// mengisi data nilai dari input user
cin >> X; i = 0;
while ((X != -999) && (i < 100)) {
TI[i] = X;
cin >> X;
i++;
} // X = -999 atau i = 100
Neff = i;
// menghitung total isi array
i = 0; sum = 0;
while (i < Neff) {
sum = sum + TI[i];
i++;
} // i = Neff
cout << "Banyaknya elemen = " << Neff << endl; 32
cout << "Jumlah total elemen = " << sum << endl;
Pengenalanreturn
Teknologi0;
Informasi C - ITERA 2019/11/28
}