Anda di halaman 1dari 22

TKD1205 Pemrograman Komputer RM

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.

Program Studi Teknik Geodesi dan Geomatika FT-UGM 1


TKD1205 Pemrograman Komputer RM

PENYAJIAN

1. Pengertian Variabel Berindeks (Array/Larik)


Bagi seorang programmer pemula, ada kemungkinan akan mengalami
kesulitan dalam menentukan nama variabel apabila jumlah item data yang akan
ditampung sangat banyak. Misalnya untuk menyimpan data umur atau Indeks
Prestasi (IP) dari 1000 mahasiswa, jika setiap item data mahasiswa diberi satu (1)
nama variabel, maka untuk 1000 mahasiswa diperlukan 1000 nama variabel. Ini
jelas tidak efisien.
Untuk lebih memudahkan dalam memberikan nama variabel pada data
yang jumlahnya cukup banyak, digunakan nama variabel yang disebut variabel
berindeks atau variabel bersubskrip atau array atau larik. Array adalah kumpulan
data bertipe sama yang menggunakan nama sama. Dengan menggunakan array,
sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan
variabel lain dalam array dibedakan berdasarkan subscript atau indeks. Subscript
berupa bilangan yang diletakkan di dalam kurung siku [ ]. Melalui subscript atau
indeks inilah masing-masing data atau elemen pada array dapat diakses. Maka
untuk 1000 data umur mahasiswa, cukup menggunakan satu nama variabel diikuti
indeksnya, misalnya umur[1000]. Untuk mengakses data umur mahasiswa ke 50
dan 200 ditunjukkan dengan variabel umur[50] dan umur[200]. Demikian juga
untuk data IP, cukup menggunakan satu nama variabel: IP[1000]. Dengan
demikian perbedaan antara variabel biasa dengan variabel berindeks terletak
pada ada atau tidak adanya kurung siku di akhir suatu nama variabel. Contoh:
 umur  variabel biasa
 umur[50]  variabel berindeks atau array yang berisi 50 elemen
 NAMA[15]  variabel berindeks atau array yang berisi 15 elemen
 NAMA  variabel biasa
 nama[15]  variabel berindeks atau array yang juga berisi 15 data/
elemen (beda dengan NAMA[15])

2. Array Berdimensi Satu


Contoh array yang diberikan di atas, adalah termasuk array berdimensi
satu. Seperti halnya dengan variabel biasa, sebelum digunakan suatu variabel
berindeks atau array harus didefinisikan terlebih dahulu. Pendefinisian suatu array
meliputi:
 nama array,
 tipe data dari semua elemen yang berada di dalam array,
 jumlah elemen dari array.
Gambar 1 menunjukkan syntax dari cara pendefinisian suatu array
berdimensi satu beserta keterangannya.
nama array
jumlah elemen array

float ipk[5];

tipe elemen array

Gambar 1. Bentuk pendefinisian array berdimensi satu

Program Studi Teknik Geodesi dan Geomatika FT-UGM 2


TKD1205 Pemrograman Komputer RM

Dengan adanya pendefinisian:


float ipk[5];
maka array ipk dapat menyimpan lima buah data yang semuanya bertipe float.
Gambar 2 berikut memperlihatkan keadaan array ipk.

elemen-elemen array

subscript atau
indeks array

0 1 2 3 4

array ipk

Gambar 2. Ilustrasi array ipk

Dari Gambar 2 di atas, terlihat bahwa:


 Subscript atau indeks dari suatu array harus selalu dimulai dari nol (0)
 Indeks dari suatu array harus selalu berupa bilangan bulat positip
Tabel 1 memperlihatkan beberapa contoh pendeklarasian atau pendefinisian larik
atau array dimensi satu yang lain.
Tabel 1. Contoh pendeklarasian array dimensi satu
Deklarasi Keterangan
Array pencacah mempunyai 10 buah elemen data
int pencacah[10];
bertipe int (bilangan bulat)
Array kar mempunyai 5 buah elemen data bertipe
char kar[5];
char (karakter tunggal)
Array jarak mempunyai 3 buah elemen data bertipe
double jarak[3];
double (bilangan desimal)
Array kode mempunyai 5 buah elemen data bertipe
char kode[5][10];
string dengan panjang maksimal sebesar 9 karakter

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

