Anda di halaman 1dari 37

Bab I

Pengenalan Algoritma
dan Pemrograman
Algoritma
Dalam ilmu matematika dan komputasi, algoritma berarti
langkah-langkah yang harus ditempuh untuk kalkulasi atau
pemecahan masalah. Pada dasarnya definisi algoritma
abstrak, untuk lebih mudahnya dapat dipelajari melalui
contoh studi kasus berikut.

Kasus 1a : Mengupas Kentang


Bayangkan kalian ingin mengupas kentang untuk memasak
sebuah sup. Jika disediakan sebuah pisau, mangkuk, dan
kentang bagaimana langkah-langkah mengupas kentang
untuk ditaruh di dalam mangkuk ?

Jawab :
Dengan mudah persoalan tersebut dijawab dengan langkah-
langkah sebagai berikut :

1. Ambil pisau
2. Ambil 1 buah kentang
3. Kupas kulit kentang tersebut
4. Taruh kentang di mangkuk
5. Kembalikan pisau ke tempatnya jika kentang sudah habis

Apabila kita gambarkan dalam flowchart, langkah-langkah


tersebut dapat digambarkan sebagai berikut :

Ambil Kupas Kembalikan


Pisau Kulit Pisau

Ambil Taruh di
Kentang mangkuk
Flowchart 1 - Langkah Mengupas Kentang
Kompleksitas Algoritma
Algoritma bisa saja sederhana seperti contoh mengupas
kentang pada sebelumnya. Namun, perlu diketahui
terkadang ada beberapa proses yang dilewati dan dianggap
sudah dilakukan, contohnya seperti permasalahan berikut.

Kasus 1b : Mengupas Kentang (2)


Langkah apa saja yang ditambahkan apabila pisau kalian
belum tajam dan kentang harus direbus sebelum ditaruh di
mangkuk ? (Asumsikan telah disediakan panci untuk merebus
kentang)

Jawab :
Terjadi beberapa perubahan pada flowchart mengupas
kentang seperti contoh berikut :

Masukkan air ke dalam


Ambil pisau Rebus Kentang
panci

Taruh kentang di
Tajamkan pisau Nyalakan kompor
mangkok

Ambil kentang Kupas kulit kentang Kembalikan pisau

Flowchart 2 - Langkah Merebus Kentang (2)


Algoritma dalam Pemrograman
Dalam pemrograman, algoritma adalah dasar dari program
yang akan dibuat. Algoritma akan menentukan bagaimana
keberjalanan sebuah program, tahap penyusunan algoritma
sebelum membuat program umumnya disebut pseudo-
coding.

Tidak ada sintaks formal untuk sebuah pseudo-code, sebuah


pseudo-code umumnya terdiri dari bahasa yang mudah
dimengerti (tidak seperti bahasa pemrograman di komputer).
Untuk lebih jelasnya akan dijelaskan oleh dosen yang
bersangkutan di kelas.

Khusus untuk flowchart pseudo-code, terdapat simbol khusus


yang memiliki arti berbeda seperti berikut :

Simbol Makna

Menyatakan awal (start) dan akhir program (end)

Menandakan input dan output

Menandakan suatu proses

Kondisi perulangan (if conditional)

Konektor untuk algoritma

Menandakan struktur percabangan (looping)

Tabel 1- Simbol Flowchart Pseudocode


Sintaks Program
Sebuah program umumnya memiliki penanda awal dan akhir
dari sebuah program. Uniknya, untuk bahasa yang berbeda,
penanda awal dan akhir program juga berbeda. Di dalam
pseudocode, umumnya sebuah program diawali dengan kata
begin dan diakhiri dengan kata end.

Perlu diketahui, di beberapa bahasa pemrograman tanda


awal dan akhir program akan mirip dengan tanda awal dan
akhir fungsi (akan dijelaskan lebih lanjut pada bab
selanjutnya).

Contoh sintaks awal dan akhir program sesuai dengan


bahasanya dapat dilihat dalam tabel berikut :

Pseudocode Pascal

Program <nama program> program <nama program>

Begin begin
<isi program> <isi program>;
End end.

C++ Fortran
#include <nama library>
using namespace std;
program <nama program>

int main ()
<isi program>
{
<isi program>
end program <nama program>
return 0;
}
Tabel 2 - Perbedaan Sintaks Awal dan Akhir Program
Untuk memahami lebih jauh mengenai perbedaan sintaks
dalam masing-masing bahasa, perhatikan contoh kasus
berikut.

Kasus 1c : Hello World !


Peribahasa mengatakan setiap programmer memulai
pemrograman dengan membuat program hello world,
menggunakan empat bahasa, buat program untuk
menampilkan tulisan hello world ke layar !

Jawab :

Pseudocode Pascal

Program HelloWorld program HelloWorld

