PENGENALAN TEKNOLOGI
INFORMASI B
(PTI – B)
2008
MATERI I
Selain pembahasan mengenai operator, dalam sesi ini juga akan dibahas mengenai struktur
percabangan, atau biasa dikenal dengan istilah if conditional. Bentuk dari percabangan ini bisa
bermacam-macam tergantung kebutuhan misalnya hanya if, if-else, if-elseif, dan lain sebagainya. Jenis-
jenis tersebut dapat digunakan berdasarkan bentuk dari permasalahan kita yang akan dipecahkan.
NOTE : Prioritas pertama yang dipelajari adalah bagaimana cara untuk memecahkan masalah, kemudian
baru bagaimana menuliskannya dalam bentuk program.
2. OPERATOR
Operator Aritmatika
Sebelumnya perlu untuk diketahui bahwa dalam menggunakan suatu operator biasanya kita juga
melibatkan suatu operator assignment. Untuk lebih jelasnya, perhatikan statement di bawah ini:
A=x+y
Dalam contoh ini, operator assignment (=) menyebabkan operand yang terletak di sisi kiri operator
assignment (A) berubah menjadi nilai yang dihasilkan dari operator aritmatika di sisi kanan operator
assignment (x+y). Singkat kata, yang terjadi pada statement di atas adalah nilai penjumlahan dari x dan
y di-assign ke operand A.
Sesuai dengan penamaannya, operator aritmatika terdiri dari operator-operator yang membantu kita
dalam menyelesaikan proses aritmatika, seperti penjumlahan, pengurangan, perkalian, dan lainnya.
Namun tidak semua proses aritmatika menggunakan operator ini. Untuk itu diperlukan tambahan suatu
library yang akan membantu kita untuk memudahkan permasalahan.
Berikut adalah jenis-jenis operator aritmatika yang terdapat dalam bahasa C++ :
+ Penjumlahan A = 17 + 8; A bernilai 25
INPUT:
// Operator Aritmatika
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a,b;
float tambah,kurang,kali,bagi;
tambah = a + b;
kurang = a - b;
kali = a * b;
bagi = (float)a / b;
getch();
return 0;
}
OUTPUT:
Hasil penjumlahan, a + b = 25
Hasil pengurangan, a - b = 9
Hasil perkalian, a * b = 136
Hasil pembagian, a / b = 2.125
Hasil modulus, a mod b = 1
Dalam contoh di atas dapat dilihat bagaimana operator aritmatika bekerja. Satu hal yang perlu
diperhatikan adalah statement berikut :
bagi = (float)a / b;
Proses yang terjadi pada baris ini membuat hasil bagi menjadi suatu nilai float kemudian di-
assign pada variabel(operand) bagi. Mengapa demikian? Tipe variabel a dan b adalah integer (sesuai
dengan deklarasi awal). Apabila kita tidak mengikutsertakan (float) pada baris ini, maka hasil yang keluar
bukanlah 2.125 melainkan 2.
INPUT:
// Operator Aritmatika
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a,b;
float X, Y, Z;
X = a / b;
Y = float(a / b);
Z = (float)a / b;
getch();
return 0;
}
OUTPUT:
Hasil pembagian, a / b = 2
Hasil pembagian, float(a / b) = 2
Hasil pembagian, (float)a / b = 2.125
X = a / b;
Dikarenakan tipe a dan b berupa integer. Maka hasil pembagian tersebut
tetap menjadi integer (meskipun tipe Y adalah float).
Y = float(a / b);
Proses yang berada di dalam kurung didahulukan, sehingga proses a/b
dieksekusi duluan. Seperti halnya pada statement sebelumnya, hasilnya adalah
2. Kemudian nilai 2 dikonversi dalam bentuk float menjadi 2.000000 = 2.
Z = (float)a / b;
Pada statement ini kata ’float’ diletakkan dalam kurung sehingga nilai a/b langsung dihitung
dalam bentuk float kemudian di-assign ke variabel Z.
== Persamaan 17 == 8
!= Pertidaksamaan 17 != 8
1 5 3 a = 3 (true) false
2 7 0 a = 0 (false) false
3 0 0 a = 0 (false) true
Sebelum membahas satu per satu kasus diatas, kita lihat dua kolom terakhir dari kanan. Terdapat
bentuk “a = b” dan bentuk “a = = b”.
a=b : pada statement terjadi proses assigning dimana nilai dari b disimpan dalam variabel a.
Kemudian dilihat apabila nilai a bukan 0 (nol), maka hasil yang dikeluarkan adalah true.
Sebaliknya apabila nilai a adalah 0 (nol), maka hasilnya adalah false.
a = = b : Ini adalah pernyataan relasi. Nilai a dan nilai b dicek apakah sama atau tidak. Apabila sama,
maka nilai kembalian adalah true. Jika tidak, maka nilai kembalian adalah false.
R1 R2 R1 && R2 R1 || R2 ! R1
T T T T F
T F F T F
F T F T T
F F F F T
Perlu diingat bahwa Operator Aritmatika, Operator Relasi dan Operator Logika dapat dikatakan operator
utama yang banyak dipakai dalam berbagai bahasa pemrograman, dalam hal ini Bahasa C++. Maka dari
itu, cobalah untuk dipahami sebaik-baiknya karena pada sesi-sesi selanjutnya, operator-operator akan
banyak digunakan.
Manipulasi data adalah proses untuk mengubah isi suatu variabel dengan nilai yang baru. Nilai baru yang
dimaksud dapat berupa suatu nilai mutlak yang telah didefinisikan ataupun nilai yang merupakan hasil
dari proses aritmatika.
Dasar dari proses manipulasi ini sebenarnya sangat mudah. Akan tetapi ada beberapa teknik yang harus
diketahui agar proses manipulasi ini dapat berjalan sesuai yang kita inginkan. Salah satu hal utama yang
perlu diingat adalah dalam proses membaca statement, kita membaca dari ”kanan ke kiri”. Mari kita
lihat contoh berikut ini:
METODE #1
int A = 5; // A = 5
int X;
X = A + 2; // X = 7
A = X; // A = 7 ; X = 7
METODE #2
int A = 5; // A = 5
A = A + 2; // A = 7
METODE #3
int A = 5; // A = 5
A += 2; // A = 7
Ketiga metode diatas sebenarnya menghasilkan hasil yang sama, namun terjadi perbedaan pada proses
manipulasinya.
METODE #1
Baris 1 : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.
Baris 2 : variabel X dideklarasi dengan tipe int.
Baris 3 : variabel A (bernilai 5) ditambahkan dengan nilai 2, kemudian disimpan ke dalam variabel X.
Pada akhir statement ini nilai X menjadi 7.
Baris 4 : Nilai X disimpan pada variabel A. Pada akhir statement ini, nilai A telah dimanipulasi dari 5
menjadi 7.
METODE #2
Baris 1 : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.
Baris 2 : variabel A (bernilai 5) ditambahkan dengan 2 sehingga menghasilkan nilai 7, kemudian di-
assign ke variabel A. Variabel A sekarang bernilai 7 (INGAT! : membaca dari kanan ke kiri).
METODE #3
Baris 1 : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.
Baris 2 : Operator (+=) menambahkan nilai di sisi kanan ke sisi kiri dan meng-assign kembali ke sisi kiri
operator. Dalam hal ini prosesnya sama persis dengan baris 2 pada Metode #2.
Selain operator penjumlahan (+=), ada operator sejenis yang membantu kita dalam proses manipulasi
data, yakni pengurangan (-=), perkalian (*=), dan pembagian (/=).
METODE #2
i = i + 1;
METODE #3
i += 1;
Ketiga metode tersebut memiliki proses yang sama, yaitu menambahkan nilai 1 ke variabel i lalu meng-
assign hasilnya kembali ke variabel i.
INPUT:
// Contoh Prefiks-Postfiks
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int Aku = 15;
int Kamu;
getch();
return 0;
}
OUTPUT:
Tahun Berikutnya...
Umur saya : 16 tahun.
Umur kamu : 24 tahun.
Coba kita perhatikan baik-baik penggunaan postfix dan prefiks. Bandingkan hasil setelah satu tahun,
tahun berikutnya, dan hasil akhir.
Pada hasil setelah satu tahun, proses postfix dan prefiks telah selesai. Sehingga saat variabel dikeluarkan
nilainya, maka variabel Aku dan Kamu telah bertambah nilai masing-masing 1.
Pada hasil tahun berikutnya, variabel Aku mendapat postfix, sehingga nilai Aku ditampilkan sebelum
increment terjadi. Sedangkan pada variabel Kamu, nilai telah mengalami increment kemudian
ditampilkan.
Pada hasil akhir, nilai Aku dan Kamu telah dilakukan increment dan telah di-assign, sehingga kedua nilai
telah bertambah 1.
NOTE: Operator prefix (++/-- var) digunakan untuk menambahkan atau mengurangkan variabel sebelum
digunakan. Dan operator postfix (var++/--) digunakan untuk menambahkan atau mengurangkan variabel
setelah digunakan.
4. STRUKTUR PERCABANGAN (IF – CONDITIONAL)
Sebelum masuk ke dalam struktur percabangan, ingatlah kembali macam-macam operator yang telah
dibahas pada bagian sebelumnya. Untuk memudahkan, berikut Precedence dari Operator :
− + sizeof( ) ! ++ −−
= += -= *= /= %=
Namun disini kita berkomunikasi dengan komputer dimana perangkat ini hanya mengerti apabila kita
menjawab dengan ya (TRUE) atau tidak (FALSE).
Untuk membantu kita mendeskripsikan masalah, bahasa C++ memiliki beberapa bentuk untuk
memudahkan kita menjalankannya. Akan tetapi, bentuk standar daripada IF Conditional adalah sebagai
berikut :
if (expression)
statement1;
else
statement2;
statement2 di atas digunakan untuk memberikan pilihan aksi lain jika ekspresi pada statement if
bernilai salah (FALSE).
Bentuk IF TUNGGAL
Bentuk dari instruksi if tunggal adalah sebagai berikut:
Keterangan:
Nilai kembalian if yang berupa TRUE ataupun FALSE diperoleh dari hasil keluaran ekspresi yang kita
definisikan. Ekspresi/pernyataan relasi ini diawalan dengan kurung buka dan diakhiri dengan kurung
tutup. Apabila kita memiliki lebih dari satu pernyataan relasi, maka dibutuhkan operator logika untuk
menggabungkan beberapa pernyataan relasi tersebut hingga akhirnya kita mendapat hasil berupa TRUE
atau FALSE.
Andaikata nilai yang dihasilkan adalah TRUE, maka program selanjutnya akan mengeksekusi intruksi-
intruksi yang berada di antara tanda ”{” dan tanda ”}”. Jika hasil yang dikeluarkan bernilai FALSE, maka
intruksi tersebut akan dilewati (tidak dieksekusi).
Jika masih bingung, mungkin algoritma ini akan dapat membantu pemahaman Anda:
ya
jika pernyataan_relasi
Instruksi selanjutnya
INPUT:
// IF TUNGGAL
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a;
if (a == 17)
{
cout << "\nWOW! Tebakan Anda benar! Umur saya = " << a << " tahun\n\n";
}
getch();
return 0;
}
OUTPUT:
OUTPUT:
Apabila Anda benar ekspresi bernilai TRUE (dimana a = = 17 ), maka intruksi didalam tanda “{“ dan “}”
akan dieksekusi. Lalu mengapa saat kita salah memasukkan angka, kalimat “Terimakasih...” masih tetap
dieksekusi ? Hal ini dikarenakan statement tersebut tidak berada didalam tanda bracket, sehingga
apapun nilai yang keluar, statement tersebut tetap akan dieksekusi.
Penggunaan IF TUNGGAL dapat dilakukan secara berturutan. Perhatikan contoh berikut ini:
INPUT:
// IF TUNGGAL (BERTURUTAN)
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
float nilai;
cout << "Masukkan nilai ujian Anda : "; cin >> nilai;
cout << "Predikat Anda : ";
getch();
return 0;
}
OUTPUT:
else
Hal yang membedakan dengan IF TUNGGAL adalah pada IF MAJEMUK terdapat intruksi yang harus
dieksekusi apabila hasil keluaran bernilai FALSE. Intruksi tersebut harus diletakkan setelah perintah else
dieksekusi. Perlu diingat, perintah else tidak dapat berdiri sendiri. Artinya, untuk menggunakan perintah
ini harus didahului dengan perintah if pada awal statement.
Start
int a
Masukkan sebuah
bilangan
a%2 == 0?
tidak
ya
end
Contoh penggunaan IF MAJEMUK :
INPUT:
// IF MAJEMUK
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a;
cout << "Masukkan suatu bilangan bulat : "; cin >> a;
if (a%2 == 0) {
cout << "Anda memasukkan bilangan GENAP ";
}else {
cout << "Anda memasukkan bilangan GANJIL ";
}
getch();
return 0;
}
OUTPUT:
INPUT:
// IF MAJEMUK #2
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int a;
cout << "Masukkan suatu bilangan bulat : "; cin >> a;
OUTPUT:
if (Ekspresi A)
{
if (Ekspresi B)
{
if (Ekspresi C)
{
...instruksi jika hasil logika A, B dan C bernilai benar
}
}
}
INPUT:
// IF BERTINGKAT
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
int x;
cout << "Masukkan suatu bilangan bulat : "; cin >> x;
if (x%2 == 0) {
if (x >= 100) {
cout << "Anda memasukkan bilangan GENAP dan lebih dari 100";
} else {
cout << "Bilangan GENAP Anda dibawah nilai 100";
}
} else {
cout << "Anda memasukkan bilangan GANJIL";
}
getch();
return 0;
}
OUTPUT:
Analisa/Tugas
Perhatikan angka-angka di bawah ini :
10, 30, 60, 20, 80, 20, 60, 40, 50, 90, 90, 20, 60, 30, 80, 100, 10, 20, 90, 30.
c. Buatlah Algoritma untuk program yang akan Anda buat (dalam bentuk flowchart)
d. Kreativitas Anda dalam membuat program ini akan menjadi nilai bonus untuk Anda
- Menggunakan operator-operator yang Anda ketahui
- Mengguunakan Increment/Decrement
- Menggunakan IF CONDITIONAL