Modul Pemrograman C++

Document Sample
Modul Pemrograman C++ Powered By Docstoc
					Modul KL. Pemrograman C++

                                   PEMROGRAMAN C++

Tujuan
   1. Menerangkan elemen­elemen yang ada di dalam program C++
   2. Menerangkan fungsi dari tiap elemen di dalam C++

Kemampuan
  1. Praktikan mengenal elemen­elemen yang terkandung di dalam program C++
  2. Praktikan mengetahui cara eksekusi program C++ menggunakan g++

Pendahuluan

Pemrograman C++ di dalam sistem operasi Linux menggunakan software g++ %GNU C++%. 
Kompiler ini dapat secara otomatis terinstall pada saat menginstall sistem operasi, dengan catatan 
kita memilih opsi untuk menginstall g++.

Kompilasi   menggunakan   g++   dilakukan   di   dalam   console   Linux.   Dengan   teelebih   dahulu 
menyimpan file source C++ ke dalam file berekstension .cpp, .cp, cxx, c++, cp, atau cc. Lalu 
tempatkan dalam folder home/<nama user>.  Ketikkan perintah

       g++ <path/nama file.cpp> ­o <file output>

path file tidak diperlukan apabila terlebih dahulu kita masuk ke dalam folder tempat file source 
disimpan. File output bisa tidak diberikan, namun secara default g++ akan membuat file output 
bernama a.out.

Setelah kompilasi dilakukan, cek apakah kompilasi sudah berhasil dengan melihat pesan  hasil 
kompilasi. Jika terdapat  pesan error maka file output  belum terbentuk. Kita  perlu melakukan 
editing source kemudian compile  lagi. Cara lain untuk  mengetahui apakah kompilasi   berhasil 
dengan memasuki folder tempat file source di simpan, dan ketikkan perintah 

       ls

Apabila telah muncul file output yang kita definisikan atau file a.out maka kompilasi berhasil. 


Ilmu Komputer UGM                                                                            1
Modul KL. Pemrograman C++

Sebaliknya jika file belum muncul maka kompilasi belum berhasil. Eksekusi file output dengan 
mengetikkan perintah

       ./<nama file output>

Perintah ini membuat kita dapat melihat hasil program yang sudah dibuat.

Bentuk umum file source C++ adalah sebagai berikut :

#include <iostream.h>
#include <string.h>
#define jumlah 50

void tampilan(float c);
float penjumlahan(float a);

int main()
{
     float b;
     cout << “Masukkan nilai = “ << endl;
     cin >> b;
     tampilan(b);
     b = penjumlahan(b);
     cout << “nilai b = “ << b;

       return 0;
}

void tampilan(float c)
{
     cout << “nilai c = “ << c << endl;
}

float penjumlahan(float a)
{
     return(a+5);
}

Berikut penjelasan bagian­bagian dari program.

#include <iostream.h>

Ilmu Komputer UGM                                                                   2
Modul KL. Pemrograman C++

#include <string.h>
#define jumlah 50

Baris   tersebut   merupakan  preprocessor  program.  Berisi   perintah   include   dan   define.   Include 
digunakan untuk menyisipkan file library atau program C++. Sedangkan define digunakan untuk 
mendefinisikan nilai konstanta. File include biasanya berisi header­header fungsi yang digunakan 
pada source. Misalnya pada contoh di atas menggunakan fungsi cout dan cin untuk menampilkan 
keluaran ke monitor dan menerima masukan dari keyboard. Kedua fungsi tersebut termuat dalam 
file include iostream.h. Oleh karena itu apabila tidak disertakan include iostream.h dalam source di 
atas, maka fungsi cout dan cin akan menimbulkan error.

Fungsi   include  dalam g++ tersimpan di  dalam folder /usr/include  atau  /usr/include/c++/<versi 
c++>. Untuk file include di /usr/include merupakan file include bersama. Disebut bersama karena 
sebenarnya file­file tersebut biasa digunakan oleh bahasa C, namun C++ juga bisa memakainya. 
Tetapi tidak semua file include C bisa dipakai oleh C++. Seperti string.h, bisa dipakai C maupun 
C++.

Sebuah trik dalam pemrograman C++, semisal kita menggunakan suatu fungsi yang kita tidak 
mengetahui   headernya   dimuat   di   file   include   apa.   Kita   bisa   menelusurinya   satu   per   satu. 
Contohnya   kita   akan   menggunakan  fungsi   sqrt,   untuk   menghitung   akar   kuadrat   dari   suatu 
bilangan.  Fungsi   sqrt   tidak  bisa   digunakan  begitu   saja.   Kita   harus   memuat  file   header  yang 
mendefinisikan fungsi sqrt. Fungsi sqrt terdapa di file include antara math.h dan tgmath.h. Jika 
bingung akan memilih yang mana, coba cek satu per satu. dalam file math.h cari kata #define sqrt, 
jika tidak ditemukan cari di file tgmath.h. Ternyata fungsi sqrt dijumpai di file tgmath.h. Jadi, 
untuk menggunakan fungsi sqrt di dalam source kita harus menginclude file tgmath.h. Berikut 
cuplikan fungsi sqr di file tgmath.h
/* Return the square root of X.  */
#define sqrt(Val) __TGMATH_UNARY_REAL_IMAG (Val, sqrt, csqrt)

File yang diinclude akan disisipkan pada awal program yang kita buat.

Baris define akan mendefinisikan suatu konsanta bernama jumlah dengan nilai 10. Karena berupa 
konstanta, maka nilai jumlah tidak pernah bisa diubah. Variabel konstanta jumlah tidak memiliki 
tipe data, sehingga pemakaiannya terbatas.

Baris berikutnya adalah

Ilmu Komputer UGM                                                                                    3
Modul KL. Pemrograman C++


void tampilan(float c);
float penjumlahan(float a);

merupakan  prototipe   fungsi.   Pemrograman  C++   memperbolehkan  kita   membuat  suatu  fungsi 
dimana   pemakaian   fungsi   bermanfaat   untuk   lebih   menyederhanakan   atau   menstrukturkan 
penulisan program. Misalkan dalam sebuah algoritma memuat proses pengurutan data, pencarian 
nilai tertinggi, dan pencarian modus data, tentu masing­masing proses tersebut akan lebih mudah 
diimplementasikan dalam program jika dikelompok­kelompokkan menjadi suatu fungsi tersendiri.

Fungsi berisi sub program. Dengan kata lain, fungsi adalah penyusun program secara keseluruhan. 
Ada dua ciri dalam menggunakan fungsi di dalam program yang kita buat. Pertama, fungsi selalu 
didahului dengan prototipe­nya. Dan yang kedua, fungsi didefinisikan sub programnya.

Dari   contoh   di   atas   terlihat   bahwa   fungsi   selalu   mempunyai   tipe   data,   yaitu   void   dan   non 
void(integer, float, char, dsb). Ada perbedaan dari fungsi bertipe void dan non void. Fungsi bertipe 
void tidak mengembalikan nilai, sedangkan fungsi bertipe non void akan mengembalikan suatu 
nilai sesuai dengan tipe datanya.

Baris selanjutnya dimulai dengan 
        int main()

dan diakhiri dengan tanda kurawal tutup }. Yaitu fungsi main yang mengembalikan nilai integer. 
Setiap program C++ harus memiliki fungsi ini. Karena ketika compiler C++ melakukan kompilasi 
program, kursor kompilasi diletakkan mulai dari baris ini. Kemudian kursor bergerak dari kiri ke 
kanan dan dari atas ke bawah. Kursor kompilasi dapat melompat ketika menemukan baris yang 
memaksa dia untuk berpindah arah. Seperti pada baris 

tampilan(b);
b = penjumlahan(b);

kursor kompilasi akan berpindah menuju ke sub program fungsi tampilan dan fungsi penjumlahan.

Pada baris akhir terdapat definisi sub program untuk masing­masing fungsi

void tampilan(float c)
{

Ilmu Komputer UGM                                                                                         4
Modul KL. Pemrograman C++

       cout << “nilai c = “ << c << endl;
}

float penjumlahan(float a)
{
     return(a+5);
}

Perhatikan tipe data, nama, dan parameter fungsi, semuanya sama seperti pada prototipe fungsinya. 
Karena berupa sub program maka fungsi diawali dengan tanda kurawal buka { dan diakhiri dengan 
kurawal tutup }. Pembahasan lebih lanjut mengenai fungsi pada bab Function. 




Ilmu Komputer UGM                                                                       5
Modul KL. Pemrograman C++

                             TIPE DATA DAN VARIABEL

Tujuan
   1. Menerangkan macam­macam tipe data di dalam C++
   2. Menerangkan maksud dari variabel
   3. Menerangkan operasi­operasi variabel yang didukung oleh C++

Kemampuan
  1. Praktikan memahami macam­macam tipe data di dalam C++
  2. Praktikan memahami proses pembentukan variabel
  3. Praktikan mengetahui macam­macam operasi variabel yang didukung oleh C++

Pendahuluan

Di dalam memprogram kita sering melakukan penyimpanan nilai. Kemudian nilai itu kita kalikan, 
kita jumlah, dlsb. Nilai tersebut harus disimpan di dalam memori komputer agar bisa dioperasikan. 
Sebelum suatu nilai disimpan ke dalam memori, terlebih dahulu dilakukan pengalokasian memori. 
Cara ini disebut dengan deklarasi variabel.

Semisal kita membutuhkan sebuah memori untuk menyimpan nilai. Maka pertama kita kapling 
memori tersebut dan memberinya nama. Hal itu saja tidak cukup, kita juga perlu mendefinisikan 
tipe data yang bisa masuk ke dalam memori tersebut.
Tipe data dalam C++ ada bermacam­macam, antara lain :


  Tipe Data     Jumlah Bit                  Jangkauan                      Keterangan

char                       8 ­128 s/d 127                           karakter

int                       16 ­32768 s/d 32767                       integer

float                     32 3.4E­38 s/d 3.4E+38                    real

double                    64 1.7E­308 s/d 1.7E+308                  real presisi ganda

void                       0 ­                                      tak bertipe


Ilmu Komputer UGM                                                                        6
Modul KL. Pemrograman C++


Sehingga untuk menyimpan suatu nilai, diperlukan deklarasi variabel sbb :

<tipe data> <nama variabel> [= ekspresi]

Contoh :  float  nilai =  10;,  baris ini   berarti   :  alokasikan  sebuah  memori   bertipe float  dengan 
alamat/nama   nilai   dan   bernilai   10.   Pengisian   nilai   bersama   dengan   deklarasi   variabel 
diperbolehkan <tidak seperti di Pascal>. Nama variabel bebas, jika nama lebih dari satu  kata 
jangan dipisahkan dengan tanda spasi.

Ekspresi merupakan statement yang berisi operasi matematika atau operasi logika. Semisal ada 
statement  seperti ini : x = 5 + 6. Statement tersebut merupakan ekspresi. Contoh lain : x = y | z. 
Statement ini juga merupakan ekspresi dengan operasi logika. 
Variabel didefinisikan sebelum digunakan. Pendefinisiannya boleh di mana saja (di dalam program 
utama, di dalam perulangan, di dalam statement control statement). Biasanya kita akan meletakkan 
deklarasi variabel secara mengelompok dan tepat di awal program utama. Hal ini hanya untuk 
memudahkan pengecekan apakah suatu variabel sudah didefinisikan atau belum. Berikut contoh 
pendefinisian variabel.

#include <iostream.h>

int main()
{
     int y;
     float x = 12.3;
     char huruf;

        y = 5;
        huruf = 'Y';

        cout << “Nilai Y = “ << y << endl;
        cout << “Nilai X = “ << x << endl;
        cout << “Huruf = “ << huruf << endl;

        return 0;
}

Nama variabel adalah case sensitive. Artinya ketika kita memberikan nama sebuah variabel dengan 


Ilmu Komputer UGM                                                                                7
Modul KL. Pemrograman C++

Jumlah  tidak akan sama dengan variabel bernama jumlah, JUMLAH, atau JumLah.
Setelah variabel dideklarasikan dan diisi nilainya, selanjutnya variabel dapat dioperasikan. Operasi 
di dalam C++ ada beberapa macam, antara lain :


     Simbol               Arti

*             Perkalian

/             Pembagian

%             Sisa pembagian (MOD)

+             Penjumlahan

­             Pengurangan

++            Penjumlahan dengan 1

­­            Pengurangan dengan 1

 
Pemakaian operasi di atas berbentuk seperti berikut :

variabel_penampung = variabel_operan1 <operasi> variabel_operan2;

Contoh pemakaiannya : x = x + 10;
Operasi lainnya yang juga berlaku untuk vaiabel dalam C++ adalah operasi bit <operasi logika>. 
Berikut simbol­simbol operasi logika :


     Simbol               Arti

>>            geser bit ke kanan

<<            geser bit ke kiri

^             XOR

~             NOT


Ilmu Komputer UGM                                                                          8
Modul KL. Pemrograman C++

    Simbol              Arti

|             OR

&             AND


Pengunaannya sama seperti operasi aritmetika di atas, memakai dua operan dan satu variabel 
penampung kecuali untuk operasi ~(NOT). Operasi logika adalah operasi yang berlaku pada bit 
nilai variabel. Seperti misalnya kita melakukan operasi

int x = 10;
x = x << 1;

Hasil dari x digeser bitnya ke kiri satu bit menjadi x = 20. Penjelasannya sbb :
x = 10          ­> 0000 0000 0000 1010
digeser ke kiri 1 bit menjadi
x = 20          ­> 0000 0000 0001 0100
Contoh lain 

int x = 10;
x = x &(~x);

Hasilnya nilai x = ­1. Penjelasannya sbb :
x = 10         ­> 0000 0000 0000 1010
dan ~x         ­> 1111 1111 1111 0101 
Kemudian dikenakan operasi AND, maka hasilnya menjadi
x = 0          ­> 0000 0000 0000 0000

Operator Kombinasi

C++ memperbolehkan operator kombinasi untuk memperpendek penulisan suatu ekspresi. Sebagai 
contoh 

x = x + 2;
y = y * 3;



Ilmu Komputer UGM                                                                  9
Modul KL. Pemrograman C++

dapat dikombinasikan menjadi 

x += 2;
y *= 3;

Kombinasi yang lain adalah


         Ekspresi                      Kependekan dari

x += 2                x = x + 2 

x ­= 2                x = x ­ 2

x *= 2                x = x * 2

x /= 2                x = x / 2

x %= 2                x = x % 2

x << 2                x = x << 2

x >> 2                x = x >> 2

