Jumat, 19 Oktober 2012

Perbedaan Pointer Dengan Referensi

1 komentar
pemrograman c++
Pointer
Sebuah pointer kadang-kadang diterjemahkan sebagai "petunjuk" adalah sebuah variabel yang bertype khusus, yaitu yang menyimpan alamat dari sebuah variabel lainnya. Pointer memiliki peran
yang sangat penting dalam C/C++. Secara khusus, pointer berperan vital dalam implementasi
struktur data seperti array, string, dan linked list. Selain itu, pointer juga dapat digunakan untuk
pengiriman parameter fungsi dan untuk menunjuk pada alamat fungsi. Untuk tujuan yang terakhir
ini pembahasannya di luar fokus bab ini.
Dalam memahami pointer, ada beberapa konsep dasar atau terkait yang perlu dipelajari.
Diantaranya adalah referensi, pendeklarasian pointer, inisialisasi dan pendefinisian pointer, akses
pointer, dereferensi, null pointer, void pointer, dan penggunaan pointer untuk pengiriman
parameter fungsi.

Referensi
Seperti yang telah diketahui, setiap variabel yang dideklarasikan akan dialokasikan tempat tertentu
pada memori. Keberadaan variabel ini memudahkan kita untuk menggunakan data yang tersimpan
pada memori, tanpa memedulikan lokasi fisik data tersebut. Untuk mengakses atau mengubah
data tersebut cukup merujuknya melalui nama variabelnya. Tetapi sebenarnya kita masih bisa
mengakses lokasi data tersebut melalui alamat variabelnya jika diperlukan. Alamat variabel ini
sering juga disebut dengan “referensi” dari variabel tersebut. Dalam bahasa C/C++, proses me-
“referensi” atau mengakses alamat sebuah variabel dapat menggunakan operator alamat atau
referensi yang direpresentasikan dengan simbol ampersand(&).
Contoh di bawah ini menunjukkan cara mengakses alamat dari variabel menggunakan operator &.

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
int a = 17;
double b = 13.5;
printf("Isi variabel: \n");
printf("\t a = %d",a);
printf("\t b = %.2lf",b);
printf("\n\nAlamat variabel: \n");
printf("\t a = %d ",&a);
printf("\t b = %d ",&b);
system(“pause”);
return 0;
}

Setelah menjalankan
program tersebut dan memperhatikan hasilnya, cobalah untuk mengubah format keluaran &a dan
&b pada baris ke-13 dan ke-14 dari %d menjadi %p lalu amati hasilnya. Ambillah kesimpulan dari
perubahan tersebut.Saat variabel a dan b dideklarasikan dan diinisialisasikan dengan nilai masing-masing 17 dan 13.5,
di memori dialokasikan tempat yang sesuai, Nilai alamat dari a dan b yang tertulis di sini hanya sebagai contoh; nilai yang sebenarnya dapat berbeda dalam setiap menjalankan program. Alamat a dan b dapat diakses dengan ekspresi
masing-masing &a dan &b.

Deklarasi Variabel Pointer
Sebelum diisikan dengan alamat dari variabel lainnya, sebuah pointer perlu dideklarasikan terlebih
dahulu. Sintaksis pendeklarasiannya adalah sebagai berikut.
Tipedata variabel yang ditunjuk *namavariabel pointer;
atau
tipedata variabel yang ditunjuk * namavariabelpointer;
Perhatikan penggunaan simbol bintang/asterisk(*) di atas. Simbol ini membedakan deklarasi
sebuah variabel non-pointer dengan deklarasi variabel pointer. Tipe data variabel yang ditunjuk
pointer dapat berupa sembarang tipe. Aturan penamaan variabel pointer harus mengikuti aturan
yang sama dengan penamaan variabel biasa.
Contoh deklarasi pointers:
int* pi; // pointer to integer
float* pf; // pointer to float7
Pointer yang telah dideklarasikan hanya dapat diisikan dengan alamat dari variabel yang bertipe
data sesuai dengan deklarasi pointernya. Sebagai contoh, sebuah pointer to integerhanya dapat
menyimpan alamat dari variabel yang bertipe data integer.