Program Studi Teknik Geodesi dan Geomatika FT-UGM 3


TKD1205 Pemrograman Komputer RM

 cout << ipk[i];  menampilkan elemen ke i dari array ipk


 ipk[0] = 3.51;  mengisikan nilai 3.51 ke elemen/data pertama
(indeks nol) 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.

float ipk[5] = { 3.51, 2.75, 3.20, 2.57, 2.89 };

3.51 2.75 3.20 2.57 2.89

0 1 2 3 4

Gambar 3. Ilustrasi proses inisialisasi pada array ipk

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 *
// *-------------------------------------------*

Program Studi Teknik Geodesi dan Geomatika FT-UGM 4


TKD1205 Pemrograman Komputer RM

#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

for (int i = 0; i < 3; i++)


cout << (bil[i] + BIL[i]) / Bil << " ";
}

Akhir Program

Program 2.2
// *-------------------------------------------------------------*
// * Contoh pemakaian array untuk menghitung nilai rata-rata ipk *
// *-------------------------------------------------------------*

#include <iostream.h>
#include <conio.h>

const int JUML_DATA = 5;

void main()
{
float ipk[JUML_DATA]; // array ipk
float total;

clrscr();

// membaca data ipk dari keyboard dan meletakkan ke array


cout << "Masukkan data ipk" << endl;
for (int i = 0; i < JUML_DATA; i++)
{
cout << "IPK[" << (i + 1) << "] = ";
cin >> ipk[i];
}

// menghitung nilai rata-rata ipk dari 5 buah data


total = 0.;
for (int i = 0; i < JUML_DATA; i++)
total += ipk[i];

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 *
// *----------------------------------------*

Program Studi Teknik Geodesi dan Geomatika FT-UGM 5


TKD1205 Pemrograman Komputer RM

#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();

// menampilkan data ipk dan menghitung nilai rata-ratanya


total = 0.;
cout << setiosflags(ios::showpoint | ios::fixed);
cout << setprecision(2);
for (int i = 0; i < 5; i++)
{
cout << "IPK[" << (i + 1) << "] = " << ipk[i] << endl;
total += ipk[i];
}
cout << "\nIPK rata-rata = " << total / 5 << endl;
}

Akhir Program

3. Array untuk Variabel String


Untuk mendefinisikan suatu array yang berisi data string, yaitu karakter-
karakter yang diletakkan diantara tanda petik ganda (”), digunakan tipe data char
dan dua (2) tanda kurung siku [ ] (lihat Tabel 1). Kurung siku yang pertama
digunakan untuk menunjukkan banyaknya elemen data pada array tersebut, dan
kurung siku kedua menunjukkan panjang maksimal karakter (termasuk karakter
NULL).

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();

cout << setiosflags(ios::right);


for (int i = 0; i < 5; i++)
cout << "Kode Titik " << (i + 1) << " : " << setw(6)
<< kode_titik[i] << endl;
}

Akhir Program

Program Studi Teknik Geodesi dan Geomatika FT-UGM 6


TKD1205 Pemrograman Komputer RM

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();

// membaca data dari keyboard dan meletakkannya ke array string


cout << "Masukkan kode titik! (jangan lebih dari 6 karakter)"
<< endl;
for (int i = 0; i < 5; i++)
{
cout << "Kode Titik [" << (i + 1) << "] = ";
cin.getline(kode_titik[i], sizeof(kode_titik));
}

// menampilkan array string


cout << endl;
cout << setiosflags(ios::right);
for (int i = 0; i < 5; i++)
cout << "Kode Titik " << (i + 1) << " : " << setw(6)
<< kode_titik[i] << endl;
}

Akhir Program

4. Array Berdimensi Dua (Matriks)


Array berdimensi dua sering disebut dengan bentuk tabel atau matriks.
Disebut dimensi dua karena posisi setiap item datanya ditentukan oleh 2 (dua)
ekspresi yang biasa disebut dengan baris dan kolom. Sebagai contoh diberikan
sebuah matriks N yang terdiri atas 3 baris dan 4 kolom  N (3, 4), seperti terlihat
pada Gambar 4 berikut.