x &= 2                x = x & 2

x |= 2                x = x | 2

x ^= 2                x = x ^ 2


Konversi Tipe Data

Suatu ekspresi bisa mengandung lebih dari dua operan. Jika masing­masing operan berbeda tipe 
maka C++ akan melakukan konversi tipe data agar semuanya sama, baru dioperasikan. Ada dua 
kunci dalam konversi ini. Pertama, apabila ada dua atau lebih operan tetapi masih dalam jenis yang 
sama (misalnya : tipe int, char, longint masih satu jenis tipe yaitu tipe integer. Atau tipe float, 
double masih dalam satu jenis tipe yaitu tipe real) maka konversi dilakukan otomatis oleh C++.

Jika ada salah satu operan bertipe longint, maka semua operan diubah ke longint. Atau jika salah 

Ilmu Komputer UGM                                                                        10
Modul KL. Pemrograman C++

satu  operan bertipe double, maka semua operan diubah ke tipe data double. Ciri konversi ini 
adalah, tipe data yang digunakan adalah tipe data yang memiliki bit paling luas dari salah satu tipe 
data yang dipakai operan. 

Cara kedua menggunakan variabel cast. Ini digunakan apabila ada dua operan yang memiliki jenis 
yang berbeda, misalnya float dengan int. Cara menggunakannya sbb :

int x;
float y, jumlah;
jumlah = y * (float) x;
Atau :

int x, y;
float jumlah;
jumlah = (float) (x * y);

(float) akan memaksa variabel yang mengikutinya dikonversi ke tipe data yang didefinisikan.

Definisi Konstanta

Seperti  yang sudah dijelaskan sebelumnya, cara mendefinisikan konsanta dapat dengan  fungsi 
define di preprocessor. Namun ada cara mendefinisikan konsanta yang lebih baik. Yaitu dengan 
fungsi const. Contoh deklarasinya

#include <iostream.h>

int main()
{
     const int nilai = 90;
     const float jumlah = 80.6;
}

Kenapa membuat konsanta lebih baik menggunakan const? Karena tipe data variabel konsanta 
jelas. Sehingga operasi terhadap variabel konstanta jelas pula. Jika konstanta bertipe char, maka 
variabel konstanta dapat diberlakukan fungsi­fungsi pengolah karakter.

Typedef


Ilmu Komputer UGM                                                                         11
Modul KL. Pemrograman C++


Suatu kali kita mengulang dalam menuliskan tipe data yang cukup panjang, misalnya : unsigned 
short   int.   Kesalahan  penulisan  bisa   saja   terjadi.  Untuk  memperpendek  nama  tipe   data,   C++ 
menyediakan fasilitas fungsi typedef untuk menggantikan nama tipe data yang panjang. Caranya 
sbb :

#include <iostream.h>
typedef unsigned short int tipe;

int main()
{
     tipe nilai, jumlah;
     nilai = 90;
     jumlah = 80;
     return 0;
}

Program contoh di atas sama  saja apabila  kita  menggantikan tipe data  bernama  'tipe'  dengan 
unsigned short int.

Enumerasi

Enumerasi  adalah  mendefinisikan   beberapa   konsanta   sekaligus.  Fungsi   untuk   mendefinisikan 
konstanta enumerasi menggunakan enum. Sebagai contoh perhatikan program berikut 
#include <iostream.h>

int main()
{
     enum warna{hijau, merah, biru, cokelat, putih, hitam};
     cout << hijau << endl;
     cout << merah << endl;
     return 0;
}

Cara  mendefinisikan konstanta   enumerasi  dapat  ditempuh  dengan  cara  seperti   contoh.   Fungsi 
enum diikuti dengan nama konstanta dan nilai­nilai enumerasi dimasukkan dalam tanda kurawal.

Hasilnya adalah hijau untuk konstanta bernilai 0, merah = 1, biru = 2, dst. Namun apabila kita 


Ilmu Komputer UGM                                                                              12
Modul KL. Pemrograman C++

ingin nilai­nilai tersebut kita definisikan sendiri, maka penulisannya menjadi 

#include <iostream.h>

int main()
{
     enum warna{hijau =100, merah, biru=500, cokelat, putih, 
     hitam};
     cout << hijau << endl;
     cout << merah << endl;
     cout << cokelat << endl;
     return 0;
}

Hasilnya hijau bernilai = 100, merah = 101, dan cokelat = 501.




Ilmu Komputer UGM                                                                 13
Modul KL. Pemrograman C++

                                     BASIC INPUT OUTPUT

Tujuan
   1. Menerangkan operasi input dan output di dalam C++
   2. Menerangkan parameter input dan output
   3. Menerangkan operasi output ke dalam file

Kemampuan
  1. Praktikan memahami cara menggunakan operasi input dan output di dalam C++
  2. Praktikan mampu menggunakan operasi output ke dalam file

Pendahuluan

Input output g++ menggunakan basis console. Seperti yang telah kita bahas sebelumnya, input 
output   ditangani   oleh   file   include   iostream.h.   Dari   fungsi­fungsi   input   output   kita   bisa 
menampilkan keluaran di layar monitor dan menerima masukan dari keyboard. 

Cout

Cout untuk menampilkan keluaran di monitor memiliki bentuk bebas dan tidak standar. Tetapi 
fungsi ini selalu diikuti dengan tanda kurang dari dobel (<<). Berikut cara penggunaan cout :

cout << [string|variabel|special character] << [string|variabel|special 
character] << dst...

Contohnya sbb :

int f = 10;
cout << “Nilai f “ << f << "\tnilai F lagi = " << f << endl;

Parameter cout bisa lebih dari satu seperti terlihat pada contoh di atas. Isi parameter cout juga 
bervariasi, bisa berupa string, variabel, ataupun special character. “Nilai f “ adalah parameter 
berupa string, yang akan ditampilkan apa adanya ke dalam monitor. f adalah variabel bertipe 
integer, yang akan ditampilkan isi dari variabel tersebut. Sedangkan \f merupakan special character 
yang berarti menambahkan tab horizontal.


Ilmu Komputer UGM                                                                                  14
Modul KL. Pemrograman C++

Special character yang didukung oleh C++ antara lain :


     Karakter                   Fungsi

\n               baris baru

\t               tab horizontal

\v               tab vertical

\f               jarak form

\a               bunyi alarm

\”               mencetak double quote

\\               mencetak back slash

\(digit oktal)   mencetak bilangan oktal

