33 mgg07 Ku1102 1 CPP Array

Unduh sebagai pdf atau txt
Unduh sebagai pdf atau txt
Anda di halaman 1dari 32

Array dan Pemrosesannya

(C++)

Tim Penyusun Materi Pengenalan Komputasi


Institut Teknologi Bandung © 2019
Tujuan
• Mahasiswa mampu:
• Menjelaskan definisi dan kegunaan array
• Menggunakan menggunakan notasi pendefinisian dan pengacuan array
dengan benar
• Melakukan pemrosesan sekuensial pada array

01/10/2019 Pengenalan Komputasi 2


Kombinasi Pasangan Nama – 3 Nama
• Tuliskan program yang menerima 3 nama, lalu menampilkan
semua kombinasi pasangan nama.
• Contoh keluaran: int main () {
// KAMUS
Ali - Budi string nama1, nama2, nama3;
Ali - Caca //ALGORITMA
Budi - Caca cin >> nama1;
cin >> nama2;
cin >> nama3;
cout << nama1 " – " nama2 << endl;
cout << nama1 " – " nama3 << endl;
cout << nama2 " – " nama3 << endl;
return 0;
}
01/10/2019 Pengenalan Komputasi 3
Kombinasi Pasangan Nama – 10 Nama
• Tuliskan program yang menerima 10 nama, lalu menampilkan
semua kombinasi pasangan nama.
• Contoh keluaran: int main () {
// KAMUS
string nama1, nama2, nama3,nama 4, nama5;
Ali - Budi string nama6, nama7, nama8, nama9, nama10;
Ali - Caca //ALGORITMA
cin >> nama1;
… cin >> nama2;
… // lanjutkan sendiri!!
Ina - Jaja cin >> nama10;
cout << nama1 << " – " << nama2 << endl;
cout << nama1 << " – " << nama3 << endl;
… // lanjutkan sendiri!!
cout << nama9 << " – " << nama10 << endl;
return 0;
}

01/10/2019 Pengenalan Komputasi 4


Bagaimana kalau…
Anda diminta menampilkan semua kombinasi pasangan nama
yang mungkin dari …

100 nama ???


1000 nama ???
10000 nama ???
1000000 nama ???
….

01/10/2019 Pengenalan Komputasi 5


Array / Tabel / Vektor / Larik

NMin NMin+1 NMin+2 NMin+3 NMax-2 NMax-1 NMax

Array Elemen Array, dengan


Indeks Array tipe homogen untuk
setiap elemen

• Type array adalah type yang mendefinisikan sekumpulan (satu


atau lebih) elemen bertype sama
• Setiap elemen tersusun secara terurut (kontigu) dan dapat
diakses dengan menggunakan indeks
01/10/2019 Pengenalan Komputasi 6
Deklarasi Array dalam C++
• Suatu variabel dapat dideklarasikan ber-type array dari suatu
type tertentu
• Setiap elemen array diakses dengan alamat berupa indeks yang
bertype integer
Cara Deklarasi (Kamus) Contoh
<type> <namatabel>[<ukuran>]; 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

01/10/2019 Pengenalan Komputasi 7


Mengakses Elemen Array dalam C++
• Cara akses sebuah 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!!

• Perhatian: Tidak boleh mengakses elemen dengan indeks berada di luar


definisi.
• Pada contoh di atas, misalnya: TabInt[10], TabInt[-1], dll

01/10/2019 Pengenalan Komputasi 8


Mulai

Pemrosesan Array
Mengisi Array

Pemrosesan
Array

Output Hasil
Pemrosesan
Array

Selesai
01/10/2019 Pengenalan Komputasi 9
Pemrosesan Sekuensial pada Array (1)
• Pemrosesan sekuensial pada array adalah memroses setiap
elemen array mulai dari elemen pada indeks terkecil s.d. indeks
terbesar dengan menggunakan pengulangan (loop)
• Setiap elemen array diakses secara langsung dengan indeks
• First element adalah elemen array dengan indeks terkecil
• Next element dicapai melalui suksesor indeks
• Kondisi berhenti dicapai jika indeks yang diproses adalah indeks terbesar
yang terdefinisi sebelumnya
• Array tidak kosong, artinya minimum memiliki 1 elemen

01/10/2019 Pengenalan Komputasi 10