Begin begin
Output (Hello World !) write(Hello World !);
End end.

C++ Fortran
#include <iostream>
using namespace std;
program HelloWorld

int main ()
write(*,*) Hello World !
{
cout << Hello World !;
end program HelloWorld
return 0;
}
Tabel 3 - Hello World dalam Empat Bahasa

FAQ Frequently Asked Question :


Apa itu <iostream> ?

Jawab :
<iostream> merupakan library yang mengandung fungsi cin dan cout yang
digunakan di dalam program. Fungsi cout digunakan untuk menampilkan teks
ke layar.
Input, Output, dan Komentar
Dalam pemrograman, dikenal istilah input, output, dan
komentar / comment. Input adalah masukan yang diberikan
oleh pengguna / user ketika program dijalankan, sementara
output adalah teks atau karakter tertentu yang ditampilkan
ke layar devais.

Agar lebih mudah dimengerti, sebuah program umumnya


mengandung komentar. Fungsi utama komentar adalah
menjelaskan maksud dari langkah yang sedang dijalankan
untuk membantu proses debugging atau membantu user
membaca source code. Daftar sintaks untuk input, output,
dan comment pada C++ adalah sebagai berikut.

Jenis Perintah Pseudocode C


Input Input <variabel> cin >> <variabel>
Output Output <isi output> cout << <isi output>
Comment /* <isi comment> */ /* <isi comment> */
Tabel 4 - Sintaks Input dan Output

Khusus untuk tipe data string, input dilakukan menggunakan


sintaks getline (cin,<nama variabel>). Hal ini dikarenakan
cin akan berhenti membaca input setelah menemukan spasi
kosong. Untuk itu digunakan getline untuk menginput satu
line sekaligus. Untuk lebih jelasnya simak kasus berikut

Kasus 1d : Hello username !


Buatlah agar layar dapat menerima input nama user dan
menampilkan Hello <nama user> ! menggunakan bahasa C.
Jangan lupa menyertakan komentar !
Jawab :

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