kolom 1 kolom 2 kolom 3 kolom 4


baris 1 10 -8 25 68
baris 2 15 72 89 42
baris 3 54 31 -5 93

Gambar 4. Sebuah matriks N yang terdiri atas 3 baris dan 4 kolom

Seperti halnya pada array berdimensi satu, sebelum digunakan suatu array
berdimensi dua juga harus didefinisikan terlebih dahulu, seperti ditunjukkan pada
Gambar 5.

Program Studi Teknik Geodesi dan Geomatika FT-UGM 7


TKD1205 Pemrograman Komputer RM

nama array
banyaknya baris

int matrik_N[3][4];
banyaknya kolom
tipe data dari elemen array

Gambar 5. Bentuk pendefinisian array berdimensi dua

Gambar 6 berikut memperlihatkan sistem penomeran elemen pada array


berdimensi dua, yang dalam hal ini adalah untuk contoh array matrik_N di atas.

matrik_N

[0][0] [0][1] [0][2] [0][3]

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

Gambar 6. Penomeran elemen pada array berdimensi dua

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:

Program Studi Teknik Geodesi dan Geomatika FT-UGM 8


TKD1205 Pemrograman Komputer RM

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();

cout << "Proses input matrik A dari keyboard" << endl;


for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
cout << "Masukkan elemen A(" << (i + 1) << "," << (j + 1)
<< ") = ";
cin >> matrik_A[i][j];
}
cout << endl;
}

// Proses menulis matrik


cout << "\nMatrik A adalah :" << endl;

Program Studi Teknik Geodesi dan Geomatika FT-UGM 9


TKD1205 Pemrograman Komputer RM

for (int i = 0; i < 3; i++)


{
for (int j = 0; j < 4; j++)
cout << matrik_A[i][j] << " ";
cout << endl;
}
}

Akhir Program

5. Operasi Hitungan pada Matriks


Untuk membuat program aplikasi hitungan pada matriks, seorang
programmer harus mengetahui terlebih dulu beberapa persyaratan yang terkait
dengan operasi-operasi matriks, antara lain:
a. Penjumlahan dan pengurangan, memiliki syarat bahwa matriks-matriks
yang akan dijumlahkan ataupun dikurangkan memiliki ukuran (dimensi)
yang sama.
mAn ± mBn = aij ± bij = cij = mCn
b. Perkalian matriks dengan suatu skalar (k)
k. mAn = k.aij = mBn
c. Transpose matriks, jika elemen yang terletak pada baris ke i dan kolom ke j
dari matriks asal, akan menjadi elemen yang terletak pada baris ke j dan
kolom ke i dari matriks hasil.
T
Jika mAn = (aij)mxn  A = (aji)nxm
d. Perkalian dua buah matriks, memiliki syarat bahwa banyaknya kolom dari
matriks pertama harus sama dengan banyaknya baris dari matriks kedua.
mAn x nBp = mCp
e. Determinan matriks, syaratnya adalah berupa matriks bujursangkar, yaitu
banyaknya baris sama dengan banyaknya kolom.
f. Invers matriks, syaratnya selain berupa matriks bujursangkar, juga nilai
determinannya tidak boleh sama dengan nol (matriks non singular).

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}
};

Program Studi Teknik Geodesi dan Geomatika FT-UGM 10


TKD1205 Pemrograman Komputer RM

int matrik_B[3][4], matrik_C[3][4], matrik_AT[4][3];


int i, j;

clrscr();

// Proses perkalian matrik dgn skalar, penjumlahan 2 matrik


// dan transpose
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
matrik_B[i][j] = 5 * matrik_A[i][j]; // matrik A dikalikan
// dgn skalar 5
// penjumlahan matrik A dan B
matrik_C[i][j] = matrik_A[i][j] + matrik_B[i][j];

matrik_AT[j][i] = matrik_A[i][j]; // proses transpose


}
}

// 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;
}

cout << "\nMatrik B yang merupakan hasil perkalian matrik A dengan


skalar 5:" << endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
cout << matrik_B[i][j] << " ";
cout << endl;
}

cout << "\nMatrik C hasil penjumlahan matrik A dan B adalah :"


<< endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
cout << matrik_C[i][j] << " ";
cout << endl;
}

