Anda di halaman 1dari 36

BAB III BAHASA PEMROGRAMAN DAN FLOWCHART

PERKEMBANGAN BAHASA PEMROGRAMAN


Pada dasarnya bahasa pemrograman dapat dibedakan menjadi:
1. Bahasa Mesin (Mnemonic Code)
Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat
diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan bahasa level
terendah dan berupa kode numerik 0 dan 1.
Sekumpulan instruksi dalam bahasa mesin dapat membentuk microcode (semacam
prosedur dalam bahasa mesin).
Keuntungan: Eksekusi sangat cepat
Kerugian: Sangat sulit dan rumit dipelajari dan dipahami sebagian besar akademisi
2. Bahasa Assembly
Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin
memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan,
MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain. Sekumpulan kode-kode
bahasa assembly dapat membentuk makroinstruksi. Bahasa assembly juga memiliki
program untuk men-debugnya tidak seperti bahasa mesin.
Misalnya: Turbo Assembler dan debug pada DOS.
Assembler akan mencocokkan token dari awal dengan akhir dan dikodekan menjadi
bahasa mesin.
Kelebihan: Eksekusi cepat, lebih mudah dipelajari daripada bahasa mesin, file kecil
Kekurangan: Tetap sulit dipelajari, listing program sangat panjang.
3. Bahasa Tingkat Tinggi (High Level Language)
Bahasa tingkat tinggi adalah bahasa pemrograman yang lebih tinggi daripada bahasa
assembly. Bahasa ini lebih dekat dengan bahasa manusia. Bahasa inilah yang akan
dibahas pada matakuliah ini. Bahasa ini juga memberikan banyak sekali fasilitas
kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol,
loop, fungsi, prosedur dan lain-lain. Contoh: Pascal, Fortran, C++, dan Java.
Keuntungan:
- Mudah dipelajari (Sintaks bahasanya mirip bahasa manusia /bahasa Inggris)
- Menyediakan banyak modul yang mendekati permasalahan yang akan dipecahkan
- Kode program lebih pendek
- Tersedia IDE (Integrated Development Environment), sebagian besar bahasa
pemrograman tingkat tinggi saat ini menyediakan IDE, yaitu program interface/
antarmuka pengguna yang mudah digunakan (berbasis GUI).
IDE menyediakan Editor (tools untuk menulis program), Debug (untuk menelusuri
kesalahan penulisan program, serta kompiler (untuk membuat program aplikasi/ siap
pakai berupa executable program, yang langsung bisa dieksekusi dan dilihat hasilnya)
Kerugian:
- Eksekusi lambat, karena harus menggunakan API (menumpang pada proses eksekusi
yang sebagian dilakukan oleh rutin-rutin program OS), sehingga mengalami eksekusi
yang bertingkat-tingkat dari level GUI – API/Aplikasi – OS – BIOS – Mesin.
- Ukuran program executable yang dihasilkan cukup besar, sehingga membutuhkan
pemakaian memori (RAM) yang besar.
Bahasa dari jenis inilah yang akan kita pakai untuk praktikum Algoritma Pemrograman,
dikenal dengan bahasa generasi ke-3 ( 3rd Generation Programmming Language ).

Algoritma dan Pemrograman I Bag-2 7


4. Bahasa yang berorientasi pada masalah spesifik (specific problem oriented).
Bahasa ini adalah bahasa yang digunakan langsung untuk memecahkan suatu masalah
tertentu. Misalnya SQL untuk database, Regex untuk mencocokkan pola string tertentu.
Bahasa ini juga masuk ke bahasa tingkat tinggi. Bahasa ini disebut juga bahasa generasi
ke-4 (4th Generation Programmming Language).

Translator
Translator melakukan pengubahan source code ke dalam target code/object program. Source
code ditulis dengan suatu bahasa pemrograman tertentu sedangkan object code bisa
bermacam-macam outputnya tergantung pada translatornya. Ada beberapa translator:
1. Assembler
Source code adalah bahasa assembly, object code adalah bahasa mesin

2. Interpreter
Input berupa source code yaitu bahasa scripting seperti PHP, VBscript, Perl, Javascript,
actionscript(Adobe), Java bytecode, dan Basic. Interpreter tidak menghasilkan object
code, jadi hasilnya langsung tampil.
Hanya menghasilkan translasi internal. Input dapat berasal dari source code maupun dari
inputan program dari user. Source code dan inputan data user diproses pada saat yang
bersamaan. Pada interpreter: program tidak harus dianalisis seluruhnya dulu, tapi
bersamaan dengan jalannya program.
Keuntungan: mudah bagi user, debuging cepat
Kekurangan: eksekusi program lambat, tidak langsung menjadi program executable.

3. Kompiler
Input berupa source code program seperti Pascal, C, C++. Object code adalah bahasa
assembly. Source code dan data input diproses pada saat yang berbeda. Compile time
adalah saat pengubahan dari source code menjadi object code, sedangkan Runtime adalah
saat eksekusi object code dan mungkin menerima input data dari user. Output : bahasa
assembly. Hasil berupa file EXE Kekurangan: debugging lebih lambat Keuntungan:
eksekusi program lebih cepat, menghasilkan file executable yang berdiri sendiri.

Compile Time : Runtime


Library

FILE
Source Code Pre-Processor Link Editor
EXECUTABLE

Object Code

Compiler Assembler
Assembly Code

Algoritma dan Pemrograman I Bag-2 8


Algoritma dan Pemrograman I Bag-2 9
Paradigma Pemrograman
1. Pemrograman Prosedural
 Berdasarkan urutan-urutan, sekuensial
Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan kumpulan instruksi yang dikerjakan secara berurutan.
Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.
2. Pemrograman Fungsional
Berdasarkan teori fungsi matematika
Fungsi merupakan dasar utama program.
Contoh : MatLAB.
3. Pemrograman Terstruktur
Secara berurutan dan terstrukrtur.
Program dapat dibagai-bagi menjadi prosedur dan fungsi.
Contoh: PASCAL dan C
4. Pemrograman Modular
Pemrograman ini membentuk banyak modul.
Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
Sebuah program dapat merupakan kumpulan modul-modul.
Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek (Object Oriented Programming – OOP)
Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/
property dan method/event/prosedur yang dapat dimanipulasi
Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
 Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada
tujuan pembuatan bahasa pemrograman ini.
 Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada
memecahkan masalah dengan implementasi algoritma.
 Contoh: PROLOG

FLOWCHART

Flowchart adalah bentuk gambar/diagram yang mempunyai aliran satu atau dua arah secara
sekuensial. Flowchart digunakan untuk merepresentasikan maupun mendesain program. Oleh
karena itu flowchart harus bisa merepresentasikan komponen-komponen dalam bahasa
pemrograman.

Algoritma dan Pemrograman I Bag-2 10


Baik flowchart maupun algoritma bisa dibuat sebelum maupun setelah pembuatan program.
Flowchart dan Algoritma yang dibuat sebelum membuat program digunakan untuk
mempermudah pembuat program untuk menentukan alur logika program, sedangkan yang
dibuat setelah pembuatan program digunakan untuk menjelaskan alur program kepada orang
lain.

Algoritma dan Pemrograman I Bag-2 11


MENGENAL C/C++
C adalah bahasa pemrograman paling populer di lingkungan pengembang software sistem
(developer). Pada awalnya dikembangkan oleh Dennis M. Ritchie di Bell Laboratories pada
tahun 1972, diterapkan untuk mendayagunakan komputer DEC PDP-11 dengan Sistem
Operasi UNIX.
Kemudian tahun 1978 Dennis dan Brian W.Kernighan mempublikasikannya melalui buku :
C Programming Language. Pada akhirnya C distandarisasi oleh Badan Standar Amerika
Sserikat, yaitu ANSI C pada tahun 1989.
Bahasa C bahasa yang general, tidak dikhususkan untuk suatu bidang/aplikasi tertentu.

Contoh program C:

#include <stdio.h>
#include <conio.h>

void main()
{
clrscr();
char nama[20];
int umur;
printf(“Hallo Selamat Belajar C”);
printf(“Masukkan nama : “); scanf(“%s”,nama);
printf(“Masukkan umur: “); scanf(“%d”,&umur);
printf(“Anda bernama : %s dan berumur %d”,nama,umur);
if(umur < 20)
{
for(int i=0;i<umur;i++) printf(“%d\n”,i);
printf(“Anda masih muda\n”);
} else
if(umur > 50)
{
printf(“Anda sudah berumur!\n”);
} else
printf(“Lainnya\n”);
getch();
}

Algoritma dan Pemrograman I Bag-2 12


C++ adalah bahasa pemrograman yang merupakan turunan langsung dari C. Secara historis
C++ mulai lahir pada tahun 1979, dimana Bjarne Stroustrup dari laboratorium AT&T Bell
Corp. mulai mengerjakan C dengan fitur Class, dan 1982, C with Classes dipublikasikan
secara luas, hingga akhir tahun 1983 kemudian diberi nama dengan C++..

Kemduian pada Juli 1998, bahasa C++ distandarisasi secara internasional, dengan nama :
ISO/IEC 14882 : 1998, "Programming Language -- C++"
C++ adalah bahasa pemrograman multi-orientasi dengan penggunaan Class, hingga mampu
menyusun sendiri pustaka Class, namun kemudian muncul STL (Standard Tempalte Library)
yang sangat bermanfaat untuk penyelesaian permasalahan nyata dengan lebih sederhana.

Adanya class merupakan suatu cara untuk memberi suatu obyek atau kumpulan obyek yang
sejenis berbagai type data sekaligus menetapkan perilaku obyek yang diinginkan.
Saat ini C++ menganut multi paradigma programming.
- Mendukung model Data Abstraction
Dapat menyusun type data obyek sesuai definisi yang diinginkan bahkan lebih dari itu,
dengan adanya pembentukan Class.
- Mendukung Object-Oriented Programming
- Mendukung Procedural Programming
Dapat disusun prosedure-prosedur program yang diinginkan, dengan menggunakan
algorithma yang tepat.
- Mendukung Modular Programming
Dapat disusun berbagai modul yang diinginkan, membagi program dalam modul-modul
untuk menyembunyikan datanya. Kelompokkan data dalam fungsi-fungsi yang sama.
- Mendukung Generic Programming
Tetapkan Class mana yang diinginkan, sediakan sekumpulan jenis perilaku dan operasi
yang diinginkan untuk setiap Class.

Contoh program C++ (hasil yg sama dari contoh untuk C sebelumnya) :

#include <iostream>
using namespace std;

int main()
{
char nama[20];
int umur;

cout <<" Hallo Selamat Belajar C++"


<< endl;
cout <<" Masukkan nama : ");
cin >> nama;
cout << endl <<" Masukkan Umur : ");
cin >> umur;
cout << endl
<< nama
<< ","
<< "usiamu "
<< umur
<< " tahun"
<< endl;
return 0;
}