int main() {

string nama; // Deklarasi variabel nama


getline (cin,nama); // Input nama
cout << \nHello << nama << !; // Output

FAQ Frequently Asked Question :


Apa itu // <kalimat> dan \n ?

Jawab :
// <kalimat> adalah one line comment / 1 baris. \n merupakan penanda
pergantian baris pada C. \n bisa juga diganti menggunakan sintaks endl. Hal
yang berhubungan dengan ini akan dipelajari di subbab selanjutnya, yaitu
variabel.

Variabel dan Tipe Data


Variabel merupakan elemen yang dapat dimanipulasi dan
memiliki tipe data tertentu. Tipe data sendiri adalah jenis
yang menentukan tipe dari variabel yang bersangkutan.

Contoh sederhana adalah ketika kasus memotong kentang.


Dalam kasus tersebut, diberikan satu buah kentang. Apabila
dimisalkan terdapat sebuah variabel bernama
JumlahKentang, maka variabel tersebut memiliki nilai
sebesar 2 (bilangan bulat).
Tipe Data Deskripsi
char Merupakan tipe data karakter
16
int Bilangan bulat s/d 2
32
long int Bilangan bulat s/d 2
float Bilangan desimal
string Kata atau kalimat
Tabel 5 - Tipe Data yang Sering Digunakan

Penamaan variabel dalam C bebas, hanya saja tidak boleh


mengandung spasi maupun karakter khusus seperti garis
bawah, koma, dan titik.

Kasus 1e : Output beberapa variabel


Pada dasarnya, sebuah prosesor komputer mampu
memproses banyak variabel dalam waktu yang bersamaan.
Cobalah membuat program yang menerima input dari user
berupa nama, NIM, dan fakultas kemudian menampilkannya
ke layar sebagai output !

Jawab :
Dari soal yang diberikan diketahui bahwa dibutuhkan 3
variabel yaitu nama, NIM, dan fakultas. Nama dan fakultas
lebih tepat menggunakan variabel string, sementara NIM
dapat menggunakan long integer ataupun string.

Pada bagian output, dapat dilakukan output secara beruntun


menggunakan tanda << berkali-kali. Input string
menggunakan sintaks getline untuk mendapatkan satu baris
teks. Salah satu contoh program terdapat pada halaman
berikutnya.
// Program Nama, NIM, dan Fakultas
#include <iostream>
#include <string>
using namespace std;

int main () {
string nama; // deklarasi variabel nama
string fakultas; // deklarasi variabel fakultas
long int NIM; // deklarasi variabel NIM

// terima input dari user


getline (cin,nama); cout << endl;
getline (cin,fakultas); cout << endl;
cin >> NIM; cout << endl;

// output ke layar
cout << Nama anda << nama << , NIM anda << NIM
<< , Fakultas << fakultas;

return 0;
}

Contoh program yang telah dijalankan :

Adityo
16511298
STEI

Nama anda Adityo, NIM anda 16511298, Fakultas STEI


Bab II
Ekspresi, Operator, dan
Percabangan
Operator
Operator merupakan simbol tertentu dalam bahasa
pemrograman yang mampu membuat compiler (penerjemah
bahasa, dari bahasa yang ditulis pada layar menjadi bahasa
mesin) melakukan sejumlah operasi tertentu.

Terdapat beberapa macam operator dalam C. Tiga jenis


operator yang sering digunakan dalam pemrograman adalah
operator aritmatik, operator relasi, dan operator logika.

Operator Aritmatik
Pada dasarnya, pemrosesan akan membutuhkan operasi
secara matematis seperti tambah, kurang, kali, dan bagi.
Operator aritmatik memiliki fungsi untuk melakukan operasi
secara matematis pada bahasa pemrograman. Jenis operator
aritmatik dapat dilihat pada tabel berikut.

Simbol Operator Nama dan Deskripsi Simbol


+ Tambah, berfungsi untuk operasi penambahan
- Kurang, berfungsi untuk operasi pengurangan
* Kali, berfungsi untuk operasi perkalian
/ Bagi atau Div, memiliki dua fungsi :
Untuk tipe data float, melakukan operasi
pembagian, contoh : 3.00 / 2.00 = 1.50
Untuk tipe data integer, melakukan operasi
pembagian round down, contoh 3 / 2 = 1
% Modulus, mengembalikan sisa pembagian, khusus
tipe data integer, contoh 6 % 4 = 2
Tabel 6 - Operator Aritmatik pada C

Operator aritmatik dapat digunakan secara langsung untuk


mengubah nilai suatu variabel. Sintaks umumnya <variabel>
= <variabel / angka> <operator> <variabel / angka>;
contohnya adalah a = a + 3; akan menghasilkan variabel a
yang bernilai nilai variabel a ditambah dengan 3. Selain jenis
yang ditulis di tabel terdapat tipe increment dan decrement.
Increment dilambangkan dengan <variabel>++; dan
decrement dilambangkan dengan <variabel>--;. Tipe ini
setara dengan <variabel a> = <variabel a> + 1; dan
<variabel a> = <variabel a> - 1;.

Terdapat teknik pengubahan tipe data di dalam pemrosesan.


Pengubahan tipe data di tengah proses ini menyebabkan
operasi memiliki hasil berbeda, khususnya untuk penggunaan
simbol bagi atau div (/). Untuk lebih jelasnya, lihat studi
kasus berikut.

Kasus 2e : From integer to float


Perubahan tipe data sangat umum dalam pemrograman.
Pada sebuah program perhitungan hasil bagi, user pada
umumnya memasukkan angka dalam tipe integer. Sebagai
latihan, buat sebuah program yang menghitung hasil bagi
dua bilangan integer dalam bentuk float !

Jawab :
Dalam kasus ini, akan digunakan pengubahan tipe data
ketika operasi pembagian sedang berjalan. Contoh
programnya adalah sebagai berikut.
#include <iostream>
using namespace std;

int main () {
// Deklarasi variabel
int a,b
float hasil;

// Input dari user


cin >> a; cout << endl;
cin >> b; cout << endl;
// Proses, perhatikan (float)
hasil = (float) a/b;
// Output, panggil variabel hasil
cout << Hasil bagi kedua bilangan adalah >> hasil;

return 0;
}
Perlu diperhatikan bahwa (float) mengubah fungsi operator
div (pembagian bil. bulat) menjadi operator pembagian biasa
(bilangan desimal). Bisa juga dilakukan lewat bentuk berikut :
hasil = float (a) / b.

Operator Relasi
Operator relasi adalah operator yang digunakan untuk
menyatakan relasi atau hubungan antara dua variabel.
Berbeda dengan operator aritmatik, operator relasi akan
selalu menghasilkan data true atau false.

Penggunaan operator relasi umumnya terdapat pada


statement if sebagai syarat true atau false. Jenis operator
relasi adalah sebagai berikut.

Simbol Definisi Bernilai True jika


== Sama dengan 10 == 10
!= Tidak sama dengan 8 != 10
> Lebih dari 12 > 7
< Kurang dari 10 < 33
>= Lebih dari sama dengan 14 >= 14
<= Kurang dari sama dengan 1 <= 1
Tabel 7 - Jenis Operator Relasi

Penggunaan operator relasi akan dijelaskan lebih lanjut pada


subbab logika if.

Operator Logika
Tipe operator yang ke tiga adalah operator logika. Operator
logika adalah simbol yang memiliki fungsi khusus untuk
melakukan operasi logika seperti and, or, dan not.
Penggunaan operator logika biasanya berhubungan dengan
operator relasi, yaitu sebagai penghubung antara dua
operator relasi. Lebih jelasnya, operator logika
menghubungkan hasil (true atau false) yang didapat dari
operasi relasi dan memberikan hasil baru (true atau false)
berdasarkan operasi logika matematika.

Jenis operator logika terdapat pada tabel di bawah ini.

Operator Fungsi Contoh penggunaan


&& AND true && true beroutput true
|| OR true || false beroutput true
! NOT !true beroutput false
Tabel 8 - Jenis Operator Logika

Seperti operator relasi, penjelasan lebih lanjut mengenai


penggunaan operator logika akan ada pada subbab logika if.

Struktur Percabangan (IF Conditional)


Pada pemrograman, terdapat sebuah operasi logika
matematika yang biasa digunakan untuk memecahkan
masalah, operasi ini umumnya disebut operasi logika
kondisional. Dilambangkan dengan kata if, operasi ini akan
melakukan / mengeksekusi deretan perintah selanjutnya jika
kondisi awalnya telah dipenuhi. Contoh sintaks if dalam C
adalah sebagai berikut :

if <kondisi/expression>
{ statement 1 } Start

Atau No
Cond. Process 1
if <kondisi/expression> Yes
{ statement 1 }
else Process 2 End
{ statement 2 }
Bagian expression adalah bagian syarat dari if-conditional.
Pada bentuk ke dua, apabila bagian expression dipenuhi,
maka program akan menjalankan statement 1, sementara
jika tidak dipenuhi, maka program akan menjalankan
statement 2. Statement berisi perintah-perintah yang akan
dijalankan oleh program seperti perintah print, scan, atau
manipulasi variabel.

Selain bentuk if-conditional standar, terdapat juga bentuk if-


conditional bertingkat. Flowchart dan sintaks dari dari if
bertingkat adalah sebagai berikut.

if <kondisi/exp. 1>
{statement 1}
else { if <kondisi/exp. 2>
{statement 2}
else { if <kondisi/exp. 3>
{statement 3}
.
.
.
else { if <kondisi/exp. n>
{statement n}
else
{statement else}
}}}}}}}

