LARIK (ARRAY)
Latar Belakang Array
Sejauh ini cuplikan program yang kita pelajari masih sangat terbatas, karena statement assignment hanya berupa pemberian satu nilai pada satu variabel Padahal sering kali kita perlu untuk meng-assign ataupun memanipulasi banyak nilai ke sekelompok variabel Sebagai contoh jika anda membuat program yang membaca 6000 nilai percobaan untuk dihitung nilai rata-rata-nya, akan sangat lucu jika anda menghitungnya dengan cara berikut: rata_rata = (x1 + x2 + x3 + x4 + x5 + + dst )/6000. Ekspresi matematis berikut akan lebih baik :
1
Definisi
Array/larik adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama. Array adalah kumpulan data bertipe sama dan bernama sama Setiap data tersebut menempati lokasi atau alamat memori yang berbeda-beda dan biasa disebut Elemen Array Elemen array adalah variabel dalam array Elemen Array dapat diakses melalui indeks yang ada didalamnya Indeks array pada C++ selalu dimulai dari 0 Variabel Array dideklarasikan dengan mencatumkan tipe dan nama variabel yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. (Mis.: int c[5]; )
ARRAY
Deklarasi Array :
Tipe data elemen array Nama array Jumlah elemen array
Contoh : short val[ 200 ]; val[ 12 ] = 5;
Jika sebuah array y memiliki n elemen, maka:
//declaration //assignment
Elemen pertama adalah : y[0] Elemen terakhir adalah : y[n-1]
Contoh :
Short y[4], memiliki elemen y[0], y[1], y[2], y[3] Tetapi y[4], bukan merupakan elemen array ini.
2
Perbedaan ARRAY/LARIK dengan variabel biasa adalah :
Array/larik
Dapat mempunyai sebuah nilai Mis. Ada 3 data, maka cukup hanya menggunakan 1 nama variabel x[3]
Variabel Biasa
Hanya dihubungkan dengan sebuah nilai saja Mis. Ada 3 data, maka menggunakan nama variabel X1, X2,X3
Macam Array : Array dimensi Array dimensi Array dimensi Array dimensi multidimensi
satu dua tiga banyak /
3
ARRAY
Array dapat dibedakan menjadi :
Array berdimensi satu (1D), berpadanan dengan vektor di Matematika Array berdimensi dua (2D), berpadanan dengan matriks di Matematika Array berdimensi banyak
Contoh array integer 1D bernama n yg memiliki 5 elemen, n[0] = 1, n[1] = 3, n[2] = 5, n[3] = 7, n[4] = 9 dideklarasikan sbb:
int n[5] = {1,3,5,7,9}; n
1
indeks
3 0
5 1
7 2
9 3
4
Alokasi Memory Array • Hati-hati dengan indeks array – jika ceroboh dapat mengakses data lain – hati-hati pula dengan pointer Array a[ ]
• Ilustrasi kasus: int a[6]; int x;
Data lain
Memori
a[0] a[1] a[2] a[3] a[4] a[5] x
4
Alokasi Memory Array
Array, seperti halnya variabel biasa ataupun fungsi harusi dideklarasikan terlebih dahulu. Array dapat dideklarasikan secara global dengan mendeklarasikannya diluar fungsi main Hati-hati jika anda mendeklarasikannya secara (didalam sebuah fungsi atau main), karena, variabel lokal akan dibentukan dalam stack ketikan fungsi tersebut dibentuk, dan akan dihapus ketika fungsi tersebut dihancurkan (ketika fungsi tersebut selesai dieksekusi). Mungkin hal ini tidak bermasalah bagi variabel biasa, namun array umumnya akan menuntut jumlah memory yang sangat besar (array 'float mydata[5000]' akan membutuhkan memory sebesar 20000 bytes), sementara stack hanya memiliki kapasitas sekitar 2000 - 4000 bytes Oleh karena itu untuk array yang besar harus dideklarasikan secara global, atau mempergunakan static statement (static float mydata[5000]; ) jika anda hendak mendeklarasikannya secara local.
Alokasi Memory Array Global arrays selalu bersifat “static” Local arrays selalubersifat “dynamic” Alokasi memory space array dan variabel “static” umumnya lebih besar daripada array dan variabel “dynamic” Untuk membuat local array “static”, deklarasikan secara eksplisit : static short x[200]; Hati-hati dengan batasan 64 kB pada beberapa compiler
5
Deklarasi dan Inisialisasi Array Deklarasi secara global, semua elemen array akan diinisialiasi dengan nilai nol. Deklarasi secara lokal, elemen array tidak diinisialisasi. Contoh-contoh deklarasi dan inisialisasi array : short x[ 12 ] = { 1, 3, 88}; double w[ ] = {3.14, 127.0, 22};
Strings: char a_Kata[ 10 ] = “Hello”; char Kata[ 20 ] ={‘H’,‘e’,‘l’,’l’,’o’};
Jika anda akan mendeklarasikan ukuran/dimensi array anda harus menggunakan sebuah nilai atau konstanta, jangan variabel short x[12]; Short x[MAX], dimana MAX adalah konstanta
Deklarasi Konstanta
Contoh deklarasi konstanta #define ACONSTANT 300.0 #define TRUE 1 #define FALSE 0
Catatan: Tidak ada semicolon diakhir deklarasi konstanta Kesepakatan dalam C: nama konstanta ditulis dengan menggunakan huruf besar semua.
6
Mengolah Elemen Array
Elemen array dapat diakses dengan bentuk:
nama_array[subscript] untuk dimensi 1 nama_array[subscript_baris][subscript_kolom] untuk dimensi 2
Dalam pemrograman harus diusahakan agar tidak terjadi pengaksesan elemen di luar jumlah yang didefinisikan.
Perlu diketahui, C tidak akan memberikan pesan kesalahan apabila terjadi pengaksesan dengan nilai indeks yang berada di luar nilai yang telah didefinisikan.
Array Dimensi Satu Indek Nama Array
0
1
2
3
4
5
6
7
1 elemen
Tiap-tiap elemen array dapat diakses dengan menggunakan indek Nama Array[
]
Tipe data yang diperbolehkan untuk indek adalah tipe data integer dan character Manipulasi terhadap isi array dilakukan per elemen
7
Array Dimensi Satu Mendefinisikan array tipe_data nama_array[jumlah_data]; Contoh : int nilai[10]; Array nilai akan berisi 10 data (elemen) dengan index 0–9 [0] [1] [2] [3] … [9] 5
4
8
7
index
1
Array Dimensi Satu
Mengakses elemen array nama_array[index] Contoh : nilai[1] mengakses indeks ke 1 cin >> nilai[1]; cout << nilai[1]; Catatan : C++ tidak memberikan pesan kesalahan kalau terjadi pengaksesan array dengan index yang berada diluar jangkauan yang telah didefinisikan Hal ini karena program akan mencari sembarang tempat di memori untuk menyimpan data. Kalau tempat di memori sudah ada isinya maka program akan crash
8
Inisialisasi Array Dimensi Satu
Automatic Array Tipe_data NamaArray[<JumlahData>] = {nilai_1, nilai_2, nilai_3, … nilai_n} Contoh: float nilai[3] = {0.0, 0.0, 0.0}
Static Array Adalah array yang dideklarasikan didalam fungsi yang bersifat lokal Static Tipe_data NamaArray[<JumlahData>]= {nilai_1, nilai_2, nilai_3, … nilai_n} Contoh: static float nilai[3] = {0.0, 0.0, 0.0}
Array Dimensi Satu
Inisialisasi array int nilai[5] = {50, 40, 60, 75, 55}; atau : int nilai[] = {50, 40, 60, 75, 55}; Memberi nilai 0 pada semua elemen: int nilai[5] = {0};
9
ARRAY 1 Dimensi - 45 Buat Algoritma, Pseudocode dan programnya untuk menampilkan “7 elemen Array dengan isi elemennya (22,7,66,28,11,63,3)”
Array 1 Dimensi …….. Contoh 45
PSEUDOCODE : Algoritma menampilkan Array 1 dimensi KAMUS/DEKLARASI VARIABEL I, Nilai[JumDt] : int ALGORITMA/DESKRIPSI JumDt=7 Nilai[JumDt] = {22,7,66,28,11,63,3} for (i=0; i<JumDt; i++) print(Nilai[i])
end for
10
Contoh - 45
Contoh : 45 - Algoritma 1. 2. 3. 4.
5. 6. 7.
JumDt 7 i 0 Nilai[JumDt] = {22, 7, 66, 28, 11, 63, 3} Selama (i < JumDt), kerjakan baris 5 dan 6 Mencetak Nilai[i] ii+1 Selesai
11
ARRAY 1 Dimensi - 46 Buat Algoritma, Pseudocode dan programnya untuk menampilkan “7 elemen Array dengan isi elemennya melalui inputan”
Array 1 Dimensi …….. Contoh 46
PSEUDOCODE : Algoritma menampilkan Array 1 dimensi KAMUS/DEKLARASI VARIABEL
I, Nilai[JumDt] : int ALGORITMA/DESKRIPSI
JumDt=7 for (i=0; i<JumDt; i++) input(Nilai[i])
end for for (i=0; i<JumDt; i++) print(Nilai[i])
end for
12
C o n t o h 4 6
Contoh : 46 Algoritma .... ????
13
ARRAY 1 Dimensi - 47 Buat Algoritma, Pseudocode dan programnya untuk menghitung jumlah “3 elemen Array dengan isi elemennya {22,7,1966}”
Array 1 Dimensi …….. Contoh 47
PSEUDOCODE : Algoritma menampilkan Array 1 dimensi KAMUS/DEKLARASI VARIABEL
X, Total : float i: Int ALGORITMA/DESKRIPSI
Total = 0 X[3] = {22,7,1966} for (i=0; i 2; i++) Total = Total + X[i]; print(Total[i])
end for
14
C o n t o h 4 7
Contoh : 47 - Algoritma 1. 2. 3. 4. 5. 6. 7. 8.
Total 0 i0 X[3] = {22,7,1966} Selama (i 2) kerjakan baris 5 s.d. 7 Menghitung Total Total + X[i] Menampilkan/mencetak Total[i] i i+1 Selesai
15
Latihan 1.
2.
Menghitung nilai rata-rata tes dari suatu kelas yang menampung maximum 40 mahasiswa Menghitung nilai total, rata-rata dan standar deviasi, jumlah data dan nilai ditentukan melalui inputan
16