Algoritma dan Pemrograman I Bag-2 13


Bentuk dan Sintax bahasa C++ dapat dilihat pada setiap contoh dibawah ini.
////////////////////////////////////////////////////////
// Program C++ : Algoritma dan Pemrograman I //
// Mempelajari perilaku Looping //
// - menggunakan perintah for //
// - memahami cara menetapkan awal dan akhir loop //
////////////////////////////////////////////////////////

#include <iostream> // Memanggil pustaka program I/O


using namespace std; // Penggunaan fungsi standar I/O
int main() // awal program utama, wajib ada
{
int A; // Deklarasikan variabel data A
int i, j; // Deklarasikan variabel data i dan j
cout<<"Input bilangan A : "; // Perintah menampilkan panduan baca A
cin>>A; // Perintah membaca data A
for (i=0; i<A; i++) // Loop menggunakan for
{ // Mulai loop i
for (j=0; j<A-i; j++)
{ // Mulai loop j
cout<<j;
} // Akhiri loop j
cout<<endl;
} // Akhiri loop i
system ("pause"); // Pause/tahan tampilan hasil di layar
return 0; // Akhir Program Utama, wajib ada
}

MENGENAL C# (Baca Si Sharp)


C# merupakan bahasa yang berkembang mulai tahun 2000 sejak Microsoft merilis .NET.
C# secara sintaks mendekati C, juga mirip dengan Java. C# dikembangkan oleh Anders
Hejlsberg, salah satu pengembang IDE Pascal, yaitu Delphi.
Microsoft memberikan definisi berikut tentang C#:
”C# is a simple, modern, object oreinted, and type-safe programming language derived from
C and C++. C# is firmly planted in the C and C++ family tree of languages, and will
immediately be fimiliar to C and C++ programmers. C# aim to combine the high
productivity of visual Basic and the raw power of C++”.

Teknologi .NET Framework

Algoritma dan Pemrograman I Bag-2 14


.NET framework memiliki suatu komponen dengan nama CLR (Common Language
Runtime) yang memungkinkan semua bahasa yang berbeda dirubah menjadi MSIL (bahasa
tingkat menengah ala Microsoft), yang kemudian dikelola dalam suatu lingkungan yang
termanage dalam hal alokasi resource.

Contoh program C#:


