Senin, 28 Februari 2011

POINTER

Pointer adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu. Dengan demikian, ada variabel yang secara langsung menunjuk ke suatu nilai tertentu, dan variabel yang secara tidak langsung menunjuk ke nilai. Adapun bentuk umum dari pernyataan variabel pointer dalam C++ adalah :
Type *variabel-name Dengan :
• Type adalah tipe dasar pointer
• Variabel name adalah nama variabel pointer
• * adalah variabel pada alamatnya yang ditentukan oleh operand.
Contoh :
Int *int_pointer; // pointer to integer
Float *float_pointer; // pointer to float
Contoh :
//Program : pointer.cpp
#include
main()
{
int a, *b;
a=20;
b=&a;
printf (" Pointer b menunjukkan alamat =%p\n",b);
printf (" Alamat tersebut berisi nilai :%d\n",*b);
}
//Program : pointer1.cpp
#include
// cetak p dan *p
void main(void)
{
int v = 7, *p;
p = &v;
cout << " Nilai v = " << v << " dan *p = " << *p
<< "\nAlamatnya = " << p << '\n';
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
Nilai v = 7 dan *p = 7
Alamatnya = efffb24
Modul 3 Struktur Data (Arie) - 2
//Program:pointer2.cpp
#include
int main ()
{
int value1 = 5, value2 = 15;
int * mypointer;
mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 << "/ value2==" << value2;
return 0;
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
“value1==” 10 << “/ value2==20
OPERATOR POINTER
Ada beberapa operator yang bisa digunakan dalam pointer. Operator tersebut
adalah operator alamat (yang dilambangkan dengan simbol &) dan operator
unary yang mengembalikan alamat dari operandnya.
Sebagai contoh, diasumsikan deklarasi sebagai berikut :
Int y = 5;
Int *yPtr;
Maka pernyataan :
YPtr = &y;
Pernyataan ini mengandung arti bahwa alamat dari variabel y ditujukan kepada
variabel pointer yPtr.
Contoh lain :
Int balance, value;
Int *balptr;
Balance = 3200; // step 1
Balptr=&balance; // step 2
Value=*balptr; // step 3
Contoh diagram :
Step 1 Step 2 Step 3
12 Balptr 12 100 Balptr 12 100 Balptr
100 3200 Balance 100 3200 Balance 100 3200 Balance
130 value 130 value 130 3200 value
Modul 3 Struktur Data (Arie) - 3
Contoh :
//Program:pointer3.cpp
#include
int main()
{
int *ptr, num; // Step 1
ptr = # // Step 2
*ptr = 100; // Step 3
cout << num << " ";
(*ptr)++; // Step 4
cout << num << " ";
(*ptr)*=2; // Step 5
cout << num << "\n";
return 0;
}
Bila program dijalankan :
100 101 202
Contoh diagram :
Step
1
Step
2
Step
3
Step
4
Step
5
12 *int Ptr 12 50 Ptr 12 50 Ptr 12 50 Ptr 12 50 Ptr
50 int num 50 int num 50 100 num 50 101 num 50 202 num

... ... ... ... ...

EKSPRESI POINTER
Pointer Aritmatika
Hanya 4 operator aritmatik dapat digunakan pada pointer ++, = =, +, dan -.
Asumsi integer 32 bit.
Contoh :
Int *p1;
p1++;
p1--;
Contoh :
//Program:pointer4.cpp
#include
int main()
{
int i[10], *i_ptr;
double f[10], *f_ptr;
int x;
i_ptr = i; // i_ptr points to first element of i
Modul 3 Struktur Data (Arie) - 4
f_ptr = f; // f_ptr points to first element of f
for(x=0; x<10; x++)
cout << i_ptr+x << " " << f_ptr+x << "\n";
return 0;
}
Bila program dijalankan :
0xeffffd9c 0xeffffd48
0xeffffda0 0xeffffd50
0xeffffda4 0xeffffd58
0xeffffda8 0xeffffd60
... ...
Pointer Perbandingan
Pointer dapat dibandingkan dengan menggunakan operator hubungan, seperti
!=, ==, <, dan >.
Contoh :
//Program:pointer5.cpp
#include
int main()
{
int num[10];
int *start, *end;
start = num;
end = &num[9];
while(start != end) {
cout << "Masukkan bilangan sebanyak 9 data : ";
cin >> *start;
start++;
}
return 0;
}
Data yang akan dimasukkan sebanyak 9 buah data dan program tidak akan
berhenti apabila belum sampai 9 buah data.
POINTER VERSUS ARRAY
Array dan pointer adalah dua struktur data yang saling berkaitan satu dengan
yang lain dalam C, dan dapat saling dipertukarkan penggunaannya. Karena
array dapat didefinisikan sebagai pointer.
Contoh :
int *bPtr, b[5];
Dapat dibuat menjadi :
bPtr = b;
bPtr = &b[0];
Berarti bPtr ditugaskan untuk menunjukkan ke alamat elemen pertama dari
array b atau b[0].
Elemen array b[3] dapat ditulis :
* (bPtr + 3)
Modul 3 Struktur Data (Arie) - 5
Alamat &b[3] dapat ditulis :
bPtr +3
Deklarasi suatu variabel array x[] yang berisi nilai int dapat ditulis :
int *x;
Variabel array ganda dapat ditulis :
int y [ ] [ ];
int *y [ ];
int *( *y);
Penggunaan pointer dan array untuk deklarasi variabel array ganda untuk
menyimpan empat buah elemen yang masing-masing bertipe string (array dari
karakter).
char *suit [4] = { “Hearts”, “Diamonds”, “Clubs”, “Spades” };
Contoh :
//Program:pointer6.cpp
#include
#include
int main()
{
char str[80];
char token[80];
char *str_ptr, *tk_ptr;
cout << "Masukkan sebuah kalimat : ";
gets(str);
str_ptr = str;
while(*str_ptr) {
tk_ptr = token;
while( *str_ptr != ' ' && *str_ptr ) {
*tk_ptr = *str_ptr;
tk_ptr++;
str_ptr++;
}
if(*str_ptr) str_ptr++;
*tk_ptr = '\0';
cout << token << endl;
}
return 0; }
//Program:pointer7.cpp
#include
#include
int main()
{
char str[80];
char token[80];
int i, j;
cout << "Masukkan sebuah kalimat: ";
gets(str);
for(i=0; ; i++) {
for(j=0; str[i] != ' ' && str[i]; j++, i++)
token[j] = str[i];
Modul 3 Struktur Data (Arie) - 6
token[j] = '\0';
cout << token << '\n';
if(!str[i]) break;
}
return 0;
}
Pada contoh program pointer 6 adalah program dengan pointer, sedangkan
contoh program pointer 7 dengan menggunakan array. Hasil dari kedua program
tersebut sama.
POINTER INDEX
Pointer tidak hanya dapat digunakan untuk mengakses elemen array, tetapi
pointer juga dapat diindex seperti pada array.
Contoh :
//Program:pointer8.cpp
#include
#include
int main()
{
char str[20] = "hello tom";
char *p;
int i;
p = str;
for(i=0; p[i]; i++)
p[i] = toupper(p[i]);
cout << p;
return 0;
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
HELLO TOM
Proses pengindexan pointer dapat dilihat pada variabel p yang menunjuk pada
variabel str yang berisi data nama dengan panjang 20. Fungsi toupper
memperjelas proses pengindexan.
KONSTANTA STRING DAN POINTER
Konstanta string terlihat dalam program teks dan disimpan dalam tabel string
serta setiap entry dalam tabel string, pointer string dibangkitkan.
Contoh :
//Program:pointer9.cpp
#include
int main()
{
char *s;
s = "Pointers are fun to use.\n";
cout << s;
return 0;
}
Modul 3 Struktur Data (Arie) - 7
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
Pointers are fun to use.
ARRAY POINTER
Pointer dapat diarraykan seperti tipe data yang lain dalam C++. Untuk
menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe
10 integer, dapat ditulis :
int *pi [10];
Untuk menentukan alamat dari variabel integer disebut var ke elemen ketiga
dari pointer array, dapat ditulis :
int var;
pi [2] = &var
Contoh :
//Program:point10.cpp
#include
int main ()
{
int numbers[5];
int *p;
p = numbers; *p = 10;
p++; *p = 20;
p = &numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
return 0;
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
10, 20, 30, 40, 50,
POINTER DALAM POINTER
C++ memperbolehkan penggunaan pointer dalam pointer yang berisi data yang
sama atau berbeda. Dalam kondisi pointer biasa atau pointer tunggal,
diagramnya adalah :
Pointer Variabel
Untuk pointer dalam pointer, diagramnya adalah :
Pointer Pointer Variabel
Contoh :
char a;
char *b;
char **c;
address value
address address value
Modul 3 Struktur Data (Arie) - 8
a = ‘z’;
b = &a;
c = &b;
Dengan misal data acak pada memori 7230, 8092, dan 10502, maka diagramnya
adalah :
a b c
7230 8092 10502
Dari diagram dapat disimpulkan :
• c adalah sebuah variabel dengan tipe (char**) yang berisi 8092
• *c adalah sebuah variabel dengan tipe (char*) yang berisi 7230
• **c adalah sebuah variabel dengan tipe (char) yang berisi ‘z’
Contoh :
//Program:point12.cpp
#include
#include
#include
int main()
{
int x, *p, **q;
x = 10;
p = &x;
q = &p;
cout << **q; // prints the value of x
return 0;
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
10

DASAR STRING

Pengantar String
String sangat memudahkan tugas pemogram. Dengan menggunakan string, pemogram dapat menampilkan pesan kesalahan, menampilkan prompt bagi masukan keyboard ataupun memberikan informasi pada layar dengan mudah. Seperti halnya tipe data yang lain, string dapat berupa konstanta atau variabel. Konstanta string sudah biasa anda sertakan pada program.

Misalnya pada pernyataan :
cout << “C++”<
#include
void main()
{
char teks[13]; //string dengan panjang maksimal 12 karakter
clrscr(); //hapus layar
cout<<”Masukan sebuah kata :”<> teks;
cout<< “Kata yang tercetak :”<<<>Suatu masalah akan timbul kalau cin.get() digunakan 2 kali seperti
>contoh program dibawah ini
>Pada contoh di atas cin.get() pertama digunakan untuk membaca nama
yang kedua untuk membaca alamat. Ternyata program tidak memberikan
>kesempatan untuk mengisi alamat. Hal ini terjadi karena get() yang
>pertama tidak membuang kode newline(\n). Oleh karena get() tidak
>mengabaikan spasi putih( spasi, tab , atau newline) maka get() kedua
#include
#include
void main()
{
char teks[13]; //string dengan panjang maksimal 12 karakter
>clrscr(); //hapus layar
>cout<<”Masukan sebuah kata :”<<;endl; >cin.get(teks, 13);
>cout<< “Kata yang tercetak :”<<;teks; } #include
#include
void main()
{
char nama[25];
char alamat[35];
>clrscr(); //hapus layar
>cout<<”Masukan Nama :”<<;endl; >cin.get(nama, sizeof(nama));
>cout<< “Masukan Alamat :”<<;endl; >cin.get(alamat,sizeof(alamat));
>cout<<”Nama:”<<;nama<<;endl; >cout<<”Alamat:”<<;alamat<<;endl; } >Modul 2 Struktur Data (Arie) - 3
3
>menjadi tidak berfungsi sebagaimana mestinya. Cara untuk
>menyelesaikan masalah di atas dengan menggunakan fungsi getline(),
>karena fungsi ini dapat membuang sisa data yang tidak dibaca, termasuk
newline itu sendiri. Pada contoh berikut, get() diganti dengan getline().
>Tampak bahwa dengan menggunakan getline(), data alamat dapat diisi.
Fungsi strcpyr>Bentuk dari dari strcpy() :r>strcpy(string_target,string_awal)r>Prototipe fungsi di atas ada pada file header string.hr>Contoh program yang menggunakan strcpy():
Fungsi toupper dan tolower
Fungsi toupper() berguna untuk memperoleh huruf kapital dari
suatu huruf kecil. Nilai balik dari fungsi ini akan berupa seperti
argumennya kalau argumen tidak berisi huruf kecil.
Adapun fungsi tolower() adalah kebalikan dari toupper(). Fungsi
ini memberikan nilai balik :
> Berupa huruf kecil kalau argumen berisi huruf kapitalr>�� Berupa nilai seperti argumen kalau argumen tidak berupa huruf
kecil
Kedua fungsi di atas memberikan nilai balik bertipe int dan memiliki
protipe pada file ctype.h
#include
#include
void main()
{
char nama[25];
char alamat[35];
clrscr(); //hapus layar
>cout<<”Masukan Nama :”<;<;endl;r>cin.getline(nama, sizeof(nama));
>cout<< “Masukan Alamat :”<;<;endl;r>cin.getline(alamat,sizeof(alamat));
>cout<<”Nama:”<;<;nama<;<;endl; >cout<<”Alamat:”<;<;<;endl; } #include
#include
#include
void main()
{
char teks[]=”C++ Oke”;
char data [25];
clrscr(); //hapus layar
strcpy(data,teks); // mengcopy isi teks ke data
>cout<<;”Isi data :”<<;<;endl; } Modul 2 Struktur Data (Arie) - 4 4 Contoh program : >Pada contoh di atas,
st[i]= toupper(st[i]);
menyebabkan setiap huruf kecil pada variabel st akan diganti dengan
huruf kapital.
�� Fungsi strlen()
Panjang suatu string dapat diketahui dengan mudah menggunakan
fungsi strlen(). Misalnya saja, didefinisikan :
>char bunga[15]= “mawar”;r>int panjang;r>Maka pernyataan yang menggunakan strlen :
panjang = strlen(bunga);r>akan memberikan panjang string yang tersimpan pada variabel bunga ke
panjang.

Fungsi strlwr() dan strupr
Jika isi semua huruf kapital pada suatu string dinginkan untuk
>diubah menjadi huruf kapital, hal ini dapat dilakukan melalui fungsi
>strlwr(). Misalnya, didefinisikan :
char st[]=”AbCdEfGeHjKl”;
Maka st akan berisi : “abcdefgehjki”;
Sedangkan fungsi strupr() kebalikan dari fungsi strlwr(). Kedua fungsi di
atas sama seperti tolower dan toupper.
>Contoh program untuk memperlihatkan efek strlwr() dan strupr() :
#include
#include<conio.h>
#include<ctype.h>
void main()
{
char st[]=”saya suka C++”;
>clrscr(); //hapus layar
for(int i=0; st[i];i++)
st[i]= toupper(st[i]);
cout<
#include<conio.h>
#include
void main()
{r>char bunga[15]=”mawar”;r>char kosong[23]=””
>clrscr(); //hapus layar
cout<<;strlen(bunga)<<endl; cout<<;strlen(kosong)<<endl;r>}r>Modul 2 Struktur Data (Arie) - 5
5

Konversi String ke Angka dan sebaliknya
Untuk melakukan konversi dari suatu string ke bilangan, dapat
menggunakan sejumlah fungsi bawahan. Fungsi-fungsi yang tersedia
dapat dilihat pada tabel.
Beberapa contoh hasil pengonversian string ke bilangan :r>�� atof(“+2.1E+02”) = 210
atof(“+2.”) = 2
atof(“2abc”) = 2
atof(“ 20.1”) = 20
atoi(“+2.1E+02”) = 2
atoi(“+2.”) = 2r>�� atoi(“2abc”) = 2
atoi(“ 20.1”) = 20
atol(“+2.1E+02”) = 2
atol(“+2.”) = 2
atol(“2abc”) = 2
atol(“ 2000000000”) = 2000000000
>Adapun fungsi yang berguna untuk mengubah suatu nilai bilangan
menjadi suatu string diantaranya ditunjukan pada tabel di bawah
Fungsi Prototipe Keterangan
atoi Stdlib.h Mengkonversi string argumen menjadi nilai
>bertipe int
atof Stdlib.h Mengkonversi string argumen menjadi nilai
bertipe float
atol Stdlib.h Mengkonversi string argumen menjadi nilai
bertipe long int
atold Stdlib.h Mengkonversi string argumen menjadi nilai
>bertipe long doubel
Fungsi Prototipe Keterangan
itoa Stdlib.h Mengkonversi int argumen menjadi nilai bertipe
string
ltoa Stdlib.h Mengkonversi long int argumen menjadi nilair>bertipe string
ultoa Stdlib.h Mengkonversi unsigned long argumen menjadi
nilai bertipe string
#include
#include
#include
void main()
{
char st[]=”AbCdEfGhIjKl”;
clrscr(); //hapus layar
cout<<”Isi St mula-mula:”<<;st<;strlwr(st);
cout<<”Isi setelah dikonversi strlwr: “<<;st<;strupr(st);
cout<<”Isi setelah dikonversi strupr: “<<;endl; } Modul 2 Struktur Data (Arie) - 6r>6
>Ketiga fungsi yang tercantum pada tabel di atas mempunyai tiga buah
argumen.
Argumen pertama berupa nilai yang akan dikonversi ke string
Agumen kedua berupa variabel penerima string hasil konversi
Argumen ketiga berupa basis bilangan yang digunakan. Bisa diisi
>dengan nilai antara 2 sampai dengan 36.
Misalnya, apabila hasil didefinisikan sebagai berikut :
char hasil[24];
int nilai= 2345;
Pernyataan :
itoa(nilai,hasil,10);
membuat hasil berisi “2345”;

ARRAY

Array adalah kumpulan data bertipe sama yang menggunakan nama sama.
Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan subscript. Sebuah subscript berupa bilangan di dalam kurung siku.

Array dapat dibedakan menjadi :
1. Array berdimensi satu
2. Array berdimensi dua
3. Array berdimensi tiga

Array Berdimensi Satu
Contoh array berdimensi satu, misalnya menginputkan 5 buah data temperatur. Dan kelima data tersebut disimpan pada array bernama suhu.
Contoh 1 :
#include
#include
void main()
{
float suhu[5]; // array dengan 5 elemen bertipe float
// Membaca data dari keyboard dan meletakkan ke 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 dimasukkan : " << endl;
for (i=0; i<5; i++)
cout << suhu[i] << endl;
}

Mendefinisikan array
Float suhu[5];
float : Tipe elemen array
suhu : Nama array
[5] : Jumlah elemen array
Maka array suhu dapat menyimpan data sebanyak 5 buah.
Subscript dari array selalu dimulai dari nol. Misal, jika jumlah elemen
array [5], maka index dari array tersebut yaitu 0, 1, 2, 3, 4.

Mengakses elemen array
Setelah suatu array didefinisikan, elemen array dapat diakses dengan
bentuk :
suhu[i] menyatakan “elemen suhu dengan subscript sama dengan i”
Nama_array[subscript]

Perintah seperti cin >> suhu[i]; berarti “membaca data dari keyboard dan
meletakkan ke elemen nomor i pada array suhu”.
Perintah seperti cout >> suhu[i]; berarti “menampilkan elemen bernomor
i pada array suhu”.
Contoh 2 :
#include
#include
const int jum_data = 5;
void main()
{
float suhu[jum_data]; // array suhu
float total; // untuk menampung total suhu
// Membaca data dari keyboard dan meletakkan ke array
cout << "Masukkan 5 buah data suhu" << endl;
for (int i=0; i<5; i++)
{
cout << i + 1 << " : ";
cin >> suhu[i];
}
// Menghitung nilai rata-rata
total = 0; // Mula-mula diisi dengan nol
for(i=0; itotal += suhu[i]; // Tambahkan isi suhu[i] ke total
cout << "Suhu rata-rata= " << total/jum_data << endl;
}

Memberikan nilai awal terhadap array
Seperti halnya variabel biasa, array juga dapat diberi nilai awal
(diinisialisasikan) pada saat didefinisikan. Misalnya:
int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Catatan:
C++ secara otomatis akan memberikan nilai awal nol terhadap array yang
bersifat global. Jika bersifat lokal, maka harus diatur terlebih dahulu.
Contoh 3 :
#include
#include
#include
void main()
{
// Pendefinisian array jum_hari dan pemberian nilai awal
int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// Tampilkan isi jum_hari
cout << "Masukkan 5 buah data suhu" << endl;
for (int i=0; i<12; i++)
{
cout << "jum_hari[" << i << "] ="
<< jum_hari[i] << endl;
}
}

Array Berdimensi Dua
Sebagai gambaran, data kelulusan dari jurusan Teknik Informatika, Manajemen
Informatika, dan Teknik Komputer dari tahun 1992 hingga 1995.
Nama 1992 1993 1994 1995
Teknik Informatika 35 45 80 120
Manajemen Informatika 100 110 70 101
Teknik Komputer 10 15 20 17
Mendefinisikan array berdimensi dua
Bentuk diatas dapat dibentuk dalam array berdimensi dua,
pendefinisiannya :
int nilai[3][4];
Pada pendefinisian di atas :
− 3 menyatakan jumlah baris (mewakili nama)
− 4 menyatakan jumlah kolom (mewakili nilai)
Mengakses array berdimensi dua
Masing-masing elemen di dalam array berdimensi dua dapat diakses
dengan bentuk :
Baris dan kolom dimulai dari 0.
Contoh pengaksesan elemen array berdimensi dua :
1. data_lulus[1][2] = 5;
Merupakan instruksi untuk memberikan nilai 5 ke baris 1 kolom 2.
2. cout << data_lulus[1][2];
Merupakan perintah untuk menampilkan elemen data_lulus dengan
subscript pertama (baris) berupa 1 dan subscript kedua (kolom)
bernilai 2.
Contoh 4 :
#include
#include
void main()
{
int data_lulus[3][4]; // Array berdimensi dua
int tahun, jurusan;
// Memberikan data ke elemen array data_lulus
data_lulus[0][0] = 35; // TI - 1992
data_lulus[0][1] = 45; // TI - 1993
data_lulus[0][2] = 90; // TI - 1994
data_lulus[0][3] = 120; // TI - 1995
data_lulus[1][0] = 100; // MI - 1992
data_lulus[1][1] = 110; // MI - 1993
data_lulus[1][2] = 70; // MI - 1994
data_lulus[1][3] = 101; // MI - 1995
data_lulus[2][0] = 10; // TK - 1992
data_lulus[2][1] = 15; // TK - 1993
data_lulus[2][2] = 20; // TK - 1994
data_lulus[2][3] = 17; // TK - 1995
// Proses untuk memperoleh informasi kelulusan
while(1)
nama_array[subscript_baris, subscript_kolom]
Modul 1 Struktur Data (Arie) - 4
{
cout << "Jurusan (0 = TI, 1 = MI, 2 = TK): ";
cin >> jurusan;
if ((jurusan==0) || (jurusan==1) || (jurusan==2))
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;
}

Melewatkan Array Sebagai Argumen Fungsi

Array juga dapat berkedudukan sebagai parameter di dalam fungsi.
Misalnya :
const int MAKS = 5
int data[MAKS];
Dari data di atas, fungsi yang menerima array di atas dapat dibuat
prototipe-nya sebagai berikut :
void inisialisasi_data(data[MAKS]);
Dan deklarasi fungsi sebagai berikut :
void inisialisasi_data(data[], int & jumlah);
Pada contoh kedua, tanda di dalam tanda [ ] tidak terdapat apa-apa dan
parameter kedua digunakan untuk menyatakan jumlah elemen array serta
berkedudukan sebagai referensi (bisa diubah dari dalam fungsi
inisialisasi_data()).
Contoh 5 :
#include
#include
#include
#include
const int MAKS = 100;
void inisialisasi_data(int data[], int &jumlah);
void main()
{
int data_acak[MAKS]; // array berdimensi satu
int jumlah;
inisialisasi_data(data_acak, jumlah);
// Tampilkan elemen-elemen array
cout << "Isi array : " << endl;
for(int i=0; icout << data_acak[i] << endl;
}


// Definisi fungsi
void inisialisasi_data(int data[], int &jumlah)
{
while(1)
{
cout << "Berapa jumlah data yang ingin" << endl;
cout << "dibangkitkan secara acak (5 - 100) ? ";
cin >> jumlah;
if ((jumlah >= 5) && (jumlah<=100))
break;
}
randomize(); // Menyetel pembangkit bilangan acak
for(int i=0; idata[i] = random(100);
}

Apabila array berdimensi dua hendak dilewatkan sebagai argumen fungsi,
pendeklarasiannya dapat berupa semacam beriku t:
void isi_matriks(float mat[BARIS][KOLOM], int &brs, int &kol);
Atau cukup mengisikan pada bagian kolom saja, seperti contoh dibawah
ini :
void isi_matriks(float mat[][KOLOM], int &brs, int &kol);
Contoh 6 :
#include
#include
#include
const int BARIS = 5;
const int KOLOM = 5;
void isi_matriks(float mat[][KOLOM], int &brs, int &kol);
void main()
{
float matriks[BARIS][KOLOM];
int jum_baris, jum_kolom;
int i,j;
isi_matriks(matriks, jum_baris, jum_kolom);
cout << "\nMatriks yang terbentuk: " << endl;
cout << setiosflags(ios::fixed);
// ios::fixed --> mengatur angka yg dimasukkan dalam bentuk angka biasa
// bukan dalam bentuk eksponen
for (i=0; i{
for (j=0; jcout << setw(12) << setprecision(5) << matriks[i][j];
// setprecision(5) --> mengatur banyak angka dibelakang koma
cout << endl;
}
}
// Definisi Fungsi
void isi_matriks(float mat[][KOLOM], int &brs, int &kol)
{
Modul 1 Struktur Data (Arie) - 6
int i,j;
cout << "Pastikan jumlah baris dan kolom" << endl;
cout << "tidak melebihi 5" << endl;
cout << "Jumlah baris = ";
cin >> brs;
cout << "Jumlah kolom = ";
cin >> kol;
for (i=0; i< brs; i++)
for (j=0; j{
cout << "Elemen " << i << ", " << j << " = ";
cin >> mat[i][j];
}
}

Mengurutkan Data
Salah satu mengurutkan data adalah dengan menggunakan bubble sort.
Pengurutan dilakukan dengan membandingkan setiap elemen dengan
seluruh elemen yang terletak sesudah posisinya.
Contoh 7 :
#include
#include
#include
void main()
{
int i, j, tmp, jumdata;
int data[] = {5, 100, 20, 31, 77, 88, 99, 20, 55, 1};
jumdata = sizeof(data)/sizeof(int);
// Menampilkan data
cout << "Data semula: " << endl;
for(i=0; icout << setw(4) << data[i];
cout << endl; // Pindah baris
// Mengurutkan data
for(i=0; ifor(j=i+1; jif (data[i] > data[j])
{
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
// Menampilkan data
cout << "Data setelah diurutkan: " << endl;
for (i=0; icout << setw(4) << data[i];
cout << endl; // Pindah baris
}