array dan pointer
Post on 07-Jan-2016
48 Views
Preview:
DESCRIPTION
TRANSCRIPT
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 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]
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 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];
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; }
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;
}
top related