using System;
public class strukdat1App
{
public static void Main(string[] args)
{

string nama;
int umur;
Console.WriteLine("Hallo, selamat belajar C#");
Console.Write("Masukkan nama : "); nama = Console.ReadLine();
Console.Write("Masukkan umur : "); umur = Convert.ToInt16
(Console.ReadLine());
Console.WriteLine("Anda bernama "+nama+", Anda berumur"+umur);
if(umur < 20){for(int i=0;i<umur;i++)
{
Console.WriteLine(i);
Console.WriteLine("Anda masih muda");
}
else if(umur > 50)
Console.WriteLine("Anda sudah berumur!");
else
Console.WriteLine("Lainnya");
}
}

Belajar C/C++ saat ini sudah lebih mudah dilakukan. IDE C++ sudah banyak tersedia, IDE
singkatan Integrated Development Environment, suatu aplikasi terpadu yang menyediakan
editor text untuk menulis program C++, dan juga sekaligus menyediakan Compiler serta
fasilitas penelusuran kesalahan program. IDE yang populer diantaranya adalah :
- Microsoft Visual C++ ($28 US academic purpose only)
- Borland C++ ($35 US academic purpose only)
- Web-Dev C++ (Free and Open Source) - Kita pakai yang ini....!

Algoritma dan Pemrograman I Bag-2 15


III MENGGUNAKAN BAHASA C++

Kerangka Program C++

Setiap program yang ditulis dalam bahasa C/C++ pasti akan memiliki sebuah fungsi utama
dengan nama main() . Selanjutnya jika kita ingin mendefinisikan fungsi-fungsi lain maka kita
akan melakukannya di luar fungsi utama tersebut. Dalam C++, kode yang dibaca adalah
kode-kode yang terdapat pada fungsi utama. Jika ternyata terdapat pemanggilan fungsi lain,
maka program akan mencari nama fungsi tersebut untuk dieksekusi. Setelah mengeksekusi
fungsi tersebut, maka program akan kembali ke dalam fungsi utama, begitu seterusnya.
Sebagai gambaran, di bawah ini ilustrasi kerangka umum program yang ditulis dalam bahasa
C/C++. Maksudnya agar dapat membedakan mana yang harus dilakukan dan mana yang
sebaiknya ditinggalkan dalam membuat program di dalam C++. Berikut ini kerangka umum
dari program yang ditulis dalam bahasa C.
#include <stdio.h>
// Prototype fungsi
tipe_data nama_fungsil{parameterl, parameter2, ... )
tipe_data nama_fungsi2(parameter!, parameter2, ... )

// Fungsi utama
int main(void) {
Statemen_yang_akan_di lakukan;
…………
…………
return 0;
}

// Implementasi fungsi-fungsi bentukan, boleh lebih dari satu fungsi


tipe_data nama_fungsil (parameterl, parameter2, ...) {
Statemen_yang,_akan__dilakukan ;
…………
…………
}

tipe_data nama_fungsi2 (parameterl, parameter2, ...) {


Statemen yang_akan_dilakukan ;
…………
…………
}

Perhatikan kata kunci void di atas, di dalam bahasa C, masih banyak digunakan, sedangkan
program C++ sebaiknya hindari penggunaannya, karena hal itu merupakan redundan.
Sedangkan nilai 0 pada statemen return 0 di atas berfungsi untuk mengembalikan nilai ke
sistem operasi.
Prototype di atas bersifat opsional, artinya kita juga diizinkan untuk mendefinisikan fungsi-
fungsi sebelum menulis fungsi utama tanpa menuliskan prototype. Selain bentuk di atas kita
juga diizinkan untuk menuliskan fungsi utama seperti sintaks di bawah ini.

void main (} {
Statemen_yang_akan_di lakukan;
…………
…………
}

Algoritma dan Pemrograman I Bag-2 16


Sintaks di atas berlaku juga untuk bahasa C++ . Namun di dalam kuliah selanjutnya, sintaks
yang akan digunakan untuk menuliskan fungsi utama adalah sebagai berikut.

int main() {
Statemen_yang_akan_di lakukan;
…………
…………
return 0;
}

Adapun kerangka lengkap dari program yang ditulis dalam C++ adalah seperti terlihat di
bawah ini.

#include <iostream>
// Prototype fungsi
tipe_data nama_fungsil{parameter!, parameter2,... )
tipe_data nama_fungsi2(parameterl, parameter2,... )

// Fungsi utama
int main() (
Statemen_yang_akan_dilakukan;
....
....
return 0;
}

// Implementasi fungsi
tipe_data nama_fungsil{parameterl, parameter2, ...) {
Statemen_yang_akan_dilakukan;
....
....
}

tipe__data nama_fungsi2{parameterl, parameter2, ...) {


Statemen_yang_akan_dilakukan;
....
....
}

File .H (Header File)


Perlu sekali untuk diperhatikan bahwa file header yang digunakan di dalam bahasa C++
untuk proses input/output (I/O) standar adalah iostream, sedangkan di dalam bahasa C file
header yang digunakan untuk keperluan yang sama adalah stdio.h.
File header (file dengan ekstensi .h) adalah file yang berisi fungsi-fungsi yang telah
dikompilasi sebelumnya. Bila kita akan menggunakan file header tertentu, harus didaftar
melalui perintah directive #include. Sebagai contoh, di dalam kode program, kita akan
menggunakan perintah cout (menampilkan data), dan cin (menginput data).
Kedua perintah tersebut sudah built-in terdapat dalam file header iostream.h, maka kita
akan melakukan pendaftaran dalam program kita melalui sintaks berikut
#include <iostream>

C++ Klasik dan C++ Modern/Standard ISO


Pada bagian ini kita akan membahas sekilas tentang perbedaan yang terdapat dalam kompiler
C++ lama (klasik) dengan C++ modern (C++ yang telah memenuhi standar ANSI/ISO).
Perbedaan yang paling tampak adalah pada kompiler C++ lama masih menggunakan
namespace global, sedangkan pada C++ modern yang digunakan adalah namespace std.
Hal inilah yang menyebabkan terdapatnya sedikit perbedaan penulisan antara C++ lama dan
standar. Untuk lebih memahaminya, berikut ini kerangka umum penulisan program yang
digunakan dalam C++ lama dan C++ standar.

Algoritma dan Pemrograman I Bag-2 17


Pada Kompiler C++ Lama Pada Kompiler C++ Standar
#include<iostream.h> #include<iostream>
Using namespace std;
int main() {
... int main() {
... ...
...
return 0;
} return 0;
}

Seperti yang kita lihat bahwa pada C++ standar penulisan file header iostream sudah tidak
diikuti lagi dengan ekstensi .h.
Dalam buku ini kita akan selalu menggunakan bentuk kedua, yaitu bentuk yang telah
memenuhi standar penulisan kode untuk C++ standar. Namun perlu diperhatikan bahwa
untuk menuliskan kode menggunakan bentuk kedua, diperlukan pula kompiler C++ yang
telah mendukung semua fitur yang terdapat dalam C++ Standar.

Pada setiap pemrograman, kita tidak dapat terlepas dari penggunaan tipe data dan pengenal
atau pengidentifikasi (identifier). Kehadiran dari dua elemen ini sangatlah penting, walaupun
sebenarnya untuk program yang sangat sederhana terkadang kita tidak perlu menggunakan
identifier. Sebagai contoh untuk program yang menampilkan sebuah teks dan bilangan,
misalnya seperti program di bawah ini.
#include <iostream>
using namespace std;

int main()
{
cout << "Teks ini digunakan sebagai contoh" << endl;
cout << 2+5 ;
return 0;
}

Statemen cout di atas berfungsi untuk menampilkan keluaran (output) ke layar monitor.
Statemen ini hanya akan dikenali jika kita mendaftarkan library iostream yang tersimpan
dalam namespace std. Hal ini akan kita pelajari lebih jauh pada bab Input/Output(I/O).
Sedangkan endl berfungsi untuk memindahkan cursor ke baris baru. Dalam bab ini kita
hanya akan membahas mengenai beberapa elemen-elemen dasar yang diperlukan dalam
pemrograman C++ , seperti: komentar, pengenal (identifier) dan tipe data.

Komentar
Dalam proses pengembangan sebuah program, tentunya kita disibukkan dengan penulisan
sintaks-sintaks yang begitu banyak dan 'tampak' rumit sehingga akan sulit untuk dipahami
oleh orang lain. Untuk menangani masalah ini, sebagai programmer kita sebaiknya
menambahkan komentar untuk menjelaskan algoritma dan keterangan-keterangan yang
diperlukan dalam program. Hal ini akan membantu dalam proses pemeliharaan
(maintenance) dari program yang telah kita buat. Komentar program didefmisikan sebagai
bagian dari sintaks program yang tidak ikut dibaca pada saat proses kompilasi. Dengan kata
lain, komentar tidak akan mempengaruhi jalannya program. Dalam bahasa C++ , komentar
dibagi menjadi dua jenis yaitu komentar yang hanya terdiri dari satu baris dan komentar yang
terdiri dari beberapa baris. Berikut ini penjelasan dari keduanya.

Algoritma dan Pemrograman I Bag-2 18


Menggunakan Tanda //
Tanda ini digunakan untuk menuliskan komentar yang banyaknya hanya satu baris. Gaya
penulisan komentar seperti ini hanya terdapat pada C + + , sedangkan pada bahasa C tidak
akan dikenali. Jika kita menggunakan tanda ini untuk menuliskan komentar yang lebih dari
satu baris, maka teks di belakang tanda // tetap menjadi komentar. Namun, teks yang terdapat
pada baris selanjutnya akan tetap dibaca oleh kompiler sehingga akan menyebabkan
terjadinya kesalahan (error) pada saat proses kompilasi program.
Berikut ini adalah contoh penggunaannya.
int r ; // r adalah jari-jari lingkaran …

// dibawah ini perintah menampilkan hasil kali 4 dengan 3


cout<<4*3;

Menggunakan Tanda /* komentar */


Berbeda dengan tanda //, tanda di atasi dapat digunakan untuk menuliskan komentar yang
banyaknya satu baris atau lebih.
Tulisan dianggap komentar, bukan instruksi program, jika dimulai dengan tanda /* sampai
ditemukan tanda */. Contoh penggunaannya dapat dilihat di bawah ini.

/* Program C++ ini ditulis untuk menyelesaikan masalah algoritma sorting pada
elemen-elemen matriks. Metoda yang digunakan adalah model MergeSort.
====================================================================
Penulis : Mr. Bruce Lee, Staf Perguruan Kungfu Komputer, Taiwan
Tanggal : 29 Oktober 2008
-------------------------------------------------------------------- */

#include <iostream>

Using namespace std;


...
...

Identifier
Identifier adalah suatu pengenal atau pengidentifikasi yang kita deklarasikan agar kompiler
dapat mengenalinya. Identifier sendiri dapat berupa nama variabel, konstanta, fungsi, kelas,
template maupun namespace. Namun dalam hal ini kita hanya akan membahas identifier
yang berperan sebagai variabel dan konstanta saja, sedangkan bentuk identifier lainnya akan
kita bahas secara khusus dalam bab tersendiri.
Identifier yang berperan sebagai variabel dan konstanta berfungsi untuk menampung sebuah
nilai yang digunakan dalam program. Indentifikasi ini dilakukan untuk mempermudah proses
penanganan data atau nilai, misalnya untuk memasukkan dan menampilkan nilai. Sebagai
gambaran, di bawah ini adalah sebuah contoh program yang menggunakan dua buah
identifier di dalamnya.

#include <iostream>
using namespace std;

int main()
{
char Teks[20];
int X;
cout<<"Masukkan sebuah kata : "; cin>>Teks;
cout<<"Masukkan sebuah angka : "; cin>>X;
cout<<Teks<<endl; // bisa ditulis cout<<X<<'\n';
cout<<X;

return 0;
}

Algoritma dan Pemrograman I Bag-2 19


Pada program di atas kita mempunyai dua buah identifier, yaitu Teks dan X. Pada saat program
dijalankan, identifier tersebut akan digunakan untuk menyimpan nilai yang dimasukkan dari
keyboard. Dalam C++, proses penyimpanan nilai seperti ini dinyatakan dengan statemen cin.
Berbeda dengan statemen cout yang menggunakan operator «, pada statemen cin operator
yang digunakan adalah operator ». Dalam menentukan atau membuat identifer dalam program,
kita harus memperhatikan hal-hal berikut:
 Karena bahasa C++ bersifat case sensitive, maka C++ juga akan membedakan variabel yang
ditulis dengan huruf capital dan huruf kecil. Misalnya variabel A tentunya akan berbeda
dengan variabel a.
 Identifier tidak boleh berupa angka atau diawali dengan karakter yang berupa angka.
Contoh :
long 1000; // SALAH karena identifier berupa angka
long 2X; // SALAH karena identifier diawali oleh karakter berupa angka
int X2; // BENAR karena identifier tidak diawali oleh angka
 Identifier tidak boleh mengandung spasi.
 Identifier tidak boleh mengunakan karakter-karakter symbol (#, @, ?, !,$, dll)
 Identifier tidak boleh menggunakan kata kunci (.keyword) yang terdapat pada C++.
Contoh :
long break; // SALAH karena menggunakan kata kunci break
int return; // SALAH karena menggunakan kata kunci return
 Nama identifier sebaiknya disesuaikan dengan kebutuhannya, artinya jangan sampai orang
lain bingung hanya karena salah dalam penamaan identifier.
 Sebisa mungkin, hindarilah penggunaan nama identifier yang sama dengan identifier yang
digunakan oleh C++ .

Berdasarkan jenisnya, identifier sendiri dibagi ke dalam dua bagian yaitu konstanta dan variabel.
Adapun penjelasan lebih detilnya dapat Anda lihat pada sub bab di bawah ini.

Konstanta
Konstanta adalah jenis identifier yang bersifat konstan atau tetap, artinya nilai dari konstanta
di dalam program tidak dapat diubah.Konstanta berguna untuk menentukan nilai yang
merupakan tetapan, misalnya nilai pi (π), kecepatan cahaya dan lainnya.
Dengan mendefinisikan konstanta yang bersifat global, maka kita dapat menggunakannya di
setiap bagian program.
Dalam C++ , terdapat dua buah cara untuk membuat sebuah konstanta, yaitu dengan
menggunakan preprocessor directive #def ine dan menggunakan kata kunci const.
a. Menggunakan Preprocessor Directive #define
Kita dapat menggunakan makro untuk mendefinisikan sebuah konstanta, yaitu dengan
menggunakan preprocessor directive #define. Untuk mengetahui lebih jauh tentang
manfaat penggunaan konstanta, perhatikan program di bawah ini.

#include <iostream>
using namespace std;

int main() {
int A[5]
for (int C=0; C<5; C++) {
A[C] = C * 10;
}
for (int c=0; c<5; c++) {
cout<<A[c]<<endl;
}

return 0;
}

Algoritma dan Pemrograman I Bag-2 20


Anda bingung? Jika Anda belum memahami maksud dari sintaks program di atas, itu 'wajar'
dan Anda tidak perlu cemas karena semuanya akan kita pelajari pada bab-bab selanjutnya
dalam buku ini. Namun, yang perlu Anda perhatikan di sini adalah bilangan 5 di atas.
Bilangan tersebut muncul beberapa kali dalam program, hal ini akan merepotkan jika temyata
kita ingin melakukan perubahan terhadap bilangan tersebut dengan bilangan yang lain,
misalnya 10. Jika kita menggunakan sintaks di atas maka kita harus melakukan perubahan terhadap
semua bilangan 5 yang ada dengan bilangan 10.
Untuk itu, dalam kasus ini sebaiknya kita menjadikan bilangan 5 tersebut ke dalam suatu konstanta
sehingga jika terjadi perubahan kita hanya melakukan perubahan nilai terhadap konstantanya saja.
Berikut ini program yang merupakan program perbaikan dari program sebelumnya.

#include <iostream>
#define MAX 5;

using namespace std;

int main() {
int A[MAX];
for (int C=0; C<MAX; C++) {
A[C] = C * 10;
}
for (int c=0; c<MAX; c++) {
cout<<A[c]<<endl;
}

return 0;
}

a. Menggunakan Kata Kunci const


Selain dari cara di atas, dalam C++ kita dapat mendefinisikan sebuah konstanta dengan
menggunakan kata kunci const. Berikut ini adalah bentuk umumnya.
const tipe_data nama_konstanta = nilai_tetapan;

Contoh pendeklarasian konstanta-konstanta adalah sebagai berikut:


const double PI = 3.14;
const int x = 5;
const char nama =’Nano’;

Untuk dapat lebih memahaminya, berikut ini dituliskan sebuah sintaks program yang
merupakan implementasi dari penggunaan kata kunci const.

#include <iostream>
using namespace std;

const int MAX = 5;

int main() {
int A[MAX];
for (int C=0; C<MAX; C++) {
A[C] = C * 10;
}
for (int c=0; c<MAX; c++) {
cout<<A[c]<<endl;
}

return 0;
}

Algoritma dan Pemrograman I Bag-2 21


VARIABEL
Berbeda dengan konstanta yang mempunyai nilai tetap, variable adalah sebuah identifier
yang mempunyai nilai dinamis. Arti kata 'dinamis' di sini bermaksud bahwa nilai variabel
tersebut dapat kita ubah sesuai kebutuhan dalam program. Berikut ini adalah bentuk umum
pendeklarasian sebuah variabel dalam C++.

tipe__data nama_variabel;

Sebenarnya bentuk umum ini sudah dijelaskan pada bagian awal yaitu pada bagian yang
menerangkan pendeklarasian identifier, hanya di sini lebih dikhususkan lagi, yaitu hanya
untuk variabel. Jika kita akan mendeklarasikan beberapa variabel yang bertipe sama, maka
kita dapat menyingkat penulisannya dengan menggunakan bentuk umum di bawah ini.

tipe_data nama_variabell, nama_variabel2, nama_variabel3;

Contoh :

int A, B, C;

Sedangkan jika kita ingin rnelakukan inisialisasi (memberi nilai awal), maka sintaksnya
dapat di ganti dengan menggunakan sintaks berikut:

int A=10, B=15, C=25;

a. Variabel Global
Jika kita sedang membuat program dan kita membutuhkan sebuah variabel yang dapat
dikenali oleh semua lingkungan dalam program kita, maka kita harus mendefinisikan
variable tersebut sebagai variabel yang bersifat gobal. Kita telah mengetahui bahwa
program dalam bahasa C++ selalu terdapat fungsi utama dengan nama main() .
Jika kita mendeklarasikan sebuah variabel di luar fungsi, maka dengan sendirinya
kompiler akan menganggap variabel tersebut sebagai variabel global. Berikut ini adalah
contoh program yang rnenunjukkan penggunaan variabel yang bersifat global.

#include <iostream>
using namespace std;
int A; // Variabel A adalah variabel global
// karena dideklarasikan di luar fungsi utama

// Membuat fungsi utama


int main() {
A = 10; // Memasukkan (assign) nilai ke dalam variabel
cout<<"Nilai A = "<<A<<endl;

return 0;
}

b. Variabel Lokal
Berbeda sekali dengan variabel global, variabel lokal adalah variabel yang hanya
dikenali oleh suatu fungsi saja, artinya tidak dikenal oleh lingkungan luar di dalam
program yang kita buat. Adapun bentuk pendeklarasian variabel yang bersifat lokal ini
harus berada dalam lingkup fungsi yang dimaksud. Berikut ini contoh pendeklarasian
variabel yang bersifat lokal.

Algoritma dan Pemrograman I Bag-2 22


#include <iostream>
using namespace std;
// Membuat fungsi utama
int main() {
int A; // Variabel A bersifat lokal dan hanya dikenali
// oleh fungsi utama atau main()
A = 10; // Memasukkan (assign) nilai ke dalam variabel A
cout<<"Nilai A = "<<A<<endl;
return 0;
}
Jika kita menambahkan fungsi lain di dalam program, dan kita mengakses variabel A
yang telah dideklarasikan di dalam fungsi main (} , maka program tidak akan dapat
dijalankan karena fungsi baru yang kita tambahkan tentu tidak dapat mengenali variabel
A di atas. Hal ini merupakan bukti nyata bahwa variabel A di atas bersifat lokal.

c. Inisialisasi Variabel
Dalam penulisan program ada saatnya kita hams melakukan inisialisasi nilai terhadap
sebuah variabel yang dideklarasikan. Artinya jika kita tidak melakukan pengisian nilai
terhadap variabel tersebut, maka variabel masih berisi nilai default. Hal ini sebenarnya
sudah disinggung di atas, namun di sini akan kita bahas kembali melalui contoh-contoh
program. Berikut ini contoh program yang tidak melakukan inisialisasi nilai awal.

#include <iostream>
using namespace std;
int main() {
int X;
// Menampilkan nilai X sebelum dilakukan isian nilai (assignment)
cout<<"Nilai X sebelum dilakukan assigment : "<<X<<endl;
X = 10;
cout<<"Nilai X sesudah dilakukan assignment : "<<X<<endl;
return 0;
}
Hasil dari program di atas adalah sebagai berikut

Nilai X sebelum assignment : 0


Nilai X setelah assignment : 10

Pada hasil di atas dapat kita lihat bahwa jika kita tidak melakukan inisialisasi dan kita
sudah memanggil variable tersebut, maka nilai yang akan ditampilkan oleh compiler
adalah nilai 0. Berikut ini jika program di atas ditambahkan proses inisialisasi.

#include <iostream>
using namespace std;

int main() {
int X = 5;
cout<<"Nilai X sebelum dilakukan assignment : "<<X<<endl;
X = 10;
cout<<"Nilai X sesudah dilakukan assignment : "<<X<<endl;

return 0;
}
Hasil dari program di atas adalah sebagai berikut

Nilai X sebelum assignment : 5


Nilai X setelah assignment : 10

Algoritma dan Pemrograman I Bag-2 23


Variabel Statis
Variabel statis adalah variabel yang menempati ruang memori komputer secara
permanen, artinya nilai terakhir dari variabel ini akan terus disimpan. Dalam C++, untuk
menyatakan variabel statis adalah dengan menggunakan kata kunci static. Adapun bentuk
umum pendeklarasiannya adalah seperti yang tampak di bawah ini.
static tipe_data nama_variabel;
Seperti halnya variabel biasa, variabel statis ini juga dibagi ke dalam dua jenis, yaitu
variabel statis lokal dan variabel statis global.
1 . Variabel Statis Lokal
Variabel statis lokal ini diterapkan di dalam suatu fungsi, sehingga nama variabelnya
hanya akan dikenali di dalam fungsi saja. Namun perlu diperhatikan bahwa nilai terakhir
yang dihasilkan akan terus disimpan. Dengan demikian setiap pemanggilan fungsi yang
sama pasti akan memberikan hasil yang berbeda. Untuk mengetahui lebih jauh mengenai
variabel statis, perhatikanlah dua program di bawah ini.
a. Menggunakan variabel biasa
#include <iostream>
using namespace std;
// Membuat fungsi dengan nama contoh
int contoh() {
int A = 0; // Mendeklarasikan variabel biasa
A = A + 10;
return A;
}

int main() { // fungsi utama


int x, y, z; // Mendeklarasikan variabel x, y dan z
x = contoh(); // Memanggil fungsi contoh()
// untuk yang pertama kali
y = contoh(); // Memanggil fungsi contoh()
// untuk yang kedua kali
z = contoh(); // Memanggil fungsi contoh()
// untuk yang ketiga kali
// Menampilkan nilai yang telah diproses di dalam fungsi
cout<<"Nilai fungsi pada pemanggilan pertama : "<<x<<endl;
cout<<"Nilai fungsi pada pemanggilan kedua : "<<y<<endl;
cout<<"Nilai fungsi pada pemanggilan ketiga : "<<z<<endl;
return 0;
}
Hasil dari program di atas adalah sebagai berikut

Nilai fungsi pada pemanggilan pertama : 10


Nilai fungsi pada pemanggilan kedua : 10
Nilai fungsi pada pemanggilan ketiga : 10

b. Menggunakan variabel statis


#include <iostream>
using namespace std;

// Membuat fungsi dengan nama contoh


int contoh() {
static int A = 0; // Mendeklarasikan variabel statis lokal
A = A + 10;
return A;
}

Algoritma dan Pemrograman I Bag-2 24


// Fungsi utama
int main() {

int x, y, z; // Mendeklarasikan variabel x, y dan z


x = contoh(); // Memanggil fungsi contoh()
// untuk yang pertama kali
y = contoh(); // Memanggil fungsi contoh()
// untuk yang kedua kali
z = contoh(); // Memanggil fungsi contoh()
//untuk yang ketiga kali

// Menampilkan nilai yang telah diproses di dalam fungsi


cout<<"Nilai fungsi pada pemanggilan pertama : "<<x<<endl;
cout<<"Nilai fungsi pada pemanggilan kedua : "<<y<<endl;
cout<<"Nilai fungsi pada pemanggilan ketiga : "<<z<<endl;

return 0;
}

Hasil dari program di atas adalah sebagai berikut

Nilai fungsi pada pemanggilan pertama : 10


Nilai fungsi pada pemanggilan kedua : 20
Nilai fungsi pada pemanggilan ketiga : 30

Jika kita amati hasil program di atas, nilai dari setiap pemanggilan fungsi akan
memberikan hasil yang berbeda. Konsepnya sederhana, yaitu pada pemanggilan
fungsi yang pertama kali nilai variabel A masih bernilai 0 (sesuai dengan inisialisasi).
Fungsi akan menambahkan nilai tersebut dengan 10, maka nilai yang dikembalikan
fungsi contohf) adalah 10. Sampai di sini, karena variabel A adalah variabel statis
maka pada saat pemanggilan fungsi yang kedua, variabel A masih menyimpan nilai
10, bukan 0. Dengan demikian pemanggilan fungsi kedua tentu akan menambahkan
nilai A dengan nilai 10, sehingga nilai yang dikembalikan adalah 20, begitu
seterusnya.

2 . Variabel Statis Global


Dalam memogram dengan bahasa C++, kita diizinkan untuk melakukan pembuatan
fungsi-fungsi dalam file yang terpisah dari program utama. Untuk kasus-kasus
tertentu dimana variabel statis lokal tidak dapat digunakan, kita dapat membuat file
terpisah yang mempunyai variabel statis global.
Sebagai gambaran dari pemahaman materi ini, perhatikanlah contoh penggunaannya
dalam potongan sintaks program di bawah ini.
static int A; // Mendeklarasikan variabel statis global

void set_NilaiA(int aa} ;


int get_NilaiA() ;

void set_NilaiA(int aa){


A = aa;
}

int get_NilaiA() {
A = A + 10;
return A;
}

Algoritma dan Pemrograman I Bag-2 25


Variabel Register
Tidak seperti variabel biasa yang berada di memori, variable register ini akan disimpan di
register CPU. Dengan demikian, untuk mengisikan atau mengubah nilai dari variabel
register tentunya tidak memerlukan akses memori sehingga prosesnya juga akan lebih
cepat. Dalam C++, variable register hanya dapat diisi oleh tipe data char, int dan pointer
saja serta hanya boleh dideklarasikan sebagai variabel lokal ataupun parameter dari sebuah
fungsi. Untuk mendeklarasikan variabel register, kita harus mengunakan kata kunci
register. Bentuk umum dari pendeklarasian variabel register adalah sebagai berikut

register tipe_data nama_variabel;

Berikut ini adalah contoh program yang menggunakan variabel register.

#include <iostream>
using namespace std;

// Membuat fungsi untuk menghitung Me


int Hitung (register int M, register int e) {
register int temp;
temp = 1;
for ( ; e; e--) {
temp = temp * M;
}
}

// Fungsi utama
int main() {
int X;
X = Hitung(5, 3); // Melakukan perhitungan 53
cout<<X<<endl;

return 0;
}

Jika Anda masih bingung dengan kehadiran struktur pengulangan for di atas, Anda dapat
lihat lebih detail pada bab pengulangan.

TIPE DATA
Tipe data berfungsi untuk merepresentasikan jenis dari sebuah nilai yang terdapat dalam
program. Sebagai contoh kita mempunyai suatu data dengan nilai 2, maka 2 termasuk ke
dalam tipe bilangan bulat. Begitupun dengan data yang bernilai "Rahasia C++ ", maka
data tersebut dikategorikan ke dalam tipe teks (string], Kesalahan dalam menyebutkan tipe
data akan menyebabkan program yang kita buat tidak dapat dijalankan. Oleh karena itu,
kita harus pandai dalam menentukan tipe data yang akan digunakan sesuai kebutuhan
program yang kita buat. Dalam bahasa C++, tipe data dibagi menjadi tiga bagian besar
yaitu tipe dasar, tipe bentukan dan tipe enumerasi.

Tipe Data Dasar


Dalam C++ terdapat beberapa tipe data dasar yang telah didefinisikan, yaitu yang
digolongkan ke dalam tipe bilangan bulat (integer), bilangan riil (floating-point), tipe
logika (Boolean), tipe karakter/teks (character/string). Tipe-tipe tersebut adalah tipe yang
siap digunakan tanpa adanya proses manipulasi terlebih dahulu.
a. Tipe Bilangan Bulat
Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka di belakang
koma. Misalnya 21, 3, 78 dan sebagainya. Tipe data yang termasuk ke dalam kategori ini
adalah seperti yang terlihat pada tabel di bawah ini.

Algoritma dan Pemrograman I Bag-2 26


Tipe Data Size(bit) Rentang
int 16 atau 32 -32.768 sampai 32.767 atau
-2,147,483,648 sampai 2,147,483,647
unsigned int 16 atau 32 0 sampai 65.535 atau
0 sampai 4,294,967,295
signed int 16 atau 32 Sama seperti int
short int 16 -32.768 sampai 32.767
unsigned short int 16 0 sampai 65.535
signed short int 16 Sama seperti short int
long int 32 -2.147.483.648 sampai 2.147.483.647
signed long int 32 Sama seperti long int
unsigned long int 32 0 sampai 4.294.967.295

b. Tipe Bilangan Riil


Tipe ini adalah tipe yang merepesentasikan data-data bilangan yang mengandung angka di
belakang koma, misalnya 3.78, 21.03, dan banyak lagi yang lainnya. Adapun tipe data
yang termasuk ke dalam kategori ini adalah seperti yang ditunjukkan pada tabel di bawah
ini.

Tipe Data Size(bit) Rentang Presisi


float 32 1.2E-38 sampai 3.4E+38 6 digit presisi
double 64 2.3E-308 sampai 1.7E+308 15 digit presisi
long double 80 3.4E-4932to1.1E+4932 19 digit presisi

c. Tipe Logika
Tipe ini merepresentasikan data-data yang hanya mengandung dua buah nilai, yaitu nilai
logika (boolean). Nilai logika itu sendiri hanya terdiri dari nilai benar (direpresentasikan
dengan nilai selain nol, biasanya nilai 1) dan salah (direpresentasikan dengan nilai 0).
Untuk sebagian kompiler C++ tertentu yang telah memenuhi standar ANSI/ISO, tipe ini
telah dinyatakan dalam tipe bool. Dalam pemrograman, nilai ini umumnya lebih dikenal
dengan nilai true (benar) dan false (salah).

d. Tipe Karakter / String


Tipe ini merepresentasikan data-data yang berupa karakter. Tipe data ini dinyatakan
dengan tipe char, sedangkan untuk string (=kumpulan karakter) dinyatakan sebagai pointer
dari tipe char, yaitu yang dituliskan dengan char*.
Sebagai contoh adalah karakter 'A', 'a', ' ', '!', '#' dan sebagainya merupakan tipe char,
sedangkan "Mengungkap", "Rahasia", "C++ ", "Budi", "Raharjo" adalah contoh dari tipe
char*.
Untuk lebih memudahkan Anda dalam membedakan tipe karakter dan string adalah tanda
yang mengapitnya. Dalam C++, tipe karakter diapit oleh tanda petik tunggal ('), sedangkan
tipe string diapit oleh tanda petik ganda ("). Adapun tipe data dalam kategori ini yang
didefinisikan oleh ANSI/ISO C++ Standard adalah seperti yang terlihat pada tabel di
bawah ini.

Tipe Data Size(bit) Rentang


char 8 -1 28 sampai 1 27 atau 0 sampai 255
Unsigned char 8 0 sampai 255
signed char 8 -128 sampai 127

Algoritma dan Pemrograman I Bag-2 27


Berikut ini adalah program yang menunjukkan penggunaan tipe data char dan char*.

#include <iostream>
using namespace std;

int main() {
// Mendeklarasikan variabel Karakter dengan nilai 'A'
char Karakter = 'A';
// Mendeklarasikan variabel Teks dengan nilai "Kata"
char* Teks = "Kata";
char TEKS[10] = "Coba";
cout<<Karakter<<endl;
cout<<Teks<<endl;
cout<<TEKS<<endl;
return 0;
}

Hasil yang diperoleh dari program di atas adalah sebagai berikut :


A
Kata
Coba

Tipe Data Bentukan


Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program
yang akan kita buat. Tipe ini lebih dikenal dengan sebutan dalam bahasa asing, yaitu user
defined types. Adapun yang termasuk ke dalam tipe bentukan adalah array (larik), struktur
dan enumerasi. Jika Anda pernah memogram dengan bahasa Pascal, maka struktur ini
dikenal dengan istilah rekaman (record).
a. Structure. (Akan dipelajari pada Semester III.)
b. Enumerasi
Tipe enumerasi adalah tipe data yang nilainya terbatas pada nilai-nilai yang telah
didefinisikan saja. Tipe enumerasi digunakan untuk membentuk tipe data yang nilainya
bersifat pasti. Misalnya untuk mendefinisikan tipe jenis kelamin, nama hari, warna primer
dan sebagainya. Kita tahu bahwa jenis kelamin hanya terdiri dari pria dan wanita saja,
maka jenis kelamin dapat kita bentuk ke dalam tipe enumerasi.
Dalam bahasa C+ + , untuk mendefinisikan tipe enumerasi adalah dengan menggunakan
kata kunci enum. Berikut ini adalah bentuk umum untuk mendefinisikannya.

enum nama_tipe { nllai_l, nilai_2, ...};

Sebagai contoh, di bawah ini dituliskan contoh-contoh pendefinisian tipe enumerasi. .

enum JENIS_KELAMIN {Pria, Wanita};


enum HARI {Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu);
enum WARNA_PRIMER {Merah, Biru, Hijau);

Berikut ini adalah contoh implementasinya di dalam program.

#include <iostream>
using namespace std;

enum JENIS_KELAMIN { Pria, Wanita };

int main() {

JENIS_KELAMIN gender;
cout << “Jenis Kelamin : “; cin >> gender ;
return 0;
}

Algoritma dan Pemrograman I Bag-2 28


STRING

Null Terminated String


Dalam C + + , string yang digunakan bertipe null terminated string, yaitu jenis string yang
diakhiri oleh karakter null ('\0'), bukan nol. Kita tahu bahwa string adalah kumpulan (array)
dari karakter, oleh karena itu jika kita akan mendeklarasikan variabel bertipe string, maka
kita harus melebihkan lebar sebanyak satu karakter untuk posisi karakter null. Sebagai
contoh kita akan melakukan deklarasi variabel yang bertipe string dan mengisikannya dengan
teks 'Budi’, maka bentuk deklarasinya adalah sebagai berikut:

// Mendeklarasikan variabel yang bertipe string dengan lebar 5


char NAMA[5];

// Mengisikan nilai ke dalam variabel NAMA


‘B’ ‘u’ ‘d’ ‘I’ ‘\0’
NAMA = "Budi";
NAMA[0]
Jika kita amati potongan tulisan sintaks di atas,
sebenarnya kita hanya mengisikan 4 karakter ke NAMA[1]
dalam variabel NAMA, sedangkan sisa ruangnya NAMA[2]
akan digunakan untuk menempatkan karakter null. NAMA[3]
Untuk lebih jelasnya coba perhatikan ilustrasi di
NAMA[4]
samping ini.
Dalam mengisikan nilai ke variabel yang bertipe string, kita tidak perlu memasukkan
karakter null secara manual, karena C++ secara otomatis akan menambahkannya. Untuk
membuktikan hal ini, perhatikanlah program di bawah ini.

#include <iostream>
using namespace std;

int main() {
// Mendeklarasikan variabel NAMA dengan tipe char dan
// lebar 5 karakter
char NAMA[5];
// Mengisikan nilai ke dalam variabel NAMA
NAMA = "Budi";
cout<<"Karakter ke-0 : "<<NAMA[0]<<endl;
cout<<"Karakter ke-1 : "<<NAMA[1]<<endl;
cout<<"Karakter ke-2 : "<<NAMA[2]<<endl;
cout<<"Karakter ke-3 : "<<NAMA[3]<<endl;
cout<<"Karakter ke-4 : "<<NAMA[4]<<endl;
return 0;
}
Hasil yang diperoleh dari program di atas adalah sebagai berikut;

Karakter ke-0 : B
Karakter ke-1 : u
Karakter ke-2 : d
Karakter ke-3 : i
Karakter ke-4 : 0

Dalam C++, terdapat beberapa fungsi siap pakai yang berguna untuk menyelesaikan
masalah-masalah yang berkaitan dengan string. Untuk menggunakan fungsi-fungsi tersebut
kita harus mendaftarkan file header string.h (untuk C + + lama) atau <cstring>
(untuk C++ standar).
Berikut ini fungsi-fungsi yang dimaksudkan :

Algoritma dan Pemrograman I Bag-2 29


1. Fungsi strcpy()
Bentuk umum dari fungsi strcpy() dapat dilihat di bawah ini.
char* strcpy() (char S1, const char* S2 )

Fungsi ini berguna untuk melakukan penyalinan (copy) string dari S2 ke S1. Contoh
penggunaannya dalam program adalah sebagai berikut:

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

int main() {
char S1[50];
char* S2;
// Melakukan pengisian nilai terhadap variabel S2
S2 = "Ini adalah contoh penyalinan string";
// Melakukan penyalinan string dari variabel S2 ke variabel S1
strcpy(S1, S2);
// Menampilkan nilai dari variabel S1
cout<<S1<<endl;
return 0;
}

Hasil yang diperoleh dari program di atas adalah sebagai berikut:

Ini adalah contoh penyalinan string

2. Fungsi strncpy( )
Bentuk umum dari fungsi strncpy ( ) dapat dilihat di bawah ini.

char* strncpy{char* SI, const char* S2, size_t n ) ;

Fungsi ini berguna untuk menyalin string sebanyak n karakter dari variabel S2 ke
variabel S1. Contoh penggunaannya dalam program adalah sebagai berikut;

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

int main() {
char S1[50];
char* S2;
// Melakukan pengisian nilai terhadap variabel S1 dan S2
S1 = "CONTOH";
S2 = "salin string";
// Melakukan penyalinan string dari variabel S2 ke variabel S1
strcpy(S1, S2, 4);
// Menampilkan nilai dari variabel S1
cout<<S1<<endl;
return 0;
}

Hasil yang diperoleh dari program di atas adalah sebagai berikut :

saliOH

Algoritma dan Pemrograman I Bag-2 30


3, Fungsi strdup()
Bentuk umum dari fungsi strdup() dapat dilihat di bawah ini.
char* strdup(const char* S);
Fungsi ini sebenarnya mirip dengan fungsi strcpy( ) , yaitu untuk melakukan duplikasi
string. Contoh penggunaannya dalam program adalah sebagai berikut:
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char* S1;
char* S2;
// Melakukan pengisian nilai terhadap variabel S1
S1 = "Contoh Duplikasi String";
// Melakukan duplikasi string dari varaibel S1 ke variabel S2
S2 = strdup(S1);
// Menampilkan nilai dari variabel S2
cout<<S2<<endl;
return 0;
}

Contoh Duplikasi String

4. Fungsi strcat()
Bentuk umum dari fungsi strcat ( ) dapat dilihat di bawah ini.
char* atrcat(char* Si, const char* S2);

Fungsi ini berguna untuk menggabungkan (concat) string dari S2 ke posisi akhir dari SI.
Contoh penggunaannya dalam program adalah sebagai berikut:

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

int main() {
char* S1;
char* S2;
char* spasi = " ";
// Melakukan pengisian nilai terhadap variabel S1 dan S2
S1 = "Teks";
S2 = "Gabungan";
// Menambahkan karakter spasi (' ') ke dalam variabel S1
strcat(S1, spasi);
// Melakukan penggabungan string yang terdapat
// pada variabel S1 dan S2
strcat(S1, S2);
// Menampilkan nilai dari variabel S1
// setelah proses penggabungan
cout<<S1<<endl;
return 0;
}

Hasil yang diperoleh dari program di atas adalah sebagai berikut :

Teks gabungan

Algoritma dan Pemrograman I Bag-2 31


5. Fungsi strncat()
Bentuk umum dari fungsi strncat ( ) dapat dilihat di bawah ini.
char* strncatfchar* S1, const char* S2, size_t n);

Fungsi ini berguna untuk menggabungkan n karakter dari variabel S2 ke posisi akhir dari
variabel Si. Contoh penggunaannya dalam program adalah sebagai berikut:
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char* S1;
char* S2;
// Melakukan pengisian nilai terhadap variabel S1 dan S2
S1 = "Nama saya adalah ";
S2 = "Budi Raharjo";
// Menggabungkan 4 karakter dari variabel S2 ke variabel S1
strncat(S1, S2, 4);
// Menampilkan nilai dari variabel S1
// setelah dilakukan penggabungan
cout<<S1<<endl;
return 0;
}

