Bab 4 Array dan Pointer

Download Report

Transcript Bab 4 Array dan Pointer

Array dan
Pointer
6 Nopember 2007
Definisi Array



Array adalah sebuah variabel
yang menyimpan sekumpulan
data yang memiliki tipe sama
Setiap data menempati
lokasi/alamat memori yang
berbeda-beda → elemen array
Elemen array dapat diakses
melalui indeks yang terdapat di
dalamnya
Bentuk Umum
Pendeklarasian Array
Nilai ke1
Nilai ke2
…
Nilai ke-N
Alamat
ke-1
Alamat
ke-2
…
Alamat
ke-N
O
1
…
N
Nilai Elemen array
Alamat Elemen array
Indeks Elemen array
Pendeklarasian array
tipe_data nama_array[jumlah_array]
Tipe Deklarasi pada
array dengan C++
contoh penugasan dan operasi pada
array
Pendefinisian Array
int billy[5];
Inisialisasi Arrar
int billy[5] =
{16,2,77,40,12071};
billy[0] = a;
billy[a] = 75;
Operasi Array
b = billy[a+2];
billy[billy[a]] = billy[2]+5;
Contoh array
#include <iostream>
using namespace std;
int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
}
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan array
// dengan melakukan
inisialisasi nilai ke
dalamnya
int A[10] = { 12, 24, 13, 25,
10, 13, 21, 20, 15, 18 };
int BIL;
for (int c =0; c<10; c++) {
cout<<A[c]<<endl;
}
cout<<endl;
cout<<"Masukkan nilai yang
akan dicari : "; cin>>BIL;
// Melakukan pencarian data
for (int J=0; J<10; J++) {
if (A[J] == BIL) {
cout<<"Nilai yang dicari
terdapat pada indeks ke"<<J << endl;
break;
}
}
return 0;
}
Pencarian nilai
maksimum dan minimum
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan sebuah array
// dan melakukan inisialisasi ke dalamnya
int A[10] = { 12, 34, 54, 32, 10, 67, 98, 11, 20, 22 };
/* Mendeklarasikan variabel max dan min
untuk menampung nilai maksimum dan minumum */
int max = A[0], min = A[0];
// Menentukan nilai maksimum
for (int C=1; C<10; C++) {
if (A[C] > max) {
max = A[C];
}
}
// Menentukan nilai minimum
for (int c=1; c<10; c++) {
if (A[c] < min) {
min = A[c];
}
}
// Menampilkan nilai maksimum dan minimum
// yang ditemukan dalam array
cout<<"Nilai maksimum : "<<max<<endl;
cout<<"Nilai minimum : "<<min<<endl;
return 0;
}
Mengurutkan nilai
metode gelembung
#include <iostream>
using namespace std;
int main() {
// Deklarasikan array dgn 7 buah elemen yang bertipe int
int A[7];
// Mendeklarasikan variabel-variabel bantu yang diperlukan
int j, k, C, temp;
// Memasukkan nilai array
cout<<"Masukkan nilai pada elemen array :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<" ] = "; cin>>A[C]; }
// Menampilkan nilai sebelum diurutkan
cout<<"\nNilai elemen array sebelum diurutkan :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<"] = "<<A[C]<<endl; }
// Pengurutan elemen array dgn metode gelembung
for (j=O; j<6; j++) {
for (k=7; k>0; k--) {
if (A[k] < A[k-1]) {
temp = A[k];
A[k] = A[k-1];
A[k-1] = temp;
} } }
// Menampilkan nilai setelah diurutkan
cout<<"\nNilai elemen array setelah diurutkan :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<"] = "<<A[C]<<endl; }
return O; }
Pengurutan metode
maksimum dan minimum
#include <iostream>
using namespace std;
int main() {
// Mendeklarasikan array dgn 7 buah elemen yang bertipe int
int A[7];
// Mendeklarasikan variabel bantu yang diperlukan
int j, k, C, temp;
// Memasukkan nilai array
cout<<"Masukkan nilai pada elemen array :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<" ] = "; cin>>A[C]; }
// Menampilkan nilai sebelum diurutkan
cout<<"\nNilai elemen array sebelum diurutkan :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<"] = "<<A[C]<<endl; }
// Pengurutan elemen array dgn metode maksimum-minimum
int jmaks, U=6;
for (j=0; j<6; j++) {
jmaks = 0;
for (k=1; k<=U; k++) {
if (A[k] > A[jmaks]) {
jmaks = k; } }
temp = A[U];
A[U] = A[jmaks];
A[jmaks] = temp;
U--; } // Menampilkan nilai setelah diurutkan
cout<<"\nNilai elemen array setelah diurutkan :"<<endl;
for (C=O; C<7; C++) {
cout<<"A["<<C<<"] = "<<A[C]<<endl; }
return O; }
Array Multidimensi
int jimmy[3][5] → mendeklarasikan array
jimmy[1][3] → menunjuk isi sel array
Array Dua Dimensi
tipe_data nama_array[jumlah_elemen_baris][jumlah_elemen_kolom];
Inisialisai Array
Multidimensi
#include <iostream>
using namespace std;
int main() {
// Melakukan inisialisasi nilai
// ke dalam elemen-elemen array dua dimensi
int A[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} };
// Mendeklarasikan variabel untuk indeks pengulangan
int j, k;
// Menampilkan nilai yang tersimpan dalam elemen
array
for (j=0; j<3; j++) {
for (k=0; k<3; k++) {
cout<<"A["<<j<<"]["<<k<<"] = "<<A[j][k]<<endl; }
cout<<endl; }
//Menampilkan dalam bentuk matriks
for (j=0; j<3; j++) {
for (k=0; k<3; k++) {
cout<<A[j][k]<<“ “; }
cout<<endl; }
return 0; }
Contoh
#include <iostream>
using namespace std;
void printarray (int arg[], int length)
{
for (int n=0; n<length; n++)
cout << arg[n] << " ";
cout << "\n";
}
int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray (firstarray,3);
printarray (secondarray,5);
return 0;
}
Pointer