cout << "\nMatrik A transpose adalah :" << endl;


for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
cout << matrik_AT[i][j] << " ";
cout << endl;
}

// Cara lain menuliskan matrik transpose tanpa harus mendefinisikan


cout << "\nMatrik A transpose adalah :" << endl;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)

Program Studi Teknik Geodesi dan Geomatika FT-UGM 11


TKD1205 Pemrograman Komputer RM

cout << matrik_A[j][i] << " ";


cout << endl;
}
}

Akhir Program

Untuk proses perkalian antara dua buah matriks, guna mempermudah di


dalam memahami algoritmanya, disajikan ilustrasi seperti pada Gambar 7.

mAn x nBp = mCp C[0][0]

= 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]

Gambar 7. Ilustrasi proses perkalian dua buah matriks

Program 5.2
// *----------------------------------*
// * Program perkalian 2 buah matriks *
// *----------------------------------*

#include <iostream.h>
#include <conio.h>

void main()
{
int matrik_A[3][2] =
{
{7, 1},

Program Studi Teknik Geodesi dan Geomatika FT-UGM 12


TKD1205 Pemrograman Komputer RM

{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();

// Proses perkalian matrik A dan B


for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 2; k++)
matrik_C[i][j] = matrik_C[i][j] + matrik_A[i][k] *
matrik_B[k][j];
} // akhir kalang j
} // akhir kalang i

// 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 B adalah :" << endl;


for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
cout << matrik_B[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

Selain operasi-operasi hitungan matriks di atas, masih banyak operasi


hitungan matriks yang lain, khususnya yang melibatkan bentuk matriks khusus,
seperti matriks baris, matriks kolom, matriks diagonal, dan matriks simetris. Terkait
dengan penggunaan matriks khusus tersebut dalam penyusunan program, Tabel
2 berikut menunjukkan contoh proses inisialisasi dari matriks-matriks tersebut.

Program Studi Teknik Geodesi dan Geomatika FT-UGM 13


TKD1205 Pemrograman Komputer RM

Tabel 2. Proses inisialisasi matriks-matriks khusus


Matriks
Contoh Inisialisasi Keterangan
Khusus
Matriks  4 10 20 15 int Baris[4] =
Dianggap seperti array
berdimensi satu
baris { -4, 10, 20, 15 };
Bukan int Baris [0][4]
 25  Dianggap seperti array
Matriks  50  int Kolom[3] =
dimensi satu
kolom   { 25, 50, -5 };
 5 Bukan int Kolom [3][0]

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 

Sebagai contoh kasus, perhatikan Program 5.3 yang memperlihatkan


proses perkalian antara matriks kolom dengan matriks baris.

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();

// Proses perkalian matrik kolom dengan matrik baris


for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
m_hasil[i][j] = m_kolom[i] * m_baris[j];
}

// Tampilan matrik
cout << "Matrik kolom adalah :" << endl;
for (int i = 0; i < 3; i++)
cout << m_kolom[i] << endl;

Program Studi Teknik Geodesi dan Geomatika FT-UGM 14


TKD1205 Pemrograman Komputer RM

cout << "\nMatrik baris adalah :" << endl;


for (int i = 0; i < 4; i++)
cout << m_baris[i] << " ";
cout << endl;

cout << "\Matrik hasil perkaliannya adalah :" << endl;


for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
cout << m_hasil[i][j] << " ";
cout << endl;
}
}
Akhir Program

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:

Program Studi Teknik Geodesi dan Geomatika FT-UGM 15


TKD1205 Pemrograman Komputer RM

 elemen pertama dari array kesatu dijumlahkan dengan elemen


terakhir dari array kedua,
 elemen kedua dari array kesatu dijumlahkan dengan elemen kedua
terakhir dari array kedua,
 elemen ketiga dari array kesatu dijumlahkan dengan elemen ketiga