Nama saya adalah Budi

6. Fungsi strlen()
Bentuk umum dari fungsi strlen ( ) dapat dilihat di bawah ini.
size_t strlen{const char* S);

Fungsi ini berguna untuk mengembalikan panjang string dari S. Contoh penggunaannya
dalam program adalah sebagai berikut:
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char* S1;
char* S2;
int panjang_S1, panjang_S2;
// Melakukan pengisian nilai terhadap variabel S1 dan S2
S1 = "Budi";
S2 = "Raharjo";
panjang_S1 = strlen(S1);
panjang_S2 = strlen(S2);
// Menampilkan nilai dari variabel panjang_S1 dan panjang_S2
cout<<"Panjang S1 : "<<panjang_S1<<endl;
cout<<"Panjang S2 : "<<panjang_S2<<endl;
return 0;
}

Panjang S1 : 4
Panjang S2 : 7

Algoritma dan Pemrograman I Bag-2 32


7. Fungsi strcmp()
Bentuk umum dari fungsi strcmp ( ) dapat dilihat di bawah ini.
int •trcmp(const char* SI, const char* S2);

Fungsi ini berguna untuk membandingkan string yang terdapat pada variabel S1 dan S 2.
Nilai yang akan dikembalikan yaitu :
• 0 (nol): hal ini terjadi jika S1 sama dengan S2
• kurang dari 0 (negatif) : hal ini terjadi jika S1 lebih kecil dari S2
• lebih dari 0 (positif) : hal ini terjadi jika S1 lebih besar dariS2