\x(digit         mencetak bilangan hexadecimal
hexadecimal

Special character \n sama dengan fungsi endl.

Cin

Berfungsi untuk menangkap masukan dari keyboard. Masukan yang akan ditangkap adalah semua 
karakter yang ditekan dalam keyboard sebelum tanda enter ditekan. Sebagai contoh 

#include <iostream.h>

int main()
{
     int b;
     cout << “Masukkan nilai b = “;
     cin >> b;
     return 0;
}



Ilmu Komputer UGM                                                               15
Modul KL. Pemrograman C++

Pada   program   di   atas   kursor   eksekusi   akan   berhenti   sejenak   saat   mengeksekusi   baris   cin. 
Menunggu   tombol   enter  ditekan.  Ketika   tombol   enter  ditekan  seluruh/sebagian  karakter  yang 
ditekan sebelum tombol enter akan dimasukkan ke dalam variabel b.

Karakter  yang   dimasukkan   bisa   berupa   angka  (bulat/pecahan),   huruf   dan   karakter.   Cin   akan 
menyimpan   masukan   ke   dalam   variabel,   oleh   karena   itu   masukannya   juga   tidak   boleh 
sembarangan. Masukan harus sesuai dengan tipe data variabel yang menampung.

Output File

Kita juga bisa menyimpan output program ke dalam file. Fungsi ini menggunakan dua file include, 
yaitu : stdio.h dan stdlib.h. Ada dua tipe output yang biasa kita temui. Pertama output berupa 
angka dan output berupa string.

Khusus   output   berupa   angka  (pecahan/bulat),  kita   perlu   melakukan  konversi   supaya   menjadi 
string. Konversi ini menggunakan fungsi dari stdlib.h bernama gcvt, fcvt, atau ecvt. Ketiga fungsi 
tersebut  mempunyai   empat   parameter   kecuali   gcvt.   Parameter   pertama   adalah  variabel   yang 
menyimpan  angka.  Yang   kedua  adalah  jumlah  digit   pembulatan.  Parameter  ketiga  merupakan 
variabel yang menyimpan (berupa array bertipe char) nilai angka tersebut setelah dikonversi ke 
dalam string. 

Berikut deklarasi gcvt, fcvt, dan ecvt dalam stdlib.h

extern   char   *ecvt   (double   __value,   int   __ndigit,   int   *__restrict 
__decpt, int *__restrict __sign) __THROW;
extern   char   *fcvt   (double   __value,   int   __ndigit,   int   *__restrict 
__decpt, int *__restrict __sign) __THROW;
extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW;

Setelah nilai angka dikonversi menjadi string, kemudian disimpan ke dalam file menggunakan 
fungsi fputs dari stdio.h. Berikut deklarasi dari fputs dalam file stdio.h

extern   int   fputs   (__const   char   *__restrict   __s,   FILE   *__restrict 
__stream);

Dari   deklarasi   kita   bisa   mengetahui   bahwa   fungsi   fputs   memiliki   dua   parameter   masukan. 


Ilmu Komputer UGM                                                                                   16
Modul KL. Pemrograman C++

Masukan pertama adalah variabel penyimpan string yang akan dituliskan ke dalam file. Dan yang 
kedua adalah pointer yang menunjuk ke file penyimpan.

File tempat menyimpan string terlebih dahulu didefinisikan terlebih dahulu dengan fungsi fopen 
dari stdio.h. Berikut deklarasi fungsi fopen

extern FILE *fopen (__const char *__restrict __filename,
               __const char *__restrict __modes);

Dari deklarasi fungsinya dapat diketahui bahwa fopen memiliki dua parameter masukan. Pertama 
adalah  path   file   akan  disimpan.  Dan  yang   kedua  adalah  metode   yang   dipakai.  Metode   yang 
digunakan sbb :
 r     : file hanya bisa dibaca
 w : file baru selalu menulis. Sehingga jika sudah ada file bernama yang sama, maka                  file 
   tersebut akan ditimpa isinya.
 a     : file akan diisi data pada akhir baris, jika file sudah ada isinya.
Setelah selesai menyimpan ke dalam file, maka file harus ditutup supaya file dapat diakses oleh 
aplikasi lainnya. Penutupan file ini dengan fungsi fclose yang masih dalam satu file include dengan 
fopen. Parameter fclose hanya ada satu, yaitu pointer yang menunjuk ke file. 

Contoh penyimpanan output pada file sbb :

char str[25];
int sig = 5;
pf = fopen("output/bobot_w.h","w");
for (k=0; k<neuron_y; k++)
{
     for (j=0; j<neuron_z; j++)
     {
           gcvt(bobot_w[j][k], sig, str);
           fputs(str, pf);
           fputs("\n",pf);
     }
}
fclose(pf);

Cuplikan program di atas menggambarkan penyimpanan suatu nilai berupa angka yang disimpan 
dalam variabel bobot_w ke dalam file yang terletak di folder output dan file bobot_w.h.


Ilmu Komputer UGM                                                                              17
Modul KL. Pemrograman C++

                                  CONTROL STATEMENT
Tujuan
   1. Menerangkan macam­macam control statement di dalam C++
   2. Menerangkan cara menggunakan control statement
   3. Menerangkan operasi logika untuk mengatur kondisi salam control statement

Kemampuan
  1. Praktikan memahami cara menggunakan control statement
  2. Praktikan memahami cara mengatur kondisi di dalam control statement

Pendahuluan

Control statement dapat menjadikan program menjadi fleksibel. Karena dengan control statement 
kita bisa mendefinisikan baris program yang akan dieksekusi apabila suatu kondisi terpenuhi, dan 
tidak dieksekusi apabila kondisi tidak terpenuhi. Dalam C++ control statement ada dua jenis. 
Pertama, memakai if...else dan yang kedua memakai switch case.

If ... Else 

Bentuk umum dari statement if adalah

if (kondisi)
{
     statement1;
     statement2;
     ....
     statementN;
}

atau :

if (kondisi)
{
     statement1;
     statement2;
     ....
     statementN;


Ilmu Komputer UGM                                                                     18
Modul KL. Pemrograman C++

}

else if (kondisi)
{
     statement1;
     statement2;
     ....
     statementN;
}

........

else
{
       statement1;
       statement2;
       ....
       statementN;
}

Tingkatan if...else disesuaikan dengan kebutuhan. 
Kondisi yang harus dipenuhi dapat berbentuk ekspresi dengan operator logika dan operator relasi.

Operator logika yang bisa digunakan antara lain :


       Simbol                         Arti

&&                     AND

||                     OR

                       NOT


Sedangkan operator relasi antara lain :


       Simbol                        Arti

==                     sama dengan



Ilmu Komputer UGM                                                                      19
Modul KL. Pemrograman C++

       Simbol                        Arti

>=                     lebih dari sama dengan

>                      lebih dari

<=                     kurang dari sama dengan

<                      kurang dari

=                      tidak sama dengan


Contoh program

#include <iostream.h>

int main()
{
     int b;
     float jumlah = 0; 
     cout << “Masukkan nilai b = “;
     cin >> b;

       if (b > 10)
            jumlah = jumlah + b;
       else
            jumlah = jumlah – b;

       return 0;
}

contoh di atas apabila variabel diberi nilai lebih dari 10 maka statement jumlah = jumlah + b akan 
dijalankan. Namun apabila nilai yang dimasukkan sama dengan 10 atau kurang dari 10, maka 
statement else dijalankan. Karena statement hanya satu baris maka tanda kurawal bisa dihilangkan.

Kursor kompilasi akan menjalankan statement jumlah = jumlah + b apabila kondisi pertama true, 
kemudian kebenaran dari else tidak dicek karena kondisi pertama sudah true. Namun jika kondisi 
pertama tidak true baru else dicek.



Ilmu Komputer UGM                                                                       20
Modul KL. Pemrograman C++

Dalam mendesain control statement sebaiknya kita menggunakan garis bilangan supaya mudah 
untuk mengetahui wilayah true masing­masing kondisi. Semisal kita memiliki control statement 
dengan kondisi sbb :

if (b >= 20)
else if (b < 20) AND (b >= 10)
else if (b <= 5) AND (b >= 0)
else

contoh di atas memiliki 4 kondisi dengan garis bilangan masing­masing

                                                                  kondisi 1
                                20


                                                                  kondisi 2
                      10              20

                                                                  kondisi 3
                        0   5

                                                                  kondisi 4
                       0          5              10


Pengecekan 4 kondisi di atas terjadi pertama kali di kondisi 1. Apabila kondisi 1 sudah true maka 
kondisi­kondisi berikutnya tidak dicek oleh kursor kompilasi. Namun jika kondisi pertama tidak 
true, maka kondisi kedua dicek. Kondisi kedua sudah true maka kondisi lainnya di bawah kondisi 
dua tidak dicek. Begitu seterusnya hingga kondisi keempat. Pengecekan seperti ini terjadi karena 
control statement di atas masih dalam satu blok.
Pentingnya menggambarkan garis bilangan juga kita jumpai pada kasus tertentu seperti contoh 
berikut :

if (b >= 20)
else if (b < 20) AND (b >= 25)

Garis bilangannya sbb :

                                                                  kondisi 1

Ilmu Komputer UGM                                                                      21
Modul KL. Pemrograman C++

                                     20
                                                                    kondisi 2
                       20           25

Terdapat ketimpangan daerah true antara kondisi 1 dan 2. Ketimpangan terjadi pada b >= 25. 
Kondisi 1 dan 2 memenuhi nilai tersebut. Namun karena kedua kondisi masih dalam satu blok 
control statement maka kondisi 1 saja yang akan dijalankan statementnya karena kondisi satu lebih 
dahulu dijumpai oleh kursor kompilasi.

Blok kondisi dimulai dengan kata if dan diakhiri dengan kata else atau adanya blok kondisi baru. 
Misalnya

if (kondisi)
if (kondisi)
else if (kondisi)
else if (kondisi) AND (kondisi)
else
if (kondisi)
else if (kondisi)

Pada contoh di atas terdapat tiga blok control statement. blok 1 adalah baris pertama, blok 2 adalah 
baris 2­5, dan blok 3 adalah baris 6­7. Blok kondisi berbeda dengan control statement bersarang. 
Masing­masing blok memiliki kedudukan sejajar. Berikut contoh control statement bersarang

if (kondisi)
{
     statement;
     ....

       if (kondisi)
            statement;
       else if (kondisi)
            statement;
       else if (kondisi) AND (kondisi)
       {
            if (kondisi)
                  statement;
            else if (kondisi)
                  statement;
            else

Ilmu Komputer UGM                                                                         22
Modul KL. Pemrograman C++

                     statement;
       }
       else
                statement;
}

Contoh di atas memiliki blok control statement yang berbeda. Namun ketiga blok control statement 
tersebut tidak sama tingkatannya. Blok ketiga merupakan bagian dari blok kedua, dan blok kedua 
merupakan bagian dari blok pertama.  

Contoh lain :

#include <iostream.h>

int main()
{
     int input;
     cout << "Masukkan hari ke­ = ";
     cin >> input;

       if (input == 1)
       {
            cout << "Anda memasukkan hari minggu";
       }
       else if (input == 2)
       {
            cout << "Anda memasukkan hari senin";
       }
       else if (input == 3)
       {
            cout << "Anda memasukkan hari selasa";
       }
       else if (input == 4)
       {
            cout << "Anda memasukkan hari rabu";
       }
       else if (input == 5)
       {
            cout << "Anda memasukkan hari kamis";
       }
       else if (input == 6)


Ilmu Komputer UGM                                                                     23
Modul KL. Pemrograman C++

        {
              cout << "Anda memasukkan hari jumat";
        }
        else if (input == 7)
        {
              cout << "Anda memasukkan hari sabtu";
        }
        else 
        {
              cout << "Bukan input hari/salah masukan";
        }
        return 0;
}

Contoh ini akan kita bandingkan dengan control statement menggunakan switch ... case.

Switch ... Case

Control statemen menggunakan switch ... case hanya pada kondisi yang memakai operasi relasi 
sama   dengan.   Pada   contoh   terakhir   control   statement   menggunakan   if   else,   semua   kondisi 
menggunakan operasi relasi sama dengan. Oleh karenanya untuk menyederhanakan penulisan, bisa 
digunakan switch ... case seperti pada contoh

#include <iostream.h>

int main()
{
     int input;
     cout << "masukkan hari ke­ ";
     cin >> input;

        switch(input)
        {
             case 1 : cout << "minggu";
             break;
             case 2 : cout << "senin";
             break;
             case 3 : cout << "selasa";
             break;
             case 4 : cout << "rabu";
             break;

Ilmu Komputer UGM                                                                                24
Modul KL. Pemrograman C++

                case 5 : cout << "kamis";
                break;
                case 6 : cout << "jumat";
                break;
                case 7 : cout << "sabtu";
                break;
                default : cout << "bukan input hari/salah masukan";
                break;
        }
        return 0;
}

switch case menyederhanakan penulisan berulang­ulang if else dan kondisi­kondisinya. Kesalahan 
ketik dapat diminimilasir. Selain itu pengecekan kondisi lebih mudah menggunakan switch case. 
Ada fungsi tambahan yaitu break. gunanya untuk keluar dari switch jika salah satu kondisi telah 
terpenuhi. Dengan adanya break, apabila salah satu case sudah ada yang terpenuhi maka case lain 
di  bawahnya tidak dicek.  Oleh karenanya dengan adanya break kita bisa membedakan apakah 
kondisi tersebut masih dalam satu blok atau tidak.

Default   merupakan   pengganti   dari   else   pada   contoh   sebelumnya.   Jika   semua   kondisi   tidak 
terpenuhi maka default akan dijalankan. Pada contoh yang berbeda


#include <iostream.h>

int main()
{
     int input;
     cout << "masukkan hari ke­ ";
     cin >> input;

        switch(input)
        {
             case 1 : cout << "minggu";
             case 2 : cout << "senin";
             case 3 : cout << "selasa";
             case 4 : cout << "rabu";
             case 5 : cout << "kamis";
             case 6 : cout << "jumat";
             case 7 : cout << "sabtu";
             default : cout << "bukan input hari/salah masukan";

Ilmu Komputer UGM                                                                                25
Modul KL. Pemrograman C++

        }
        return 0;
}
Break pada tiap­tiap pernyataan dihilangkan, maka pengecekan kondisi input pasti tidak kurang 
dari   8  kali. Jika  salah satu  kondisi  telah  terpenuhi  maka kondisi  di  bawahnya  juga ikut  true. 
Sebagai contoh semisal input bernilai 4, maka akan tampil di layar monitor hari rabu, kamis, 
jumat, sabtu, bukan input/salah masukan. Hal ini disebabkan kondisi di bawah case 4 ikut true. 




Ilmu Komputer UGM                                                                             26
Modul KL. Pemrograman C++

                                           PERULANGAN

Tujuan
   1. Menerangkan macam­macam perulangan yang didukung oleh C++
   2. Menerangkan cara menggunakan perulangan di dalam program
   3. Menerangkan perbedaan dari masing­masing jenis perulangan

Kemampuan
  1. Praktikan mampu menggunakan perulangan di dalam program
  2. Praktikan   mengetahui   perbedaan  dari   masing­masing   jenis   perulangan   yang   ada   serta 
     mampu memilih perulangan yang akan digunakan sesuai dengan kebutuhannya

Pendahuluan

Ada 4 bentuk perulangan dalam C++, antara lain :
1. goto
2. while
3. do ... while
4. for
Keempat   perulangan   memiliki   fungsi   secara   umum   sama,   namun   ada   fungsi   spesifik   yang 
membedakan keempat perulangan. Oleh karena itu tiap kasus perulangan tidak dapat memakai 
satu jenis bentuk perulangan saja. Misalnya perulangan for digunakan untuk kasus perulangan 
yang sudah diketahui jumlah perulangan yang akan dilakukan. Perulangan menggunakan while 
digunakan untuk perulangan yang tak tentu jumlah perulangannya. Contohnya :

#include <iostream.h>

int main()
{
     char input = 'Y';

        while ((input != 'T') && (input == 'Y'))
        {
             cout << "Diulang lagi...";
             cout << "Anda mau mengulang?(Y/T)";
             cin >> input;
        }


Ilmu Komputer UGM                                                                             27
Modul KL. Pemrograman C++

        return 0;
}

Perulangan yang digunakan adalah while karena jumlah perulangan tidak diketahui. Program di 
atas tidak bisa digantikan misalnya dengan perulangan for.

Goto

Berikut contoh perulangan menggunakan goto.

#include <iostream.h>
int main()
{
     int hitung = 0;
label : hitung++;
     if (hitung <= 10)
           goto label;
           cout << "hitung = " << hitung << endl;
     cout << "hitung selesai";
     return 0;
} 

Keluaran dari program di atas adalah hitung = 11. Perintah goto diikuti dengan label, dimana label 
tersebut merupakan penunjuk baris yang akan diulang. Jalannya program di atas pertama, hitung 
berisi  nilai 0. Kemudian hitung  ditambah satu  menjadi  1. Nilai  hitung dicek  pada kondisi  if. 
Apabila hitung <= 10 maka statemen if dijalankan. Yaitu kursor kompilasi melompat ke baris yang 
diberi label. Begitu seterusnya hingga kondisi if tidak dipenuhi. Sehingga kursor kompilasi tidak 
lagi melompat namun meneruskan baris program selanjutnya. Yaitu menampilkan nilai hitung.

Perulangan menggunakan goto kurang terstruktur. Bisa Anda bayangkan jika terdapat banyak label 
di source yang Anda buat. Lalu banyak pula perintah goto yang menuju ke label­label tersebut dan 
saling melompati. Hasilnya program akan susah untuk dibaca. Kalau program susah dibaca, tentu 
mencari kesalahan program juga sulit dilakukan. Karenanya perulangan ini jarang digunakan.

While

Perhatikan program berikut :


Ilmu Komputer UGM                                                                        28
Modul KL. Pemrograman C++

#include <iostream.h>

int main()
{
     int iterasi = 0;

        while (iterasi < 10)
        {
             cout << "Iterasi ke­" << iterasi << endl;
             iterasi++;
        }
        return 0;
}

Keluaran program sbb :

Iterasi ke­0
Iterasi ke­1
Iterasi ke­2
Iterasi ke­3
Iterasi ke­4
Iterasi ke­5
Iterasi ke­6
Iterasi ke­7
Iterasi ke­8
Iterasi ke­9

Dalam  menggunakan  perulangan   bentuk   while   kita   memerlukan   2   hal.   Pertama,   perulangan 
memerlukan kondisi untuk memberhentikan proses iterasi. Kedua, perulangan
membutuhkan ekspresi untuk menambah atau mengurangi variabel kondisi. Syarat pertama terlihat 
bahwa while memiliki kondisi true apabila iterasi kurang dari 10. Syarat kedua terlihat pada baris 
ke­10. Dimana variabel iterasi dinaikkan  satu per satu supaya kondisi perulangan false. Jika salah 
satu atau kedua syarat ini tidak ada, maka perulangan akan berjalan terus­menerus tanpa berhenti.

Jalannya   program   di   atas   pertama,   nilai   iterasi   sama   dengan   0   kemudian   masuk   ke   kondisi 
perulangan. Karena nilai iterasi < 10, maka statement di dalam perulangan dijalankan. Munculnya 
pesan di layar monitor dan nilai iterasi ditambah satu, menjadi 1. Kemudian masuk lagi ke kondisi 
perulangan. Karena iterasi masih < 10, maka statement di dalam perulangan kembali dijalankan. 
Begitu seterusnya hingga 10 kali perulangan.


Ilmu Komputer UGM                                                                                     29
Modul KL. Pemrograman C++

Berikut contoh lainnya :

#include <iostream.h>

int main()
{
     int iterasi = 20;

        while (iterasi < 10)
        {
             cout << "Iterasi ke­" << iterasi << endl;
             iterasi++;
        }
        return 0;
}

Karena  iterasi  bernilai  20   maka  perulangan  tidak  pernah  dijalankan.  Sehingga   hasil   eksekusi 
program   tidak   menampilkan   apa­apa.   Hal   ini   terjadi   dikarenakan  pengecekan   true/false   dari 
kondisi perulangan dilakukan sebelum baris statement di dalam perulangan. Akan berbeda pada 
perulangan menggunakan do ... while.



Do ... While

Perhatikan contoh berikut :

#include <iostream.h>

int main()
{
     int iterasi = 0;

        do 
        {
                cout << "Iterasi ke­" << iterasi << endl;
                iterasi++;
        }
        while (iterasi < 10);
        return 0;
}


Ilmu Komputer UGM                                                                                30
Modul KL. Pemrograman C++


Keluaran program di atas :

Iterasi ke­0
Iterasi ke­1
Iterasi ke­2
Iterasi ke­3
Iterasi ke­4
Iterasi ke­5
Iterasi ke­6
Iterasi ke­7
Iterasi ke­8
Iterasi ke­9

Hasilnya memang tampak sama dengan perulangan while. Do ... while juga mempunyai kesamaan 
dengan perulangan while antara lain, perulangan ini juga mempunyai dua syarat yang harus ada 
supaya iterasi tidak berjalan terus­menerus tanpa berhenti. Perbedaannya, do ... while memiliki 
pengecekan kondisi yang terletak setelah statement perulangan.

Jalannya program di atas adalah pertama, nilai iterasi = 0. Kemudian menjalankan statement dalam 
perulangan, yaitu menampilkan nilai iterasi dan menambahkan nilai iterasi dengan satu menjadi 1. 
Baru   setelah  itu nilai  iterasi  masuk ke dalam kondisi.  Karena  kondisi   terpenuhi maka  kursor 
kompilasi kembali ke statement do. Dan mengulang proses. Begitu seterusnya hingga nilai iterasi = 
10.

Contoh yang lain :

#include <iostream.h>

int main()
{
     int iterasi = 20;

       do 
       {
               cout << "Iterasi ke­" << iterasi << endl;
               iterasi++;
       }
       while (iterasi < 10);


Ilmu Komputer UGM                                                                          31
Modul KL. Pemrograman C++

        return 0;
}

Program di atas menunjukkan perbedaan penggunaan do ... while dan while. Karena pengecekan 
kondisi pada do ... while terletak setelah statement maka program di atas meskipun nilai iterasi 
tidak   memenuhi   kondisi   perulangan   namun   statement   perulangan   dilakukan  sekali.   Sehingga 
keluar tampilan di layar monitor nilai dari variabel iterasi yang tak lain = 20. Dapat disimpulkan 
bahwa   dengan   menggunakan   do   ...   while   statement   perulangan   minimal   sekali   dijalankan, 
meskipun kondisi tidak terpenuhi. 

For

Perulangan for mempunyai bentuk umum sbb :

for (inisialisasi awal; kondisi; menaikkan/menurunkan variabel)

Perhatikan pada contoh berikut :

#include <iostream.h>

int main()
{
     int iterasi = 0;

        for (iterasi; iterasi < 10; iterasi++)
        {
             cout << "Iterasi ke­" << iterasi << endl;
        }
        return 0;
}
Keluaran program sbb :

Iterasi ke­0
Iterasi ke­1
Iterasi ke­2
Iterasi ke­3
Iterasi ke­4
Iterasi ke­5
Iterasi ke­6


Ilmu Komputer UGM                                                                             32
Modul KL. Pemrograman C++

Iterasi ke­7
Iterasi ke­8
Iterasi ke­9

Keluaran yang dihasilkan program sama seperti menggunakan do ... while dan while. Supaya 
perulangan   tidak   berjalan   terus­menerus   tanpa   berhenti,   maka   perulangan   for   juga   memiliki 
kondisi dimana jika terpenuhi maka statement dijalankan dan memiliki ekspresi unuk menaikkan 
variabel kondisi supaya suatu waktu kondisi bernilai false (perulangan berhenti).
Inisialisasi variabel di dalam parameter pertama for. Kondisi perulangan dijalankan pada parameter 
kedua. Dan ekspresi untuk menaikkan variabel kondisi pada parameter ketiga. 

Contoh lain :

#include <iostream.h>
int main()
{
     for (int iterasi=0; iterasi < 10; iterasi++)
     {
           cout << "Iterasi ke­" << iterasi << endl;
           iterasi++;
     }
     return 0;
}

Inisialisasi variabel kondisi dapat dituliskan dengan cara pada contoh di atas. Variabel iterasi hanya 
berlaku pada scope perulangan for sehingga pemanggilan variabel di luar perulangan tidak bisa 
dilakukan.   Selain   itu   penaikan  atau   penurunan   variabel   bisa   dilakukan   di   dalam   statement 
perulangan (baris ke­7). Keluarannya menjadi

Iterasi ke­0
Iterasi ke­2
Iterasi ke­4
Iterasi ke­6
Iterasi ke­8

Break

Kita sudah mengenal break pada bahasan switch ... case, dengan definisi yang hampir sama break 


Ilmu Komputer UGM                                                                                 33
Modul KL. Pemrograman C++

digunakan untuk keluar dari perulangan. Break ditempatkan di dalam statement perulangan. Ketika 
kursor kompilasi menjalankan statement break, maka kursor kompilasi akan melompat keluar dari 
scope   perulangan   terkait.   Semua   bentuk   perulangan   (do   ...   while,   while,   dan   for)   dapat 
menggunakan break. Perhatikan contoh berikut

#include <iostream.h>

int main()
{
     int iterasi = 0;

        for (;;)
        {
             if (iterasi < 10)
             {
                  cout << "Iterasi ke­" << iterasi << endl;
                  iterasi++;
             }
             else break;
        }
        return 0;
}

Pada contoh di atas, for tidak mempunyai parameter apa­apa sehingga perulangan dapat berjalan 
terus­menerus. Namun ada cara lain untuk menghentikan perulangan. Yaitu dengan memanfaatkan 
control statement dan break. Jalannya program di atas pertama, nilai iterasi adalah 0. Kemudian 
perulangan   dijalankan.   Nilai   iterasi   dicek   dalam   kondisi   control   statement.   Karena   kondisi 
terpenuhi maka statement if dijalankan. Nilai iterasi ditampilkan di layar monitor dan nilai iterasi 
di tambah menjadi satu. Begitu seterusnya hingga nilai iterasi = 10. Kondisi if tidak terpenuhi, 
maka else dijalankan. Keluaran eksekusi program di atas sbb :

Iterasi ke­0
Iterasi ke­1
Iterasi ke­2
Iterasi ke­3
Iterasi ke­4
Iterasi ke­5
Iterasi ke­6
Iterasi ke­7
Iterasi ke­8


Ilmu Komputer UGM                                                                                  34
Modul KL. Pemrograman C++

Iterasi ke­9


Continue

Continue adalah kebalikan dari break. Digunakan untuk kembali ke awal baris perulangan. Fungsi 
ini   mirip   dengan   perintah   goto.   Penggunaan  continue  di   dalam   statement  perulangan.  Ketika 
kursor kompilasi menjalankan statement continue, maka kursor kompilasi  akan melompat ke baris 
awal perulangan. Continue dapat digunakan pada semua bentuk perulangan (do ... while, while, 
dan for). Perhatikan contoh berikut 

#include <iostream.h>

int main()
{
     int iterasi = 0;

        for (;;)
        {
             if ((iterasi <= 5) && (iterasi > 3))
             {
                  iterasi++;
                  continue;
             }

                else if (iterasi < 10)
                {
                     cout << "Iterasi ke­" << iterasi << endl;
                     iterasi++;
                }
                else break;
        }
        return 0;
}

Keluaran program menjadi

Iterasi ke­0
Iterasi ke­1
Iterasi ke­2
Iterasi ke­3


Ilmu Komputer UGM                                                                               35
Modul KL. Pemrograman C++

Iterasi ke­6
Iterasi ke­7
Iterasi ke­8
Iterasi ke­9

Terlihat bahwa iterasi ke­4 dan ke­5 tidak ditampilkan di layar monitor. Jalannya program di atas 
pertama, iterasi bernilai = 0. Kemudian masuk ke dalam perulangan. if pertama dicek kondisinya 
apakah bernilai true. Karena kondisi pertama tidak dipenuhi, maka kursor kompilasi menuju ke 
kondisi kedua. Kondisi else if ternyata terpenuhi, maka nilai iterasi = 0 ditampilkan di layar dan 
nilai iterasi ditambah dengan satu menjadi 1. Hingga iterasi bernilai 4 dan 5, ternyata kondisi if 
pertama terpenuhi, maka statement di dalamnya dijalankan. Nilai iterasi ditambah satu menjadi 5 
dan 6, serta kursor kompilasi melompat kembali ke awal perulangan for. Hal inilah yang membuat 
tampilan iterasi ke­4 dan 5 tidak ada. Sebab statement di dalam else if tidak dijalankan.

Jika baris program 

if ((iterasi <= 5) && (iterasi > 3))
{
     iterasi++;
     continue;
}

digantikan dengan

if ((iterasi <= 5) && (iterasi > 3))
{
     continue;
     iterasi++;
}

Maka program akan berbeda, nilai iterasi setelah mencapai 4 tidak pernah naik menjadi 5, dst. 
Karena statement penaikan nilai iterasi tidak pernah dieksekusi. Hasilnya perulangan program di 
atas tidak akan pernah berhenti.
 
Kondisi Perulangan

Kondisi yang dipakai di dalam perulangan mempunyai beberapa aturan supaya tidak menimbulkan 
kesalahan program. Pertama, variabel kondisi perulangan harus bertipe integer atau char. Variabel 

Ilmu Komputer UGM                                                                       36
Modul KL. Pemrograman C++

bertipe  float  tidak  dianjurkan  meskipun sebenarnya bisa. Jika  terpaksa menggunakan  variabel 
kondisi bertipe float/pecahan, sebaiknya cek logika kondisi tersebut secara teliti.

Khusus perulangan menggunakan for, ketiga parameter dapat dihilangkan satu, dua, atau bahkan 
semuanya. Namun untuk faktor berhentinya harus tetap ada. faktor tersebut dapat diletakkan di 
dalam statement perulangan.
Perulangan Bersarang

Perulangan di dalam perulangan diperbolehkan pada hampir semua bahasa pemrograman. Contoh 
perulangan di dalam perulangan dapat dilihat pada program berikut :

#include <iostream.h>

int main()
{
     int nested1, nested2;
     int awal1 = 1, awal2;
     cout << "masukkan nilai nested1 = ";
     cin >> nested1;
     cout << "\nmasukkan nilai nested2 = ";
     cin >> nested2;

       if ((nested1 > 0) && (nested2 > 0))
       {
            while (awal1 <= nested1)
            {
                  for(awal2=1; awal2 <= nested2; awal2++)
                  {
                       cout << "Perulangan ke­" << awal1 * awal2 
                  << endl;
                  }
                  awal1++;
            }
       }   
}

Pada contoh di atas, terdapat perulangan di dalam perulangan. Semua bentuk perulangan dapat 
diletakkan pada statement bentuk perulangan yang lain. Seperti pada program contoh perulangan 
for di dalam perulangan dengan while. Statement baris ke­18, akan dijalankan sebanyak nested1 x 


Ilmu Komputer UGM                                                                      37
Modul KL. Pemrograman C++

nested2 (sesuai dengan masukan user).

Jalannya program contoh sebagai berikut. Pertama, nilai nested1 dan nested2 dimasukkan oleh 
user adalah 2 dan 3. Kemudian kondisi if akan dicek apakah nilai nested masing­masing berupa 
nilai integer positif. Jika true maka perulangan while di jalankan. Di dalam kondisi while nilai 
awal1 akan dicek apakah kurang dari nilai nested1 (2). Karena kondisi true maka statement while 
dijalankan. Di dalam statement while ditemukan perulangan lagi, maka kondisi perulangan dicek. 
Apakah nilai awal2 kurang dari nested2. Karena kondisi true maka statement for dijalankan. Yaitu 
menampilkan pesan ke layar monitor perulangan ke­...

Statement for akan dijalankan hingga nilai awal2 lebih dari nested2. Dengan kata lain perulangan 
for statementnya dijalankan sebanyak 3x. Sedangkan perulangan while statementnya dijalankan 
sebanyak 2x. Kesimpulannya total statement baris ke­18 dijalankan sebanyak 6x (2 x 3). Keluaran 
program sbb :

masukkan nilai nested1 = 2

masukkan nilai nested2 = 3
Perulangan ke­1
Perulangan ke­2
Perulangan ke­3
Perulangan ke­2
Perulangan ke­4
Perulangan ke­6




Ilmu Komputer UGM                                                                     38
Modul KL. Pemrograman C++

                                         LARIK (ARRAY)

Tujuan
   1. Menerangkan hakekat dari array
   2. Menerangkan seluk­beluk array
   3. Menerangkan cara menggunakan array

Kemampuan
  1. Praktikan memahami pengertian dan seluk­beluk dari array
  2. Praktikan mengetahui cara menggunakan array di dalam program

Pendahuluan

Kita   sudah  mengenal   deklarasi  variabel.  Ketika   sebuah  variabel  dideklarasikan  maka  sebuah 
memori dialokasikan untuk variabel tersebut, dengan cara memberi nama memori dengan nama 
variabel. Larik atau juga disebut sebagai array adalah kumpulan memori/variabel yang memiliki 
tipe data yang sama. Nama dari variabel juga sama. Untuk membedakan variabel satu dengan yang 
lain, larik menggunakan indeks. Dengan kata lain larik adalah variabel yang bertipe sama serta 
letaknya berurutan di dalam memori.

Berikut contoh dari array :

#include <iostream.h>

int main()
{
     int larik1[5];
     int larik2[] = {5,6,9,2};
     char kata[6];
}

terdapat 2 buah array dengan nama larik1 dan larik2. Larik1 merupakan kumpulan dari 5   buah 
memori   yang   bertipe   integer   yang   berlum   memiliki   nilai   (0).   Sedangkan  larik2   merupakan 
kumpulan dari 4 buah memori yang bertipe integer juga dengan nilai di dalam memori berturut­
turut 5, 6, 9, dan 2. Terakhir adalah array bernama kata dengan jumlah memori 6 buah dan bertipe 
char.


Ilmu Komputer UGM                                                                               39
Modul KL. Pemrograman C++

Array Satu Dimensi

Contoh­contoh array sebelumnya adalah bentuk array satu dimensi. Kita ulangi contoh di atas 
untuk melihat ciri­ciri array lebih dalam. int larik1[5], merupakan deklarasi array. 5 merupakan 
penanda bahwa larik1 beranggotakan 5 buah memori. Karena array memiliki indeks, sekarang kita 
melihat cara pengindeksan array di C++. Berbeda cara pengindeksan array di Pascal, C++ tidak 
memperbolehkan programmer mendefinisikan sendiri indeks array yang mereka buat. Indeks array 
di C++ pasti dimulai dari 0.

Nah, karena larik1 mempunyai jumlah memori 5 maka indeksnya sbb :


  0       1       2      3       4



Lalu bagaimana kita mengakses isi dari array. Perhatikan contoh berikut :

#include <iostream.h>

int main()
{
     int i;
     int larik1[5];
     int larik2[] = {5,6,9,2};
     char kata[6];

       for (i=0; i<5; i++)
       {
            larik1[i] = i*2;
            cout << larik1[i] << ", ";
       } 
       cout << endl;

       for (i=0; i<4; i++)
       {
            cout << larik2[i] << ", ";
       }
       cout << endl;

       for (i=0; i<6; i++)

Ilmu Komputer UGM                                                                     40
Modul KL. Pemrograman C++

        {
                kata[i] = 67+i;
                cout << kata[i] << ", ";
        }
        cout << endl;
        return 0;
}

Mengakses array berupa pengisian elemen array, menampilkan isi array, atau melakukan operasi 
pada   elemen   array.   Akses   array   biasanya   memanfaatkan   perulangan.   Perulangan   pertama 
melakukan pengisian array larik1 dengan nilai  = indeks array x 2. Kemudian perulangan kedua 
berfungsi menampilkan isi dari larik2 yang tak lain adalah   5, 6, 9, dan 2. Terakhir, perulangan 
ketiga   berfungsi   untuk   mengisikan   elemen  array   dengan   huruf/karakter   dengan   kode   ASCII 
berurut mulai kode 67­72. Hasil keluarannya sbb :

0, 2, 4, 6, 8,
5, 6, 9, 2,
C, D, E, F, G, H,

Karena  array   berupa   kumpulan   memori,   maka   pengaksesannya   juga   harus   spesifik.   Artinya 
memori yang mana yang kita akses. Sehingga untuk mengakses caranya dengan menuliskan nama 
array kemudian diikuti dengan nomer indeksnya. Dan lagi­lagi Anda harus berhati­hati  dalam 
mendefinisikan indeks array (selalu dimulai dari nol dan indeks maksimum adalah jumlah array – 
1).

Pada   contoh   diperlihatkan   juga   bagaimana   cara   mengisikan   langsung   nilai   ke   dalam   array. 
Perhatikan baris ke­7, pendeklarasian seperti itu diperbolehkan, yaitu array tidak diberikan jumlah 
elemennya.  Namun  dalam   deklarasi  harus   langsung  memberikan  nilai­nilai  dari   elemen  array 
tersebut. Deklarasi array seperti ini tidak diperbolehkan

int larik3[];

karena alokasi memori untuk array larik3 tidak jelas. C++ tidak menerima deklarasi array yang 
tidak jelas alokasi memorinya (rancu).

Contoh lainnya :



Ilmu Komputer UGM                                                                                 41
Modul KL. Pemrograman C++

#include <iostream.h>

int main()
{
     int i;
     int larik1[5];
     int larik2[] = {5,6,9,2};
     char kata[6];

        cout << “Masukkan nilai ke­1 = “;
        cin >> larik1[0];
        cout << “\nMasukkan nilai ke­2 = “;
        cin >> larik1[1];
        cout << “\nMasukkan nilai ke­3 = “;
        cin >> larik1[2];
        cout << “\nMasukkan nilai ke­4 = “;
        cin >> larik1[3];
        cout << “\nMasukkan nilai ke­5 = “;
        cin >> larik1[4];

        i = larik1[0] + larik1[1] + larik1[2] + larik1[3] + larik1                                          
[4];
        cout << “\nNilai i = “ << i << endl;
}

Array sama seperti variabel biasa. Maksud sama di sini adalah perlakuan terhadap array sama 
seperti pada variabel (pengisian nilai dan cara panggil). Letak perbedaannya, array merupakan 
variabel­variabel   serupa   yang   disatukan.  Hanya   itu   saja   yang   membedakan  antara   array   dan 
variabel.

Array Dua Dimensi

Menjelaskan array berdimensi dua paling mudah menggunakan contoh matriks. Segala bentuk 
matriks adalah implementasi array dua dimensi. Misalnya matriks :

      3   6   7
A   = 4   9   2
      7   8   5



Ilmu Komputer UGM                                                                                42
Modul KL. Pemrograman C++

Deklarasi array dua dimensi di atas sbb :

int matriks1[3][3] = {{3, 6, 7},
                      {4, 9, 2},
                      {7, 8, 5}}

Contoh yang lain adalah :

int matriks2[4][3];
float matriks[][3] = {{2.6, 8.9, 5.6},
                      {6.4, 3.8, 6.2} }; 

matriks1 pada tiap kolomnya memiliki 3 elemen dan tiap baris juga 3 elemen. Matriks2 memiliki 4 
elemen pada tiap kolomnya dan 3 elemen tiap barisnya. Matriks memiliki 2 elemen tiap kolomnya 
dan 3 elemen tiap barisnya.
Harap diingat bahwa indeks matriks1 yang pertama [3] merupakan jumlah elemen pada kolom dan 
indeks   kedua  [3]  adalah  jumlah elemen  pada  baris.  Matriks2,  indeks  pertama  [4]  merupakan 
jumlah elemen pada tiap kolomnya dan indeks kedua [3] merupakan jumlah elemen tiap barisnya. 
Jangan berfikir bahwa indeks pertama merupakan jumlah baris matriks dan indeks kedua adalah 
jumlah kolom matriks. Karena jika Anda berpemahaman seperti ini maka ketika melakukan akses 
pada matriks/array berdimensi 2, Anda akan bingung. Pemahaman ini hanya untuk menyamakan 
persepsi dalam membaca array berdimensi dua/matriks.

Pada gambar di bawah ini Anda akan lebih diperjelas lagi mengenai pemahaman tentang indeks 
pertama dan indeks kedua dari matriks/array dua dimensi. Dapat disimpulkan bahwa deklarasi 
array dua dimensi sbb :

nama_variabel[jumlah_elemen_kolom][jumlah_elemen_baris];
       in      0       1       2

        0

        1

        2

        3


Ilmu Komputer UGM                                                                         43
Modul KL. Pemrograman C++

               matriks2

Deklarasi  array   matriks   memberikan   contoh   kepada   Anda   bagaimana   cara   mendeklarasikan 
sebuah array dua dimensi sekaligus mengisikan nilainya. Indeks array matriks yang pertama dapat 
dikosongi, sedangkan indeks kedua harus diisi.  
Cara mengakses array dua dimensi dapat dilihat pada contoh berikut :

#include <iostream.h>

int main()
{
     int matriks[3][2];
     char kata[ ][4] = {{'A','K','U','&'},
                        {'K','A','M','U'}};
                 
     for (int i=0; i<3;i++)
     {
           for (int j=0; j<2; j++)
           {
                matriks[i][j] = i * j;
           }
     }

       for (int i=0; i<2;i++)
       {
            for (int j=0; j<4; j++)
            {
                  cout << kata[i][j];
            }
            cout << "\t";
       }

       cout << endl;

       cout << "nilai matriks[3][2] = " << matriks[2][1] << endl;
       return 0;
}
Keluarannya sbb :

AKU&    KAMU    
nilai matriks[3][2] = 2


Ilmu Komputer UGM                                                                          44
Modul KL. Pemrograman C++


Eksekusi program di atas, pertama komputer akan mengalokasikan 6 buah memori untuk array 
matriks. Dengan spesifikasi 3 memori untuk tiap kolomnya dan 2 memori untuk tiap barisnya. 
Selanjutnya   komputer   juga   mengalokasikan  8   buah   memori   untuk   array   char   kata.   Dengan 
spesifikasi 2 buah untuk tiap kolomnya dan 4 buah untuk tiap barisnya. Kemudian memori tersebut 
diisikan dengan karakter­karakter yang telah didefinisikan.


  in       0       1

   0       0       0

   1       0       1

   2       0       2

        matriks

Setelah memori dialokasikan untuk array matriks, pada perulangan pertama nilai elemen array 
matriks didefinisikan.


  in       0       1       2       3

   0       A       K       U       &

   1       K       A       M       U

                kata

Sekali lagi jangan bingung terhadap indeks pada gambar. Memang terlihat indeks baris ada 2 
sedangkan indeks kolom ada 4. Setelah memori dialokasikan untuk array kata dan isinya juga 
sudah didefinisikan, pada perulangan kedua isi elemen array kata ditampilkan. Terakhir, nilai pada 
array matriks [3][2] juga ditampilkan.  

Contoh yang lain yaitu :

#include <iostream.h>



Ilmu Komputer UGM                                                                             45
Modul KL. Pemrograman C++

int main()
{
     int matriksA[2][3] = {{3, 6, 9},
                       {4, 5, 2}};
     int matriksB[3][2] = {{5, 8},
                            {5, 9},
                            {4, 2}};
     int matriksC[2][2];
     int i, j, k, kali, jumlah = 0;

        for (i=0; i<2; i++)
        {
             for (j=0; j<3; j++)
             {
                   for (k=0; k<2; k++)
                   {
                        kali = matriksA[i][j] * matriksB[j][k];
                        jumlah = jumlah + kali;
                        matriksC[i][k] = jumlah;
                   } 
             }
        }

        for (i=0; i<2; i++)
        {
             for (k=0; k<2; k++)
             {
                   cout << matriksC[i][k] << "\t";
             }
             cout << endl;
        }
}


Array Multidimensi

Hampir   mirip   dengan   array   dua   dimensi,   array   ini   memiliki   indeks   hingga   lebih   dari   dua. 
Deklarasinya sbb :

int larik1[3][4][5];
int larik2[2][2][3] = 
  {{{5, 6, 4}, {8, 8, 6}},
   {{9, 6, 4}, {2, 3, 7}}};

Ilmu Komputer UGM                                                                                     46
Modul KL. Pemrograman C++


Pada contoh di atas terlihat cara mendeklarasikan array tiga dimensi. Contoh di atas juga bisa 
dijadikan patokan untuk membuat array dimensi yang lebih tinggi. Cara pengisian langsung untuk 
array multi dimensi adalah pertama, Anda lihat indeks terakhir dari array. Pada contoh di atas 
indeks terakhirnya adalah 3. Sehingga untuk kurung kurawal pertama berisi 3 elemen [{5, 6, 
4}]. Selanjutnya indeks kedua dari akhir, pada contoh di atas bernilai 2. Oleh karena itu Anda 
membuat kurung kurawal yang lebih tinggi satu tingkat dari yang telah Anda buat tadi. Isi dari 
kurawal yang lebih tinggi ini adalah elemen­elemen di kurawal yang lebih rendah satu tingkat 
dengan dia dan sebanyak indeksnya yaitu 2 [{{5, 6, 4}, {8, 8, 6}}]. Terakhir, indeks 
paling awal yang bernilai 2. Berarti Anda perlu membuat kurung kurawal baru yang lebih tinggi 
tingkatannya dari yang sebelumnya. Isi dari kurawal tersebut adalah elemen­elemen di tingkat 
sebelumnya sebanyak indeks yang tercantum yaitu 2 [{{{5, 6, 4},{8, 8, 6}},{{9, 6, 
4}, {2, 3, 7}}}].


Anda  dapat  mengetahui   jumlah   alokasi  memori   pada  array   tiga   dimensi  dengan   mengalikan 
indeks­indeksnya. Pada contoh di atas jumlah alokasi memori sebanyak 2 x 2 x 3 = 12 buah. Cara 
mengakses array sbb :

larik2[0][0][0] = 5
larik2[0][0][1] = 6
larik2[0][0][2] = 4

larik2[0][1][0] = 8
larik2[0][1][1] = 8
larik2[0][1][2] = 6

larik2[1][0][0] = 9
larik2[1][0][1] = 6
larik2[1][0][2] = 4

larik2[1][1][0] = 2
larik2[1][1][1] = 3
larik2[1][1][2] = 7


Kesimpulan

Pada array dua dimensi, saat dideklarasikan indeks pertama sebagai jumlah elemen tiap kolom dan 
indeks   kedua  sebagai   jumlah  elemen  tiap  baris.   Sedangkan  pada  saat  pengaksesan  array   dua 

Ilmu Komputer UGM                                                                             47
Modul KL. Pemrograman C++

dimensi, indeks pertama sebagai penunjuk baris ke dan indeks kedua sebagai penunjuk kolom ke.




Ilmu Komputer UGM                                                                    48
Modul KL. Pemrograman C++

                                                STRING

Tujuan
   1. Menerangkan cara menggunakan string di dalam C++
   2. Menerangkan fungsi­fungsi pengolah string

Kemampuan
  1. Praktikan mengetahui cara menggunakan string di dalam C++
  2. Praktikan mengetahui cara penggunaan dari fungsi­fungsi string

Pendahuluan

Berbeda dengan bahasa pemrograman Pascal yang memiliki tipe data string. Dalam C++ tipe data 
string   dapat   diperoleh   dengan   cara   mendefinisikan   suatu   array   bertipe   char.   Karena   pada 
hakekatnya   string   merupakan   kumpulan   dari   variabel   bertipe   char.   Meskipun   berupa   array, 
perlakukan terhadap array bertipe char sedikit lebih istimewa. Karena terdapat beberapa fungsi 
yang bisa digunakan untuk memanipulasi langsung array ini. Sedangkan pada array bertipe non 
char tidak ada fungsi untuk memanipulasi. Fungsi­fungsi untuk array bertipe char diletakkan pada 
file include string.h.

Bagaimana cara mendeklarasikan string? Sama seperti dengan array biasa namun tipe datanya 
adalah char. Berikut contohnya :

#include <iostream.h>

int main()
{
     char kata1[5];
     char kata2[] = {'B', 'E', 'L', 'A', 'J', 'A', 'R'};

        for (int i=0; i<5; i++)
        {
             kata1[i] = 'A'+i;
             cout << kata1[i];
        }

        cout << endl;


Ilmu Komputer UGM                                                                                 49
Modul KL. Pemrograman C++


       for (int i=0; i<7; i++)
       {
            cout << kata2[i];
       }

       cout << endl;
       return 0;
}

Contoh di atas mirip dengan contoh­contoh pada bab sebelumnya. Tipe data char masih satu jenis 
dengan tipe data integer. Karena tipe data char diisi oleh karakter­karakter ASCII yang dikodekan 
dengan angka integer dari 0 – 127. Pada perulangan pertama terlihat bahwa elemen kata1 berturut­
turut diisi dengan karakter A (ASCII = 65), B (ASCII = 66), C (ASCII = 66), D (ASCII = 66), dan 
E (ASCII = 66). Keluaran dari program di atas adalah :

ABCDE
BELAJAR


Fungsi­Fungsi Dalam String.h

Sama seperti dengan file include yang lain, string.h terletak di /usr/include. Kita akan melihat 
fungsi apa saja yang didukung oleh string.h.

/* Copy SRC to DEST.  */
extern char *strcpy (char *__restrict __dest, __const char *__restrict 
__src)
     __THROW;
/* Copy no more than N characters of SRC to DEST.  */
extern char *strncpy (char *__restrict __dest,
                 __const char *__restrict __src, size_t __n) __THROW;

/* Append SRC onto DEST.  */
extern char *strcat (char *__restrict __dest, __const char *__restrict 
__src)
     __THROW;
/* Append no more than N characters from SRC onto DEST.  */
extern   char   *strncat  (char   *__restrict   __dest,   __const   char 
*__restrict __src,
                 size_t __n) __THROW;


Ilmu Komputer UGM                                                                      50
Modul KL. Pemrograman C++


/* Compare S1 and S2.  */
extern int strcmp (__const char *__s1, __const char *__s2)
     __THROW __attribute_pure__;
/* Compare N characters of S1 and S2.  */
extern   int   strncmp  (__const   char   *__s1,   __const   char   *__s2,   size_t 
__n)
     __THROW __attribute_pure__;
/* Return the length of S.  */
extern size_t strlen (__const char *__s) __THROW __attribute_pure__;
__END_NAMESPACE_STD

Ketujuh fungsi di atas paling banyak dipakai untuk memanipulasi string. Jika Anda menggunakan 
Microsoft Visual C++, fungsi manipulasi string lebih banyak, seperti strstr, strupr, dan strlwr.




  fungsi        Parameter                                 Keterangan

strcpy      source, dest       mengkopi kata dari source ke dalam dest

strncpy     source, dest, n    mengkopi kata dari source ke dalam dest sebanyak n karakter

strcat      source, dest       menambahkan string dari source ke string dest di posisi akhir

strncat     source, dest, n    menambahkan string dari source ke string dest di posisi akhir 
                               sebanyak b karakter

strcmp      s1, s2             membandingkan string dari s1 dengan string dari s2

strncmp     s1, s2, n          membandingkan string dari s1 dengan string dari s2 sebanyak 
                               n karakter

strlen      s                  menghasilkan panjang dari string s


Fungsi­fungsi   di   atas   dapat   digunakan   pada   tipe   string.   Pada   contoh   sebelumnya,   kita 
menampilkan kata BELAJAR dengan melakukan cout satu per satu dari elemen array. Untuk lebih 
praktisnya, contoh sebelumnya akan kita ganti dengan program berikut :


Ilmu Komputer UGM                                                                              51
Modul KL. Pemrograman C++

#include <iostream.h>

int main()
{
     char kata1[6];
     char kata2[] = "BELAJAR";

       strcpy(kata1, "ABCDE");
       cout << kata1 << endl;
       cout << kata2 << endl;

       return 0;
}

Terlihat   bahwa   string   meskipun   berupa   array   namun   memiliki   perlakuan   yang   berbeda. 
Pendeklarasian sekaligus pengisian array bertipe char berbeda dengan pendeklarasian sekaligus 
pengisian nilai array bertipe non char.

Keluaran program di atas sbb :

ABCDE
BELAJAR 
Menangkap Inputan Berupa Karakter 

Suatu saat program kita membutuhkan input dari user berupa karakter. Untuk menangkap karakter 
yang dimasukkan, perintahnya sama seperti menangkap inputan biasa pada tipe data integer atau 
float. Berikut contoh programnya :

#include <iostream.h>

int main()
{
     char kata1[6];
     char kata2[] = "BELAJAR";
     char kata3[15];

       cout << "Masukkan suatu kata dengan panjang 6 = ";
       cin >> kata1;
       cout << kata1;



Ilmu Komputer UGM                                                                           52
Modul KL. Pemrograman C++

        strncpy(kata3, kata1, 3);
        cout << "\n" << kata3 << endl;
        cout << strncmp(kata3, kata1,3) << endl;
        cout << "Panjang kata 2 adalah = " << strlen(kata3);

        return 0;
}

Keluaran dari program tersebut adalah :

Masukkan suatu kata dengan panjang 6 = faizal
faizal
fai
0
Panjang kata 2 adalah = 7

Pada program terdapat 3 buah larik masing­masing kata1, kata2, dan kata3. Kemudian baris ke­9 
program meminta masukan dari user  berupa kata. Karakter yang dapat diterima hanya 6 buah. 
Meskipun user memasukkan sebanyak 8 karakter, maka hanya 6 karakter pertama yang disimpan. 
Cara menerima inputan user berupa karakter yaitu dengan perintah 

cin >> kata1;

Meskipun kata1 berupa array namun pengaksesan array bertipe char dapat dengan menghilangkan 
informasi indeksnya. Fasilitas ini  khusus untuk array bertipe char saja. Pada baris ke­10  juga 
seperti itu. Untuk menampilkan sebuah string <array bertipe char> tidak perlu menampilkan satu 
per   satu,   namun   bisa   menampilkan   sekaligus   dengan   tidak   menyertakan   indeks   array   yang 
bersangkutan.

Baris ke­12 memperlihatkan cara pemakaian fungsi strncpy. Isi karakter pada array kata1 di copy 
ke array larik3 sebanyak 3 karakter saja, kemudian ditampilkan isinya. Pada baris ke­14 array kata1 
dan kata3 dibandingkan. Namun pembandingan hanya sebatas 3 karakter saja. Hasilnya adalah 
nilai   0   yang   berarti   'true'.   Terakhir,   menampilkan  ukuran  dari   array   kata2   yang   berjumlah  7 
karakter.

Kesimpulan, Cara akses array bertipe char dengan non char adalah berbeda. C++ memberikan 
fasilitas   khusus   untuk   array   bertipe   char.   Hal   ini   untuk   mempermudah   programmer   dalam 


Ilmu Komputer UGM                                                                                     53
Modul KL. Pemrograman C++

menggunakan  tipe   data   string.   Pengaksesan  dengan   menghilangkan  indeks   array.   Rahasianya 
adalah, setiap array char yang kita buat secara otomatis akan ditambahkan oleh C++ karakter null 
yang berarti tanda akhir string.

Seperti array kata2, oleh C++ alokasi memorinya menjadi :
B     E    L     A    J     A     R     /0

karakter terakhir adalah tanda akhir string dari kata2. Oleh karenanya apabila dilakukan cout maka 
C++ akan melakukan perulangan dengan menampilkan isi array kata2 hingga dijumpai karakter 
null. Makanya kenapa indeks array pada saat pengaksesan array bertipe char dapat dihilangkan. 
Karena patokannya kepada karakter null.




Ilmu Komputer UGM                                                                           54
Modul KL. Pemrograman C++

                                         FUNCTION

Tujuan
   1. Menerangkan hakekat function di dalam program C++
   2. Menerangkan cara menggunakan function di dalam program

Kemampuan
  1. Praktikan mengetahui hakekat function di dalam program C++
  2. Praktikan mampu menggunakan function dalam program yang dibuatnya

Pendahuluan

Function  seperti  yang telah sedikit disinggung di bab pertama, merupakan sub program  yang 
menyusun program secara keseluruhan. Dalam bahasa C++ hanya dikenal function sedangkan 
dalam bahasa Pascal dikenal 2 sub program dengan function dan procedure. Function merupakan 
sub program yang bisa mengembalikan nilai. Dengan kata lain function selain sub program, dia 
juga memiliki alokasi memori tersendiri mirip dengan variabel. Procedure adalah sub program 
yang tidak dapat mengembalikan nilai atau tidak ada alokasi memori.

Meskipun  di  dalam  C++   hanya   mengenal  function, namun  sebenarnya  C++   tetap  mempunyai 
procedure juga. Perbedaannya procedure dalam C++ tidak didefinisikan secara implisit dengan 
kata kunci yang dikenali C++ yaitu procedure. Function yang ada di dalam program C++ harus 
memiliki tipe data. Tipe datanya antara lain tipe data yang dikenali oleh C++ serta tipe data void. 
Tipe data void berarti suatu variabel tidak bertipe atau tidak memiliki alokasi memori. Karenanya 
function yang bertipe void dalam C++ sama seperti procedure dalam Pascal.

Perhatikan contoh program yang menggunakan function berikut ini :

#include <iostream.h>

void tampilkan(float a);
float hitung();

int main()
{
     tampilkan(hitung());


Ilmu Komputer UGM                                                                        55
Modul KL. Pemrograman C++

        return 0;
}

void tampilkan(float a)
{
     cout << "nilai a menjadi = " << a << endl; 
}

float hitung()
{
     float x;
     cout << "Masukkan nilai a = ";
     cin >> x;
     x = x + 5;
     return(x);
}

Keluaran program di atas sbb :

Masukkan nilai a = 0.5
nilai a menjadi = 5.5

Pada baris ke­3 dan 4 terdapat prototipe fungsi. Prototipe fungsi digunakan untuk mendeklarasikan 
fungsi­fungsi apa saja yang berada dalam program. Baris ke­3 merupakan prototipe fungsi berupa 
procedure yang memiliki parameter masukan satu variabel bertipe float (float a). Sedangkan pada 
baris ke­4 merupakan prototipe fungsi berupa function yang bertipe float. Ketika baris ke­4 ini 
dieksekusi   maka  C++   akan  mengalokasikan  sebuah  memori   untuk  menyimpan  keluaran  dari 
fungsi hitung. Nama memori itu sendiri adalah hitung.

Pada program utama baris ke­6, terdapat pemanggilan fungsi tampilkan. Pemanggilan fungsi harus 
disuaikan dengan kondisi fungsinya. Kondisi yang ahrus diperhatikan adalah nama fungsi, besar 
kecilnya huruf harus sama dan parameter masukan fungsi, jumlahnya harus sama pula. Misalnya 
apabila parameter fungsi satu buah maka ketika fungsi dipanggil harus menyertakan nilai masukan 
satu buah
Fungsi tampilkan memiliki sebuah nilai masukan, oleh karenanya ketika pemanggilan tampilkan() 
nilai   masukan  disertakan.   Nilai   masukan  ini   boleh   nilai   langsung   atau   nama   variabel   yang 
menyimpan suatu nilai. Yang harus diperhatikan, karena parameter memiliki tipe data maka nilai 
masukan harus sesuai dengan tipe data tersebut.


Ilmu Komputer UGM                                                                                  56
Modul KL. Pemrograman C++


Pada   contoh   di   atas,   nilai   masukan   berasal   dari   variabel   bernama   hitung.   Hitung   sendiri 
merupakan  fungsi,  namun  memiliki   alokasi  memori.   Boleh  dikatakan  hitung  juga   merupakan 
variabel. Tipe data hitung juga harus sesuai dengan tipe data parameter masukan fungsi tampilkan, 
yaitu float.

Ketika   baris  tampilkan(hitung())  dijalankan,  maka  fungsi   tampilkan   dijalankan  dan  parameter 
masukan diganti menjadi hitung().

void tampilkan(hitung())
{
     cout << "nilai a menjadi = " << a << endl; 
}

Selanjutnya, karena parameter masukan berupa fungsi maka fungsi tersebut dijalankan terlebih 
dahulu, supaya didapatkan nilai implisit untuk parameter masukan.

float hitung()
{
     float x;
     cout << "Masukkan nilai a = ";
     cin >> x;
     x = x + 5;
     return(x);
}

Baris ketiga fungsi hitung meminta kepada user untuk memasukkan nilai bertipe float ke dalam 
program. Kemudian nilai akan dimasukkan ke dalam variabel x. Dimisalkan nilai x adalah 0.5. 
Nilai variabel x ditambah dengan 5 menjadi 5.5. Terakhir, nilai x dimasukkan ke dalam variabel 
hitung yang tak lain adalah nilai kembali dari fungsi hitung. Tipe data variabel x dan fungsi hitung 
sama­sama float sehingga tidak perlu adanya konversi tipe data.

Setelah fungsi hitung selesai dikerjakan, kursor kompilasi kembali ke fungsi tampilkan, kali ini 
parameter masukannya sudah jelas nilainya.

void tampilkan(5.5)
{
     cout << "nilai a menjadi = " << a << endl; 


Ilmu Komputer UGM                                                                                   57
Modul KL. Pemrograman C++

}

Dan nilai a yang tak lain adalah 5.5 ditampilkan ke layar monitor. Proses kompilasi program yang 
mempunyai   function  tidak terurut seperti   contoh­contoh program  sebelumnya.  Prosesnya  akan 
melompat­lompat. Kunci untuk merunut proses kompilasi pada program yang mempunyai function 
adalah. Ketika menjumpai suatu kata yang tak lain adalah nama sebuah function maka kursor 
kompilasi akan berpindah menuju ke baris program function tersebut. Seperti pada statement

void tampilkan(hitung())

Contoh program lainnya :

#include <iostream.h>

float nilai(int a, int b);
int jumlah(float x);
void masukan(char kata[]);

int main()
{
     int l, m;
     float w;
     char kata[15];

       cout << "Masukkan nama variabel = ";
       cin >> kata;
       cout << "\nMasukkan nilai a = ";
       cin >> l;

       m = l + 10;
       w = nilai(l,m);
       cout << "Nilai hasilnya adalah = " << jumlah(w) << endl;
       masukan(kata);

       return 0;
}

void masukan(char kata[])
{
     cout << "Nama variabelnya adalah = " << kata;



Ilmu Komputer UGM                                                                      58
Modul KL. Pemrograman C++

}

int jumlah(float x)
{
     return((int)x * 100);
}

float nilai(int a, int b)
{
     return((float)a + b);
}

Keluaran program adalah :

Masukkan nama variabel = variabelku

Masukkan nilai a = 3
Nilai hasilnya adalah = 1600
Nama variabelnya adalah = variabelku

Program pertama kali mendeklarasikan 3 buah fungsi masing­masing bernama nilai, jumlah, dan 
masukan. Dari ketiga fungsi hanya dua yang mendapatkan alokasi memori, yaitu nilai dan jumlah. 
Tipe  data  dari   masing­masing  memori   tersebut   berturut­turut  adalah  float  dan  integer.   Kedua 
memori memiliki nama nilai dan jumlah.
Fungsi   pertama memiliki 2 buah  masukan yang  masing­masing bertipe  integer.  Fungsi  kedua 
memiliki   sebuah  masukan  bertipe   float,  dan   fungsi   terakhir   memiliki   masukan  berupa   array 
bertipe char.

Di dalam program utama, dideklarasikan 2 buah variabel bertipe integer, 1 buah bertipe float, dan 
sebuah array bertipe char sebanyak 15 elemen. Baris keenam program utama, berfungsi menerima 
masukan dari user. Segala masukan baik berupa karakter atau angka akan disimpan ke dalam array 
bernama kata, dan dikenali sebagai karakter (meskipun user memasukkan angka).

Selanjutnya user juga diminta untuk memasukkan nilai a. Nilai yang dimasukkan user disimpan ke 
dalam  variabel   l.   Kursor   kompilasi   berpindah   menuju   baris   selanjutnya,   nilai   m   didapatkan. 
Kemudian nilai w sama dengan nilai yang dikembalikan oleh fungsi nilai. Karena kursor kompilasi 
menjumpai   kata   dimana   kata   tersebut   merupakan   nama   sebuah   fungsi,   maka   fungsi   terkait 
dijalankan.


Ilmu Komputer UGM                                                                                   59
Modul KL. Pemrograman C++

Pemanggilan fungsi nilai harus memperhatikan jumlah parameter yang dibutuhkan dan tipe data 
dari   parameter   tersebut.   Karena   variabel   l   dan   m   merupakan   integer   serta   masukan   yang 
dibutuhkan fungsi nilai juga integer maka sah jika fungsi dijalankan. Kursor kompilasi menuju ke 
awal sub program fungsi nilai. Fungsi nilai mengembalikan sebuah bilangan float yang tak lain 
adalah   penjumlahan   dari   parameter   1   dengan   parameter   2.   Bilangan   hasil   penjumlahan   ini 
kemudian dikopikan ke dalam variabel w.

Kursor kompilasi kembali ke baris 12 program utama. Nilai variabel jumlah ditampilkan. Karena 
jumlah merupakan suatu fungsi, maka sebelum ditampilkan sub programnya dijalankan terlebih 
dahulu. Kursor kompilasi kembali berpindah menuju ke baris awal sub program fungsi jumlah. 
Fungsi ini memerlukan sebuah masukan bertipe float. Nilai w sebagai masukan juga bertipe float, 
maka sah jika fungsi ini dijalankan. Fungsi jumlah mengembalikan sebuah nilai bertipe integer 
hasil perkalian dari parameter masukan dengan nilai 100. Hasil ini disimpan ke dalam variabel 
jumlah.

Kursor kompilasi kembali pada baris 12 program utama dan menyelesaikan statementnya. Nilai 
pada fungsi jumlah ditampilkan. Pada baris berikutnya, dijalankan fungsi tampilkan. Fungsi ini 
memiliki sebuah masukan yang berbentuk array dengan tipe char. Variabel kata yang berperan 
sebagai parameter masukan fungsi tampilkan juga berbentuk array dan bertipe char. Maka sah jika 
fungsi tampilkan dijalankan. Kursor kompilasi menuju sub program fungsi tampilkan. Di dalamnya 
hanya terdapat satu baris program yang berfungsi untuk menampilkan string/array karakter dari 
parameter fungsi. 
 
int main()
{
     int l, m;
     float w;
     char kata[15];

        cout << "Masukkan nama variabel = ";
        cin >> kata;
        cout << "\nMasukkan nilai a = ";
        cin >> l;       l = 3

        m = l + 10;
        w = nilai(l,m);                  float nilai(3, 13)
                                         {
                                              return((float) 3 + 13);


Ilmu Komputer UGM                                                                                 60
Modul KL. Pemrograman C++

                                  }




      cout << "Nilai hasilnya adalah = " << jumlah(w) << endl;



                                         int jumlah (16)
                                         {
                                              return((int) 16 * 100);
                                         }

      masukan(kata);

       void masukan(kata=”variabelku”)
       {
           cout << "Nama variabelnya adalah = " << kata;
       }

      return 0;
}

Contoh berikut ini akan memperlihatkan cara memberikan parameter fungsi berupa array multi 
dimensi.

#include <iostream.h>

float fungsi(int larik[][3], int kolom, int baris);

int main()
{
     int nilai[][3] = {{5, 6, 8},{2, 9, 7}};

      cout << "Nilai fungsinya = " << fungsi(nilai, 2, 3) << endl;
      return 0;
}

float fungsi(int larik[][3], int kolom, int baris)
{
     float jumlah = 0;


Ilmu Komputer UGM                                                                61
Modul KL. Pemrograman C++


        for (int i=0; i<kolom; i++)
        {
             for (int j=0; j<baris; j++)
             {
                   jumlah = (float) jumlah + larik[i][j];
             }
        }
        return(jumlah);
}

Terlihat   pada   baris   ketiga   program,   prototipe   fungsi   memiliki   parameter   masukan  array   dua 
dimensi.  Cara penulisannya boleh  disertakan  indeks  array yang  pertama maupun yang   kedua. 
Apabila indeks ingin dikosongi karena belum diketahui jumlah elemennya, maka hanya indeks 
pertama saja yang boleh kosong. Indeks kedua dan seterusnya harus diisikan jumlah elemennya.



Rekursi

Rekursi merupakan pemanggilan fungsi sendiri di dalam fungsi terkait. Contohnya sbb :

#include <iostream.h>

int faktorial(int a);

int main()
{
     int z;
     cout << "Masukkan nilai yang akan dicari faktorialnya = ";
     cin >> z;
     cout << faktorial(z);
}

int faktorial(int a)
{
     int hasil=1;
     if (a == 0)
     {
           return(1);
     }


Ilmu Komputer UGM                                                                                  62
Modul KL. Pemrograman C++

        else if (a > 0) 
        {
             hasil = a * faktorial(a­1);
             return(hasil);
        }

}

Terdapat fungsi faktorial dengan nilai kembali berupa integer. Di dalam sub program fungsi ada 
pemanggilan fungsi faktorial itu sendiri yaitu :

hasil = a * faktorial(a­1);

sehingga apabila user memberikan masukan parameter a nilai 3 misalnya, maka program akan 
berjalan sbb :

rekursi I :

Hasil mula­mula bernilai 1. Kemudian karena a bernilai 3 maka statement else dijalankan.
Hasil = 3 * faktorial(2)

rekursi II :

Hasil mula­mula bernilai 1. Kemudian karena a bernilai 2 maka statement else dijalankan.
Hasil = 2 * faktorial(1)

rekursi III :

Hasil mula­mula bernilai 1. Kemudian karena a bernilai 1 maka statement else dijalankan.
Hasil = 1 * faktorial(0)

rekursi IV :

Hasil mula­mula bernilai 1. Karena a = 0 maka masuk ke statement if. Hasilnya fungsi faktorial 
pada rekursi keempat mengembalikan nilai 1 (return (1)).

Setelah hasil rekursi keempat didapat, jalannya program kembali ke rekursi di atasnya.

Ilmu Komputer UGM                                                                        63
Modul KL. Pemrograman C++

rekursi III : 

hasil = 1 * 1 adalah 1
kemudian   nilai   hasil   (1)   dikembalikan   oleh   fungsi   faktorial   pada   rekursi   ketiga.  Selanjutnya 
jalannya program menuju ke rekursi di atasnya yaitu rekursi kedua.

rekursi II :

hasil = 2 * 1 adalah 2
kemudian   nilai   hasil   (2)   dikembalikan   oleh   fungsi   faktorial   pada   rekursi   kedua.   Selanjutnya 
jalannya program menuju ke rekursi di atasnya yaitu rekursi pertama.

rekursi I :

hasil = 3 * 2 adalah 6
kemudian nilai hasil (6) dikembalikan oleh fungsi faktorial pada rekursi pertama dan sekaligus 
sebagai hasil akhir nilai faktorial dari 3.




Ilmu Komputer UGM                                                                                     64
Modul KL. Pemrograman C++

                                              POINTER

Tujuan
   1. Menerangkan tentang hakekat pointer di dalam C++
   2. Menerangkan kegunaan pointer
   3. Menerangkan cara menggunakan pointer di dalam program

Kemampuan
  1. Praktikan memahami hakekat pointer di dalam C++
  2. Praktikan mengetahui kegunaan pointer
  3. Praktikan tahu cara menggunakan pointer di dalam program

Pendahuluan

Pointer   digunakan   untuk   menunjuk   variabel/memori   secara   fleksibel.   Pointer   mirip   dengan 
variabel, yang sama­sama memiliki alokasi memori di komputer. Perbedaannya adalah isi dari 
pointer. Isinya adalah suatu alamat memori. Selain itu pointer minimal membutuhkan alokasi 2 
memori saat menggunakannya.

Perhatikan penjelasan berikut yang akan memudahkan Anda memahami apa itu pointer.
 
          a

10F      20


Gambar dia atas adalah suatu variabel bernama  a  yang mendapatkan alokasi memori di dalam 
komputer di alamat 10F. Kemudian nilai dari variabel a adalah 20.


         *p

21C     10F


Gambar di atas adalah suatu pointer bernama p (tanda * merupakan penunjuk bahwa p merupakan 


Ilmu Komputer UGM                                                                             65
Modul KL. Pemrograman C++

pointer) yang memiliki alokasi memori pada alamat  21C. Nilai dari p adalah 10F. 10F tak lain 
adalah alamat dari variabel a. Inilah sebab pointer disebut penunjuk variabel/memori.

Tipe Data Pointer

Meskipun pointer menyimpan alamat memori/variabel bukan berarti pointer tidak memiliki tipe 
data atau bertipe data integer. Pointer memiliki tipe data layaknya variabel seperti biasanya. Lalu 
tipe   data   ini   fungsinya   untuk   apa?   Tipe   data   pointer   berfungsi   untuk   menjelaskan  tipe   data 
variabel/memori yang ditunjuk oleh pointer tersebut.

Seperti pada kedua gambar di atas, pointer *p memiliki tipe data integer. Artinya adalah nilai di 
dalam  memori   beralamat  10F   bertipe   data   integer.   Semisal  pointer   bertipe  integer  sedangkan 
variabel a bertipe float, maka pointer p tidak bisa menunjuk ke variabel a. dikarenakan berbeda 
tipe data.

Pengaksesan Pointer

Contoh   sederhana  yang   akan   menjelaskan  tentang   pengaksesan  pointer   adalah  menggunakan 
fungsi cout. Perhatikan program berikut :

#include <iostream.h>

int main()
{
     int *p = NULL;
     int nilai = 9;

        p = &nilai;
        cout << "Alamat yang ditunjuk p adalah = " << p << endl;
        cout << "Nilai yang ditunjuk p adalah = " << *p << endl;
        return 0;
}

Keluaran program adalah :

Alamat yang ditunjuk p adalah = 0xbffffa90
Nilai yang ditunjuk p adalah = 9


Ilmu Komputer UGM                                                                                      66
Modul KL. Pemrograman C++

Terlihat bahwa ada dua pilihan dalam mengakses pointer. Pertama, kita mengakses isi pointer yang 
berupa alamat memori dan kedua adalah kita mengakses nilai memori yang ditunjuk oleh pointer. 
Untuk  cara pertama cukup dengan menyebutkan nama pointernya tanpa menyertakan  tanda  *. 
Sedangkan untuk cara kedua kita perlu menyertakan tanda * sebelum nama pointer.

Pada baris ke­8 program 

p = &nilai;

mempunyai arti pointer p yang semula tidak menunjuk ke memori manapun <int *p = NULL;> 
dialihkan menjadi menunjuk ke memori nilai. Tanda & berarti alamat. Sehingga nilai pointer p 
sama dengan alamat dari variabel nilai. Contoh lainnya sbb :

#include <iostream.h>

int main()
{
     int *p = NULL;
     int nilai = 9;

        p = &nilai;
        *p = 11;
        cout << "Alamat yang ditunjuk p adalah = " << p << endl;
        cout << "Nilai sekarang bernilai = " << nilai << endl;
        return 0;
}

Keluaran program di atas adalah :

Alamat yang ditunjuk p adalah = 0xbffffa90
Nilai sekarang bernilai = 11

Baris   ke­9  program  di   atas   memperlihatkan  cara   mengganti   nilai   dari   suatu  variabel  melalui 
pointer. Variabel nilai diganti dari 9 menjadi 11 melalui pointer p. Dengan 

Pointer Dan Array

Pada hakekatnya pointer dapat menunjuk ke segala memori. Karena array juga merupakan memori 

Ilmu Komputer UGM                                                                                 67
Modul KL. Pemrograman C++

yang dikumpulkan menjadi satu, maka pointer dapat menunjuknya. Cara penunjukkannya ada dua 
macam. Pertama adalah menunjuk array non char dan yang kedua adalah menunjuk array char.

Cara   pertama   yaitu   dengan   menunjuk   array   satu   per   satu   seperti   menunjuk   variabel   biasa. 
Perhatikan contoh program berikut :

#include <iostream.h>

int main()
{
     int larik[3] = {50, 30, 10};
     int *p;

        p = &larik[0];
        cout << "Nilai pertama = " << *p << endl;
        for (int i=0; i<3; i++)
             cout << *(p+i) << endl;

        return 0;
}

Keluaran dari program di atas adalah :

Nilai pertama = 50
50
30
10
Baris ke­8 program menunjukkan cara pointer menunjuk ke sala satu elemen array. Apabila indeks 
array   ini   dihilangkan,  maka  program  akan  error,   dikarenakan  pointer  bertipe   non  char  harus 
menunjuk tepat pada satu eleman array. Baris ke­10 dan 11 menunjukkan cara menampilkan semua 
elemen array melalui pointer yang menunjuknya.
Untuk lebih jelasnya perhatikan gambar berikut :


        10A 10B 10C

larik    50     30     10

Alokasi memori pada array bernama larik



Ilmu Komputer UGM                                                                                   68
Modul KL. Pemrograman C++

        FF1

p      10A

Alokasi memori pada pointer p

Maka statement (p+i) berarti isi dari pointer ditambah dengan i. Sehingga berturut­turut bernilai 
10A, 10B, dan 10C. Lebih lengkapnya statement *(p+i) berarti nilai dari variabel yang ditunjuk 
oleh pointer yang tak lain 50, 30, dan 10.

Apabila statement *(p+i) diganti dengan *p+i maka berturut­turut keluarannya menjadi 50, 51, 
dan 52. Hal ini disebabkan *p selalu menunjuk ke elemen array yang pertama. Kemudian elemen 
yang ditunjuk tersebut ditambah dengan i.

Cara   kedua   adalah   penunjukan   terhadap   array   bertipe   char   atau   string.   Lebih   berbeda  dari 
penunjukan array non char karena array char atau string di dalam C++ mempunyai perlakukan 
khusus. Perhatikan contoh berikut :

#include <iostream.h>

int main()
{
     char kata[] = "belajar C++";
     char *p;

        p = kata;
        cout << p;
        return 0;
} 

Terdapat sebah array bertipe char berrnama kata. Jumlah elemen array kata adalah 12. Kemudian 
terdapat pula sebuah pointer bertipe char bernama p. pointer tersebut menunjuk ke array kata 
dengan ekspresi  p = kata; tanpa karakter * mengawali nama pointer dan karakter & mengawali 
nama array. Ekspresi tersebut berarti pointer menunjuk kepada elemen array yang paling pertama 
(kata[0]). Selanjutnya elemen­eleman yang ditunjuk oleh pointer p ditampilkan di layar.  Hasil 
keluaran porgram di atas adalah 

belajar C++


Ilmu Komputer UGM                                                                                   69
Modul KL. Pemrograman C++


Seperti pada perintah yang sudah kita pelajari sebelumnya, untuk menampilkan array bertipe char 
bisa langsung dituliskan cout << kata; tanpa menggunakan perulangan layaknya array bertipe 
non char. Demikian pula dengan pointer bertipe char yang menunjuk ke array bertipe string. Tidak 
perbedaan dalam menampilkan ke layar. cukup cout << p tanpa karakter bintang pada p. Jika 
menggunakan karakter * maka tampilan hanya akan mengeluarkan huruf b.

Pemahaman dengan gambar sbb :


      101 102 103 104 105 106 107 108 109 10A 10B 10C

kata b       e   l    a     j     a     r          C     +    +     /0


       fff

p      101


Ketika ekspresi cout << p dijalankan, maka C++ akan mengeluarkan semua elemen pada array 
yang  ditunjuk oleh p. Hingga C++ menemukan tanda null  (/0) pada salah satu elemen  array. 
Contoh lainnya sbb :

#include <iostream.h>

int main()
{
     char *p = "belajar C++";

       cout << p;
       return 0;
} 

Keluaran program adalah :

belajar C++


Arti dari program di atas adalah (char *p = "belajar C++";) dialokasikan sebuah array 

Ilmu Komputer UGM                                                                     70
Modul KL. Pemrograman C++

berelemen 12 buah. Array tersebut tidak mempunyai nama (anonymous). Isi array tak lain adalah 
karakter “belajar C++”. Kemudian dialokasikan sebuah pointer bernama p dengan tipe char yang 
menunjuk ke array anonymous tersebut.

Pointer Menunjuk Pointer

Pointer pada hakekatnya juga merupakan memori namun fungsinya untuk menunjuk memori yang 
lain. Hal ini yang menyebabkan pointer dapat ditunjuk oleh pointer lainnya. Cara penulisan pointer 
yang menunjuk ke pointer sbb :

#include <iostream.h>

int main()
{
     int *p = NULL;
     int **q = NULL;
     int z = 12;

       p = &z;
       cout  << "Nilai yang ditunjuk p = " << *p << endl;
       q = &p;
       *p = 15;
       cout  << "Nilai yang ditunjuk q = " << **q << endl;
       cout  << "Nilai yang ditunjuk p = " << *p << endl;
       return 0;
}

Keluaran program adalah :

Nilai yang ditunjuk p = 12
Nilai yang ditunjuk q = 15
Nilai yang ditunjuk p = 15

Pointer q merupakan pointer yang menunjuk kepada pointer lain. Pada baris 12 dan 13, terdapat 
ekpresi dimana pointer q menunjuk ke pointer p dan nilai pointer p diganti dengan 15. Pointer q 
menunjuk ke pointer p. Sedangkan pointer p menunjuk ke variabel z yang bernilai 15 (nilai z juga 
otomatis terganti dengan adanya statement pada baris ke­13). Inilah sebabnya untuk menampilkan 
nilai yang ditunjuk oleh pointer p melalui pointer q dituliskan seperti pada baris ke­14 (**q). 


Ilmu Komputer UGM                                                                       71
Modul KL. Pemrograman C++

Penjelasan dengan gambar dapat dilihat sbb :


       10F                               10F                              10F

z       12                        z       12                       z       12

       55A                              55A                               55A

*p    10F                                FF0                       **q     55A


Array Dari Pointer

Suatu array dapat berupa pointer elemennya. Namun ada perbedaan antara array pointer bertipe 
char  dan  non  char.   Perbedaannya terletak  pada  cara  pendeklarasian  dan pengaksesan.  Berikut 
contohnya :

#include <iostream.h>

int main()
{
     int *p[3];
     int q[] = {1, 2, 3};

       for (int i=0; i<3; i++)
       {
            p[i] = &q[i];
            cout << *p[i];
       }
       return 0;
} 

Keluarannya adalah 1 2 3
Sedangkan untuk array pointer bertipe char berikut contohnya :

#include <iostream.h>

int main()
{


Ilmu Komputer UGM                                                                         72
Modul KL. Pemrograman C++

       char *p[] = {"merah", "hijau", "kuning"};

       for (int i=0; i<3; i++)
            cout << p[i] << endl;
       return 0;
} 

Keluarannya adalah 

merah
hijau
kuning

Array pointer bertipe non char tidak dapat langsung dideklarasikan isinya. Mereka membutuhkan 
array lain untuk menyimpan nilai yang akan ditunjuk. Terlihat bahwa array pointer p pada program 
pertama tidak bisa langsung diisi dengan nilai 1, 2, dan 3. Namun nilai tersebut diisi terlebih 
dahulu ke dalam array q. Baru kemudian menggunakan perulangan, array pointer didefinisikan 
penunjukkannya.

Sedangkan pada array pointer bertipe char, array p langsung bisa didefinisikan penunjukannya. 
Ekspresi   char *p[] = {"merah", "hijau", "kuning"}; memiliki arti bahwa terdapat 
tiga buah array dengan nama anonymous. Masing­masing berelemen 5, 5, dan 6. Kemudian isi 
ketiga array tersebut adalah kata merah, hijau, dan kuning. Selanjutnya terdapat 3 buah array 
pointer yang bertipe char menunjuk ketiga array anonymous. Baris progam 

for (int i=0; i<3; i++)
     cout << p[i] << endl;

memiliki fungsi untuk menampilkan elemen array yang ditunjuk oleh array pointer p. 

Pointer Sebagai Masukan Fungsi

Perhatikan contoh program berikut :

#include <iostream.h>

void tukar(int *a, int *b);



Ilmu Komputer UGM                                                                     73
Modul KL. Pemrograman C++

int main()
{
     int x = 89;
     int y = 47;

      cout  << “Sebelum tukar(): “ << endl;
      cout  << “ x = “ << x
            << “ y = “ << y
            << endl;

      tukar(&x, &y);

      cout  << “Sesudah tukar() : “ << endl;
      cout  << “ x = “ << x
            << “ y = “ << y
            << endl;
      return 0;
}

void tukar(int *a, int *b)
{
     int c;

      c = *a;
      *a = *b;
      *b = c;
}




Ilmu Komputer UGM                              74
Modul KL. Pemrograman C++




Ilmu Komputer UGM           75
Modul KL. Pemrograman C++

                                            CLASS

Tujuan
   1. Menerangkan Object Oriented Programming
   2. Menerangkan hakekat class, object, method, constructor, destructor, dan inheritance
   3. Menerangkan cara membuat program OOP

Kemampuan
  1. Praktikan memahami hakekat OOP
  2. Praktikan mengerti elemen­elemen yang ada di dalam program OOP 
  3. Praktikan mampu membuat program menggunakan OOP

Pendahuluan

C++  merupakan bahasa pemrograman berbasis  OOP  (Object Oriented Programming).  Metode 
OOP memiliki perbedaan dari pemrograman berbasis prosedural. Salah satu perbedaannya adalah 
pemrograman  prosedural  menyelesaikan  masalah   (algoritma)  secara  terurut   dan  menggunakan 
prosedure/function­function.   Namun   untuk   metode   OOP,   permasalahan   diselesaikan   dengan 
memetakan objek­objek di dalam permasalahan tersebut, mendefinisikan atribut­atribut penyusun 
objek, dan fungsi­fungsi yang ada di dalamnya.

Seperti pada contoh kasus program bangun ruang. Desain OOPnya sbb :
   1. Kita mempunyai objek bangun ruang misalnya kubus, balok, dan limas
   2. Tiap objek tersebut memiliki atribut seperti panjang sisi, tinggi, lebar, dsb. tergantung 
        bentuk bangun ruangnya
   3. Tiap objek juga mempunyai fungsi sendiri­sendiri untuk menghitung luas bidang, volume 
        bidang, dsb.

Dari contoh di atas, kita akan mencoba untuk menjabarkannya menjadi sebuah contoh program. 
Pada bahasan di bawah ini akan dijelaskan bagaimana cara membuat program OOP menggunakan 
C++ dengan contoh desain OOP di atas.

Class



Ilmu Komputer UGM                                                                        76
Modul KL. Pemrograman C++

Class merupakan tipe dari objek. Sebelum kita membuat suatu objek, terlebih dahulu ditentukan 
tipe dari objek tersebut. Deklarasi class seperti pada contoh di bawah :

class Bangun
{
     private :
           int sisi;
     public :
           int luas(int sisi);
           int volume(int sisi);
};


Kata private menandakan bahwa variabel atau fungsi di bawah kata tersebut hanya boleh diakses 
oleh kode­kode di dalam class tersebut. Untuk kata public menandakan bahwa variabel atau fungsi 
di bawah kata tersebut boleh diakses oleh semua kode meskipun berbeda class.

Luas dan volume merupakan fungsi­fungsi dalam class Bangun yang berguna untuk menghitung 
luas bangun dan volumenya. Fungsi dalam class biasa disebut dengan nama method.


Objek 

tipe data int, float, char, dsb. sama seperti class (sama­sama tipe data). Namun untuk memakai tipe 
data tersebut, kita harus menciptakan variabel, misalnya : int a. int merupakan tipe data dan a 
merupakan  variabel   bertipe   int.   Sama  seperti   class,   untuk   memakainya   kita   harus   membuat 
variabel. Variabel ini selanjutnya kita sebut dengan objek.

Berikut cara mendeklarasikan class dan menggunakannya dalam objek

#include <iostream.h>

class Bangun
{
     public:
     Bangun(int s, int p);
     int Luas(int p, int l);
     void Volume(int sisi);



Ilmu Komputer UGM                                                                               77
Modul KL. Pemrograman C++

       private:
       int a,b;
       int massa;
}

Bangun::Bangun(int s, int p)
{
     a = s;
     b = p;
     //return(0);
}

int Bangun::Luas(int p, int l)
{
     int L;
     L = p * l;
     return(L);
}

void Bangun::Volume(int sisi)
{
     int vol;
     vol = sisi * sisi * sisi;
     massa = vol;
}

int main()
{
     Bangun Kubus(5,3);
     int o = Kubus.Luas(6,8);
     Kubus.Volume(4); 

       cout << "luas : ";
       cout << o;
       cout << “Volume : “;
       cout << Kubus.massa;
       return(0);
}

Terdapat class Bangun dengan atribut a, b, dan massa. Selain itu juga mempunyai method Volume 
dan Luas. Kemudian dalam program utama terdapat objek Kubus yang bertipe class Bangun.



Ilmu Komputer UGM                                                                   78
Modul KL. Pemrograman C++

Method

Persis seperti fungsi, method bisa memiliki keluaran atau tidak. Jika tidak memiliki keluaran maka 
method   bertipe   void.   Pada   contoh   di   atas   method  Luas  memiliki   keluaran   bertipe   integer. 
Sedangkan method Volume tidak. 

Method  Luas  membutuhkan  dua  parameter.   Di  dalam  method  tersebut,  dihitung  luas  bangun 
berdasarkan parameter masukkannya. Hasil penghitungan dikembalikan sebagai nilai method. Pada 
program utama, nilai balikan ini disimpan di dalam variabel o. Method Volume membutuhkan satu 
parameter.   Di   dalamnya   method   tersebut,   dihitung   volume   bangun   berdasarkan   parameter 
masukkannya. Hasil penghitungan dimasukkan ke dalam variabel massa. 

Constructor

Constructor adalah method yang mempunyai nama sama seperti class­nya. Fungsinya adalah ketika 
objek didefinisikan maka method constructor dijalankan. Misalnya pada baris

Bangun Kubus(5, 3);


pada   saat   objek   Kubus   dibuat  maka   method/constructor   Bangun  dijalankan.  Itulah   mengapa 
pendefinisian objek Kubus di atas memerlukan 2 parameter (2, 3). Parameter tersebut merupakan 
parameter yang dibutuhkan oleh constructor.

Bangun::Bangun(int s, int p)
{
     a = s;
     b = p;
     //return(0);
}


Selanjutnya nilai parameter 1 (2) dimasukkan ke dalam variabel a  pada class Bangun dan nilai 
parameter 2 (3) dimasukkan ke dalam variabel b pada class Bangun. Constructor meskipun sama 
seperti method, namun tidak memiliki tipe data.
Manfaat dari constructor adalah ketika kita mendefinisikan objek sekalian kita memasukkan suatu 
nilai pada variabel di dalam objek tersebut (dalam contoh ini a dan b).


Ilmu Komputer UGM                                                                                 79
Modul KL. Pemrograman C++

Destructor

Destructor adalah fungsi yang secara otomatis dijalankan ketika suatu objek musnah. Fungsi dari 
destructor antara lain membebaskan memori yang telah dipakai untuk objek dan atribut­atribut di 
dalamnya. Destructor memiliki nama seperti class­nya, namun didahului dengan tanda tidle (~). 
Contoh :

#include <iostream.h>

class Bangun
{
     public:
     Bangun(int s, int p);
     ~Bangun();
     int Luas(int p, int l);
     void Volume(int sisi);

        private:
        int a,b;
        int massa;
}

.....

Bangun::~Bangun()
{
     /*tanpa baris program tidak mengapa karena hanya */
}


Inheritance/Pewarisan

Inheritance memungkinkan suatu class memiliki atribut/sifat seperti class yang sudah ada. Seperti 
pada contoh berikut ini :

#include <iostream.h>

class barang
{
     private :


Ilmu Komputer UGM                                                                      80
Modul KL. Pemrograman C++

      int a,b;

      public :
      barang(int j,int k);
      int tambah();
};

class baju : public barang
{
     private :
     int h;

      public :
      baju(int i,int j,int k);
      int tampilkan();
};

barang::barang(int j, int k)
{
     a = j;
     b = k;
}

int barang::tambah()
{
     return(a+b);
}

baju::baju(int i, int j, int k) : barang(j,k)
{
      h = i;
}

int baju::tampilkan()
{
     return (h + barang::tambah());
}

int main()
{
     baju koko(8,4,6);
     cout << koko.tampilkan();


Ilmu Komputer UGM                               81
Modul KL. Pemrograman C++

}


Terdapat dua buah class yaitu Barang dan Baju. Class Baju merupakan turunan dari class Barang. 
Penjelasan dari contoh di atas, class barang  memiliki constructor tersendiri dengan 2 parameter 
masukan. Sedangkan class  baju  memiliki 3 buah masukan dalam constructornya. Karena  baju  
adalah pewaris dari class barang maka, constructor baju harus memuat constructor barang.

baju::baju(int i, int j, int k) : barang(j,k)
{
      h = i;
}

2   parameter  baju  digunakan   sebagai   constructor  barang  (j   dan   k).   Kemudian   parameter  i  
dimasukkan ke variabel h.

Akses Atribut Class

Kita   bisa   mengakses   atribut   class   dengan   terlebih   dahulu   menuliskan   objek   dari   class   yang 
bersangkutan, diikuti tanda titik (.) baru kemudian nama atributnya. Contoh :

koko.tampilkan();




Ilmu Komputer UGM                                                                                     82
Modul KL. Pemrograman C++

                                  DAFTAR PUSTAKA

Kadir, Abdul, 2004, Pemrograman Visual C++, Penerbit Andi, Jogjakarta.

Binanto, Iwan, 2003, Pemrograman C++ di Linux, Penerbit Andi, Jogjakarta.

Binanto, Iwan, 2004, Lebih Lanjut dengan Pemrograman C++ di Linux, Penerbit Andi, Jogjakarta.

Java 2 TM Fourth Edition, McGraw Hill, New York

www.juicy.com/tutorial/c++




Ilmu Komputer UGM                                                                   83

				
DOCUMENT INFO
Stats:
views:634
posted:9/26/2012
language:Unknown
pages:83
Description: Menerangkan elemenelemen yang ada di dalam program C++ 2. Menerangkan fungsi dari tiap elemen di dalam C++