Pendefinisian Pointer dan Proses Referensi
Saat dideklarasikan, sebuah pointer menunjuk pada alamat yang ‘acak’ atau tidak terdefinisi.
Dalam keadaan demikian usaha untuk mengakses pointer ini dapat berakibat fatal karena pointer
ini mungkin berisi alamat dari memori yang sedang dikelola oleh sistem atau aplikasi lain. Oleh
karena itu, untuk menggunakan sebuah pointer kita harus memastikan bahwa dia berisi alamat
yang benar atau yang kita inginkan.
Inisialisasi atau pendefinisian sebuah pointer dapat dilakukan dengan salah satu dari dua cara.
Pertama, dengan proses referensi ke variabel yang sudah ada. Kedua, dengan alokasi memori
dinamik. Sub bab ini hanya akan membahas cara yang pertama. Cara yang kedua akan
didiskusikan di bab lainnya.
Sintaksis proses referensi sebuah pointer ke variabel lain yang sudah ada adalah:
namavariabelpointer = &namavariabellainnya;
Perhatikan pemakaian operator referensi (&) pada pernyataan di atas. Tentunya, kedua variabel di
atas sudah harus dideklarasikan sebelumnya.
Contoh di bawah ini menunjukkan inisialisasi pointer dengan cara referensi ke variabel lainnya.
Jalankanlah program ini dan perhatikan hasilnya.
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
int x; // Nilai x acak
int *px; // Nilai px acak
printf("\nKondisi x dan px sebelum inisialisasi ");
printf("\nNilai x: %d", x);
printf("\nAlamat x: %d", &x);
printf("\nNilai px = %d", px);
printf("\nAlamat px = %d\n", &px);
px = &x;
x = 10;
printf("\nKondisi x dan px setelah inisialisasi ");
printf("\nNilai x: %d", x);
printf("\nAlamat x: %d", &x);
printf("\nNilai px = %d", px);
printf("\nAlamat px = %d", &px);
system("pause");
return 0;
}

Oke, selamat mencoba, dan janagan lupa periksa kembali programnya setelah dijalankan.

Jumat, 18 Mei 2012

Dasar String c++

0 komentar

7.1. Konstatnta String
Suatu konstanta string ditulis dengan awalan dan akhiran tanda petik ganda ( “ ). Misalnya :

“ C++ “

Konstanta string disimpan dalam memori secara berurutan, setiap karakter menempati memori sebesar 1 byte. Setelah karakter yang terakhir terdapat karakter NULL (karakter dengan nilai ASCII sama dengan nol atau disimbolkan dengan ‘\0’, yaitu tanda \ diikuti nol).

Bila suatu string hanya berisi karakter NULL, string disebut sebagai string kosong.

7.2. Variabel String

Variabel string adalah variabel yang dipakai untuk menyimpan string. Misalnya :

char teks[10];

merupakan pernyataan untuk mendefinisikan variabel string dengan panjang maksimal 15 karakter (sudah termasuk karakter NULL).

7.3. Memasukan Data String Dari Keyboard

Setelah suatu variabel string didefinisikan, bisa mengisikan data ke variabel tersebut. Pemasukkan data dapat ditangani oleh cin.

Contoh program :

//*---------------------------------------------------------*

//* Contoh 7.1 : Pendefinisian variabel string dan *

//* pengisian variabel melalui cin *

//*---------------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void main()

{

char teks[13]; // String dengan panjang maksimal

// 13 karakter

clrscr();

cout << “Masukkan sebuah kata “ << endl;

cin >> teks;

cout << “Yang Anda Masukkan : “ << teks << endl;

}

Hasil eksekusi :
                                                     Masukkan sebuah kata
                                                     Halo  ¿
                                                     Yang Anda Masukkan : Halo
 
 






Pada contoh diatas bila Anda memasukkan sebuah kata seperti :

“Halo, Sobat”. Maka kata setelah spasi tidak akan terbaca, untuk mengatasi hal ini anda dapat menggunakan fungsi anggota get() pada obyek cin (cin.get()). Seperti contoh program berikut :

//*------------------------------------------------------------*

//* Contoh 7.2 : Pendefinisian variabel string dan *