Contoh penggunaannya dalam program adalah sebagai berikut:


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

int main() {
char* S1;
char* S2;

// Melakukan pengisian nilai yang sama


// terhadap variabel S1 dan S2
S1 = "COBA";
S2 = "COBA";

// Menampilkan hasil perbandingan string


// dari variabel S1 dan S2
cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl;

// Melakukan perubahan nilai terhadap variabel S1


S1 = "Coba";

// Menampilkan kembali hasil perbandingan string


// dari variabel S1 dan S2
cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl;

// Melakukan perubahan nilai terhadap variabel S2


S2 = "coba";

// Menampilkan kembali hasil perbandingan string


// dari variabel S1 dan S2
cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl;

return 0;
}

Hasil perbandingan : 0
Hasil perbandingan : 32
Hasil perbandingan : -32

8. Fungsi strrev()
Bentuk umum dari fungsi strrev ( ) dapat dilihat di bawah ini :
char* strrev(char* S);
Fungsi ini berguna untuk membalikkan string dari variabel S. Contoh penggunaannya
dalam program adalah sebagai berikut :

Algoritma dan Pemrograman I Bag-2 33


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

int main() {
char* S = "Budi Anduk";
// Melakukan penulisan string mulai dari
// posisi akhir variabel S
strrev(S);
// Menampilkan nilai dari variabel S setelah dibalik
cout<< S<<endl;
return 0;
}