// kurung kurawal tutup


// sebanyak n buah
Flowchart 3 - IF bertingkat

Untuk lebih memahami mengenai penggunaan if-logical,


simak contoh soal berikut ini.

Kasus 2a : Cek positif, negatif, atau nol


Pengecekan bilangan positif, negatif, atau nol adalah sebuah
fungsi dasar yang umum digunakan pada program berskala
kecil sampai besar. Untuk itu, buatlah program yang dapat
menerima input dari user berupa integer dan mengecek
apakah bilangan tersebut positif, negatif, atau bilangan nol.

Jawab :
Untuk membuat program yang menjawab permasalahan
diatas, perlu diketahui syarat-syarat atau kondisi dari
permasalahan. Kita tahu bahwa bilangan positif adalah
bilangan dengan nilai > 0, bilangan negative adalah bilangan
dengan nilai < 0, dan bilangan nol memiliki nilai = 0. Untuk itu
kita harus mengecek setiap syarat yang ada. Urutan
pengecekan sebenarnya bebas, berikut contoh jawaban.

#include <iostream>
using namespace std;

int main () {
int a; // deklarasi variabel

cin >> a; // menerima input dari user


if (a > 0)
// bilangan positif
{cout << \nbilangan ini positif;}
else
{if (a < 0)
// bilangan negatif
{cout << \nbilangan ini negatif;}
else
// tidak positif dan tidak negatif
{ cout << \nbilangan ini nol;}
}

return 0;
}

Perlu diperhatikan bahwa untuk kondisi terakhir (kondisi


ketika bilangan sama dengan nol) tidak perlu dibuat if-logical
lagi karena kondisi terakhir merupakan kondisi sisa.
Bab III
Pengulangan (Looping)
Logika Pengulangan
Pada pemrograman, sering kali dibutuhkan pemrosesan
berulang-ulang untuk mencapai suatu hasil tertentu. Apabila
pengulangan ini dilakukan secara manual ukuran file program
akan menjadi terlalu besar. Contoh sederhana adalah jika kita
ingin menuliskan Hello World di layar sebanyak 7 kali, maka
akan dibutuhkan paling tidak 7 baris perintah. Menggunakan
sintaks pengulangan, persoalan tersebut dapat diselesaikan
hanya menggunakan 3 baris program.

int a;

for (a=1;a<=5;a++){
cout << \nHello !;
}

Output :

Hello !
Hello !
Hello !
Hello !
Hello !

Flowchart 4 - Chart Looping

Switch dan Break