Pemrosesan Sekuensial pada Array (2)
• Contoh-contoh persoalan pemrosesan sekuensial pada array:
• Mengisi array secara sekuensial
• Mencetak elemen array
• Menghitung nilai rata-rata elemen array
• Mengalikan elemen array dengan suatu nilai
• Mencari nilai terbesar/terkecil pada array
• Mencari indeks di mana suatu nilai ditemukan pertama kali di array
• …

01/10/2019 Pengenalan Komputasi 11


Flowchart + Pseudocode Umum
Pemrosesan Sekuensial Array
Flowchart:
Pseudocode:
i  first-index
i traversal [first-index..last-index]
loop { Proses elemen array ke-i }
false
i ≤ last-index ...

true

Proses Elemen Array ke-i

ii+1

01/10/2019 Pengenalan Komputasi 12


// Program IsiArray
Mengisi Array (1) // Mengisi array dengan nilai dari
// pengguna
#include <iostream>
using namespace std;
• Buatlah program yang int main ()
mendeklarasikan sebuah array of { // KAMUS
int TabInt[10];
integer (array dengan elemen int i;
bertype integer) sebesar 10 buah dan
mengisinya dengan nilai yang dibaca // Algoritma

dari keyboard. // mengisi array


for (i=0; i<10; i++) {
last-element didefinisikan cin >> TabInt[i];
sbg. i < ukuran array
}

• Hati-hati untuk tidak mengakses }


return 0;

elemen di luar batas indeks array!


01/10/2019 Pengenalan Komputasi 13
Mengisi Array (2): Flowchart + Pseudocode
Mulai
Flowchart:
Pseudocode:
i0
i traversal [0..9]
loop input(TabInt[i])
false
i < 10

true

input (TabInt[i])

ii+1

Selesai
01/10/2019 Pengenalan Komputasi 14
// Program TulisArray
// Mengisi array dan menampilkan

Menuliskan Isi Array (1) // seluruh elemen pada array


#include <iostream>
using namespace std;
int main ()
• Buatlah program yang: { // KAMUS
int TabInt[10];
• mendeklarasikan sebuah array of int i;
integer (array dengan elemen bertype
integer) sebesar 10 buah // Algoritma
// mengisi array
• mengisinya dengan nilai yang dibaca for (i=0; i<10; i++) {
dari keyboard cin >> TabInt[i];
• menuliskan kembali apa yang }
disimpan dalam array ke layar // menuliskan isi array ke layar
for (i=0; i<10; i++) {
cout << TabInt[i] << endl;
• Hati-hati untuk tidak mengakses }
elemen di luar batas indeks array!
return 0;
}
01/10/2019 Pengenalan Komputasi 15
Menuliskan Isi Array (2)
Flowchart:
Pseudocode:
i0
... { Bagian mengisi array }
i traversal [0..9]
loop output(TabInt[i])
false
i < 10

true

output (TabInt[i]) Bagian mengisi array buat sendiri sebagai latihan

ii+1

01/10/2019 Pengenalan Komputasi 16


// Program AverageArray
// menghitung rata-rata seluruh elemen pada array
#include <iostream>

Menghitung Rata-Rata (1) using namespace std;


int main ()
{ // KAMUS
int sum, i;
int TabInt[10];
• Buatlah program untuk menghitung
rata-rata nilai elemen suatu array. // ALGORITMA
// mengisi data elemen array dari input user
for (i=0; i<10; i++) {
cin >> TabInt[i];
• Tahap: }

• Deklarasikan array, contoh array of // menjumlahkan elemen-elemen array


integer ukuran 10 sum = 0;
for (i = 0; i < 10; i++) { sum diubah
• Isi elemen array sum = sum + TabInt[i]; menjadi float
• Jumlahkan semua elemen array } supaya hasil bagi
menjadi float
• Bagi hasil penjumlahan elemen array // Menampilkan nilai rata-rata
dengan banyaknya elemen array dan cout << "Rata-rata = ";
tampilkan hasilnya cout << (float)sum/10.0 << endl;

return 0;
01/10/2019 }
Pengenalan Komputasi 17
Menghitung Rata-Rata (2)
Flowchart – Bagian penjumlahan elemen:

sum  0 Pseudocode – Bagian penjumlahan elemen:


i0
... { Bagian mengisi array }
sum  0
loop i traversal [0..9]
false
i < 10 sum  sum + TabInt[i]
...
true

sum  sum + TabInt[i]


Bagian yang lain silakan dibuat sebagai latihan.
ii+1

01/10/2019 Pengenalan Komputasi 18