kudnA iduB

9. Fungsi strchr()
Bentuk umum dari fungsi strchr() dapat dilihat di bawah ini.
char* strchr( const char* S, int ch );

Fungsi ini akan mencari lokasi karakter dari suatu string. Jika karakter ditemukan, maka
fungsi ini akan mengembalikan pointer dari string yang dimulai dari karakter tersebut,
tetapi jika tidak maka fungsi akan mengembalikan nilai 0. Contoh penggunaannya dalam
program adalah sebagai berikut:

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

int main() {
char* S = "C++ adalah segalanya bagiku";
char* PStr;
// Melakukan pencarian karakter '+' di dalam varaibel S
PStr = strchr(S, '+');
// Menampilkan nilai dari variabel PStr
cout<< PStr<<endl;
return 0;
}

++ adalah segalanya bagiku

10. Fungsi strstr()


Bentuk umum dari fungsi strchr() dapat dilihat di bawah ini.

char* strstr(const? char* S, const char* substr);

Fungsi ini akan mencari lokasi substring dari suatu string. Jika substring ditemukan,
maka fungsi ini akan mengembalikan pointer dari string yang dimulai dari substring
tersebut, tetapi jika tidak maka fungsi akan mengembalikan nilai 0. Konsep yang terdapat
pada fungsi adalah sama seperti fungsi strchr() .
Contoh penggunaannya dalam program adalah sebagai berikut :

