Pert-2 - Array
Pert-2 - Array
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
Menerapkan konsep tipe data array untuk data majemuk homogen
2
Outline Materi
1. Pointer
2. Definisi dan karakteristik array
3. Array dimensi satu
4. Inisialisasi array
5. Array sebagai parameter
6. Array berdimensi dua dan tiga
7. String
3
Pointer
Pointer adalah variabel yang menyimpan alamat dari variabel
yang lainnya.
Deklarasi pointer : <type_data> *ptr_name;
Dua operator yang sering digunakan pada pointer :
* (content of) dan & (address of).
Contoh
Inisialisasi sebuah integer pointer ke data variable:
int i, *ptr;
ptr = &i;
Untuk merubah isi/nilai yg ditunjuk oleh pointer:
*ptr = 5; /* sama artinya dgn i=5 */
4
Pointer
5
Pointer to Pointer
Pointer to pointer adalah variabel yang menyimpan alamat dari pointer yang
lainnya.
Deklarasi pointer : <type> **ptr_ptr ;
Contoh
int i, *ptr, **ptr_ptr ;
ptr = &i;
ptr_ptr = &ptr;
6
Pointer to Pointer
7
Array
Data disimpan dalam suatu struktur, sedemikian rupa
sehingga elemen-elemen di dalam struktur tadi dapat
diolah secara kelompok ataupun secara individu.
8
Array Dimensi Satu
Sintaks deklarasi array dimensi satu
type nama_arrray[Nilai_dim];
9
Visualisasi Array
Dengan menggunakan contoh deklarasi
sebelumnya dapat digambarkan alokasi untuk
variabel A
Elemen-elemen suatu Array diindeks (subscript)
mulai dari 0.
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
10
Cara Akses Array
Dua cara yang ekuivalen untuk mengakses unsur ke-
i dari suatu array. Misal untuk i=2;
*(A+2) atau A[2]
A ekuivalen dengan &A[0] atau pointer constant ke
elemen-pertama dari array tersebut.
Bila elemen A[2] hendak ditampilkan di layar
monitor, gunakan statemen sbb:
Cout << A[2] << endl; atau
Cout << *(A+2) << endl;
11
Mengisi Data Array
Mengisi data ke elemen array dilakukan dengan menggunakan assignment
operator.
Contoh : A[6] = 15; A[3] = 27;
27 15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
12 27 15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
12
Int x = 10;
X == 20; Boolean : F
123 === ‘123’ Boolean
13
Inisialisasi Array
Array dapat diinisialisasi secara eksplisit pada saat
didefinisikan dan bisa tidak diberikan nilai dimensinya.
◦ Contoh: int B[ ]={1, 2, -4, 8};
◦ Pada contoh diatas Array B memiliki 4 element
14
Inisialisasi Array
16
Pointer Constant vs Pointer Variable
Contoh:
◦ int x=10, y=20;
◦ int B[4]; //B adalah Array => pointer constant
◦ int *ptr; //ptr adalah pointer variable
◦ ptr = &x; //ok
◦ ptr = B; //ok
◦ ptr++; //ok
◦ B = ptr; //error
◦ B++; //error
◦ B = &y; //error
ptr = B; sama artinya dengan ptr = &B[0]; karena B tipenya
pointer konstan ke elemen pertama dari array
17
Pointer Constant vs Pointer Variable
18
Akses Array
• Akses array dengan pointer
int arr[10];
int *ptr_arr;
ptr_arr = arr; // sama artinya dengan
// ptr_arr = &arr[0];
19
Array
#include
Contoh<iostream>
:
using namespace std;
int main()
{
int i;
int list_int[10];
for (i=0; i<10; i++){
list_int[i] = i + 1;
cout <<"list_int["<< i << "] diinisialisasi dengan " <<
list_int[i];
cout << endl;
}
}
20
Array Dimensi Satu
Contoh Array dimensi 1:
21
Akses Array
#include<iostream>
using namespace std;
int main(){
int x[10]={50, 35, 10, 15, 23, 11, 25, 34, 23, 32};
int i;
int maks = -1000; //asumsi paling minimum
int min = 1000; //asumsi paling maksimum
for (i=0; i<10; i++){
if(x[i]>maks){
maks= x[i];
}
if(x[i]<min){
min= x[i];
}
}
Contoh
int a[3][4]
Column 0 Column 1 Column 2 Column 3
Row 0 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
Row 1 a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]
Row 2 a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]
Column subscript
Array
name Row subscript
23
Array Dimensi Dua
Inisialisasi: menggunakan aturan rmo (row major order).
Contoh:
◦ int b[2][2] = {1, 2, 3, 4 }; 1 2
◦ int b[2][2] = { { 1, 2 }, { 3, 4 } }; 3 4
◦ int b[2][2] = { { 1 }, { 3, 4 } }; 1 0
3 4
24
Program :
Array Dimensi Dua
/* Mencetak array 2-D */
#include <iostream>
using namespace std;
int main() {
int two_dim[3][5] = { {1, 2, 3, 4, 5},
{10, 20, 30, 40, 50},
{ 100, 200, 300, 400, 500}
};
int i, j;
for (i=0; i<3; i++){
for (j=0; j<5; j++) {
cout<< "two_dim [" << i << "][" << j << "] = " << two_dim[i][j];
cout<< endl;
}
} 1 2 3 4 5 10 20 30 40 50
} 100 200 300 400 500
25
Array Dimensi Tiga
Sintaks deklarasi array dimensi tiga :
type nama_arrray[baris][kolom][depth];
Contoh:
int x[3][2][4] = {
{{1,2,3,4}, {5,6,7,8}},
{{11,12,13,14}, {15,16,17,18}},
{{21,22,23,24}, {25,26,27,28}}
};
int main() {
int x[4][3][5] = {
{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}},
{{9, 7, 5}, {5, 7, 2}, {9}},
{{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}},
{{0}, {1}, {0, 1, 9}}
};
cout << "nilai dari x[1][1][2] = "<< x[1][1][2];
cout << endl;
}
26
Array Of Pointer
Sebuah array yang isinya adalah pointer
Sintak :
type *nama_array [nilai_dim];
Contoh:
int i;
int *ptr[4];
int x=1, y=2, z=3, w=5;
ptr[0]=&x, ptr[1]=&y;
ptr[2]=&z; ptr[3]=&w;
for(i=0;i<4;i++) {
Cout << ptr[i] << endl;
cout << &ptr[i] <<endl;
}
Output : 1 2 3 5
27
Array of character
Array yang isinya character
Sintak:
char nama_array[nilai_dim];
Contoh:
char nama[40];
char ss[20]={‘T’,’I’,’K’}; //20 elemen
char ss[ ]= {‘T’,’I’,’K’}; //3 elemen
28
String
String adalah Array of character yang diakhiri dengan null
character ( ‘\0’ atau ASCII nya = 0)
30
Karakter vs String
Karakter dalam bahasa C++ diapit oleh single quote. Tiap karakter
menempati satu byte memori.
Contoh:
char ch=’A’;
char ch=65; //Ascii
Sama
char ch=0x41; //Ascii
31
Manipulasi string
Pada Standard Library Function ( header file iostring.h ) disediakan fungsi-fungsi untuk
memanipulasi string antara lain :
◦ strlen()
Menghasilkan panjang string, tidak menghitung karakter null.
◦ strcpy(s1,s2)
Copy s2 ke s1.
◦ strncpy(s1,s2,n)
Copy n karakter pertama s2 ke s1.
◦ strcat(s1,s2)
Menambahkan string s2 ke akhir dari string s1.
◦ strncat(s1,s2,n)
Menambahkan n karakter string s2 ke akhir dari string s1.
◦ strcmp(s1,s2)
Membandingkan isi string s1 dan s2, jika isinya sama maka nilainya 0.
◦ dll masih banyak lagi
32
Contoh :
char s1[ ] = “abcdef”;
Manipulasi string
char s2[ ] = “xyz”;
strlen(“nana”); // 4
strcmp(“nana”, “nana”)// bernilai 0
strcpy(s1,s2); // s1 = “xyz”, s2 = “xyz”
strncpy(s1,s2,2); // s1 = “xyabcdef”, s2 = “xyz”
strncpy(s1,s2,4); // jika n>=strlen(s2) efek sama
// dengan strcpy() s1 = “xyz”
strcat(s1,s2); // s1=“abcdefxyz”, s2=“xyz”
strncat(s1,s2,2); // s1=“abcdefxy”, s2=“xyz”
s1 = “Happy”
s2 = “New Year”
33
ASCII CODE
34
Latihan
Buatlah program untuk mengambil 10 bilangan integer dari keyboard dan
disimpan dalam array, kemudian
◦ Cari bilangan terbesar dalam array tersebut
◦ Cari bilangan terkecil dalam array tersebut
◦ Hitung nilai rata-rata dari isi Array tersebut
◦ Tampilkan hasilnya di layar monitor
35
Latihan
Buat program untuk menjumlahkan 2 matrik dibawah ini.
Gunakan Array dimensi 2
36
Latihan
Perhatikan definisi Array dibawah ini sbb:
int A[3][4]={1, 3, 2, 4, 5, 7, 6, 8, 9,11, 12 };
int B[3][3]={{1, 2}, {3, 4, 5} ,{ 7 }};
37
Latihan
1. Perhatikan dua statement dibawah:
char str[] = ”Selamat Datang di PNJ”;
char *str = ”Selamat Datang di PNJ”;
Jelaskan perbedaan kedua identifier str tersebut diatas !
38
Latihan
Jelaskan dengan memberikan contoh program sederhana, fungsi / cara
kerja dari library function yang ada di <string.h> sbb:
◦ strchr(char *s, int c);
◦ strrchr(char *s, int c);
◦ strstr(char *s, char *src);
39