Minggu ke 14 & 15
VARIABEL BERINDEKS (ARRAY)
PENDAHULUAN
1. Deskripsi singkat
Pada minggu ini dipelajari penggunaan variabel berindeks (array), baik dimensi
satu maupun dimensi dua (matriks). Secara berturutan dipelajari terlebih dulu
pengertian variabel berindeks dan perbedaannya dengan variabel biasa, cara
pendefinisian dan cara mengakses variabel berindeks dimensi satu dan dimensi
dua, sampai pada berbagai operasi yang menggunakan array/larik. Khusus untuk
array berdimensi dua (matriks), dipelajari penerapan berbagai operasi hitungan
matriks dalam penyusunan programnya, seperti penjumlahan dan pengurangan
dua buah matriks, perkalian matriks dengan suatu skalar, perkalian dua buah
matriks, transpose matriks, determinan dan invers matriks. Dipelajari juga
penerapan array untuk pendefinisian dan penulisan jenis-jenis matriks khusus
(matriks baris, diagonal, simetris) beserta pembuatan program aplikasinya. Semua
hal tersebut dipraktekkan dengan membuat program-program aplikasi yang
dilakukan baik di kelas maupun di lab. Komputer.
2. Manfaat, relevansi
Dalam penyusunan program, ada kalanya timbul kesulitan dalam menentukan
nama variabel apabila jumlah item data yang akan ditampung sangat banyak.
Untuk lebih memudahkan dalam memberikan nama pada variabel yang jumlah
item datanya cukup banyak, seorang programmer harus mengerti dan menguasai
penggunaan variabel berindeks atau larik dalam penyusunan program dan
mengetahui perbedaannya dengan variabel biasa. Selanjutnya seorang
programmer harus menguasai pula berbagai operasi yang terkait dengan
penggunaan larik, terutama larik berdimensi dua (matriks). Penguasaan program
yang terkait dengan aplikasi hitungan matriks akan sangat berguna dalam
mempelajari ilmu di bidang Teknik Geomatika, mengingat aplikasi matriks banyak
digunakan pada mata kuliah seperti Statistik, Hitung Perataan, Sistem dan
Transformasi Koordinat, Survei GNSS, dan lain-lain.
3. Learning Outcomes
Kognitif:
Menjelaskan pengertian array, membedakan penggunaan variabel biasa dengan
variabel berindeks (array), proses pendefinisian array dimensi satu dan dua
(matriks), serta menunjukkan prosedur penggunaannya dalam sebuah program.
Psikomotorik:
Membuat program untuk berbagai aplikasi yang menggunakan array, baik dimensi
satu maupun dimensi dua, khususnya pada hitungan matriks.
Afektif:
Dapat bekerja dalam sebuah kelompok, dan mendiskusikan hasil kerjanya, serta
berpikir logis dan terstruktur.
PENYAJIAN
float ipk[5];
elemen-elemen array
subscript atau
indeks array
0 1 2 3 4
array ipk
Setelah suatu array didefinisikan, elemen tertentu dari array tersebut dapat
diakses dalam bentuk:
nama_array[indeks];
Contoh:
cin >> ipk[i]; membaca data dari keyboard dan meletakkan
ke elemen nomor i pada array ipk
Seperti halnya pada variabel biasa, suatu array dapat juga diberi nilai awal
pada saat didefinisikan (inisialisasi). Contoh :
float ipk[5] = { 3.51, 2.75, 3.20, 2.57, 2.89 };
atau dapat juga ditulis dalam bentuk:
float ipk[5] =
{
3.51, 2.75, 3.20, 2.57, 2.89
};
Ilustrasi dari proses inisialisasi pada array ipk di atas dapat dilihat pada Gambar 3.
0 1 2 3 4
Dari proses inisialisasi pada array ipk di atas, berarti nilai dari masing-masing
elemennya adalah:
ipk[0] = 3.51
ipk[1] = 2.75
ipk[2] = 3.20
ipk[3] = 2.57
ipk[4] = 2.89
Untuk memberikan nilai 0 kepada seluruh elemen data pada suatu array pada
saat didefinisikan, dapat dilakukan seperti contoh berikut:
float ipk[10] = { 0. };
Hal ini akan mengakibatkan semua elemen data pada array ipk bernilai 0, dari
indeks 0 sampai indeks 9 ipk[0] = ipk[1] = ipk[2] = …. = ipk[9] = 0
Program 2.1
// *-------------------------------------------*
// * Contoh pemakaian variabel biasa dan array *
// * Perhatikan nama variabel yang digunakan *
// * juga perbedaan antara keduanya *
// *-------------------------------------------*
#include <iostream.h>
void main()
{
int Bil = 10; // variabel biasa
int bil[3] = { 30, 20, 40 }; // array dengan nama bil
int BIL[3] = { 10, 50, 60 }; // array dengan nama BIL
Akhir Program
Program 2.2
// *-------------------------------------------------------------*
// * Contoh pemakaian array untuk menghitung nilai rata-rata ipk *
// *-------------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main()
{
float ipk[JUML_DATA]; // array ipk
float total;
clrscr();
cout << "\nIPK rata-rata = " << total / JUML_DATA << endl;
}
Akhir Program
Program 2.3
// *----------------------------------------*
// * Contoh pemberian nilai awal pada array *
// * untuk menghitung nilai rata-rata ipk *
// *----------------------------------------*
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
void main()
{
float ipk[5] = { 3.51, 2.25, 3.20, 2.78, 2.92 };
float total;
clrscr();
Akhir Program
Program 3.1
// *------------------------------------------------------*
// * Contoh program pemakaian array untuk variabel string *
// *------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
void main()
{
char kode_titik[5][7] = { "TTG 20", "BM 10", "GPS 05", "BPN 01",
"JKG 15" };
clrscr();
Akhir Program
Program 3.2
// *---------------------------------------------------------*
// * Contoh program pemakaian array untuk variabel string *
// * dengan input data dari keyboard menggunakan cin.getline *
// *---------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
void main()
{
char kode_titik[5][7];
clrscr();
Akhir Program
Seperti halnya pada array berdimensi satu, sebelum digunakan suatu array
berdimensi dua juga harus didefinisikan terlebih dahulu, seperti ditunjukkan pada
Gambar 5.
nama array
banyaknya baris
int matrik_N[3][4];
banyaknya kolom
tipe data dari elemen array
matrik_N
elemen
[1][0] [1][1] [1][2] [1][3] baris ke 2 dan
kolom ke 4
elemen
baris ke 3 dan [2][0] [2][1] [2][2] [2][3]
kolom ke 1
Setelah didefinisikan, elemen tertentu dari suatu array dapat diakses dalam
bentuk :
nama_array[subscript_baris, subscript_kolom];
Contoh:
cout << matrik_N[2][1]; menampilkan elemen baris ke 3 dan
kolom ke 2 dari array matrik_N
matrik_N[0][2] = 25; memberikan nilai 25 ke elemen pada
baris ke 1 dan kolom ke 3 dari array
matrik_N
Seperti halnya pula pada array berdimensi satu, suatu array berdimensi
dua dapat juga diberi nilai awal pada saat didefinisikan (inisialisasi). Beberapa
bentuk proses inisialisasi pada array berdimensi dua adalah:
a) int matrik_N[3][4] =
{
{ 10, -8, 25, 68 },
{ 15, 72, 89, 42 },
{ 54, 31, -5, 93 }
};
b) int matrik_N[3][4] =
{
10, -8, 25, 68,
15, 72, 89, 42,
54, 31, -5, 93
};
c) int matrik_N[3][4] =
{
{ 10, -8, 25, 68 }, { 15, 72, 89, 42 }, { 54, 31, -5, 93 }
};
Diantara ketiga bentuk di atas, cara a) adalah yang paling baik.
Untuk memberikan nilai 0 kepada semua elemen data pada suatu array
berdimensi dua pada saat didefinisikan, dapat dilakukan seperti contoh berikut:
int matrik_N[3][4] = {{0}, {0}, {0}};
Perhatikan Program 4.1 berikut yang menunjukkan cara membaca dan
terutama cara menuliskan atau menampilkan suatu array berdimensi dua.
Program 4.1
// *--------------------------------------------*
// * Contoh program membaca dan menulis matriks *
// *--------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main()
{
int matrik_A[3][4];
clrscr();
Akhir Program
Program 5.1
// *---------------------------------------------------------*
// * Operasi matriks : penjumlahan, perkalian dengan skalar, *
// * dan transpose *
// *---------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main()
{
int matrik_A[3][4] =
{
{5, 2, 0, 9},
{4, 3, 1, 6},
{7, 1, 8, 2}
};
clrscr();
// Tampilan matrik
cout << "Matrik A yang berdimensi 3 x 4 adalah :" << endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
cout << matrik_A[i][j] << " ";
cout << endl;
}
Akhir Program
= C[2][1]
C[m-1][p-1]
B
A C
C[0][0] = A[0][0].B[0][0] + A[0][1].B[1][0] + A[0][2].B[2][0] + … + A[0][n-1].B[n-1][0]
C[0][1] = A[0][0].B[0][1] + A[0][1].B[1][1] + A[0][2].B[2][1] + … + A[0][n-1].B[n-1][1]
…
C[2][1] = A[2][0].B[0][1] + A[2][1].B[1][1] + A[2][2].B[2][1] + … + A[2][n-1].B[n-1][1]
…
C[m-1][p-1] = A[m-1][0].B[0][p-1] + A[m-1][1].B[1][p-1] + A[m-1][2].B[2][p-1] + …
+ A[m-1][n-1].B[n-1][p-1]
Program 5.2
// *----------------------------------*
// * Program perkalian 2 buah matriks *
// *----------------------------------*
#include <iostream.h>
#include <conio.h>
void main()
{
int matrik_A[3][2] =
{
{7, 1},
{0, 2},
{4, 3}
};
int matrik_B[2][4] =
{
{5, -1, 0, 1},
{2, 4, -2, 8}
};
int matrik_C[3][4] = {{0}, {0}, {0}}; // matrik hasil kali
// matrik A dan B
int i, j, k;
clrscr();
// Tampilan matrik
cout << "Matrik A adalah :" << endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 2; j++)
cout << matrik_A[i][j] << " ";
cout << endl;
}
cout << "\nMatrik C merupakan hasil perkalian A dan B :" << endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
cout << matrik_C[i][j] << " ";
cout << endl;
}
}
Akhir Program
9 0 0 0
Matriks
0 5 0 0 int Diagonal[4] =
Dianggap seperti array
berdimensi satu
diagonal 0 0 8 0 { 9, 5, 8, 1 };
Bukan int Diagonal [4][4]
0 0 0 1
9 2 3 4
Matriks
2 5 1 7 int Simetris[10] = Dianggap seperti array
{ 9, 2, 3, 4, 5, berdimensi satu
simetris 3 1 8 0 1, 7, 8, 0, 6 }; Bukan int Simetris [4][4]
4 7 0 6
Program 5.3
// *--------------------------------------------------------*
// * Contoh kasus penggunaan matriks khusus *
// * yaitu perkalian antara matriks kolom dgn matriks baris *
// *--------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
void main()
{
int m_kolom[3] = { 25, 50, 5 }; // inisialisasi matrik kolom
int m_baris[4] = { -4, 10, 20, 15 }; // inisialisasi matrik baris
int m_hasil[3][4] // definisi matrik hasil, dimensi dua
clrscr();
// Tampilan matrik
cout << "Matrik kolom adalah :" << endl;
for (int i = 0; i < 3; i++)
cout << m_kolom[i] << endl;
6. Aktivitas
Ada dua jenis aktivitas yang dikerjakan mahasiswa terkait dengan materi
yang diberikan pada minggu ke 14 & 15 ini, yaitu:
a. Klasikal, yang meliputi:
Diskusi kelompok
Mengerjakan quiz
Mengerjakan tugas
b. Praktikum di Lab. Komputer, dapat mengerjakan materi tugas
7. Tugas
a. Amati semua program yang telah diberikan di atas.
i. Selidiki dan identifikasi jika ada kesalahan.
ii. Tanpa harus mengkompilasi program-program tersebut terlebih dulu,
tuliskan output dari program-program tersebut.
iii. Eksekusilah program-program tersebut, dan bandingkan output yang
diperoleh dengan prakiraan output yang telah Anda lakukan pada
butir ii. Jika tidak sama, jelaskan mengapa?
b. Buatlah program dengan C++ untuk menyimpan data berupa huruf
vokal (A, I, U, E, O) sebagai karakter tunggal ke dalam array dan
kemudian menampilkan array tersebut.
i. Gunakan proses inisialisasi pada array tersebut.
ii. Pemberian nilai setiap karakter kepada masing-masing elemen
array.
c. Buatlah program dengan C++ untuk menyimpan data berikut ke dalam
suatu array:
1 4 2 5 3 8 9 6 10 15
Kemudian carilah bilangan yang paling besar.
d. Terkait dengan butir (c) di atas, buatlah program C++ untuk
menampilkan array tersebut, dan kemudian urutkan data pada array
tersebut dari yang terbesar sampai yang terkecil.
e. Diberikan dua buah array sebagai berikut:
{ 1, 2, 3, 5, 6, 8, 10, 7, -5 }
{ 4, 6, 1, 5, 2, 8, -3, -6, 3 }
Buatlah program C++ untuk menjumlahkan elemen-elemen dari kedua
array tersebut dan menyimpannya ke array ketiga, dengan ketentuan:
8. Rangkuman
Dalam pembuatan program sering kali dijumpai jumlah item data yang
cukup banyak sehingga menyulitkan dalam pemilihan nama variabel penerimanya.
C++ memberikan bentuk variabel berindeks atau array, baik berdimensi satu
maupun berdimensi dua, sehingga untuk sekumpulan data yang bertipe sama
dapat disimpan dalam satu buah nama variabel saja. Data pada variabel
berindeks tersebut dapat diakses berdasarkan subscript atau indeksnya, yaitu
suatu bilangan bulat positip yang diletakkan di dalam kurung siku [ ]. Dalam C++
indeks ini dimulai dari angka 0. Dengan demikian, penggunaan variabel berindeks
dapat dibedakan dari variabel biasa berdasarkan pada ada atau tidak adanya
kurung siku di akhir suatu nama variabel.
Seperti halnya dengan variabel biasa, suatu variabel berindeks juga harus
didefinisikan terlebih dulu sebelum digunakan, yang meliputi nama array, tipe data
dalam array, dan jumlah elemen dari array. Contoh pendeklarasian array
berdimensi satu dengan nama ipk yang berisi 5 buah elemen data bertipe float
adalah float ipk[5]. Untuk mendefinisikan suatu array yang berisi data string,
digunakan tipe data char dan dua (2) tanda kurung siku [ ], yang berturut-turut
menyatakan banyaknya data string dan panjang karakter maksimal termasuk
karakter NULL (contoh char kode[5][10]). Untuk array berdimensi dua atau
yang sering disebut sebagai matriks, digunakan dua (2) buah indeks, masing-
masing untuk menunjukkan banyaknya baris dan banyaknya kolom (contoh
float matrik_N[3][4]).
PENUTUP
Tes Formatif
1. Tuliskan perintah dalam C++, untuk mendefinisikan variabel-variabel berindeks
berikut:
a. Variabel jumlah merupakan array berdimensi satu yang berisi 10 elemen
data bertipe double.
b. Variabel vokal merupakan array berdimensi satu yang berisi 5 elemen data
berupa karakter tunggal.
c. Variabel no10 merupakan array berdimensi satu yang berisi 7 elemen data
string dengan panjang maksimal 20 karakter (belum termasuk karakter
NULL).
d. Variabel XYZ merupakan array berdimensi dua (matriks) yang terdiri atas
10 baris dan 8 kolom dengan elemen datanya berupa bilangan bulat tanpa
desimal.
2. Diberikan pernyataan definisi dan inisialisasi 2 buah array sebagai berikut:
int A[5] = { 3, 6, 8, 5, 8 };
int B[5] = { 2, 8, 2, 3, 9 };
Nilai P = A[3] + 2 * B[4] adalah : …………………………………
Nilai Q = -B[1] % 3 + A[1] / B[3] adalah : ………………………..
3. Diberikan sebuah program sebagai berikut:
line statement
1 #include <iostream.h>
2 #include <conio.h>
3 void main()
4 {
5 int R[4] = ( -50, -10, 20, 2 );
6 int Ti = -2;
7 clrscr();
8 for (m = 0; m < 4; m++)
9 {
10 Ti *= -1;
11 if (R[m] > 0);
12 R[m] = -R[m] * Ti;
Petunjuk Penilaian
Mahasiswa dinilai dari hasil quiz (skor 0 – 100), hasil tugas dan praktikum yang
dilakukan di Lab. Komputer dengan memperhatikan learning outcomes yang telah
disebutkan di atas dan berdasarkan kriteria-kriteria yang ditunjukkan dalam rubrik
penilaian sebagai berikut :
No. Kriteria 1 2 3
Aspek Kognitif
1. Menjelaskan Tidak dapat Dapat Dapat
pengertian array, menjelaskan dan menjelaskan menjelaskan
dan membedakan pengertian array, pengertian array,
membedakan sama sekali namun tidak dan
penggunaan dapat membedakan
variabel biasa membedakan penggunaan
dengan variabel penggunaannya variabel biasa
berindeks (array) dengan variabel dengan variabel
biasa berindeks (array)
2. Menjelaskan Tidak dapat Hanya dapat Dapat
proses menjelaskan menjelaskan menjelaskan
pendefinisian sama sekali pendefinisian dengan benar
array dimensi array dimensi dan tepat proses
satu dan dua satu saja pendefinisian
(matriks) array dimensi
satu dan dua
(matriks)
3. Menunjukkan Tidak dapat Hanya dapat Dapat
prosedur menunjukkan menunjukkan menunjukkan
penggunaan sama sekali prosedur prosedur
array dimensi penggunaan penggunaan
satu dan dua array dimensi array dimensi
(matriks) dalam satu saja dalam satu dan dua
sebuah program sebuah program (matriks) dalam
semua program
yang diberikan
dengan benar
dan tepat
Aspek Psikomotorik
1. Membuat Tidak dapat Dapat membuat Dapat membuat
program untuk membuat program aplikasi program aplikasi
berbagai aplikasi program dengan dengan dengan
yang menggunakan menggunakan menggunakan
menggunakan array sama array dimensi array dimensi
array, baik sekali satu dan dua, satu dan dua,
dimensi satu namun hasilnya termasuk operasi
maupun dimensi belum benar matriks, serta
dua, khususnya terutama pada hasilnya benar
pada hitungan hitungan matriks
matriks
Umpan Balik
Umpan balik dari mahasiswa dapat diperoleh dari tingkat keaktifan mahasiswa
pada saat pelaksanaan diskusi kelompok, hasil quiz dan tugas, serta dari hasil
praktikum di Lab. Komputer.
Tindak Lanjut
1. Untuk mahasiswa yang tingkat keaktifannya dalam pelaksanaan diskusi
kelompok masih kurang, diharapkan untuk mempelajari terlebih dahulu materi
pada minggu berikutnya dan membuat daftar pertanyaan untuk didiskusikan
pada sesi klasikal minggu tersebut.
2. Untuk mahasiswa yang hasil quiznya masih belum baik, diharapkan untuk
membaca dan mempelajari lagi bahan ajar dan pustaka yang diacu.
3. Untuk mahasiswa yang hasil tugasnya masih belum baik, diharapkan menemui
asisten untuk memperoleh bantuan tutorial/asistensi.
4. Untuk mahasiswa yang hasil praktikumnya masih belum baik, diharapkan
untuk mengulangi kembali materi yang dipraktekkan dengan menggunakan PC
atau laptop milik mereka sendiri di rumah dan dapat menghubungi asisten
untuk memperoleh bantuan asistensi.
Daftar Pustaka
1. Ayres, F., 1982, Matrics, Schaum’s Outline Series, Mc. Graw-Hill Book
Company.
4. Ghilani, Charles D., 2010, Adjustment Computations: Spatial Data Analysis,
Fifth Edition, John Wiley & Sons, Inc., USA.
6. Kadir, A., 2003, Pemrograman C++, Penerbit Andi Offset, Yogyakarta.
7. Kadir, A., dan Heriyanto, 2005, Algoritma Pemrograman Menggunakan
C++, Penerbit Andi Offset, Yogyakarta.
8. Lippman, S.B., et all, 2012, C++ Primer, Fifth Edition, Addison-Wesley.
Lembar Kerja
Soal-Tugas
Presentasi
Laptop/PC
LO (Learning Pokok
Metode Ajar Aktivitas Metode Evaluasi Sumber
Outcomes) yang Bahasan Sub Pokok Bahasan Aktivitas Dosen
Teks
Web
(STAR) Mahasiswa dan Penilaian Ajar
akan dicapai (Topik)
14, Kognitif: Variabel a. Pengertian array - - Klasikal, a. Baca bahan ajar a. Menentukan Quiz Pustaka: 1, 4,
15 Menjelaskan berindeks (array b. Pendefinisian array mahasiswa sebelum kuliah kelompok Skoring 0-100 6, 7, 8
pengertian array, dimensi satu dimensi satu dan array berkelompok b. Diskusi antar b. Menyiapkan dan
membedakan dan dua) dimensi dua (matriks) dan berdiskusi kelompok menjelaskan Tugas: membuat
penggunaan variabel c. Aplikasi program (Cooperative c. Mengerjakan materi program dengan
biasa dengan variabel hitungan matriks learning & tugas c. Fasilitator & bahasa C++ untuk:
berindeks (array), (penjumlahan, Problem-based evaluator diskusi Penggunaan
proses pendefinisian pengurangan, perkalian, learning) d. Memberikan variabel biasa
array dimensi satu dan transpose) tugas dan variabel
dua (matriks), serta d. Penerapan array untuk e. Membuat soal berindeks (array)
menunjukkan prosedur pendefinisian dan quiz Proses hitungan
penggunaannya dalam penulisan jenis-jenis matriks
sebuah program matriks khusus (matriks (penjumlahan,
baris, diagonal, simetris) pengurangan,
Afektif: beserta pembuatan transpose,
Dapat bekerja dalam program operasi perkalian 2 buah
sebuah kelompok, dan hitungannya matriks)
mendiskusikan hasil Proses hitungan
kerjanya, serta berpikir matriks khusus
logis dan terstruktur (matriks baris,
kolom, diagonal,
simetris)
Proses hitungan
yang
menerapkan
penggunaan
array dan matriks
(transformasi
Tabel rubrik
Kriteria penilaian 1-
3
Psikomotorik: - - - Praktek di lab. Praktek membuat a. Menjelaskan Tabel rubrik
Membuat program Komputer program dengan materi praktek Kriteria penilaian 1-
untuk berbagai aplikasi (setiap menggunakan b. Membimbing 3
yang menggunakan mahasiswa variabel biasa, dan mengawasi
array, baik dimensi mendapat 1 PC) array dimensi satu pelaksanaan
satu maupun dimensi dan dua (matriks), praktek bersama
dua, khususnya pada serta asisten
hitungan matriks mengaplikasikan-
nya pada hitungan
matriks (dapat
menggunakan
materi tugas yang
diberikan pada saat
perkuliahan)