terakhir dari array kedua, dst.
Selanjutnya tampilkan ketiga array tersebut, dan tampilkan lagi array
kesatu namun dengan urutan elemennya mulai dari elemen terakhir
sampai pada elemen pertama.
f. Baca buku pustaka no. 4 (Ghilani, Charles D., 2010, Adjustment
Computations: Spatial Data Analysis) halaman 572, yang berisi cuplikan
program invers matriks yang dibuat dengan berbagai bahasa
pemrograman (termasuk C++). Kembangkanlah program tersebut untuk
menghitung invers sebuah matriks berordo lima (5 baris dan 5 kolom)
yang semua elemennya bertipe int (bilangan bulat). Data bebas,
gunakan proses inisialisasi. Selanjutnya lakukan operasi perkalian
antara matriks tersebut dengan matriks hasil inversnya, dan tampilkan
ketiga matriks tersebut.
g. Matrik P adalah matriks bujursangkar berordo 8  definisinya float
P[8][8]. Buatlah program untuk menampilkan matriks tersebut dan
menghitung hasil kali dari elemen-elemen diagonal utamanya. Masukan
data bagi matriks P bebas berupa bilangan desimal (bukan bilangan
bulat), gunakan proses inisialisasi.
h. Matriks A adalah matriks baris yang berisi 8 kolom dan matriks B adalah
matrik diagonal yang berordo 8 dan hanya berisi elemen-elemen
diagonal utama. Buatlah program perkalian matrik C = A * B dengan
syarat pendefinisian ketiga matriks tersebut adalah : int A[8], int B[8], int
C[8]. Masukan data untuk matriks A dan B bebas, gunakan proses
inisialisasi.
 X   Sec Tg   x1 
i. Diberikan suatu rumus perkalian matriks :  1     
 Y1   Ctg  Sin   y1 
atau Y = MX
Dalam hal ini, Y dan X masing-masing adalah array dimensi satu : Y[2],
X[2] dan M adalah array dimensi dua : M[2][2]. Buatlah program untuk
menampilkan matriks M, menghitung perkalian MX, dan menampilkan
Y, dengan input sudut  dalam satuan DMS (derajad, menit, sekon).
Masukan data sudut bebas, demikian juga data array X, gunakan
proses inisialisasi.

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

Program Studi Teknik Geodesi dan Geomatika FT-UGM 16


TKD1205 Pemrograman Komputer RM

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;

Program Studi Teknik Geodesi dan Geomatika FT-UGM 17


TKD1205 Pemrograman Komputer RM

13 cout << R[m] << “ “;


14 }
15 }
a. Program di atas masih memiliki 3 kesalahan, sebutkan pada baris berapa
saja dan tuliskan pembetulannya.
b. Jika program di atas sudah menjadi benar, maka nilai R[1] = ..........., dan
R[3] = ……….
 2 1 4 
4. Jika diberikan matrik_A =  5 6  3
 7 8 1 
maka statement untuk menuliskan matriks dalam bahasa C ++ di bawah ini :
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
cout << -matrik_A[j][i] << " ";
cout << endl;
}
....... ....... .......
akan menghasilkan matriks : ....... ....... .......
....... ....... .......

 Jawaban Tes Formatif


1. a. double jumlah[10];
b. char vokal[5];
c. char no10[7][21];
d. int XYZ[10][8];
2. Nilai P adalah: 23, dan nilai Q adalah: 0
3. a. baris 5, pembetulannya menjadi: int R[4] = { -50, -10, 20, 2 };
baris 8, pembetulannya menjadi: for (int m = 0; m < 4; m++)
baris 11, pembetulannya menjadi: if (R[m] > 0)
b. R[1] = -10, dan R[3] = 4
 2  5 7 
4.  1  6  8
 4 3  1

 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 :

Program Studi Teknik Geodesi dan Geomatika FT-UGM 18


TKD1205 Pemrograman Komputer RM

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.

Program Studi Teknik Geodesi dan Geomatika FT-UGM 19


TKD1205 Pemrograman Komputer RM

 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.

Program Studi Teknik Geodesi dan Geomatika FT-UGM 20


TKD1205 Pemrograman Komputer RM

Rencana Kegiatan Pembelajaran Mingguan (RKPM) Minggu ke 14 & 15


Media Ajar
Minggu ke

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

Program Studi Teknik Geodesi dan Geomatika FT-UGM 21


TKD1205 Pemrograman Komputer RM
koordinat)

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)

Program Studi Teknik Geodesi dan Geomatika FT-UGM 22

Anda mungkin juga menyukai