Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
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.
FILE
Source Code Pre-Processor Link Editor
EXECUTABLE
Object Code
Compiler Assembler
Assembly Code
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.
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();
}
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.
#include <iostream>
using namespace std;
int main()
{
char nama[20];
int umur;
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....!
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;
}
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;
…………
…………
}
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;
....
....
}
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.
/* 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>
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;
}
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;
}
#include <iostream>
#define 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;
}
Untuk dapat lebih memahaminya, berikut ini dituliskan sebuah sintaks program yang
merupakan implementasi dari penggunaan kata kunci const.
#include <iostream>
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;
}
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.
Contoh :
int A, B, C;
Sedangkan jika kita ingin rnelakukan inisialisasi (memberi nilai awal), maka sintaksnya
dapat di ganti dengan menggunakan sintaks berikut:
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
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.
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
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
return 0;
}
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.
int get_NilaiA() {
A = A + 10;
return A;
}
#include <iostream>
using namespace std;
// 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.
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).
#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;
}
#include <iostream>
using namespace std;
int main() {
JENIS_KELAMIN gender;
cout << “Jenis Kelamin : “; cin >> gender ;
return 0;
}
#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 :
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;
}
2. Fungsi strncpy( )
Bentuk umum dari fungsi strncpy ( ) dapat dilihat di bawah ini.
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;
}
saliOH
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;
}
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;
}
Teks gabungan
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;
}
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
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
int main() {
char* S1;
char* S2;
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 :
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;
}
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 :
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;
}
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;
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.
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.
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;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// 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
// 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,
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.
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan variabel X, Y dan Z bertipe int
int X = 10, Y = 3;
int B, M, K ;
// 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
// 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.
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 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.
#include <iostream>
using namespace std;
int main() {
int X, Y;
// Menampilkan hasil
cout<<"10 >> 1 = "<< X <<endl;
cout<<" 5 << 1 = "<< Y <<endl;
return 0;
}
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;
...
…
atau
X = (X < 0) ? -X : X;