//* pengisian variabel melalui cin.get() *

//*------------------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void main()

{

char teks[13]; // String dengan panjang maksimal

// 13 karakter

clrscr();

cout << “Masukkan sebuah kata “ << endl;

cin.get >> (teks, 13);

cout << “Yang Anda Masukkan : “ << teks << endl;

}


Hasil eksekusi :
                                Masukkan sebuah kata
                                Halo, Sobat  ¿
                                Yang Anda Masukkan : Halo Sobat
 
 



Array Berdimensi Dua c++

0 komentar
6.2. Array Berdimensi Dua

Array ini dapat digunakan untuk berbagai keperluan. Sebagai gambaran, data kelulusan dari jurusan Teknik Tnformatika, Manajemen Informatika dan Teknik Komputer pada sekolah tinggi Komputer dari tahun 1992 hingga 1995 dapat dinyatakan dengan array berdimensi dua.
Sebelum membahas cara pendefinisian array berdimensi dua, perhatikan tabel berikut :

 
Jurusan
1992
1993
1994
1995
1. Teknik Informatika
35
45
80
120
2. Manajemen Informatika
100
110
70
101
3. Teknik Komputer
10
15
20
17

Bentuk seperti tabel diatas dapat dituangkan kedalam array berdimensi dua. Pendefinisiannya :

int data_lulus[3][4];

pada pendefiniasian diatas :

3 menyatakan jumlah baris (mewakili jurusan)
4 menyatakan jumlah kolom (mewakili tahun kelulusan)

nama_array[subscript_baris, subscript_kolom]
 
array berdimensi dua dapat diakses dengan bentuk :



Contoh program :

//*-----------------------------------------------------*

//* Contoh 6.2 : Pemakaian array berdimensi *

//* dua *

//*-----------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void main()

{

int data_lulus[3][4]; // Array berdimensi dua

int tahun, jurusan;

clrscr();

// Memberikan data ke elemen array data_lulus

data_lulus[0][0] = 35; // data TI – 1992

data_lulus[0][1] = 45; // data TI - 1993

data_lulus[0][2] = 90; // data TI - 1994

data_lulus[0][3] = 120; // data TI - 1995

data_lulus[1][0] = 100; // data MI – 1992

data_lulus[1][1] = 110; // data MI - 1993

data_lulus[1][2] = 70; // data MI – 1994

data_lulus[1][3] = 101; // data MI - 1995

data_lulus[2][0] = 10; // data TK – 1992

data_lulus[2][1] = 15; // data TK- 1993

data_lulus[2][2] = 20; // data TK - 1994

data_lulus[2][3] = 17; // data TK – 1995

// Proses untuk memperoleh informasi kelulusan

while (1)

{

cout << “Jurusan ( 0 = TI, 1 = MI, 2 = TK ) : “ ;

cin >> jurusan;

if ((jurusan = = 0 ) || (jurusan = = 1) || (jurusan = = 3))

break; // Keluar dari while

}

while (1)

{

cout << “Tahun ( 1992 – 1995) : “ ;

cin >> tahun;

if (( tahun >= 1992 ) && ( tahun <= 1995 )

{

tahun - = 1992; // Konversi ke 0, 1, 2 atau 3

break; // Keluar dari while

}

}

cout << “Jumlah yang lulus = “

<< data_lulus[jurusan][tahun] << endl;

}

Hasil eksekusi :


                  Jurusan ( 0 = TI, 1 = MI, 2 = TK ) : 1 ¿
                  Tahun (1992 – 1195) : 1992 ¿
                  Jumlah yang lulus = 100
 



Mula-mula program mengisi data ke array data_lulus. Kemudian program meminta data jurusan dan tahun dari keyboard. Kedua data masukkan dipastikan tidak akan berada diluar jangkauan kedua subscript-nya.


6.3. Array Berdimensi Tiga
            tipe nama_array[subscript1][subcsript2][subscript3]
 
Bentuk umum pendefinisian array berdimensi tiga :



Sebagai contoh :

int huruf[2][8][8] ;

merupakan pendefinisian array data_huruf sebagai array berdimensi tiga.

Array Dimensi Satu c++

0 komentar
6.1. Array Dimensi Satu

Gambaran sebuah array ditunjukkan pada Contoh Program 6.1. Program ini meminta pemakai untuk memasukkan 5 buah data temperatur dari keyboard. Kelima data tersebut disimpan pada array bernam suhu. Selanjutnya data yang ada pada array tersebut ditampilkan ke layar.

Contoh program :

//*------------------------------------------------*

//* Contoh 6.1 : program menggunakan *

//* array *

//*------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void main()

{

float suhu[5]; // Array dengan elemen 5 bertipe float

clrscr();

// Membaca data dari keyboard dan meletakkan array

cout << “Masukkan 5 buah data suhu” << endl;

for (int i = 0; i < 5; i ++)

{

cout << i + 1 << “ . “;

cin >> suhu[i];

}

// Menampilkan isi array ke layar

cout << “Data suhu yang anda masukkan : “ << endl;

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

cout << suhu[i] << endl;

}

Masukkan 5 buah data suhu
1 : 27.5 ¿
2 : 28 ¿
3 : 27.5 ¿
4 : 30.5 ¿
5 : 27 ¿
Data suhu yang anda masukkan
27.5
28
27.5
30.5
27


 



Hasil eksekusi :













Tampak diatas terdapat pernyataan :

- float suhu[5]; menyatakan array suhu dapat menyimpan 5 (lima) buah data bertipe float.

- suhu[i] menyatakan elemen suhu dengan subscript sama dengan i.

- cin >> suhu[i]; : membaca data dari keyboard dan meletakkan ke elemen nomor i pada array suhu.

- cout << suhu[i]; : akan menampilkan elemen bernomor i pada array suhu.

Rekursi c++

0 komentar
5.10. 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 :

//*------------------------------------------------*

//* Contoh 5.13 : Opreasi pangkat secara *

//* rekursi *

//*------------------------------------------------*

# 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 = “ ;

cin >> x ;

cout << “ y = “ ;

cin >> y ;

cout << x << “ ^ “ << y << endl;

<< pangkat(x, y) << endl;

}