Algoritma dan Pemrograman I Bag-2 34


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

int main() {
char* S = "Pencipta C++ adalah Bjarne Stroustrup";
char* PStr;
// Melakukan pencarian substring "Bjarne" di dalam varaibel S
PStr = strstr(S, 'Bjarne');
// Menampilkan nilai dari variabel PStr
cout<< PStr<<endl;
return 0;
}

Bjarne Stroustrup

Konversi String
Dalam pembuatan sebuah program kerap kali kita dituntut untuk melakukan perubahan
terhadap format string, misalnya mengubah string menjadi huruf kapital ataupun sebaliknya.
Untuk melakukan hal ini, C++ telah menyediakan dua buah fungsi, yaitu strlwr ( ) dan
strupr().
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char* K = "CONTOH MENGECILKAN HURUF";
char* B = "contoh membesarkan huruf";
char* hasilK, hasilB;
// Mengubah string dari variabel S menjadi huruf kecil
hasilK = strlwr(K);
hasilB = strlwr(B);
// Menampilkan nilai dari variabel hasil
cout<< hasilK <<endl;
cout<< hasilB <<endl;
return 0;
}

contoh mengecilkan huruf


CONTOH MEMBESARKAN HURUF

Input String
Jika kita hanya menggunakan statemen cin dalam memasukkan string ke sebuah variabel,
maka kita akan mengalami kesulitan jika ternyata string yang kita masukkan tersebut
mengandung spasi (karakter ' '). Hal ini disebabkan spasi pertama yang ditemukan dalam
sebuah string yang diinput melalui keyboard akan dianggap sebagai karakter null. Untuk
lebih memahami konsep input string, perhatikan contoh-contoh program di bawah ini.
#include <iostream>
using namespace std;

int main() {
char S[20];
cout<<"Masukkan nama Anda : ";
// Meminta input dari user dan menyimpan nilainya
// ke dalam variabel S, misal Budi
cin>>S;
// Menampilkan kembali nama yang telah dimasukkan
cout<<"Hai "<<S<<", apa kabarmu?"<<endl;

Algoritma dan Pemrograman I Bag-2 35


return 0;
}
Pada saat program di atas dijalankan dan misalnya kita mengisikan nama tesebut dengan
string "Budi", maka hal ini tidak menimbulkan masalah. Adapun hasil yang akan diberikan
adalah sebagai berikut :

Hai Budi, apa kabarmu?

Namun, apa yang terjadi bila kita memasukkan string "Budi Anduk"?
Temyata hasil yang diberikan masih tetap sama seperti pada kotak di atas (ingat tanda spasi
dianggap terminated string=akhir dari sebuah string), padahal hasil yang kita inginkan
adalah seperti yang tampak di bawah ini.

Hai Budi Anduk, apa kabarmu?

Kita tentu tidak menginginkan hal di atas terjadi. Oleh karena itu, untuk menjawab kasus ini
kita harus menggunakan fungsi getline(), dengan bentuk umum fungsinya adalah :
&istream getline(char* buffer, int ukuran,char delimiter = '\n' ) ;
&istream getline(signed char* buffer, int ukuran,char delimiter = '\n') ;
&istream getline(unsigned char* buffer, int ukuran, char delimiter = '\n' ) ;

Setelah mengetahui fungsi getline(), sekarang kita kembali ke pokok permasalahan kita yaitu
dengan memperbaiki program di atas dengan sintaks berikut:
#include <iostream>
using namespace std;
int main() {
char S[20];
cout<<"Masukkan nama Anda : ";
// Meminta input dari user menggunakan fungsi getline
cin.getline(S, sizeof(S) - 1);
// Menampilkan kembali nama yang telah dimasukkan
cout<<"Hai "<<S<<", apa kabarmu?"<<endl;
return 0;
}

Atau kita juga dapat menggunakan objek string, yaitu dengan menuliskannya seperti di
bawah ini.
#include <iostream>
#include <cstring>
using namespace std;

int main() {
string S;
cout<<"Masukkan nama Anda : ";
// Meminta input dari user menggunakan fungsi getline
getline(cin, S);
// Menampilkan kembali nama yang telah dimasukkan
cout<<"Hai "<<S<<", apa kabarmu?"<<endl;

return 0;
}

Hasil yang diberikan oleh kedua program di atas adalah sama saja. Jika kita memasukkan
string "Budi Anduk", maka hasil yang akan ditampilkan adalah sesuai dengan apa yang
kita inginkan seperti tampak di bawah ini.

Hai Budi Anduk, apa kabarmu?

Algoritma dan Pemrograman I Bag-2 36


OPERATOR

Dalam pengembangan sebuah program kerap kali dituntut untuk mendefinisikan operasi-
operasi di dalamnya, baik itu berupa operasi perhitungan, perbandingan maupun yang
lainnya. Untuk melakukan hal ini tentunya kita harus menggunakan operator, Pada bagian ini
Anda akan dikenalkan dengan operator-operator yang terdapat pada bahasa C++ beserta
penggunaannya di dalam program.
Bahasa C++ sendiri menawarkan banyak operator untuk melakukan pemecahan masalah-
masalah tertentu di dalam program. Dalam buku ini operator-operator tersebut akan
dikelompokkan ke dalam 4 bagian, yaitu operator assignment, unary, binary dan ternary.
Sebagai pengenalan bagi Anda, sebelum melangkah ke pembahasan yang lebih jauh, berikut
ini istilah-istilah yang harus diketahui dalam bekerja dengan operator. Misalnya jika terdapat
suatu statemen yang berupa persamaan matematika dan dituliskan sebagai berikut:
F=3+7
F adalah Variabel
= adalah Operator Assignment
3 dan 7 adalah Operand
3+7 adalah Ekspresi
+ adalah Operator Aritmetika (Penjumlahan)
F=3+7 adalah Statemen Aritmetika

Operator Assignment
Operator assignment adalah operator yang berfungsi untuk memasukkan (assign) nilai ke
dalam suatu variabel ataupun konstanta. Operator ini dilambangkan dengan tanda sama
dengan (=).
#include <iostream>
using namespace std;

int main () {
// Mendeklarasikan konstanta
// dengan melakukan assignment dengan nilai 3.14
const PI = 3.14;

// Mendeklarasikan variabel-variabel
char MyChar; // Mendeklarasikan variabel bertipe char
char* MyString; // Mendeklarasikan variabel bertipe char*
int MyInteger; // Mendeklarasikan variabel bertipe int
double MyDouble; // Mendeklarasikan variabel bertipe double
// Melakukan assignment terhadap variabel-variabel di atas
MyChar = 'C';
MyString = "Mengungkap Rahasia C++";
MyInteger = 21;
MyDouble = 21.0378;

// Menampilkan nilai dari variabel-variabel di atas


cout<<"MyChar : "<<MyChar<<endl;
cout<<"MyString : "<<MyString<<endl;
cout<<"MyInteger : "<<MyInteger<<endl;
cout<<"MyDouble : "<<MyDouble;

return 0;
}

Algoritma dan Pemrograman I Bag-2 37


Operator Unary
Dalam ilmu matematika yang disebut dengan operator unary adalah operator yang hanya
melibatkan sebuah operand. Adapun yang termasuk ke dalam operator unary adalah seperti
tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh


+ Membuat nilai positif +7
- Membuat nilai negatif -7
++ Increment C++ atau ++C
-- Decrement C-- atau --C

#include <iostream>
using namespace std;

