Modul PTI B 2013

37
Bab I Pengenalan Algoritma dan Pemrograman

Transcript of Modul PTI B 2013

Page 1: Modul PTI B 2013

Bab I Pengenalan Algoritma dan Pemrograman

Page 2: Modul PTI B 2013

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 :

Flowchart 1 - Langkah Mengupas Kentang

Ambil Pisau

Ambil Kentang

Kupas Kulit

Taruh di mangkuk

Kembalikan Pisau

Page 3: Modul PTI B 2013

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 :

Flowchart 2 - Langkah Merebus Kentang (2)

Ambil pisau

Tajamkan pisau

Ambil kentang Kupas kulit kentang

Nyalakan kompor

Masukkan air ke dalam panci

Rebus Kentang

Taruh kentang di mangkok

Kembalikan pisau

Page 4: Modul PTI B 2013

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

Page 5: Modul PTI B 2013

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>

Begin

<isi program>

End

program <nama program>

begin

<isi program>;

end.

C++ Fortran

#include <nama library>

using namespace std;

int main ()

{

<isi program>

return 0;

}

program <nama program>

<isi program>

end program <nama program>

Tabel 2 - Perbedaan Sintaks Awal dan Akhir Program

Page 6: Modul PTI B 2013

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

Begin

Output (‚Hello World !‛)

End

program HelloWorld

begin

write(‚Hello World !‛);

end.

C++ Fortran

#include <iostream>

using namespace std;

int main ()

{

cout << ‚Hello World !‛;

return 0;

}

program HelloWorld

write(*,*) ‚Hello World !‛

end program HelloWorld

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.

Page 7: Modul PTI B 2013

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 !

Page 8: Modul PTI B 2013

Jawab :

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

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

Page 9: Modul PTI B 2013

Tipe Data Deskripsi

char Merupakan tipe data karakter

int Bilangan bulat s/d ±216

long int Bilangan bulat s/d ±232

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.

Page 10: Modul PTI B 2013

Contoh program yang telah dijalankan :

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

Adityo 16511298 STEI Nama anda Adityo, NIM anda 16511298, Fakultas STEI

Page 11: Modul PTI B 2013

Bab II Ekspresi, Operator, dan Percabangan

Page 12: Modul PTI B 2013

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

Page 13: Modul PTI B 2013

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

Page 14: Modul PTI B 2013

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.

Page 15: Modul PTI B 2013

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 }

Atau if <kondisi/expression> { statement 1 } else { statement 2 }

Start

Process 1

Process 2 End

Cond. No

Yes

Page 16: Modul PTI B 2013

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.

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

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

Page 17: Modul PTI B 2013

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. Perlu diperhatikan bahwa untuk kondisi terakhir (kondisi ketika bilangan sama dengan nol) tidak perlu dibuat if-logical lagi karena kondisi terakhir merupakan kondisi sisa.

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

Page 18: Modul PTI B 2013

Bab III Pengulangan (Looping)

Page 19: Modul PTI B 2013

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.

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.

int a; for (a=1;a<=5;a++){ cout << ‚\nHello !‛; } Output : Hello ! Hello ! Hello ! Hello ! Hello !

Page 20: Modul PTI B 2013

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

switch (variabel) { case <kondisi 1> : <statement 1>; break; case <kondisi 2> : <statement 2>; break; . . case <kondisi n> : <statement n>; break; default : <statement default> break; }

Page 21: Modul PTI B 2013

di dalamnya sama sekali karena kondisi looping tidak dipenuhi. Sintaks kedua jenis looping adalah sebagai berikut.

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

while (<kondisi loop>) {<statement 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.

Page 22: Modul PTI B 2013

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.

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

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

Page 23: Modul PTI B 2013

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

Page 24: Modul PTI B 2013

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.

Page 25: Modul PTI B 2013

Bab IV Array

Page 26: Modul PTI B 2013

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

Page 27: Modul PTI B 2013

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

Page 28: Modul PTI B 2013

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.

Page 29: Modul PTI B 2013

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

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

Page 30: Modul PTI B 2013

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

Page 31: Modul PTI B 2013

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.

Page 32: Modul PTI B 2013

Bab V Fungsi dan Prosedur

Page 33: Modul PTI B 2013

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

<tipe data> <nama fungsi> (parameter fungsi) { <isi fungsi> return <nilai balik fungsi>; }

Page 34: Modul PTI B 2013

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 + 𝑎. 𝑡

𝑥 = 𝑣0 . 𝑡 + 1

2𝑎𝑡2

Fungsi akan terlalu panjang apabila ditulis dalam satu program. Untuk itu, buatlah program yang menerima

Page 35: Modul PTI B 2013

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)

Page 36: Modul PTI B 2013

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

Page 37: Modul PTI B 2013

finalvelo = countvelocity(v,a,t); finalpos = countposition(v,a,t); // Tampilkan dengan showresult showresult(finalvelo, finalpos); return 0; }