long int pangkat(int x, int n)

{

if (n = = 1 )

return(x);

else

return(x * pangkat(x, n – 1));

}

                     Menghitung x ^ y
                     x = 2 ¿
                     y = 3 ¿
                     2 ^ 3 = 8
 
Hasil elsekusi :




Function Overloading c++

0 komentar
5.9. 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 :

//*-----------------------------------------------*

//* Contoh 5.12 : Contoh overloading *

//* terhadap fungsi *

//*-----------------------------------------------*

#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;

cout << kuadrat(66666) << endl;



cout << kuadrat(1.2) << endl;

}

// Definisi fungsi

int kuadrat (int i)

{

return(i * i);

}

long kuadrat (long l)

{

return(l * l);

}

double kuadrat (double d)

{

return(d * d);

}

            4
            149388260
            1.44
 
Hasil rekursi :






Program 5.12 menunjukkan pemanggilan fungsi kuadrat() dengan berbagai bentuk tipe data.

Inline Function c++

4 komentar
5.8. Inline Function

Inline function dengan cukup menyisipkan kata-kata inline didepan tipe nilai balik fungsi dalam pendefinisian fungsi. Contoh :

inline 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 :

//*---------------------------------------------------------*

//* Contoh 5.11 : Pembuatan fungsi inline *

//*---------------------------------------------------------*

#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;

}

  1. 3
  2. 6
  3. 9
  4. 12
  5. 15
  6. 18
 
Hasil eksekusi :






Referensi c++

0 komentar
5.7. Referensi
    Int &ref = nama_variable ;
 
Referensi digunakan untuk memberikan nama alias dari variabel. Bentuk pendeklarasiannya :



Tanda & mengawali nama referensi.

Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini.

Contoh program :

//*-----------------------------------------------------*

//* Contoh 5.9 : contoh referensi *

//*-----------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void main()

{

int i ;

int &r = 1; // Deklarasi referensi

clrscr();

i =10;

cout << “i = “ << i << endl;

cout << “ r = “ << r << endl;

r = 55;

cout << “i = “ << i << endl;

cout << “ r = “ << r << endl;

}


