Anda di halaman 1dari 17

Modul Pengenalan Komputasi C++

Tim Materi Pengenalan Komputasi 2020/2021

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.

Beberapa karakteristik dari bahasa ini:

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

1.2 Input dan Output

Dalam Praktikum Pengenalan Komputasi, program kita akan memiliki struktur dasar
berikut:

# include <iostream >


using namespace std;

int main () {
// Ini adalah sebuah komentar .

// Semua yg ada setelah dua garis miring (//)


// akan diabaikan oleh compiler .

/* Selain itu , semua yang ada di antara garis miring - bintang


juga akan diabaikan */

// Bagian ini dapat kita ganti dengan kode yang


// akan kita tulis.

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.

# include <iostream >


using namespace std;

int main () {
int N; // (1)

cout << " Masukkan nilai N: ";


cin >> N; // (2)
cout << N << endl; // (3)

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.

1.3 Tipe Data

Ada beberapa macam tipe data, namun dalam Pengenalan Komputasi kita hanya akan
banyak menggunakan tipe data berikut:

bool Boolean true atau false


int Bilangan bulat -2.147.483.648 s/d 2.147.483.647
long long Bilangan bulat -9.223.372.036.854.775.808 s/d 9.223.372.036.854.775.807
float Bilangan real −3.4 × 10±38 s/d 3.4 × 10±38
char Karakter semua karakter ASCII
string Teks kumpulan karakter

Contoh penggunaan:

# include <iostream >

5
using namespace std;

int main () {
bool B;
long long L;
int I;
float F;
char C;
string S;

cin >> L; // contoh membaca variabel

I = 2147483647; // contoh mengassign nilai pada variabel


I = 100000 * 100000; // (1)

F = 20 / 3; // (2)
F = 20.00 / 3; // (3)

C = ’@’; // (4)
S = " sebuah kalimat "; // (5)

cin >> S; // (6)


getline (cin , S); // (7)

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.4.1 Operator Aritmatika

Operator Deskripsi Contoh


+ Penjumlahan 2 + 3 bernilai 5
- Pengurangan 1 - 8 bernilai -7
* Perkalian 5 * 6 bernilai 30
/ Pembagian 13 / 5 bernilai 2
% Sisa Bagi / Modulo 13 % 5 bernilai 3
++ Incrementation a = 2; a++; a menjadi 3
-- Decrementation a = 2; a--; a menjadi 1

1.4.2 Operator Assignment

Operator Deskripsi Contoh


= Assignment N = 5;
+= Penjumlahan N += 5;, N akan ditambah 5.
-= Pengurangan N -= 5;, N akan dikurang 5.
*= Perkalian N *= 5;, N akan dikali 5.
/= Pembagian N /= 5;, N akan dibagi 5.
%= Sisa Bagi / Modulo N %= 5;, N akan dimodulo 5.

1.4.3 Operator Relasional

Operator Deskripsi Contoh True Contoh False


== Sama dengan 2 == 2 2 == 3
!= Tidak sama dengan 3 != 2 3 != 3
< Kurang dari 2 < 3 2 < 2
> Lebih dari 3 > 2 2 > 3
<= Kurang dari sama dengan 2 <= 2 3 <= 1
>= Lebih dari sama dengan 6 >= 5 2 >= 4

1.4.4 Operator Logika

Operator Deskripsi Contoh True Contoh False


&& Dan: True jika kedua operand (1 < 2)&& (3 == 3) (1 == 2)&& (3 == 3)
True
|| Atau: True jika salah satu (1 < 2)|| (4 == 3) (3 < 2)|| (2 == 3)
operand True
! Negasi: True jika operand False !(3 < 2) !(1 < 2)

1.5 Percabangan

Dalam pemrograman, terdapat percabangan. Dengan demikian, program kita dapat


berperilaku tergantung input user. Misal kita buat program yang memeriksa apakah se-

7
buah bilangan positif:

# include <iostream >


using namespace std;

int main () {
int N;

cout << " Masukkan nilai N: ";


cin >> N;

if (N > 0) {
cout << N << " bilangan positif " << endl;
}

return 0;
}

Lalu, jika kita ingin menuliskan kebalikannya:

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

Pada pemrograman, sering kali dibutuhkan pemrosesan berulang-ulang untuk mencapai


suatu hasil tertentu. Apabila pengulangan ini dilakukan secara manual ukuran file pro-
gram akan menjadi terlalu besar. Contoh sederhana adalah jika kita ingin menuliskan
“Hello World” di layar sebanyak 1000 kali, maka akan dibutuhkan paling tidak 1000 baris
perintah. Menggunakan sintaks pengulangan, persoalan tersebut dapat diselesaikan hanya
menggunakan beberapa baris program.

# include <iostream >


using namespace std;

int main () {
int i;

for (i = 0; i < 1000; i++) {


cout << "Hello World!" << endl;
}
}

2.1.1 While Loop

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.

Berikut adalah program yang menerima a dan b dan menuliskan a, a + 1, a + 2, . . . , b − 1, b.

# include <iostream >


using namespace std;

int main () {
int a, b, i;

cin >> a >> b;

i = a;
while (i <= b) {
cout << i << endl;
i += 1;
}
}

2.1.2 For Loop

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.

Berikut adalah program yang menerima a dan b dan menuliskan a, a + 1, a + 2, . . . , b − 1, b.

# include <iostream >


using namespace std;

int main () {
int a, b, i;

cin >> a >> b;

for (i=a; i<=b; i++) {


cout << i << endl;
}
}

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.

1. Program akan melakukan statement pertama


2. Program memeriksa kondisi yang diberikan di statement kedua.

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.

2.2 Perulangan bersarang

Perhatikan pula, perulangan dapat dilakukan di dalam perulangan. Sebagai contoh, berikut
adalah program untuk membuat pola persegi.

# include <iostream >


using namespace std;

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.

Perhatikanlah contoh berikut!


Indeks 0 1 2 3 4 5 6 7 8 9
A 3 10 5 7 11 19 23 35 37 12

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

3.1.1 Deklarasi Array

Karena array juga merupakan sebuah variabel, maka array juga memerlukan deklarasi
seperti variabel lainnya.

Contoh deklarasi array:

# include <iostream >


using namespace std;

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

3.1.2 Array dan Variabel

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

cin >> tabel[2];

Jika diberikan 5 buah bilangan , dan kita perlu menyimpan bilangan tersebut pada tabel,
kita bisa melakukan

cin >> tabel [0];


cin >> tabel [1];
cin >> tabel [2];
cin >> tabel [3];
cin >> tabel [4];

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.

Sebagai contoh, fungsi untuk menghitung kuadrat adalah sebagai berikut:

float kuadrat (int x) {


float x2 = x * x;
return x2;
}

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.

# include <iostream >


using namespace std;

float kuadrat (int x) {


float x2 = x * x;
return x2;
}

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 .

int pangkat (int a, int b) {


// asumsi b >= 0
int i;
int c = 1;
for (i=0; i<b; i++) {

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 ;

cout << "Menu:" << endl;


cout << "1. Burger " << endl;
cout << "2. Ayam Geprek " << endl;
cout << "3. Mie Instan " << endl;
cout << " Masukkan pilihan : ";
cin >> pilihan_makanan ;

cout << "Menu:" << endl;


cout << "1. Jus Alpukat " << endl;
cout << "2. Thai Tea" << endl;
cout << "3. Teh Tarik" << endl;
cout << " Masukkan pilihan : ";
cin >> pilihan_minuman ;

cout << "Menu:" << endl;


cout << "1. Kentang " << endl;
cout << "2. Krupuk " << endl;
cout << "3. Abon" << endl;
cout << " Masukkan pilihan : ";
cin >> pilihan_tambahan ;
}

Seperti yang tertulis di atas, menuliskan menu perlu berkali-kali. Kita dapat meringkasnya
menjadi:

void tulis_menu ( string pil1 , string pil2 , string pil3) {


cout << "Menu:" << endl;
cout << "1. " << pil1 << endl;
cout << "2. " << pil2 << endl;
cout << "3. " << pil3 << endl;
cout << " Masukkan pilihan : ";
}

int main () {

15
int pilihan_makanan ;
int pilihan_minuman ;
int pilihan_tambahan ;

tulis_menu (" Burger ", "Ayam Geprek ", "Mie Instan ");
cin >> pilihan_makanan ;

tulis_menu ("Jus Alpukat ", "Thai Tea", "Teh Tarik");


cin >> pilihan_minuman ;

tulis_menu (" Kentang ", " Krupuk ", "Abon");


cin >> pilihan_tambahan ;
}

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

for (i = 0; i < n; i++) {


for (j = 0; j < m; j++) {
cout << " masukkan elemen baris " << i + 1 << " kolom " << j +
1 << ": ";
cin >> A[i][j];
}
}

for (i = 0; i < n; i++) {


for (j = 0; j < m; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
}

Berikut contoh program untuk membaca matriks A berukuran n × m, membaca matriks B

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

for (i = 0; i < n; i++) {


for (j = 0; j < m; j++) {
cin >> A[i][j];
}
}

for (i = 0; i < m; i++) {


for (j = 0; j < l; j++) {
cin >> B[i][j];
}
}

for (i = 0; i < n; i++) {


for (j = 0; j < l; j++) {
C[i][j] = 0;
for (k = 0; k < m; k++) {
C[i][j] += A[i][k] * B[k][j];
}
cout << C[i][j] << " ";
}
cout << endl;
}
}

17

Anda mungkin juga menyukai