Latihan
• Untuk setiap soal latihan, buatlah flowchart/pseudocode/kode
program dalam C++

01/10/2019 Pengenalan Komputasi 19


Latihan-1
• Buatlah sebuah program yang berisi Contoh:
sebuah array dengan elemen integer
berukuran 20, misalnya T
• Anggaplah sudah ada bagian T = [4, 1, 3, 4, 5, 6, 8, 9, 12, 30, -1, 0, 4,
program yang digunakan untuk -1, 3, 10, 14, 6, 7, 0]
mengisi array T
• Lihat slide sebelumnya untuk pengisian
array dari keyboard X=3
• Program menerima masukan
sebuah integer, misalnya X Setelah elemen T dikalikan X
• Selanjutnya, program mengalikan T = [12, 3, 9, 12, 15, 18, 24, 27, 36, 90,
semua elemen array T dengan X dan
mencetak semua elemen T yang -3, 0, 12, -3, 9, 30, 42, 18, 21, 0]
baru ke layar.

01/10/2019 Pengenalan Komputasi 20


Latihan-2
• Nilai mahasiswa untuk suatu mahasiswa dinyatakan dalam bentuk
huruf, yaitu A, B, C, D, dan E.
• Di ITB ada nilai AB dan BC, tapi untuk menyederhanakan persoalan kedua
nilai tersebut diabaikan
• Sebuah program menerima data nilai 50 mahasiswa di sebuah
kelas dalam bentuk indeks huruf seperti di atas dan disimpan
dalam sebuah array of character.
• Tentukanlah berapa banyak mahasiswa yang lulus dan berapa
yang tidak lulus. Mahasiswa dinyatakan lulus jika mendapatkan
nilai A, B, atau C. Selebihnya, tidak lulus.

01/10/2019 Pengenalan Komputasi 21


Pencarian Nilai Ekstrem (1)
(Minimum atau Maksimum)
• Mencari nilai terbesar atau terkecil dari elemen suatu array
• Diketahui:
• Sebuah array T dengan ukuran N elemen
• Nilai X (bertype sama dengan elemen T)
• Buatlah program untuk menuliskan ke layar nilai terbesar dari
elemen T
• Asumsi: T tidak kosong (minimum 1 elemen, N > 0)
• Contoh:
• N = 10; T berisi: [9,12,30,-1,0,4,-1,3,30,14] maka nilai terbesar = 30
• N = 8; T berisi: [1, 3, 5, 8, -12, 90, 3, 5] maka nilai terbesar = 90

01/10/2019 Pengenalan Komputasi 22


Flowchart:
{ Inisialisasi, max diisi
elemen ke-0 }
Pencarian Nilai
max  T[0]
Ekstrem (2)
{ Loop dari indeks ke-1 }
i1
Pseudocode:

loop ...
false { inisialisasi max dgn elemen ke-0 }
i<N
max  T[0]

true i traversal [1..N-1]


{ ganti kalau ketemu nilai T[i]>max }
true false if (T[i]>max) then
T[i] > max max  T[i]

...
{ ganti nilai max } { Next elmt array }
max  T[i] ii+1

01/10/2019 Pengenalan Komputasi •23


// File: maxArray.cpp
// mencari nilai maksimum pada array
#include <iostream>
using namespace std;
int main ()
{ // KAMUS
const int N = 10;
int max, i;
int T[N];
// Algoritma
// Pengisian data: Buat sebagai
// latihan
// mencari nilai maksimum
Pencarian Nilai Ekstrem (3)
max = T[0]; //inisialisasi
//max dgn elemen ke-0
Program C++
for (i=1; i<N; i++) {
//ganti max kalau ada nilai elemen
//array yang lebih besar
if (T[i]>max) {
max = T[i];
}
}
cout << "Nilai maksimum: " << max << endl;
return 0;
}
01/10/2019 Pengenalan Komputasi •24
Latihan-3
• Berdasarkan contoh soal sebelumnya, buatlah program untuk
mencari nilai terkecil dari elemen T.

01/10/2019 Pengenalan Komputasi 25


