C Plus Plus
C Plus Plus
2020-10-16
1
Catatan
1. Modul ini dirancang untuk dapat menjadi pegangan pemrograman Pengenalan Kom-
putasi, sehingga banyak hal yang dipotong karena keluar dari konteks Pengenalan
Komputasi.
2. Anda dapat membuka modul ini saat latihan praktikum.
3. Anda sangat disarankan untuk mencoba menjalankan semua program modul ini di
komputer Anda, supaya Anda dapat mengetahui keluaran dari program yang ada.
4. Anda sangat disarankan untuk bereksperimen dari program-program yang ada di
modul ini supaya Anda mendapat gambaran lebih jelas mengenai apa yang program
Anda lakukan.
5. Anda sangat disarankan membaca tutorial dari tempat lain dan mengeksplor sendiri
bahasa yang Anda gunakan.
2
Contents
1 Modul 1 4
1.1 Pendahuluan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Input dan Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Tipe Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Operator Aritmatika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Operator Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.3 Operator Relasional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.4 Operator Logika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Percabangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Modul 2 10
2.1 Pengulangan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 While Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2 For Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Perulangan bersarang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Modul 3 12
3.1 Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.1 Deklarasi Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.2 Array dan Variabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Modul 4 14
4.1 Fungsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Prosedur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.3 Matriks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3
1 Modul 1
1.1 Pendahuluan
Pada modul ini, kita menggunakan C++ yang kompatibel dengan C++98. Anda dapat
mendownload compiler C++ di http://cygwin.com/. Anda juga dapat mendownload
C++ beserta IDE Codeblocks di http://sourceforge.net/projects/codeblocks/files/
Binaries/17.12/Windows/codeblocks-17.12mingw-setup.exe.
• C++ bersifat case-sensitive, artinya perbedaan huruf besar dan huruf kecil menye-
babkan perbedaan makna.
• C++ tidak memerhatikan indentasi dan pergantian baris. Namun, sangat disarankan
menggunakan indentasi yang baik karena akan sangat membantu debugging dan
meningkatkan readibility
• Variabel di C++ bersifat eksplisit dan statis. Artinya, sebuah variabel perlu dideskrip-
sikan tipe datanya dan tidak dapat berubah tipe.
Dalam Praktikum Pengenalan Komputasi, program kita akan memiliki struktur dasar
berikut:
int main () {
// Ini adalah sebuah komentar .
return 0;
}
Untuk sementara, arti dari sintaks-sintaks yang ada (#include <iostream>, using namespace
std;, return 0) dapat diabaikan. Semua statement di C++ diakhiri dengan titik koma
(;).
Kita hanya perlu mengubah bagian komentar. Sebagai contoh, berikut adalah program
yang menuliskan "Hello, World!" ke layar:
4
# include <iostream >
using namespace std;
int main () {
cout << "Hello , World!" << endl; // (1)
cout << "Ini program "; // (2)
cout << " pertama saya" << endl; // (3)
return 0;
}
Bagian yang ditandai nomor 1 bertugas menuliskan "Hello, World!" ke layar. Sintaks endl
berarti program akan berpindah baris, lalu menuliskan "Ini program pertama saya", diikuti
endl lagi.
Untuk melakukan input, kita membutuhkan penampung untuk menyimpan data yang
diinputkan. Sebagai contoh, di bawah ini adalah program yang menerima input bilangan
dan menuliskan ulang bilangan yang dimasukkan.
int main () {
int N; // (1)
return 0;
}
Kita sudah tahu bagian nomor (3) menuliskan sesuatu ke layar, yakni N. Tapi apa itu N?
Karena itu, kita deklarasikan N di bagian nomor (1). int N menandakan kalau N adalah
sebuah integer (bilangan bulat). Selain int, C++ dapat menerima tipe data float (bilangan
real), char (sebuah karakter), string (kumpulan karakter), dan masih banyak lagi.
Ada beberapa macam tipe data, namun dalam Pengenalan Komputasi kita hanya akan
banyak menggunakan tipe data berikut:
Contoh penggunaan:
5
using namespace std;
int main () {
bool B;
long long L;
int I;
float F;
char C;
string S;
F = 20 / 3; // (2)
F = 20.00 / 3; // (3)
C = ’@’; // (4)
S = " sebuah kalimat "; // (5)
return 0;
}
Perhatikan pada bagian nomor (1), kita ingin mengassign I dengan perkalian 105 dan 105 .
Namun, sesuai tabel di atas, int tidak dapat menampung lebih dari 2 milyar. Karena itu,
nilai I tidak akan sama dengan 1010 (Anda bisa mencoba sendiri dengan membuat program
ini).
Perhatikan pada bagian nomor (2), kita ingin mengassign I dengan 20 dibagi 3. Namun, 20
adalah integer dan 3 adalah integer. Pembagian 2 integer akan menghasilkan integer juga,
sehingga I akan bernilai 6 (selalu dibulatkan ke bawah). Namun, pada bagian nomor (3),
20.00 adalah float dan 3 adalah integer. Jadi, F akan bernilai 6.66667 pada bagian nomor 3.
Perhatikan pada bagian nomor (4), char selalu dibuka dan ditutup untuk satu petik (’).
Sedangkan, string selalu dibuka dan ditutup dengan dua petik (”), seperti pada bagian
nomor (5).
Perhatikan pada bagian nomor (6). Secara default, cin hanya membaca satu kata (berhenti
setelah menemukan spasi). Jika kita ingin membaca seluruh baris hingga enter, kita gu-
nakan getline(cin, S). Tentu, S dapat Anda ubah sesuai nama variabel yang Anda gu-
nakan.
6
1.4 Operator
1.5 Percabangan
7
buah bilangan positif:
int main () {
int N;
if (N > 0) {
cout << N << " bilangan positif " << endl;
}
return 0;
}
...
if (N > 0) {
cout << N << " bilangan positif " << endl;
} else /* N <= 0 */ {
cout << N << " bilangan bukan positif " << endl;
}
...
Namun, kita tahu kadang bilangan bisa nol atau negatif, jadi perlu kita tambahkan:
...
if (N > 0) {
cout << N << " bilangan positif " << endl;
} else if (N < 0) {
cout << N << " bilangan negatif " << endl;
} else /* N == 0 */ {
cout << N << " bilangan nol" << endl;
}
...
Perhatikan juga kalau kita bisa membuat else ini berulang sampai yang kita mau. Selain
itu, kita juga bisa meletakkan if di dalam if.
...
if (N >= 0) {
if (N > 0) {
cout << N << " bilangan positif " << endl;
} else /* N == 0 */ {
cout << N << " bilangan nol" << endl;
}
} else /* N < 0 */ {
cout << N << " bilangan negatif " << endl;
}
...
8
9
2 Modul 2
2.1 Pengulangan
int main () {
int i;
Salah satu sintaks yang looping / pengulangan yang sering digunakan adalah sintaks While-
Do. Program akan mengecek sebuah kondisi yang diberikan terlebih dahulu sebelum
menjalankan statement yang ada di dalamnya.
int main () {
int a, b, i;
i = a;
while (i <= b) {
cout << i << endl;
i += 1;
}
}
Bentuk looping yang kedua adalah bentuk For. Bentuk ini umumnya digunakan untuk
pengulangan yang sudah diketahui jumlahnya. Namun, for loop juga dapat dibuat meng-
10
gunakan while-do loop.
int main () {
int a, b, i;
Di dalam for terdapat 3 statement yang dipisahkan oleh titik koma (;). Statement per-
tama merupakan inisialisasi, statement kedua merupakan kondisi, dan statement ketiga
merupakan statement yang diulang di tiap akhir perulangan.
3. Jika kondisi bernilai true, program akan masuk ke dalam block yang diapit kurung
kurawal.
4. Lalu, program akan melakukan statement ketiga (i++).
5. Program kembali ke bagian nomor 2.
Perhatikan pula, perulangan dapat dilakukan di dalam perulangan. Sebagai contoh, berikut
adalah program untuk membuat pola persegi.
int main () {
int n, i, j;
cin >> n;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << "*";
}
cout << endl;
}
}
11
3 Modul 3
3.1 Array
Array adalah variabel dengan satu buah nama, tetapi mengandung banyak nilai. Akses
nilai-nilainya dilakukan dengan indeks.
• A[0] = 3
• A[1] = 10
• A[7] = 35
Pada contoh diatas, kita memiliki sebuah variabel yang bernama A. Variabel A tersebut
memiliki 10 buah nilai, dimana nilai-nilai tersebut dapat diakses dengan indeks. Untuk
mengakses indeks ke – x, gunakanlah A[x]. Dan nilai A[x] itu bisa kita anggap sebagai
variabel yang berdiri sendiri. Konsep inilah yang kita sebut dengan array. Perhatikan pula
bahwa indeks dimulai dari 0.
Karena array juga merupakan sebuah variabel, maka array juga memerlukan deklarasi
seperti variabel lainnya.
int main () {
int A[10];
}
Untuk contoh tersebut array A yang terdefinisi adalah A[0], A[1], A[2], . . . , A[9] Mengak-
ses nilai indeks di luar batasan tersebut akan menyebabkan runtime error. Oleh karena
itu, tentukanlah rentang indeks yang akan digunakan saat deklarasi dengan tepat (sesuai
dengan kebutuhan).
Suatu array dapat kita anggap sebagai variabel, sehingga segala jenis operasi pada variabel
juga berlaku pada array. Sebagai contoh, kita memiliki suatu array
int tabel[10];
12
Maka array tabel tersebut akan terdefinisi untuk indeks 0 sampai dengan indeks 9. Maka
kita bisa melakukan instruksi
Jika diberikan 5 buah bilangan , dan kita perlu menyimpan bilangan tersebut pada tabel,
kita bisa melakukan
Namun, cara menginput tersebut kurang efisien. Akan lebih efisien jika kita menginput
menggunakan perulangan (looping).
int i;
for (i = 0; i < 5; i++) {
cin >> tabel[i];
}
13
4 Modul 4
4.1 Fungsi
Apa itu fungsi? Fungsi adalah suatu bagian dari program yang mampu mengerjakan tugas
atau operasi tertentu di luar program utama. Fungsi akan mengembalikan nilai sesuai
algoritma yang diberikan.
Fungsi di atas bernama kuadrat dan mengembalikan nilai dalam tipe float. Fungsi itu juga
menerima satu parameter bernama x dengan tipe integer.
Sebagai contoh, berikut program lengkap yang menerima input dan mengeluarkan kuadrat
dari bilangan input.
int main () {
int n;
float n2;
cin >> n;
n2 = kuadrat (n);
cout << n2 << endl;
return 0;
}
Perhatikan pada contoh di atas, variabel di program utama bernama n. Namun di fungsi,
variabel berubah nama menjadi x. Meskipun x berubah, nilai n di program utama tidak
akan berubah.
Sebuah fungsi juga dapat menerima lebih dari satu parameter. Selain itu, fungsi juga dapat
melakukan hal-hal layaknya program biasa, namun tidak dapat mengubah variabel di
program utama. Sebagai contoh, berikut adalah fungsi yang menghitung nilai ab .
14
c *= a;
}
return c;
}
Catatan: Anda tidak disarankan menaruh array sebagai parameter fungsi, karena ada hal
khusus yang belum diajarkan di Pengenalan Komputasi.
4.2 Prosedur
Prosedur sebenarnya sama seperti fungsi, namun tidak ada kembalian. Sebagai contoh,
berikut adalah program untuk menuliskan menu:
int main () {
int pilihan_makanan ;
int pilihan_minuman ;
int pilihan_tambahan ;
Seperti yang tertulis di atas, menuliskan menu perlu berkali-kali. Kita dapat meringkasnya
menjadi:
int main () {
15
int pilihan_makanan ;
int pilihan_minuman ;
int pilihan_tambahan ;
tulis_menu (" Burger ", "Ayam Geprek ", "Mie Instan ");
cin >> pilihan_makanan ;
4.3 Matriks
Matriks pada dasarnya adalah array 2 dimensi. Matriks dapat dideklarasikan dengan:
int A [10][20];
Pada kode di atas, artinya kita membuat matriks dengan nama variabel A, dengan tipe
elemen integer, dan berukuran 10 baris × 20 kolom. Pada C++, saat membuat array atau
matriks 2 dimensi, seluruh isi elemen tidak dijamin bernilai 0. Sama seperti array, untuk
mengakses elemen baris ke-i dan kolom ke-j, kita perlu mengakses A[i-1][j-1] karena
indeks matriks di mulai dari 0. Sebagai contoh, berikut kode untuk membaca matriks dan
menuliskannya kembali.
int main () {
int n, m;
int i, j;
cin >> n >> m;
int A[n][m];
16
berukuran m × l, dan menuliskan hasil perkalian matriks A kali B berukuran n × l.
int main () {
int n, m, l;
int i, j, k;
cin >> n >> m >> l;
int A[n][m];
int B[m][l];
int C[n][l];
17