Modul c++ Komsi

83
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

description

Modul KL. Pemrograman C++, Menerangkan  elemen­elemen yang ada  d i dalam program C+ +,Menerangkan  fun gsi dari tiap elemen d i dalam C++, Pemrograman   C++   di   dalam  sistem   operasi  Linux   menggunakan  software   g++   %GNU  C++%. Kompiler  ini dapat  secara otomatis  terins tall pada  saat menginstall sistem operasi, dengan  catatan kita mem ilih opsi unt uk mengin stall g++ .Kompilasi   menggunakan   g++   dilakukan   di   dalam   console   Linux.   Dengan   teeleb ih   dahulu menyimpan   file   source   C++  ke   dalam  file   bereks tension   .cpp,   .cp,   cxx,   c++,   cp,   atau   cc.   Lalu  tempatkan  dalam f older home/ .

Transcript of Modul c++ Komsi

Page 1: Modul c++ Komsi

Modul KL. Pemrograman C++

PEMROGRAMAN C++

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

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

Page 2: Modul c++ Komsi

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

Page 3: Modul c++ Komsi

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

Page 4: Modul c++ Komsi

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

Page 5: Modul c++ Komsi

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

Page 6: Modul c++ Komsi

Modul KL. Pemrograman C++

TIPE DATA DAN VARIABEL

Tujuan1. Menerangkan macam­macam tipe data di dalam C++2. Menerangkan maksud dari variabel3. Menerangkan operasi­operasi variabel yang didukung oleh C++

Kemampuan1. Praktikan memahami macam­macam tipe data di dalam C++2. Praktikan memahami proses pembentukan variabel3. 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

Page 7: Modul c++ Komsi

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

Page 8: Modul c++ Komsi

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

Page 9: Modul c++ Komsi

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 1010digeser ke kiri 1 bit menjadix = 20 ­> 0000 0000 0001 0100Contoh lain 

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

Hasilnya nilai x = ­1. Penjelasannya sbb :x = 10 ­> 0000 0000 0000 1010dan ~x ­> 1111 1111 1111 0101 Kemudian dikenakan operasi AND, maka hasilnya menjadix = 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

Page 10: Modul c++ Komsi

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

Page 11: Modul c++ Komsi

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

Page 12: Modul c++ Komsi

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

Page 13: Modul c++ Komsi

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

Page 14: Modul c++ Komsi

Modul KL. Pemrograman C++

BASIC INPUT OUTPUT

Tujuan1. Menerangkan operasi input dan output di dalam C++2. Menerangkan parameter input dan output3. Menerangkan operasi output ke dalam file

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

Page 15: Modul c++ Komsi

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 hexadecimal

mencetak bilangan 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

Page 16: Modul c++ Komsi

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

Page 17: Modul c++ Komsi

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

Page 18: Modul c++ Komsi

Modul KL. Pemrograman C++

CONTROL STATEMENTTujuan

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

Kemampuan1. Praktikan memahami cara menggunakan control statement2. 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

Page 19: Modul c++ Komsi

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

Page 20: Modul c++ Komsi

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;

elsejumlah = 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

Page 21: Modul c++ Komsi

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 120

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

Page 22: Modul c++ Komsi

Modul KL. Pemrograman C++

           20kondisi 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)elseif (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

Page 23: Modul c++ Komsi

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

Page 24: Modul c++ Komsi

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

Page 25: Modul c++ Komsi

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

Page 26: Modul c++ Komsi

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

Page 27: Modul c++ Komsi

Modul KL. Pemrograman C++

PERULANGAN

Tujuan1. Menerangkan macam­macam perulangan yang didukung oleh C++2. Menerangkan cara menggunakan perulangan di dalam program3. Menerangkan perbedaan dari masing­masing jenis perulangan

Kemampuan1. Praktikan mampu menggunakan perulangan di dalam program2. 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. goto2. while3. do ... while4. forKeempat   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

Page 28: Modul c++ Komsi

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

Page 29: Modul c++ Komsi

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­0Iterasi ke­1Iterasi ke­2Iterasi ke­3Iterasi ke­4Iterasi ke­5Iterasi ke­6Iterasi ke­7Iterasi ke­8Iterasi ke­9

Dalam  menggunakan  perulangan   bentuk   while   kita   memerlukan  2   hal.   Pertama,   perulangan memerlukan kondisi untuk memberhentikan proses iterasi. Kedua, perulanganmembutuhkan 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

Page 30: Modul c++ Komsi

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

Page 31: Modul c++ Komsi

Modul KL. Pemrograman C++

Keluaran program di atas :

Iterasi ke­0Iterasi ke­1Iterasi ke­2Iterasi ke­3Iterasi ke­4Iterasi ke­5Iterasi ke­6Iterasi ke­7Iterasi ke­8Iterasi 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

Page 32: Modul c++ Komsi

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­0Iterasi ke­1Iterasi ke­2Iterasi ke­3Iterasi ke­4Iterasi ke­5Iterasi ke­6

Ilmu Komputer UGM 32

Page 33: Modul c++ Komsi

Modul KL. Pemrograman C++

Iterasi ke­7Iterasi ke­8Iterasi 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­0Iterasi ke­2Iterasi ke­4Iterasi ke­6Iterasi ke­8

Break

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

Ilmu Komputer UGM 33

Page 34: Modul c++ Komsi

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­0Iterasi ke­1Iterasi ke­2Iterasi ke­3Iterasi ke­4Iterasi ke­5Iterasi ke­6Iterasi ke­7Iterasi ke­8

Ilmu Komputer UGM 34

Page 35: Modul c++ Komsi

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­0Iterasi ke­1Iterasi ke­2Iterasi ke­3

Ilmu Komputer UGM 35

Page 36: Modul c++ Komsi

Modul KL. Pemrograman C++

Iterasi ke­6Iterasi ke­7Iterasi ke­8Iterasi 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

Page 37: Modul c++ Komsi

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

Page 38: Modul c++ Komsi

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 = 3Perulangan ke­1Perulangan ke­2Perulangan ke­3Perulangan ke­2Perulangan ke­4Perulangan ke­6

Ilmu Komputer UGM 38

Page 39: Modul c++ Komsi

Modul KL. Pemrograman C++

LARIK (ARRAY)

Tujuan1. Menerangkan hakekat dari array2. Menerangkan seluk­beluk array3. Menerangkan cara menggunakan array

Kemampuan1. Praktikan memahami pengertian dan seluk­beluk dari array2. 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

Page 40: Modul c++ Komsi

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

Page 41: Modul c++ Komsi

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

Page 42: Modul c++ Komsi

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   7A   = 4   9   2

7   8   5

Ilmu Komputer UGM 42

Page 43: Modul c++ Komsi

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

Page 44: Modul c++ Komsi

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

Page 45: Modul c++ Komsi

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

Page 46: Modul c++ Komsi

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

Page 47: Modul c++ Komsi

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] = 5larik2[0][0][1] = 6larik2[0][0][2] = 4

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

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