Searching (1)
Mencari Indeks Pertama Kemunculan Nilai
• Searching adalah proses yang penting dalam pemrosesan tabel karena
sering dilakukan terhadap sekumpulan data yang disimpan dalam tabel
• Diketahui:
• Sebuah array T dengan ukuran N elemen
• Nilai X (bertype sama dengan elemen T)
• Buatlah program untuk menuliskan ke layar indeks pertama di T di
mana X ditemukan
• Asumsikan: Array tidak kosong (minimum 1 elemen, N > 0)
• Contoh:
• N = 10; T berisi: [9,12,30,-1,0,4,-1,3,30,14]; X = -1 maka X ditemukan pertama
kali di indeks 3
• N = 8; T berisi: [1, 3, 5, 8, -12, 90, 3, 5]; X = 0 maka X tidak ditemukan di T

01/10/2019 Pengenalan Komputasi 26


{ Inisialisasi }
found  false Searching (2)
Flowchart: { Elemen pertama array }
i0 Pseudocode:

loop ...
false (i<N) and
(found=false) i  0
found  false
true while (i<N) and (found=false) do
if (T[i] = X) then
false true found  true
T[i] = X else { T[i]  X }
i  i + 1
{ i>=N or found=true }
{ Next elmt array } { X ditemukan }
ii+1 found  true ...

01/10/2019 Pengenalan Komputasi 27


// File: searchArray.cpp
// mencari indeks di mana nilai ditemukan
#include <iostream>
using namespace std;
int main ()
{ // KAMUS
const int N = 10;
int X, i;
int TabInt[N];
bool found; // menentukan X sdh ditemukan/belum
// ALGORITMA
// Pengisian data: asumsi array terisi
cin >> X; // baca nilai X dari keyboard
// mencari suatu nilai, yaitu X
i = 0; found = false;
Searching (3)
while ((i < N) && (found == false)) {
if (TabInt[i]==X) {
Program C++
found = true;
} else {
i++;
}
} // i = 1 atau found = true
if (found == true) { // X ada di TabInt
cout << X << " ada di indeks " << i;
} else { // found = false
cout << X << " tidak ditemukan";
}
return 0;
01/10/2019 Pengenalan Komputasi 28
}
Latihan-4
• Berdasarkan contoh sebelumnya, buatlah program untuk mencari
indeks terakhir di mana X ditemukan di T.
• Petunjuk: proses pencarian dilakukan “mundur”, yaitu dari indeks
elemen terakhir ke elemen pertama.
• Modifikasi apa yang harus dilakukan terhadap algoritma sebelumnya?

01/10/2019 Pengenalan Komputasi 29


Latihan-5
• Sebuah vektor v = (v0, v1, v2, v3, v4) direpresentasikan sebagai
suatu array of integer dengan 5 buah elemen.
• Diketahui dua buah vektor, masing-masing terdiri atas 5 elemen,
misalnya V dan U.
• Tuliskan hasil penjumlahan kedua vektor.
• Penjumlahan dua vektor menghasilkan vektor lain, W, dengan
elemen ke-i adalah: Wi = Vi + Ui
W = U + V = (v0, v1, v2, v3, v4) + (u0, u1, u2, u3, u4)
W = (v0+u0, v1+u1, v2+u2, v3+u3, v4+u4)

01/10/2019 Pengenalan Komputasi 30


Latihan-6 (1)
• BMKG Kota Bandung setiap hari mencatat suhu harian kota
Bandung (dalam derajat Celsius) berdasarkan data dari berbagai
sensor temperatur. Data suhu harian ini dibutuhkan untuk
berbagai analisis iklim dan cuaca.
• Sebuah program digunakan untuk mencatat suhu kota Bandung
selama bulan September 2018 (30 hari).
• Data suhu dalam bentuk bilangan riil.

01/10/2019 Pengenalan Komputasi 31


Latihan-6 (2)
• Tuliskan:
• Rata-rata suhu kota Bandung di bulan Sept. 2018
• Suhu terendah di bulan Sept. 2018.
• Pada tanggal berapa saja di bulan Sept. 2018, suhu harian kota Bandung
≥ 30 derajat Celsius.
• Pada tanggal berapa pertama kali di bulan Sept. 2018, kota Bandung
mengalami suhu di bawah 15 derajat Celcius (jika terjadi). Jika tidak
pernah terjadi, tuliskan: “Suhu tidak pernah di bawah 15 derajat Celcius”.
• Perhatian:
• Tanggal dalam bulan September 2018 adalah dari tanggal 1 s.d. 30. Jika
tanggal direpresentasikan sebagai indeks array, perhatikan bahwa indeks
array di C++ dimulai dari 0 (apa yang harus dilakukan?).

01/10/2019 Pengenalan Komputasi 32

Anda mungkin juga menyukai