int main() {

int C; // Mendeklarsikan variabel C

// Mengisikan nilai ke dalam variabel C dengan nilai 5


C = 5;
// Melakukan pre-increment
cout<<"Nilai C awal : "<<C<<endl; Nilai C awal ; 5
cout<<"Nilai ++C : "<<++C<<endl; Nilai++C ;6
cout<<"Nilai C akhir : "<<C<<endl; Nilai C akhir ; 6
cout<<'\n';

// Mengubah nilai yang terdapat dalam variabel C


// dengan nilai 10
C = 10;

// Melakukan post-increment
cout<<"Nilai C awal : "<<C<<endl; Nilai C awal ; 10
cout<<"Nilai C++ : "<<C++<<endl; Nilai++C ;10
cout<<"Nilai C akhir : "<<C<<endl; Nilai C akhir ; 11

// Mengisikan nilai ke dalam variabel C dengan nilai 5


C = 5;
// Melakukan pre-decrement
cout<<"Nilai C awal : "<<C<<endl; Nilai C awal ; 5
cout<<"Nilai --C : "<<--C<<endl; Nilai --C ;4
cout<<"Nilai C akhir : "<<C<<endl; Nilai C akhir ; 4
cout<<'\n';

// Mengubah nilai yang terdapat dalam variabel C


// dengan nilai 10
C = 10;

// Melakukan post-decrement
cout<<"Nilai C awal : "<<C<<endl; Nilai C awal ; 10
cout<<"Nilai C-- : "<<C--<<endl; Nilai C-- ;10
cout<<"Nilai C akhir : "<<C<<endl; Nilai C akhir ; 9
return 0;
}

Operator Binary
Operator binary adalah operator yang digunakan dalam operasi yang melibatkan dua buah
operand. Dalam bahasa C++ , operator binary ini dikelompokkan lagi ke dalam empat jenis
operator, yaitu :
1. Aritmetika,
2. Logika,

Algoritma dan Pemrograman I Bag-2 38


3. Relasional dan
4. Bitwise.

Operator Aritmetika
Operator aritmetika adalah operator yang digunakan untuk melakukan operasi-operasi
aritmetika seperti penjumlahan, pengurangan dan sebagainya. Adapun yang termasuk dalam
operator aritmetika di dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh


+ Penjumlahan 2+3=5
- Pengurangan 5-3=2
* Perkalian 2*3=6
/ Pembagian 10.0 / 3.0 = 3.3333
% Sisa bagi (modulus) 10 % 3 = 1

#include <iostream>
using namespace std;

int main() {
// Mendeklarasikan variabel X, Y dan Z bertipe int
int X = 10, Y = 3;
int B, M, K ;

// Mendeklarasikan variabel A, B dan C bertipe float


float A = 10.0, Y = 3.0;
float P, Q;

// Operand Bilangan Bulat


// Melakukan operasi perkalian
K = X * Y;

// Melakukan operasi pembagian dan modulus


B = X / Y;
M = X % Y;

// Menampilkan hasil
cout<<X<<" * "<<Y<<" = "<<K<<endl; 10 * 3 = 30
cout<<X<<" / "<<Y<<" = "<<B<<endl; 10 / 3 = 3
cout<<X<<" % "<<Y<<" = "<<M<<endl; 10 % 3 = 1

// Operand Bilangan decimal (floating point)


// Melakukan operasi perkalian
P = A * B;

// Melakukan operasi pembagian


Q = A / B;

// Menampilkan hasil
cout<<A<<" * "<<B<<" = "<<P<<endl; 10.0 * 3.0 = 30.00
cout<<A<<" / "<<B<<" = "<<Q<<endl; 10.0 / 3.0 = 3.33
return 0;
}

Operator Logika
Operator logika adalah operator yang digunakan untuk melakukan operasi dimana nilai yang
dihasilkan dari operasi tersebut hanya berupa nilai benar (true) dan salah (false], Nilai ini
disebut dengan nilai boolean. Boolean sendiri ditemukan oleh seorang matematikawan
Inggris yang bernama George Bool.
Dalam bahasa C++, nilai benar tersebut direpresentasikan dengan bilangan selain 0 (biasanya
nilai 1), sedangkan nilai salah direpresentasikan dengan nilai 0.

Algoritma dan Pemrograman I Bag-2 39


Namun, dalam bahasa C++ modern yang telah mendukung tipe bool, nilai benar
direpresentasikan dengan nilai true dan nilai salah dengan nilai false. Dalam buku ini, kita
hanya akan memakai nilai 0 dan 1 untuk merepresentasikan nilai salah dan benar. Adapun
yang termasuk ke dalam operator logika dalam C++ adalah seperti yang tampak pada tabel di
bawah ini.

Operator Jenis Operasi Contoh


&& AND (Perkalian Logika, dan) 1 && 0 = 0
1 && 1 = 1
0 && 0 = 0
|| OR (Penjumlahan Logika, atau) 1 || 0 = 1
1 || 1 = 1
0 || 0 = 0
! NOT (Negasi, Inversi) !0 = 1
!1 = 0

Operator Relasional
Operator relasional adalah operator yang digunakan untuk menentukan relasi atau hubungan
dari dua buah operand. Operator ini ditempatkan di dalam sebuah ekspresi, yang kemudian
akan menentukan benar atau tidaknya sebuah ekspresi. Adapun yang termasuk dalam
operator relasional di dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh Hasil


> Lebih besar (5 > 2) True
< Lebih Kecil (5 < 2) False
>= Lebih besar atau sama dengan (5 >= 5) True
<= Lebih kecil atau sama dengan (5 <= 2) False
== Sama dengan (5 == 2) False
!= Tidak sama dengan (5 != 2) True

Operator ini banyak digunakan untuk melakukan pengecekan sebuah ekspresi (kondisi)
dalam struktur percabangan yang akan dibahas pada bab selanjutnya dalam buku ini.

Operator Bitwise
Tidak seperti kebanyakan bahasa pemrograman lainnya, C/C++ mendukung penuh operator-
operator bitwise. Operator bitwise sendiri berguna untuk melakukan operasi-operasi yang
berhubungan dengan pemanipulasian bit. Sejak bahasa C diciptakan, bahasa C banyak
digunakan untuk lebih memudahkan pemrograman yang berhubungan dengan alat.
Hal ini disebabkan karena bahasa tersebut mendukung operasi-operasi bitwise yang biasanya
dilakukan dengan menggunakan bahasa assembly. Walaupun demikian, pada kenyataannya,
untuk menyelesaikan kasus-kasus tertentu bahasa C/C++ masih harus menggunakan bahasa
assembly yang disisipkan di dalamnya. Hal ini disebut dengan istilah inline assembly, yang
akan dibahas pada lampiran di dalam buku ini. Sebagai catatan bahwa operator bitwise ini
hanya dapat dilakukan pada operand yang bertipe char dan int saja karena ini berkoresponden
dengan tipe byte atau word di dalam bit.

Algoritma dan Pemrograman I Bag-2 40


Adapun yang termasuk dalam operator bitwise dalam C++ adalah seperti yang tampak pada
tabel di bawah ini.

Operator Jenis Operasi Contoh


& AND 1&0=0
| OR 1 |0=1
^ Exclusive OR (XOR) 1^ 1=0
0^ 0=0
~ NOT ~1=0
>> Shift Right 10 >> 1 = 5
<< Shift Left 5 << 1 = 10

#include <iostream>
using namespace std;

int main() {
int X, Y;

// Menggeser 1 bit ke kanan dari


// bentuk biner bil 10 yaitu 1010 --> 0101
X = 10 >> 1;

// Menggeser 1 bit ke kiri dari


// bentuk biner bil 5 yaitu 0101 --> 1010
Y = 5 << 1;

// Menampilkan hasil
cout<<"10 >> 1 = "<< X <<endl;
cout<<" 5 << 1 = "<< Y <<endl;
return 0;
}

Desimal Biner(4 bit) Hexadesimal Contoh


0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5 8 >> 1 = 4 geser kanan 1 bit 1000  0100
6 0110 6 8 >> 2 = 2 geser kanan 2 bit 1000  0010
7 0111 7
8 1000 8 11<<1 = 6 geser kiri 1 bit 1011  0110
9 1001 9 15<<3 = 8 geser kiri 3 bit 1110  1000
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Algoritma dan Pemrograman I Bag-2 41


Operator Ternary
Operator ternary adalah operator yang digunakan dalam operasi yang melibatkan tiga buah
operand. Adapun operator yang digunakan untuk menyatakannya adalah operator ?. Konsep
yang mendasari operasi ini adalah suatu percabangan (pemilihan) yang didasarkan atas
kondisi tertentu. Berikut ini bentuk umum dari penggunaan operator ternary.

Ekspresil ? Ekspresi2 : Ekpresi3;

Jika ekspresil bernilai benar, maka program akan mengeksekusi ekpresi2. Sedangkan jika
ekspresil bernilai salah maka yang dieksekusi adalah ekspresi3. Berikut ini adalah contoh
program yang menggunakan operator tersebut.


int X ;
X = (X < 0) ? -X : X;
...

Penggalan instruksi di atas maknanya adalah :


X bilangan bulat.
X bersyarat < 0, yaitu - X : jika tidak < 0, maka + X.

Pernyataan di atas dapat disederhanakan dengan bahasa samaran berikut :

jika X < 0 maka -X selainnya X

Dalam bahasa pemrograman C++ ditulis :


if ( X<0 ) -X else X ;

atau

X = (X < 0) ? -X : X;

Jadi penulisan X=(X<0) ? -X : X adalah untuk meringkas IF .. ELSE diatas.

Algoritma dan Pemrograman I Bag-2 42

Anda mungkin juga menyukai