larik2[1][1][0] = 2larik2[1][1][1] = 3larik2[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

Page 48: Modul c++ Komsi

Modul KL. Pemrograman C++

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

Ilmu Komputer UGM 48

Page 49: Modul c++ Komsi

Modul KL. Pemrograman C++

STRING

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

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

Page 50: Modul c++ Komsi

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 :

ABCDEBELAJAR

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

Page 51: Modul c++ Komsi

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

Page 52: Modul c++ Komsi

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 :

ABCDEBELAJAR 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

Page 53: Modul c++ Komsi

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 = faizalfaizalfai0Panjang 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

Page 54: Modul c++ Komsi

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

Page 55: Modul c++ Komsi

Modul KL. Pemrograman C++

FUNCTION

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

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

Page 56: Modul c++ Komsi

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.5nilai 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 buahFungsi 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

Page 57: Modul c++ Komsi

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

Page 58: Modul c++ Komsi

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

Page 59: Modul c++ Komsi

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 = 3Nilai hasilnya adalah = 1600Nama 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

Page 60: Modul c++ Komsi

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

Page 61: Modul c++ Komsi

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

Page 62: Modul c++ Komsi

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

Page 63: Modul c++ Komsi

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

Page 64: Modul c++ Komsi

Modul KL. Pemrograman C++

rekursi III : 

hasil = 1 * 1 adalah 1kemudian   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 2kemudian   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 6kemudian nilai hasil (6) dikembalikan oleh fungsi faktorial pada rekursi pertama dan sekaligus sebagai hasil akhir nilai faktorial dari 3.

Ilmu Komputer UGM 64

Page 65: Modul c++ Komsi

Modul KL. Pemrograman C++

POINTER

Tujuan1. Menerangkan tentang hakekat pointer di dalam C++2. Menerangkan kegunaan pointer3. Menerangkan cara menggunakan pointer di dalam program

Kemampuan1. Praktikan memahami hakekat pointer di dalam C++2. Praktikan mengetahui kegunaan pointer3. 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

Page 66: Modul c++ Komsi

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 = 0xbffffa90Nilai yang ditunjuk p adalah = 9

Ilmu Komputer UGM 66

Page 67: Modul c++ Komsi

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 = 0xbffffa90Nilai 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

Page 68: Modul c++ Komsi

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 = 50503010Baris 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

Page 69: Modul c++ Komsi

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

Page 70: Modul c++ Komsi

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

Page 71: Modul c++ Komsi

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 = 12Nilai yang ditunjuk q = 15Nilai 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

Page 72: Modul c++ Komsi

Modul KL. Pemrograman C++

Penjelasan dengan gambar dapat dilihat sbb :

10F

z 12

55A

*p 10F

10F

z 12

55A

FF0

10F

z 12

55A

**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 3Sedangkan untuk array pointer bertipe char berikut contohnya :

#include <iostream.h>

int main(){

Ilmu Komputer UGM 72

Page 73: Modul c++ Komsi

Modul KL. Pemrograman C++

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

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

return 0;} 

Keluarannya adalah 

merahhijaukuning

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

Page 74: Modul c++ Komsi

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

Page 75: Modul c++ Komsi

Modul KL. Pemrograman C++

Ilmu Komputer UGM 75

Page 76: Modul c++ Komsi

Modul KL. Pemrograman C++

CLASS

Tujuan1. Menerangkan Object Oriented Programming2. Menerangkan hakekat class, object, method, constructor, destructor, dan inheritance3. Menerangkan cara membuat program OOP

Kemampuan1. Praktikan memahami hakekat OOP2. 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 limas2. Tiap objek tersebut  memiliki atribut seperti  panjang sisi,   tinggi,  lebar,  dsb.  tergantung 

bentuk bangun ruangnya3. 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

Page 77: Modul c++ Komsi

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

Page 78: Modul c++ Komsi

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

Page 79: Modul c++ Komsi

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

Page 80: Modul c++ Komsi

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

Page 81: Modul c++ Komsi

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

Page 82: Modul c++ Komsi

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

Page 83: Modul c++ Komsi

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