i = 10
r = 10
i = 55
r = 55
 
Hasil eksekusi :







Tampak bahwa pengubahan nilai terhadap i maupun r memberikan efek sama. 
Operator juga bekerja pada suatu variabel maupun referensinya dengan efek yang sama. Sebagai contoh :

//*-----------------------------------------------------*

//* Contoh 5.10 : Operasi penaikan isi variabel*

//* melalui referensi *

//*-----------------------------------------------------*

#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;

i = 55   r = 55
i = 56   r = 56
i = 57   r = 57

 
}

Hasil eksekusi :




Operator ++ pada i maupun r akan mengubah nilai keduanya, karena i dan r menyiratkan memori yang sama.

Nilai Bawaan Untuk Nilai Fungsi c++

0 komentar
5.5. Nilai Bawaan Untuk Nilai Fungsi

Salah satu keistimewaan C++ adalah adanya kemampuan untuk menyetel nilai bawaan (default) argumen fungsi. Argumen-argumen yang mempunyai nilai bawaan nantinya dapat tidak disertakan didalam pemanggilan fungsi dan dengan sendirinya C++ akan menggunakan nilai bawaan dari argumen yang tidak disertakan.

Contoh program :

//*--------------------------------------------------------------*

//* Contoh 5.7 : Menggambarkan nilai bawaan dalam *

//* argumen fungsi *

//*--------------------------------------------------------------*

#include <iostream.h>

#include <conio.h>

void tulis_cplus(int jum); // Prototipe fungsi

void main()

{

clrscr();

tulis_cplus(1); // Untuk menuliskan sebuah tulisan C++

}

void tulis_cplus(int jum);

{

for (int i = 0; i < jum; i ++)

cout << “ C++ “ << endl;

cout << “ Seleseai “ << endl;

}


                   C++
                   Selesai
 
Hasil eksekusi :







Contoh program :

//*------------------------------------------------------*

//* Contoh 5.8 : Menggambarkan nilai bawaan *

//* Dalam argumen fungsi *

//*----- ---------------------------------------------*

#include <iostream.h>

#include <conio.h>

void tulis_cplus(int jum = 1); // Prototipe fungsi

// Dan menyetel nilai bawaan fungsi

void main()

{

clrscr();

tulis_cplus(); // Argumen tidak perlu disebutkan

}



void tulis_cplus(int jum);

{

for (int i = 0; i < jum; i ++)

cout << “ C++ “ << endl;

cout << “ Seleseai “ << endl;

}

Pada contoh program 5.7 dan 5.8 mempunyai kesamaan hanya saja pada contoh program 5.8 dalam prototipe fungsi nilai bawaannya dikut sertakan sehingga pada saat argumen pemanggilan fungsi tidak perlu di tuliskan lagi.

Selasa, 15 Mei 2012

Operator Resolusi Lingkup c++

0 komentar
5.4. Operator Resolusi Lingkup

Pada C++ terdapat operator dua buah tanda titik-dua ( :: ). Operator ini disebut operator resolusi lingkup (scope resolution). Kegunaanya untuk mengakses variabel yang didefinisikan diluar suatu fungsi.

Contoh program :

//*---------------------------------------------------------*

//* Contoh 5.6 : Pemakaian operator resolusi *

//* lingkup ( :: ) *

//*---------------------------------------------------------*

#include < iostream.h>

#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;

}


Hasil eksekusi :



                  5.6789            50
                  5.6789      77
 


Program diatas mengungkapkan bahwa sekalipun didalam suatu fungsi terdapat variabel yang namanya sama dengan nama variabel eksternal, kedua variabel tersebut tetap bisa diakses.

Lingkup variabel c++

0 komentar

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

Contoh program :

//*---------------------------------------------------------*

//* Contoh 5.2 : Memperlihatkan efek variabel *

//* otomatis (lokal) *

//*---------------------------------------------------------*

#include < iostream.h>

#include <conio.h>

void alpha(); // Prototipe fungsi

void main()

