DEFINISI ARRAY
Array adalah tipe data yang dapat menampung sejumlah elemen dengan tipe yang sama. Pengaksesan
elemen array dapat dilakukan dengan menyebutkan nama array dan indeks atau nomor elemennya.
Dalam pemrograman array dapat dibedakan menjadi array berdimensi satu dan array berdimensi
banyak.
Contoh :
int nilai[5];
didefnisikan sebuah variabel array dengan nama nilai yang mempunyai lima buah elemen.
Penggambaran elemen array :
1
cout<<nilai[3]; //10
Contoh program :
Algoritmik
Pseudocode Input_Data_Array
// Akan dimasukkan 5 data dalam array dan mencetaknya
//DEKLARASI
int nilai[5]
//DESKRIPSI
{
//membaca data
read(nilai[1])
read(nilai[2])
read(nilai[3])
read(nilai[4])
read(nilai[5])
//menampilkan data
write(nilai[1])
write(nilai[2])
write(nilai[3])
write(nilai[4])
write(nilai[5])
}
Program
/*
contoh program array dimensi satu
*/
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr(); //menghapus layar
int nilai[5];
2
Hasil eksekusi :
Dalam pengisian data ke dalam elemen array secara berulang dapat dilakukan dengan for. Contoh
program diatas akan diganti pemasukkan datanya dengan menggunakan for :
Algoritmik
Pseudocode Input_Data_Array_dengan_for
// Akan dimasukkan 5 data dalam array dan mencetaknya
//DEKLARASI
int i;
int nilai[5]
//DESKRIPSI
{
//membaca data
for(i=0;i<5;i++)
read(nilai[i])
//menampilkan data
for(i=0;i<5;i++)
write(nilai[3])
}
Program
/*
contoh program array dimensi satu dengan for
*/
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr(); //menghapus layar
int nilai[5];
cout<<endl;
cout<<"Data nilai yang anda masukkan"<<endl;
3
cout<<"1 2 3 4 5"<<endl;
cout<<"============================="<<endl;
for (int i = 0; i < 5; i++)
{
cout<<nilai[i]<<" ";
}
getch();
}
Contoh program mencari nilai terbesar dan nilai terkecil dari sejumlah data yang dimasukkan dalam
variabel array.
#include <iostream.h>
#include <conio.h>
void main()
{
int jum;
int nilai[20];
cout<<"Jumlah data : ";
cin>>jum;
int min;
min=nilai[0];
int maks;
maks = nilai[0];
for(int i=0;i<jum;i++)
{
if (nilai[i] < min)
min = nilai[i];
if (nilai[i] > maks)
maks = nilai[i];
}
Hasil Eksekusi :
Jumlah data : 5
Data ke - 1 : 8
Data ke - 2 : 6
Data ke - 3 : 9
Data ke - 4 : 4
Data ke - 5 : 5
Nilai Terkecil : 4
Nilai Terbesar : 9
4
ARRAY BERDIMENSI BANYAK
Array berdimensi banyak adalah array yang memiliki lebih dari satu tipe indek atau lebih dari satu
nomor subscript, misalnya memiliki dua, tiga dan seterusnya.
Pendefinisian Tipe Array
Dalam C++
Bentuk :
tipe_data nama_variabel_array[jumlah_elemen_baris] [jumlah_elemen_kolom];
Contoh :
int matrik[3][4];
didefnisikan sebuah variabel array dimensi dua dengan nama matrik yang mempunyai 3 elemen baris
dan 4 elemen kolom.
Penggambaran elemen array :
matrik[2][3] = matrik[1][2];
memasukkan data pada array matrik baris 2, kolom 3 dengan data yang ada pada array matrik baris 1,
kolom 2.
5
contoh program menghitung penjumlahan dua matrik. Syarat penjumlahan dua matrik adalah bahwa
kedua matrik mempunyai ordo yang sama :
#include <iostream.h>
#include <conio.h>
void main()
{
int a[10][10], b[10][10], c[10][10];
int brs,klm;
clrscr();
cout<<"Masukan jumlah Baris : ";
cin>>brs;
cout<<"masukan Jumlah kolom : ";
cin>>klm;
for(int i=0;i<brs;i++) //input matrik A
{
for(int j=0;j<klm;j++)
{
cout<<" Matrik A["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
}
for(int i=0;i<brs;i++) //input matrik B
{
for(int j=0;j<klm;j++)
{
cout<<" Matrik B["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}
for(int i=0;i<brs;i++) //menjumlahkan matrik A dengan B
{
for(int j=0;j<klm;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
clrscr();
cout<<"Matrik A"<<endl; //menampilkan matrik A
for(int i=0;i<brs;i++)
{
for(int j=0;j<klm;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
6
}
Contoh program menghitung perkalian dua matrik. Syarat perkalian dua matrik adalah bahwa jumlah
baris matrik kedua sama dengan jumlah kolom matrik pertama.
#include <iostream.h>
#include <conio.h>
void main()
{
int a[20][20], b[20][20], c[20][20];
int brsa, klmabrsb, klmb;
//input matrik A
cout<<"Masukkan matrik A"<<endl;
for(int i=0;i<brsa;i++)
for(int j=0;j<klmabrsb;j++)
{
cout<<"Matrik A["<<i<<"]["<<j<<"] : ";
cin>>a[i][j];
}
clrscr();
7
cout<<"\nIsi matrik A"<<endl;
for(int i=0;i<brsa;i++)
{
for(int j=0;j<klmabrsb;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
8
STRING
Konstanta string
Konstanta string ditulis dengan awalan dan akhiran tanda petik ganda (“), contoh :
“Tes”
konstanta string diatas disimpan dalam memori secara berurutan dengan susunan :
T e s \0
Pada karakter terakhir terdapat karakter NULL (\0) yang berfungsi sebagai pengakhir string.
Variabel string
Variabel string adalah variabel yang digunakan untuk menyimpan data string. Misalnya :
char nama[20];
merupakan pernyataan untuk mendefinisikan variabel string dengan panjang maksimal 20 (termasuk
NULL). Pernyataan diatas tidak lain digunakan untuk mendefinisikan array bertipe karakter.
void main()
{
char nama[20];
char alamat[30];
cout<<"Masukkan nama : ";
cin.getline(nama,sizeof(nama));
cout<<"Masukkan alamat : ";
cin.getline(alamat,sizeof(alamat));
Hasil eksekusi :
Masukkan nama : Joko Purnomo
Masukkan alamat : Jl. Kaliurang km 10
9
Menyalin string
Menyalin string berbeda dengan menyalin bilangan. Dalam c++ untuk menyalin string digunakan
fungsi strcpy().
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
char teks1[20];
char teks2[30];
cout<<"Masukkan teks 1 : ";
cin.getline(teks1,sizeof(teks1));
strcpy(teks2,teks1);
cout<<"Isi teks 2 : "<<teks2<<endl;
getch();
}
Hasil eksekusi :
Masukkan teks 1 : Tes salin teks
Isi teks 2 : Tes salin teks
void main()
{
char teks1[20];
char teks2[30];
cout<<"Masukkan huruf kecil : ";
cin.getline(teks1,sizeof(teks1));
for(int i=0;i<teks1[i];i++)
teks1[i]=toupper(teks1[i]);
cout<<"Isi teks 1 : "<<teks1<<endl;
cout<<"MASUKKAN HURUF KAPITAL : ";
cin.getline(teks2,sizeof(teks2));
for(int i=0;i<teks2[i];i++)
10
teks2[i]=tolower(teks2[i]);
cout<<"Isi teks 2 : "<<teks2<<endl;
getch();
}
Hasil eksekusi :
Masukkan huruf kecil : ngetes
Isi teks 1 : NGETES
void main()
{
char teks[50]= "Jangan bersedih, Bajaj pasti berlalu";
cout<<strlen(teks);
getch();
}
Hasil eksekusi :
36
void main()
{
char teks1[30]= "Belajar C++ memang mudah ";
char teks2[30]= "Semudah membalik tank baja";
cout<<strcat(teks1,teks2);
getch();
}
Hasil eksekusi :
Belajar C++ memang mudah Semudah membalik tank baja
11
F U N G S I
Fungsi adalah sebuah blok pernyataan yang berisi sejumlah pernyataan yang dikemas dalam sebuah
nama yang dapat dipanggil beberapa kali dibeberapa tempat dalam program.
Tujuan pembuatan fungsi :
Memudahkan dalam mengembangkan program, karena program dipecah menjadi program-
program yang lebih kecil.
Menghemat ukuran program, ini akan terasa kalau ada beberapa deretan instruksi yang sama
digunakan pada beberapa tempat didalam program.
Deklarasi/prototipe fungsi
Deklarasi / prototipe sebuah fungsi berupa :
Nama fungsi
Tipe nilai balik fungsi
Jumlah dan tipe argumen
Tipe Nama_fungsi(daftar_parameter);
void Nama_fungsi(daftar_parameter);
Definisi fungsi
Setiap fungsi yang dipanggil didalam program harus didefinisikan terlebih dahulu yang letaknya bisa
dimana saja. Khusus untuk fungsi yang disediakan oleh sistem, definisi sebenarnya sudah ada dalam
pustaka yang disebut file header.
12
Jadi contoh diatas dapat ditulis :
void tampilkan_judul ()
{
cout << “PT. Maju Mundur” << endl;
cout << “Jl. Buntu No. 76” << endl;
cout << “Yogyakarta” << endl;
return;
}
Contoh program :
#include <iostream.h>
#include <conio.h>
//prototipe fungsi
void garis();
void tampilkan_judul();
//fungsi utama
void main()
{
clrscr();
tampilkan_judul();
garis();
getch();
}
//definisi fungsi
void garis()
{
cout<<"=========================="<<endl;
}
void tampilkan_judul ()
{
cout << "PT. Maju Mundur" << endl;
cout << "Jl. Buntu No. 76" << endl;
cout << "Yogyakarta" << endl;
return;
}
Hasil eksekusi :
PT. Maju Mundur
Jl. Buntu No. 76
Yogyakarta
==========================
13
Argumen fungsi
Argumen fungsi adalah nilai bawaan yang akan disertakan saat pemanggilan fungsi.
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cetak(10);
getch();
}
Hasil eksekusi :
1. Teks ini tercetak 10 kali
2. Teks ini tercetak 10 kali
3. Teks ini tercetak 10 kali
4. Teks ini tercetak 10 kali
5. Teks ini tercetak 10 kali
6. Teks ini tercetak 10 kali
7. Teks ini tercetak 10 kali
8. Teks ini tercetak 10 kali
9. Teks ini tercetak 10 kali
10. Teks ini tercetak 10 kali
Pada contoh diatas pada fungsi cetak mempunyai argumen fungsi bernama jum bertipe int. Pada
pemanggilan fungsi cetak harus disertai dengan jumlah argumen yang akan diberikan pada saat fungsi
dipanggil.
cetak(10);
Contoh program yang mengandung fungsi untuk mencetak teks ditengah layar dan mencetak teks
pada koordinat tertentu :
#include <iostream.h>
#include <conio.h>
void hapus()
{
clrscr();
14
}
void henti()
{
getch();
}
//prototipe fungsi mencetak pada koordinat tertentu
void cetak(int klm, int brs, char *teks);
void main()
{
hapus();
cetakc(1,"TULISAN INI TERCETAK DI TENGAH LAYAR");
cetakc(2,"====================================");
cetak(3,4,"Tulisan ini tercetak pada baris 4 kolom 3");
henti();
}
//definisi fungsi
void cetak(int klm, int brs, char *teks)
{
gotoxy(klm,brs);cout<<teks;
}
Hasil eksekusi :
TULISAN INI TERCETAK DI TENGAH LAYAR
====================================
Lingkup variabel
Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang
hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang
dapat diakses oleh semua fungsi.
Variabel Otomatis
Variabel yang didefinisikan di dalam suatu fungsi berlaku sebagai variabel lokal bagi fungsi.
Artinya, variabel tersebut hanya dikenal didalam fungsi tempat variabel didefinisikan. Sifat dari
variabel otomatis adalah :
• Variabel akan diciptakan pada saat fungsi dipanggil dan variabel akan sirna pada saat fungsi
berakhir.
15
• Variabel hanya dikenal pada fungsi yang mendefinisikan.
• Inisialisasi oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil
Contoh program :
#include <iostream.h>
#include <conio.h>
void coba(); // Prototipe fungsi
void main()
{
int x = 22; // Variabel lokal pada main()
double y = 2.22;
clrscr();
cout << "Pada fungsi main() : x = " << x
<< " y = " << y << endl;
coba(); // Panggil fungsi alpha
cout << "Pada fungsi main() : x = " << x
<< " y = " << y << endl;
getch();
}
void coba()
{
int x = 20; // Variabel lokal pada coba()
double y = 3.14;
cout << "Pada fungsi coba() : x = " << x
<< " y = " << y << endl;
}
Hasil ekseskusi :
Pada main() : x = 22 y = 2.22
Pada coba() : x = 20 y = 3.14
Pada main() : x = 22 y = 2.22
Variabel Eksternal
Variabel eksternal adalah variabel yang didefinisikan diluar fungsi manapun. Variabel ini dikenal
juga sebagai variabel global, sebab variabel ini dikenal disemua fungsi.
Contoh program :
#include <iostream.h>
16
#include <conio.h>
int nilai = 50; // Variabel eksternal
void tambah(); // Prototipe fungsi
void main()
{
clrscr();
cout << nilai << endl;
tambah();
cout << nilai << endl;
tambah();
cout << nilai << endl;
getch();
}
// Definisi fungsi
void tambah ()
{
nilai ++ ; // Variabel eksternal dinaikkan
}
Hasil eksekusi :
50
51
52
Contoh program :
17
nilai ++ ; // Variabel eksternal dinaikkan
}
Variabel Statis
Variabel eksternal maupun otomatis dapat berkedudukan sebagai variabel statis. Suatu variabel
statis mempunyai sifat :
- Jika variabel lokal berdiri sebagai variabel statis, maka :
- Variabel tetap hanya dapat diakses pada fungsi yang mendefinisikannya
- Variabel tidak hilang saat eksekusi fungsi berakhir
- Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan.
- Jika variabel eksternal dijadikan sebagai variabel statis,variabel ini dapat diakses oleh semua file
yang didefinisikan pada file yang sama dengan variabel eksternal tersebut.
Contoh program :
#include <iostream.h>
#include <conio.h>
void saya_ingat(); // Prototipe fungsi
void main()
{
int mana = 50;
clrscr();
saya_ingat();
saya_ingat();
saya_ingat();
cout << " main() : mana = " << mana << endl;
getch();
}
// Pada fungsi berikut
// mana didefinisikan sebagai variabel statis
void saya_ingat()
{
static int mana = 77; // variabel statis
mana ++; // Naikkan sebesar 1
cout << " Saya_ingat () : mana = " << mana << endl;
}
Hasil eksekusi :
Saya_ingat () : mana = 78
Saya_ingat () : mana = 79
Saya_ingat () : mana = 80
main() : mana = 50
18
Fungsi Dengan Nilai Balik
Adalah fungsi yang memberikan nilai balik ke pemanggil fungsi.
Contoh :
// Prototipe funsi
long kuadrat (long l);
-------------------------------------
// Definisi fungsi
long kuadrat(long l)
{
return(l * l);
}
Pernyataan return di dalam fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh diatas,
fungsi kuadrat() memberikan nilai balik berupa nilai kuadrat dari argumen.
Contoh program :
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
void main()
{
clrscr();
for ( long bil = 200; bil < 2000; bil+= 200 )
cout << setw(8) << bil
<< setw(8) << kuadrat(bil) << endl;
getch();
}
// Definisi fungsi
long kuadrat(long l)
{
return( l * l );
}
Hasil eksekusi :
200 40000
400 160000
600 360000
800 640000
1000 1000000
1200 1440000
1400 1960000
1600 2560000
1800 3240000
19
Contoh program yang mengandung fungsi tanpa nilai balik dan fungsi dengan nilai balik :
#include <iostream.h>
#include <conio.h>
#include <string.h>
void judul();
char tanya();
void isi();
char huruf(float rat);
void main()
{
judul();
isi();
getch();
}
void judul()
{
cetakc(1,"DAFTAR NILAI");
cetakc(2,"PRODI TEKNIK INFORMATIKA");
cetak(4,4,"=========================================================================");
cetak(5,4,"|");
cetak(5,7,"No");
cetak(5,10,"|");
cetak(5,14,"NIM");
cetak(5,21,"|");
cetak(5,27,"N A M A");
cetak(5,44,"|");
cetak(5,46,"UTS");
cetak(5,50,"|");
cetak(5,52,"UAS");
cetak(5,56,"|");
cetak(5,58,"TUGAS");
20
cetak(5,64,"|");
cetak(5,66,"NILAI HRF");
cetak(5,76,"|");
cetak(6,4,"=========================================================================");
}
void isi()
{
int nim,uts,uas,tugas,tot; char nama[15],maxnm[15],minnm[15];
float rata, maxnil,minnil,ratkelas,totrat;
char jawab;
static int i = 1;
maxnil=0;minnil=100;totrat=0;
do
{
gotoxy(4,6+i);cout<<"|";
gotoxy(7,6+i);cout<<i;
gotoxy(10,6+i);cout<<"|";
gotoxy(12,6+i);cin>>nim;
gotoxy(21,6+i);cout<<"|";
gotoxy(23,6+i);cin>>nama;
gotoxy(44,6+i);cout<<"|";
gotoxy(46,6+i);cin>>uts;
gotoxy(50,6+i);cout<<"|";
gotoxy(52,6+i);cin>>uas;
gotoxy(56,6+i);cout<<"|";
gotoxy(58,6+i);cin>>tugas;
gotoxy(64,6+i);cout<<"|";
tot=uts+uas+tugas;
rata=tot/3;
totrat=totrat+rata;
ratkelas=totrat/i;
if (rata>maxnil)
{
maxnil=rata;
strcpy(maxnm,nama);
}
if (rata<minnil)
{
minnil=rata;
strcpy(minnm,nama);
}
gotoxy(69,6+i);cout<<huruf(rata);
gotoxy(76,6+i);cout<<"|";
jawab=tanya();
21
if (jawab=='t')
{
gotoxy(4,7+i);
cout<<"======================================================================
===";
gotoxy(4,8+i);cout<<"Jumlah data : "<<i;
gotoxy(4,9+i);cout<<"Rata kelas : "<<ratkelas;
gotoxy(4,10+i);cout<<"Nilai tertinggi : "<<maxnil;
gotoxy(30,10+i);cout<<"Nama : "<<maxnm;
gotoxy(4,11+i);cout<<"Nilai terendah : "<<minnil;
gotoxy(30,11+i);cout<<"Nama : "<<minnm;
}
i++;
}while(jawab!='t');
}
char tanya()
{
char jw;
cetak(3,20,"Input data lagi[Y/T]? : ");
cin>>jw;
gotoxy(20,3);clreol();
return(jw);
}
char huruf(float rat)
{
if (rat>80)
return('A');
else if (rat>70)
return('B');
else if (rat>60)
return('C');
else if (rat>50)
return('D');
else
return('E');
}
#include <iostream.h>
22
#include <conio.h>
int x = 50; // Variabel eksternal
void main()
{
double x; // Definisi variabel lokal
clrscr();
x = 5.678901234; // Variabel lokal yang diberi nilai
cout << x << " " << ::x << endl;
::x = 77; // Variabel eksternal yang diberi nilai
cout << x << " " << ::x << endl;
getch();
}
Hasil eksekusi :
5.6789 50
5.6789 77
Referensi
Referensi digunakan untuk memberikan nama alias dari variabel. Bentuk pendeklarasiannya :
int &ref = nama_variable ;
#include <iostream.h>
#include <conio.h>
void main()
{
int i ;
int &r = i; // Deklarasi referensi
clrscr();
i =10;
cout << "i = " << i << endl;
cout << "r = " << r << endl;
r = 55;
23
getch();
}
Hasil eksekusi :
i = 10
r = 1
i = 10
r = 55
#include <iostream.h>
#include <conio.h>
void main()
{
int i = 55;
int &r = i; // Referensi
clrscr();
cout << "i = " << i << " r = " << r <<endl;
i ++ ;
cout << "i = " << i << " r = " << r << endl;
r ++ ;
cout << "i = " << i << " r = " << r << endl;
getch();
}
Hasil eksekusi :
i = 55 r = 55
i = 56 r = 56
i = 57 r = 57
Operator ++ pada i maupun r akan mengubah nilai keduanya, karena i dan r menyiratkan memori
yang sama.
Dalam fungsi pengiriman argumen dapat bersifat berdasar nilai dan berdasar referensi. Pengiriman
argumen berdasarkan nilai yaitu argumen yang dikirimkan dimaksudkan tidak untuk diubah
24
sekembalinya dari pemanggilan fungsi. Sedangkan pengiriman argumen berdasar referensi yaitu
argumen yang dikirimkan dimaksudkan untuk diubah sekembalinya dari pemanggilan fungsi.
#include <iostream.h>
#include <conio.h>
void main()
{
int nil1,nil2;
cout<<"Nilai 1 : ";
cin>>nil1;
cout<<"Nilai 2 : ";
cin>>nil2;
tukar(nil1,nil2);
Hasil eksekusi :
Nilai 1 : 10
Nilai 2 : 20
Nilai 1 sebelum tukar : 10
Nilai 2 sebelum tukar : 20
Nilai 1 dalam tukar : 20
Nilai 2 dalam tukar : 10
Nilai 1 sesudah tukar : 10
Nilai 2 sesudah tukar : 20
25
Pada contoh diatas fungsi tukar memiliki dua argumen fungsi yang pengirimannya berdasar nilai
karena sekembali dari pemanggilan fungsi argumen yang dikirimkan nilainya tetap. Sehingga fungsi
tukar diatas tidak menghasilkan nilai sesuai dengan yang diharapkan yaitu menukar kedua nilai yang
dikirimkan. Untuk mengatasi permasalahan diatas maka argumen pada fungsi tukar dikirimkan secara
referensi :
#include <iostream.h>
#include <conio.h>
void main()
{
int nil1,nil2;
cout<<"Nilai 1 : ";
cin>>nil1;
cout<<"Nilai 2 : ";
cin>>nil2;
tukar(nil1,nil2);
Hasil eksekusi :
Nilai 1 : 10
Nilai 2 : 20
Nilai 1 sebelum tukar : 10
Nilai 2 sebelum tukar : 20
26
Nilai 1 dalam tukar : 20
Nilai 2 dalam tukar : 10
Nilai 1 sesudah tukar : 20
Nilai 2 sesudah tukar : 10
void main()
{
int mat_a[brs][klm], mat_b[brs][klm], mat_c[brs][klm];
int br,kl;
clrscr();
cout<<"Masukan jumlah Baris : ";
cin>>br;
cout<<"masukan Jumlah kolom : ";
cin>>kl;
for(int i=0;i<br;i++) //input matrik A
{
for(int j=0;j<kl;j++)
{
cout<<" Matrik A["<<i<<"]["<<j<<"] = ";
cin>>mat_a[i][j];
}
}
for(int i=0;i<br;i++) //input matrik B
{
for(int j=0;j<kl;j++)
{
cout<<" Matrik B["<<i<<"]["<<j<<"] = ";
cin>>mat_b[i][j];
}
}
jumlah(mat_a,mat_b,mat_c,br,kl);
clrscr();
27
cout<<"Matrik A"<<endl; //menampilkan matrik A
for(int i=0;i<br;i++)
{
for(int j=0;j<kl;j++)
{
cout<<mat_a[i][j]<<" ";
}
cout<<endl;
}
28
Inline Function
Inline function dengan cukup menyisipkan kata-kata inline didepan tipe nilai balik fungsi dalam
pendefinisian fungsi. Contoh :
inline int jumlah (int x, int y)
{
return(x + y);
}
inline function disarankan dipakai pada fungsi yang sering dipanggil dan ukurannya kecil (terdiri satu
atau dua pernyataan), terutama jika dilibatkan pada pernyataan pengulangan proses (while, for dan do-
while). Misalnya pada bentuk seperti berikut :
for (int i = 1; i < 100; i++)
cout << i << “.” << jumlah (i, 2 * i) << endl;
jika fungsi jumlah() tidak ditulis sebagai inline function, proses tersebut akan menjadi relatif lambat.
Contoh program :
#include <iostream.h>
#include <conio.h>
// Definisi fungsi sebagai inline
inline int jumlah(int x, int y)
{
return(x + y );
}
void main()
{
clrscr();
for (int i = 1; i < 100; i ++ )
cout << i << " . " << jumlah(i, 2 * i) << endl;
getch();
}
Function Overloading
Function Overloading atau Overloading terhadap fungsi memungkinkan sebuah fungsi dapat menerima
bermacam-macam tipe dan memberikan nilai balik yang bervariasi pula.
Contoh program :
#include <iostream.h>
#include <conio.h>
// Prototipe fungsi
int kuadrat (int i);
long kuadrat(long l);
double kuadrat(double d);
void main()
{
cout << kuadrat(2) << endl;
29
cout << kuadrat(66666) << endl;
cout << kuadrat(1.2) << endl;
getch();
}
// Definisi fungsi
int kuadrat (int i)
{
return(i * i);
}
long kuadrat (long l)
{
return(l * l);
}
double kuadrat (double d)
{
return(d * d);
}
Hasil eksekusi :
4
149388260
1.44
Rekursi
Fungsi dalam C++ dapat dipakai secara rekursi, artinya suatu fungsi dapat memanggil fungsi yang
merupakan dirinya sendiri. Penerapan rekursi diantaranya untuk menghitung nilai :
Xn
Dengan n merupakan bilangan bulat positif. Solusi dari persoalan ini berupa :
Jika n = 1 maka Xn = X
Selain itu : Xn = X * Xn – 1
Contoh program :
#include <iostream.h>
#include <conio.h>
long int pangkat ( int x, int n);
void main()
{
int x, y;
clrscr();
cout << "Menghitung x ^ y "<< endl;
cout << "x = " ;
30
cin >> x ;
cout << "y = " ;
cin >> y ;
cout << x << " ^ " << y << " = "
<< pangkat(x, y) << endl;
getch();
}
long int pangkat(int x, int n)
{
if (n == 1 )
return(x);
else
return(x * pangkat(x, n - 1));
}
Hasil elsekusi :
Menghitung x ^ y
x = 3
y = 4
3 ^ 4 = 81
31
MENGENAL POINTER
Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel biasa. Dengan
kata lain pointer adalah variabel yang berisi alamat memori sebagai nilainya dan berbeda dengan variabel
biasa yang berisi nilai tertentu.
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int a = 11;
float b = 12.4;
double c = 12.23456;
cout<<"Isi Variabel :"<<endl;
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
cout<<"\nAlamat Variabel :"<<endl;
cout<<"a = "<<&a<<endl;
cout<<"b = "<<&b<<endl;
cout<<"c = "<<&c<<endl;
getch();
}
Output :
Isi Variabel :
a = 11
b = 12.4
c = 12.2346
32
Alamat Variabel :
a = 0x0012ff88
b = 0x0012ff84
c = 0x0012ff7c
tipe_data *nama_variabel
- tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan pointer.
- nama_variabel adalah nama variabel pointer
- * adalah operator memori yang fungsinya untuk mengembalikan nilai variabel pada alamatnya
yang ditentukan oleh operand.
Supaya suatu variabel menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel
yang hendak ditunjuk.
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
int var_int = 55; // Variabel bukan pointer
int *poin_int; // Variabel pointer
clrscr();
poin_int = &var_int; // Pointer menunjuk ke vint
cout << "Alamat var_int = " << &var_int << endl;
cout << "poin_int = " << poin_int << endl;
getch();
}
Output :
Alamat var_int = 0x0012ff88
poin_int = 0x0012ff88
Berdasarkan contoh program diatas, nilai dari var_int dapat diakses melalui poin_int setelah pernyataan :
poin_int = &var_int
dijalankan. Caranya dengan melibatkan operator “tak langsung”. Operator ini berupa simbol “ * “ dan
diletakkan di depan nama variabel pointer.Contoh
*poin_int
33
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
int var_int = 60; // Variabel bukan pointer
int *poin_int; // Variabel pointer
clrscr();
poin_int = &var_int; // Pointer menunjuk ke vint
cout << " Nilai yang ditunjuk oleh pint = "
<< *poin_int << endl;
getch();
}
Output:
Pointer void
Untuk membuat pointer yang tidak bertipe yakni dengan meletakkan kata kunci pada void pada bagian
penentu tipe pointer. Contoh :
void *ptr;
Merupakan pernyataan untuk mendefinisikan ptr sebagai variabel pointer void.
Suatu pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data. Misalnya, Anda dapat
mengatur agar pointer ini menunjuk ke tipe data int, tetapi di saat lain diperlukan untuk menunjuk data
bertipe float.
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
void *ptr; // Pointer tak bertipe
int vint = 45;
float vfl = 17.5;
ptr = &vint; // menunjuk ke int
cout << "Nilai yang ditunjuk oleh ptr = "
<< *(int *)ptr << endl;
ptr = &vfl; // menunjuk ke float
cout << "Nilai yang ditunjuk oleh ptr = "
34
<< *(float *) ptr << endl;
getch();
}
Output :
Nilai yang ditunjuk oleh ptr = 45
Nilai yang ditunjuk oleh ptr = 17.5
Dari program diatas bahwa variabel pointer ptr dapat menunjuk ke tipe int ataupun float.
Pointer dapat pula digabungkan dengan array, karena pada umumnya antara pointer dan array
mempunyai kesamaan.
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int tgl_lahir[] = {28, 11, 1982 };
int *poin_tgl;
Output :
Nilai yang ditunjuk poin_tgl : 28
Nilai dari tgl_lahir[0] : 28
Setelah penugasan poin_tgl = tgl_lahir ptgl akan menunjuk ke elemen pertama (tgl_lahir[0]) dari array
tgl_lahir.
Untuk mengakses semua tanggal dapat dilakukan dengan perintah :
for (int i=0;i<3;i++)
cout<<*(poin_tgl+i)<<endl;
Array Pointer
35
Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh :
char *namahari[7];
merupakan pernyataan untuk mendefinisikan array namahari yang berisi 7 buah elemen berupa
pointer. Pointer ini menunjuk ke data bertipe char.
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
char *namahari[] = {"Senin", "Selasa", "Rabu", "Kamis",
"Jumat","Sabtu", "Minggu"};
for (int i = 0; i < 7; i++)
cout << namahari[i] << endl;
getch();
}
Output :
Senin
Selasa
Rabu
Kamis
Jumat
Sabtu
Minggu
Pointer menunjuk
ke pointer
Untuk membentuk rantai seperti gambar diatas diperlukan pendefinisian sebagai berikut :
int var_x; //Variabel bertipe int
int *ptr1; //Variabel pointer yg menunjuk ke data bertipe int
int **ptr2; //Variabel pointer yg menunjuk ke pointer int
36
Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa :
ptr1 = &var_x;
Sedangkan supaya ptr2 menunjuk ke ptr1, diperlukan perintah :
ptr2 = &ptr1;
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int var_x = 2345;
int *ptr1; //pointer ke variabel bukan pointer
int **ptr2; //pointer ke pointer
cout << "var_x = " << var_x << endl;
//penugasan alamat
ptr1 = &var_x;
ptr2 = &ptr1;
//Mengakses nilai var_x melalui ptr1
cout << "*ptr1 = " << *ptr1 << endl;
//Mengakses nilai var_x melalui ptr2
cout << "**ptr2 = " << **ptr2 << endl;
getch();
}
Output :
var_x = 2345
*ptr1 = 2345
**ptr2 = 2345
void main()
{
clrscr();
37
int pinokio = 80;
cout << "Nilai mula-mula untuk pinokio : "
<< pinokio << endl;
ubah_nilai(pinokio);
Output :
dengan menuliskan & didepan argumen fungsi, nilai argumen dapat diubah didalam fungsi. hal serupa
dapat diimplentasikan didalam pointer sebagai berikut :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int pinokio = 80;
cout << "Nilai mula-mula untuk pinokio : "
<< pinokio << endl;
ubah_nilai(&pinokio);
cout << "Nilai untuk pinokio sekarang : "
<< pinokio << endl;
getch();
}
//Definisi fungsi
38
Perbedaan :
Fungsi ubah_nilai() didefinisikan sebagai judul berupa void ubah_nilai(int *x)
Pada saat fungsi dipanggil argumen perlu ditulis dengan awalan & (&pinokio)
Prototipe fungsi disesuaikan dengan definisi fungsi : void ubah_nilai(int *x);
Didalam fungsi ubah_nilai(), tanda * perlu diberikan di depan nama argumen : *x=95;
39
STRUKTUR
Struktur bermanfaat untuk mengelompokkan sejumlah data dengan tipe yang berlainan. Apabila
suatu struktur telah dideklarasikan, struktur ini dapat dgunakan untuk mendefinisikan suatu
variabel.
Suatu struktur juga dapat mengandung struktur yang lain dan anggota struktur dapat diakses
menggunakan bentuk :
Varibel_struktur.nama_anggota
Contoh program lengkap yang melibatkan pendeklarasian dan pendefinisian variabel struktur dan juga
pengaksesan terhadap anggota variabel struktur dapat dilihat dibawah ini :
#include <iostream.h>
#include <conio.h>
void main()
{
struct data_tanggal // Pendeklarasian
{
int tahun;
int bulan;
int tanggal;
};
Hasil eksekusi :
28/11/1982
Pada program diatas tanda titik diantara nama variabel dan nama anggota menyatakan penugasan
untuk memberikan nilai 28 ke anggota tanggal pada variabel struktur tanggal_lahir.
Pemberian nilai terhadap suatu struktur dapat dilakukan dengan bentuk :
var1 = var2;
sepanjang kedua variabel adalah variabel struktur bertipe sama.
40
Contoh program :
#include <iostream.h>
#include <conio.h>
void main()
{
struct data_tanggal // Pendeklarasian
{
int tahun;
int bulan;
int tanggal;
};
Hasil eksekusi :
28/11/1982
Array struktur
#include <iostream.h>
#include <conio.h>
void main()
{
struct mahasiswa
{
int nim;
char nama[30][30];
};
int jml;
mahasiswa mhs[25];
cout<<"Berapa jumlah siswa : ";
41
cin>>jml;
for(int i = 0;i < jml; i++)
{
cout<<"Nim : ";cin>>mhs[i].nim;
cout<<"Nama : ";cin>>mhs[i].nama[i];
}
for(int i = 0;i < jml; i++)
{
cout<<"Nim : "<<mhs[i].nim<<endl;
cout<<"Nama : "<<mhs[i].nama[i]<<endl;
}
getch();
}
#include <iostream.h>
#include <conio.h>
void main()
{
struct mahasiswa
{
int nim;
char nama[30][1];
int nilai[3];
int tot;
};
int jml;
mahasiswa mhs[25];
mahasiswa tmp;
cout<<"Berapa jumlah siswa : ";
cin>>jml;
42
}
}
clrscr();
for(int i = 0;i < jml; i++)
{
cout<<"Nim : "<<mhs[i].nim<<endl;
cout<<"Nama : "<<mhs[i].nama[i]<<endl;
cout<<"Total : "<<mhs[i].tot<<endl<<endl;;
}
getch();
}
43