Sebelum memasuki sintaks looping, terdapat salah satu
sintaks yang umumnya digunakan untuk analisa kasus dalam
pemrograman. Sintaks switch akan mencocokan nilai suatu
variabel dengan syarat yang telah ditentukan. Perlu diketahui
bahwa switch memperlakukan pengecekan menggunakan
operator relasi sama dengan (==). Sintaks switch adalah
sebagai berikut.
switch (variabel) {
case <kondisi 1> : <statement 1>;
break;
case <kondisi 2> : <statement 2>;
break;
.
.
case <kondisi n> : <statement n>;
break;
default : <statement default>
break;
}

Terdapat salah satu perintah baru dalam sintaks diatas yaitu


break. Perintah break digunakan untuk menyelesaikan proses
looping atau pengecekan logika di dalam sebuah program.
Pada contoh diatas, apabila tidak ditulis break setelah
statement, maka variabel akan dicocokkan dengan semua
kondisi meskipun sudah ditemukan kondisi yang cocok.

Do-While dan While-Do Loop


Salah satu sintaks yang looping / pengulangan yang sering
digunakan adalah sintaks Do-While dan While-Do. Untuk
jenis Do-While, program akan menjalankan statement
terlebih dahulu sebelum melakukan pengecekan kondisi
looping. Sebaliknya, untuk While-Do, program akan
mengecek kondisi looping terlebih dahulu sebelum
menjalankan statement yang ada di dalamnya.

Dari bentuk diatas, bentuk Do-While akan selalu menjalankan


statement yang ada di dalamnya minimal sebanyak satu kali,
sementara While-Do bisa saja tidak menjalankan statement
di dalamnya sama sekali karena kondisi looping tidak
dipenuhi. Sintaks kedua jenis looping adalah sebagai berikut.

Do-While While-Do
do while (<kondisi loop>)
{<statement loop>} {<statement loop>}
while (<kondisi loop>);

Untuk lebih jelas mengenai looping, simaklah persoalan


berikut.

Kasus 3a : Perhitungan Mundur


Pada perlombaan balap mobil, umumnya terdapat istilah
countdown atau hitung mundur untuk menandakan
dimulainya balapan. Hitung mundur ini dilakukan dengan
menampilkan teks hitungan dan tulisan START ketika
hitungan mencapai nol. Buatlah sebuah program yang
menerima input user berupa bilangan integer dan
menampilkan hitungan saat itu. Apabila hitungan mencapai
nol, program akan menampilkan tulisan START ! (Asumsi
user akan selalu memberi masukan > 0)

Jawab :
Untuk mengerjakan kasus ini, perlu diketahui terdapat 2
operasi yang dilakukan, yaitu menampilkan teks dan
melakukan perulangan. Teks yang ditampilkan dibuat dengan
logika if sederhana, jika angka tidak sama dengan nol maka
teks yang ditampilkan adalah angka tersebut. Bagian kedua,
yaitu looping, dapat dikerjakan menggunakan Do-While
maupun While-Do. Perbedaan utamanya terdapat pada
kondisi looping. Untuk lebih jelasnya, simak contoh program
pada halaman berikutnya.
#include <iostream>
using namespace std;

int main () {
// Deklarasi variabel
int a, i;

// Proses
cin >> a; // Input

while (a >= 0){


if (a > 0)
// a > 0, tampilkan angka
cout << a << endl;
a--;}
else
// a = 0, tampilkan START
cout << \nSTART;
a--;}
} // Eliminasi loop, a < 0

return 0;
}

Untuk solusi menggunakan Do-While dapat dicoba sendiri


dengan kondisi looping yang sedikit berbeda.

For Loop
Bentuk looping yang ke tiga adalah bentuk For. Bentuk ini
umumnya digunakan untuk pengulangan yang sudah
diketahui jumlahnya. Meskipun begitu, loop for bisa saja
dibuat seperti loop while. Sintaks loop for adalah sebagai
berikut.

for (<variabel loop>;<kondisi looping>;<inc/decrement>)


{
<statement loop>
}
Variabel loop adalah variabel yang digunakan untuk
menyimpan nilai hitung / counter dalam menjalankan loop
for. Umumnya variabel counter ini bertipe integer dan
mengalami increment / decrement. Untuk kondisi infinite
loop atau loop yang tak berhenti, cukup kosongkan ketiga
bagian <variable loop>, <kondisi looping>, dan
<inc/decrement>.

Contoh penggunaan loop for dapat dilihat dalam kasus


berikut ini.

Kasus 3b : Perhitungan Deret Aritmatika


Dalam matematika, deret aritmatika adalah urutan bilangan
dengan suku-suku selanjutnya merupakan penjumlahan suku
sebelumnya dengan konstanta tertentu. Contoh sederhana
deret aritmatika adalah deret seperti berikut : 0 + 1 + 2 + 3 +
4 + . + n. Menggunakan loop for, buatlah program yang
menerima masukan user berupa bilangan integer positif dan
membuat hasil penjumlahan dari deret seperti pada contoh
diatas. Input user akan selalu >= 0.

