array dan pointer

19
Array dan Pointer 6 Nopember 2007

Upload: olin

Post on 07-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Array dan Pointer

Array dan Pointer

6 Nopember 2007

Page 2: Array dan Pointer

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

Page 3: Array dan Pointer

Bentuk Umum Pendeklarasian Array

Nilai ke-1

Nilai ke-2

… 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]

Page 4: Array dan Pointer

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;

Page 5: Array dan Pointer

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

Page 6: Array dan Pointer

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

Page 7: Array dan Pointer

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

Page 8: Array dan Pointer

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

Page 9: Array dan Pointer

Array Multidimensiint 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];

Page 10: Array dan Pointer

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

arrayfor (j=0; j<3; j++) { for (k=0; k<3; k++) { cout<<"A["<<j<<"]["<<k<<"] = "<<A[j]

[k]<<endl; } cout<<endl; } //Menampilkan dalam bentuk matriksfor (j=0; j<3; j++) { for (k=0; k<3; k++) { cout<<A[j][k]<<“ “; } cout<<endl; } return 0; }

Page 11: Array dan Pointer

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;

}

Page 12: Array dan Pointer

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

Page 13: Array dan Pointer

Pointer

Deklarasi pointer:

Int andy, fred;Int *ted;andy = 25; fred = andy; ted = &andy;

Page 14: Array dan Pointer

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;

}

Page 15: Array dan Pointer

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;

}

Page 16: Array dan Pointer

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;

}

Page 17: Array dan Pointer

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

Page 18: Array dan Pointer

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;

}

Page 19: Array dan Pointer

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;

}