{

int x = 22; // Variabel lokal pada main()

double y = 2.22;

clrscr();

cout << “ Pada main() : x = “ << x

<< “ y = “ << y << endl;

alpha(); // Panggil fungsi alpha

cout << “Pada main() : x = “ << x

<< “ y = “ << y << endl;

}



// Definisi fungsi alpha()



void alpha()

{

int x = 20; // Variabel lokal pada alpha()

double y = 3.14;

cout << “Pada alpha() : x = “ << x

<< “ y = “ << y << endl;

} 
Hasil ekseskusi :
                        Pada main() : x = 22   y = 2.22
                        Pada alpha() : x = 22   y = 3.14
                        Pada main() : x = 22   y = 2.22



 
 





Tampak bahwa perubahan x dan y pada alpha() tidak mempengaruhi variabel bernama sama pada main(). Karena variabel-variabel tersebut bersiafat lokal bagi masing-masing fungsi yag mendefinisikannya. Variabel x dan y pada fungsi alpha() yang disebut sebagai variabel otomatis. 
 
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 :

//*---------------------------------------------------------------*

//* Contoh 5.3 : Pemakaian Variabel eksternal *

//*--------------------------------------------------------------*

#include <iostream.h>

#include <conio.h>

int oblade = 550; // Variabel eksternal

void tambah(); // Prototipe fungsi

void main()

{

clrscr();

cout << oblade << endl;

tambah();

cout << oblade << endl;

tambah();

cout << oblade << endl;

}

// Definisi fungsi

void tambah ()

{

oblada ++ ; // Variabel eksternal dinaikkan

}

 551
 552
 553
 
Hasil eksekusi :





Guna memeperjelas suatu variabel didalam suatu fungsi yang menggunakannya dapat mendeklarasikan (bukan mendefinisikan, karena tidak ada pengalokasian memori) dengan menambahkan kata extern didepan tipa data.

Contoh program :

//*------------------------------------------------------------*

//* Contoh 5.4 : Pemakaian Variabel eksternal *

//* dengan tambahan kata extern *

//*------------------------------------------------------------*

#include <iostream.h>

#include <conio.h>

int oblade = 550; // Variabel eksternal

void tambah(); // Prototipe fungsi

void main()

{

clrscr();

cout << oblade << endl;

tambah();

cout << oblade << endl;

tambah();

cout << oblade << endl;

}

// Definisi fungsi

void tambah ()

{

extern oblade;

oblada ++ ; // 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 satatis, 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 :

//*-----------------------------------------------------------*

//* Contoh 5.5 : Menunjukkan efek variabel satatis *

//*-----------------------------------------------------------*

#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;

}

// 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;

}

Saya_ingat ()  : mana = 78
Saya_ingat ()  : mana = 79
Saya_ingat ()  : mana = 80
  main()        : mana = 50
 
Hasil eksekusi :






Berdasarkan hasil diatas, terlihat bahwa variabel statis mana pada fungsi saya_ingat () hanya diinisialisasi (bernilai 77) sekali saja. Kemudian setiap kali saya_ingat () dipanggil nilai variabel tersebut dinaikkan sebesar 1.

Fungsi tanpa Nilai Balik c++

1 komentar
5.2. Fungsi tanpa Nilai Balik

Adakalanya suatu fungsi tidak perlu memiliki nilai balik. Misalnya fungsi yang hanya dimaksudkan untuk menampilkan suatu keterangan saja.pada funsi seperti ini, tipe nilai balik fungsi yang diperlukan adalah void.]

Contoh :

void tampilkan_judul ()

{

cout << “PT. Aria perkasa Manunggal” << endl;

cout << “Jl. Kertadipura Tenggara 27R” << endl;

cout << “Kudus” << endl;

}

pada contoh funsi diatas, tidak ada pernyataan return, mengingat fungsi tidak memiliki nilai balik. Namaun penggunaan pernyataan return secara eksplisit juga diperkenenkan. Dalam hal ini digunakan berbentuk :

return

saja.

Jadi contoh diatas dapat ditulis :

void tampilkan_judul ()

{

cout << “PT. Aria perkasa Manunggal” << endl;

cout << “Jl. Kertadipura Tenggara 27R” << endl;

cout << “Kudus” << endl;

return; }