Jawab :
Sebelum menjawab kasus ini kita perlu tahu terlebih dahulu,
ada berapa variabel yang kita butuhkan dan proses seperti
apa yang berjalan di dalam kasus ini. Variabel utama yang
digunakan dalam kasus ini adalah variabel penyimpan input
user dan variabel yang digunakan sebagai counter pada loop
for. Karena diminta jumlah dari deret, maka diperlukan pula
sebuah variabel untuk menyimpan hasil penjumlahan.

Untuk prosesnya sederhana, cukup menerima input dari user,


lakukan looping, kemudian tampilkan hasil penjumlahan dari
looping ke layar ketika looping selesai. Contoh program
adalah sebagai berikut.

#include <iostream>
using namespace std;

int main () {
// deklarasi variabel
int i, a, sum;

// input dari user


cin >> a;

// inisialisasi sum
sum = 0;

// proses looping
for (i=0;i<=a;i++){
sum = sum + i;
} // loop selesai ketika i > a

// output ke layar
cout << \njumlah deret adalah : << sum;

return 0;
}

FAQ Frequently Asked Question :


Mengapa diperlukan inisialisasi variabel sum ?

Jawab :
Inisialisasi sum diperlukan karena pada proses penjumlahan sum akan
memanggil dirinya sendiri. Apabila sum tidak diinisialisasi, maka nilai sum
adalah null / tidak memiliki nilai sehingga akan terjadi error ketika ia
memanggil dirinya sendiri. Inisialisasi variabel sangat penting dalam
pemrograman khususnya ketika pemanggilan dirinya sendiri diperlukan.
Bab IV
Array
Array
Setelah membahas mengenai variabel dan beberapa proses
seperti percabangan dan pengulangan, pada bab ini kita akan
membahas kumpulan variabel atau array.

Array adalah sebuah variabel yang didalamnya terdiri dari


sekumpulan variabel. Sebuah array umumnya dilambangkan
dengan indeks dan isi dari array tersebut. Secara visual,
penggambaran array adalah sebagai berikut.

Gambar 1 - Representasi Array

Perlu diketahui bahwa indeks array dalam C selalu dimulai


dari nol, sehingga indeks terakhir dari sebuah array adalah n-
1 dimana n adalah alokasi jumlah tempat pada array pada
deklarasi variabel, sintaks deklarasi array adalah <tipe
variabel> <nama variabel>[<jumlah array>];.

Untuk pemanggilan isi dari array harus menyertakan


indeksnya. Sintaksnya adalah <nama variabel>[<indeks>].

Dimensi
Seperti sebuah tabel, sebuah array dapat dibuat memiliki
beberapa dimensi. Dimensi disini berarti indeksnya memiliki
n komponen. Contoh, array berdimensi satu dengan jumlah
array 4 buah akan memiliki indeks dari nol sampai tiga. Array
dengan jumlah array 4 buah tersebut bisa saja
direpresentasikan menggunakan array dua dimensi dengan
ukuran 2x2. Array dua dimensi tersebut akan memiliki indeks
dari [0,0] sampai [1,1]. Untuk lebih jelasnya dapat disimak
ilustrasi berikut ini.

Gambar 2 - Array 2 Dimensi

Operasi Dengan Array


Adanya indeks dan kemampuan untuk memanggil isi array
tersebut memungkinkan kita untuk melakukan operasi
dengan array. Operasi dasar menggunakan array umumnya
melibatkan traversal atau pengecekan elemen / anggota dari
array satu persatu. Proses traversal ini dilakukan
menggunakan teknik looping yang sudah dipelajari pada bab
sebelumnya.

Menggunakan proses traversal, operasi aritmatik untuk array


dapat dilakukan dengan mudah. Pada array, operasi aritmatik
harus dilakukan satu persatu untuk setiap elemen array.
Operasi aritmatik bisa saja dilakukan secara manual dengan
menambahkan satu persatu isi array, namun dapat juga
dilakukan dengan proses traversal. Untuk lebih jelasnya,
simak kasus berikut ini.

Kasus 4a : Pengecekan Nilai Pada Tabel


Software pengolah data seperti Microsoft Excel mengolah
data dalam bentuk spreadsheet dan melakukan operasi
tertentu pada spreadsheet tersebut. Operasi dasar dalam
pengolahan spreadsheet adalah mencari nilai atau value
tertentu di dalam spreadsheet tersebut. Apabila diberikan
array satu dimensi dengan isi array = {0,3,4,1,2,5,6}, buatlah
sebuah program yang menerima masukan user berupa
integer dan mengecek apakah integer tersebut ada di dalam
array ! Output berupa pemberitahuan kepada user apakah
bilangan tersebut ditemukan atau tidak. Masukan user
bernilai bebas hanya saja bertipe integer.