Pointer adalah suatu variabel
yang menyimpan alamat memori
Deklarasi pointer
tipe_data *nama_pointer
atau
 tipe_data* nama_pointer


Contoh



long x; // x bertipe long
long *p; // p berupa pointer bertipe
long
p = &x; //mengisi alamat x ke p
Pointer
Deklarasi pointer:
Int andy, fred;
Int *ted;
andy = 25;
fred = andy;
ted = &andy;
Contoh pointer (1)
#include <iostream>
using namespace std;
int main ()
{
int firstvalue, secondvalue;
int * mypointer;
mypointer = &firstvalue;
*mypointer = 10;
mypointer = &secondvalue;
*mypointer = 20;
cout << "firstvalue is " << firstvalue << endl;
cout << "secondvalue is " << secondvalue << endl;
return 0;
}
Contoh pointer (2)
#include <iostream>
using namespace std;
int main ()
{
int firstvalue = 5, secondvalue = 15;
int * p1, * p2;
p1 = &firstvalue;
// p1 = address of firstvalue
p2 = &secondvalue; // p2 = address of
secondvalue
*p1 = 10;
// value pointed by p1 = 10
*p2 = *p1;
// value pointed by p2 =
value pointed by p1
p1 = p2;
// p1 = p2 (value of pointer
is copied)
*p1 = 20;
// value pointed by p1 = 20
cout << "firstvalue is " << firstvalue << endl;
cout << "secondvalue is " <<
secondvalue << endl;
return 0;
}
Contoh Pointer (3)
#include <iostream>
using namespace std;
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;
}
Konstanta pada pointer
#include <iostream>
using namespace std;
int main() {
// P1 akan menunjuk ke
tipe data int
// yang bersifat tetap
const int * P1;
int X, Y;
X = 5;
Y = 10;
P1 = &X;
// *P1 = 2;
// SALAH, karena nilai
yang ditunjuk oleh P1
// (nilai *P1) bersifat tetap
// BENAR, karena pointer
P1 tidak bersifat tetap
P1 = &Y;
return 0;
}
#include <iostream>
using namespace std;
int main() {
int X=5, Y=10;
int * const P2 = &X;
// P2 akan menunjuk ke
alamat yang tetap,
// yaitu alamat X
*P2 = 2;
// BENAR, karena nilai
*P2 dapat diubah
// P2 = &Y; // SALAH,
karena pointer P2 tidak
bersifat tetap
return 0;
}
Contoh Void Pointer
#include <iostream>
using namespace std;
void increase (void* data, int psize)
{
if ( psize == sizeof(char) )
{ char* pchar;
pchar=(char*)data;
++(*pchar); }
else if (psize == sizeof(int) )
{ int* pint;
pint=(int*)data;
++(*pint); }
}
int main ()
{
char a = 'x';
int b = 1602;
increase (&a,sizeof(a));
increase (&b,sizeof(b));
cout << a << ", " << b << endl;
return 0;
}
Contoh Pointer dalam
fungsi
#include <iostream>
using namespace std;
int addition (int a, int b)
{ return (a+b); }
int subtraction (int a, int b)
{ return (a-b); }
int operation (int x, int y, int
(*functocall)(int,int))
{ int g; g = (*functocall)(x,y); return (g); }
int main ()
{
int m,n;
int (*minus)(int,int) = subtraction;
m = operation (7, 5, addition);
n = operation (20, m, minus);
cout <<n;
return 0;
}