Jawab :
Sebelum menjawab kasus ini, kelompokkan terlebih dahulu
informasi yang ada dalam soal, seperti :
1. Terdapat array satu dimensi dengan isi bilangan
{0,3,4,1,2,5,6}.
2. Program yang diminta menerima input user berupa
integer kemudian melakukan pengecekan ke array satu
dimensi tersebut untuk menemukan bilangan yang
diinput user.
3. Program akan memberikan output apabila bilangan
ditemukan. Jika bilangan tidak ditemukan, maka
program akan memberitahu user bahwa bilangan yang
dicari tidak ditemukan.

Menggunakan informasi yang ada, dapat dibuat program


seperti berikut.
#include <iostream>
using namespace std;

int main () {
// Deklarasi variabel
int i, a; // i = counter, a = input user
int tabel[7] = {0,3,4,1,2,5,6};
// variabel array

// Input, inisialisasi counter


cin >> a;

// Loop
for (i = 0; i < 9; i++) {
if (a == tabel[i])
// Angka ditemukan
{
cout << \nBilangan anda ditemukan;
break;
}
} // loop selesai apabila I >= 9 atau break

if (i >= 9) // tidak ditemukan, mencapai akhir


{cout << \nBilangan tidak ditemukan !;}

return 0;
}

Bagian looping pada program diatas umumnya disebut


bagian traversal. Karena pada bagian tersebut program
seolah-olah berjalan dan mengecek isi array dari yang paling
pertama sampai yang paling terakhir.

Kasus 4b : Operasi Matriks


Matriks merupakan sekumpulan variabel yang dapat
dioperasikan sesuai dengan indeksnya. Definisi matriks
sangat sesuai dengan definisi array 2 dimensi, karena itu
array juga dapat dioperasikan seperti matriks. Buatlah
program yang mampu melakukan operasi sederhana pada
matriks seperti penjumlahan ! Jumlah matriks yang
digunakan adalah 2 buah matriks dengan ukuran 2x2. Isi dari
matriks merupakan bilangan integer (bebas). Tampilkan hasil
operasi penjumlahan dan pengurangan ke layar user !

Jawab :
Sama seperti kasus sebelumnya, pertama-pertama
kelompokkan informasi yang ada di soal :
1. Terdapat 2 array 2 dimensi dengan ukuran 2x2
2. Isi array merupakan bilangan integer, dibebaskan.
Asumsikan isi array sudah fix.
3. Operasi yang dilakukan adalah penjumlahan antara dua
matrix, kemudian hasil operasi ditampilkan di layar.
Dari informasi yang ada, dibutuhkan empat variabel, yaitu
variabel counter 1, variabel counter 2, variabel matriks 1,
dan variabel matriks 2. Hasil operasi bisa saja dimasukkan
ke variabel baru, namun untuk mempersingkat, akan kita
buat isi program sebagai berikut.

#include <iostream>
using namespace std;

int main () {
// Inisialisasi dan deklarasi variabel
int i,n;
int mat1[2][2] = {{2,3},{5,7}};
int mat2[2][2] = {{1,6},{4,9}};

//Looping untuk baris


for (n=0;n<2;n++){
//Looping untuk kolom
for (i=0;i<2;i++){
//Output ke layar
cout << mat1[n][i]+mat2[n][i] << ;
}
//New line
cout << endl;
}

return 0;
}
Perlu diperhatikan bahwa terdapat 2 buah struktur loop di
dalam program di atas. Hal ini dikarenakan looping dilakukan
satu persatu, pertama looping akan dilakukan pada kolom,
ketika mencapai akhir kolom, baris akan berubah dan
counter kolom akan direset. Hal ini diulang terus menerus
hingga mencapai akhir baris.
Bab V
Fungsi dan Prosedur
Fungsi dan Prosedur
Setelah belajar mengenai program dan berbagai proses
seperti input output, deklarasi dan operasi variabel, logika
bercabang / if, dan looping, bagian terakhir dari dasar
pemrograman adalah penggunaan fungsi dan prosedur.

Apa itu fungsi ? Fungsi adalah suatu bagian dari program


yang mampu mengerjakan tugas atau operasi tertentu di luar
program utama. Pada dasarnya sebuah prosedur adalah
fungsi, hanya saja prosedur tidak mengembalikan nilai
seperti fungsi.

Sintaks fungsi dalam C++ adalah sebagai berikut :

<tipe data> <nama fungsi> (parameter fungsi)


{
<isi fungsi>

return <nilai balik fungsi>;


}

Pemanggilan fungsi di dalam program cukup dengan


mendeklarasikan nama fungsi dan variabel yang digunakan
sebagai parameter fungsi. Pastikan variabel yang digunakan
memiliki tipe yang cocok dengan parameter fungsi. Prosedur
memiliki sintaks sama, hanya saja pada bagian <tipe data>
diisi dengan void dan tidak perlu ada sintaks return.

Variabel Lokal
Dengan adanya fungsi, variabel dibagi menjadi 2 yaitu
variabel lokal dan global. Variabel lokal adalah variabel yang
nilainya hanya berlaku di dalam fungsi tersebut. Variabel
lokal akan dihapus nilainya setelah fungsi selesai. Variabel
global, sebaliknya merupakan variabel yang berlaku di dalam
program. Variabel global bisa saja diubah atau dioperasikan
nilainya oleh sebuah fungsi. Tetapi, sebuah fungsi ada
baiknya hanya mengoperasikan parameter dan variabel
lokalnya ketika fungsi tersebut berjalan.

Pendeklarasian dan inisialisasi variabel lokal sama seperti


variabel global. Perbedaannya, variabel lokal dideklarasikan
di bawah fungsi tertentu.

Fungsi Rekursif
Terdapat salah satu trik yaitu penggunaan fungsi rekursif.
Rekursif berarti fungsi tersebut memanggil dirinya sendiri
terus menerus sampai suatu syarat tercapai. Fungsi rekursif
tidak banyak digunakan dalam pemrograman dasar karena
sedikit kompleks.

Untuk memahami lebih jauh mengenai penggunaan fungsi


dan prosedur dalam C, simak contoh kasus berikut ini.

Kasus 5a : Persamaan Posisi, Percepatan, dan Kecepatan


Pada ilmu fisika, terdapat suatu fungsi yang digunakan untuk
mencari posisi, percepatan, dan kecepatan dari suatu objek.
Fungsi ini biasa disebut persamaan Newton yang umumnya
dideklarasikan sebagai berikut :

= 0 + .
1
= 0 . + 2
2

Fungsi akan terlalu panjang apabila ditulis dalam satu


program. Untuk itu, buatlah program yang menerima
masukan dari user berupa nilai kecepatan awal, percepatan,
dan waktu dengan tipe float, kemudian menampilkan nilai
kecepatan akhir dan jarak. Perhitungan kecepatan akhir,
jarak, dan penampilan hasil akhir berada pada fungsi dan
prosedur terpisah yang terdefinisi sebagai berikut.

float countpos (float v, float a, float t)


// Fungsi countpos menghitung posisi objek dengan
// kecepatan v, percepatan a, dan pada waktu t

float countvelocity(float v, float a, float t)


// Fungsi countvelocity menghitung kecepatan akhir
// objek dengan kecepatan v, percepatan a, dan waktu t

void showresult(float velo, float pos)


// Prosedur showresult menampilkan hasil perhitungan
// 2 fungsi sebelumnya ke layar

Jawab :
Seperti biasa, kelompokkan terlebih dahulu informasi yang
diperoleh dari soal seperti berikut.
1. Terdapat 3 variabel dengan tipe float yang diinput oleh
user yaitu variabel kecepatan, percepatan, dan waktu.
2. 2 Variabel hasil yaitu posisi dan kecepatan akhir.
3. Terdapat 2 fungsi dan 1 prosedur yaitu countpos,
countvelocity, dan showresult.
4. Persamaan untuk kedua fungsi didefinisikan dalam soal.

Dari hal-hal tersebut, program dapat dibuat seperti berikut.


Perlu diperhatikan bahwa penambahan jumlah variabel
untuk menyimpan nilai posisi dan kecepatan akhir tidak
bersifat wajib.

#include <iostream>
using namespace std;

// Deklarasi fungsi
float countpos (float v, float a, float t)
{
// Deklarasi variabel lokal
float position;

// Proses
position = v*t + (0.5*v*t*t);

// Kembalikan nilai position


return position;
}

float countvelocity (float v, float a, float t)


{
// Deklarasi variabel lokal
float velo;

// Proses
velo = v + a*t;

// Kembalikan nilai kecepatan / velo


return velo;
}

void showresult (float velo, float pos)


{
// Proses, variabel lokal tidak dibutuhkan
cout << Posisi benda adalah pada << pos << meter <<
endl;
cout << Kecepatan akhir benda adalah << velo << meter per
sekon << endl;
}

// Program utama
int main ()
{
// Deklarasi variabel
float a,v,t;
float finalvelo, finalpos;

// Proses
cout << Masukkan nilai kecepatan : ;
cin >> v; cout << endl;
cout << Masukkan nilai percepatan : ;
cin >> a; cout << endl;
cout << Masukkan nilai waktu : ;
cin >> t; cout << endl;

// Lakukan perhitungan dan assign nilai


finalvelo = countvelocity(v,a,t);
finalpos = countposition(v,a,t);

// Tampilkan dengan showresult


showresult(finalvelo, finalpos);

return 0;
}

Anda mungkin juga menyukai