Array (Single Dimension) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc Program Studi Informatika http://www.informatika.unsyiah.ac.id Email:
[email protected] [email protected]
Pengantar tentang Array q Definisi: Array adalah struktur data yang memiliki data dengan tipe yang sama. q Array dialokasikan dalam memori dalam ukuran tertentu dan dialokasikan secara berderetan dan tidak terpisah-pisah. q Alamat dari sebuah array dalam memori setelah dideklarasi tidak dapat diubah (fixed).
Pendeklarasian Array q Bentuk umum pendeklarasian array adalah: type_data nama_array[size]; q Dimana: - type_array adalah tipe data dari nilai yang akan disimpan dalam array. - nama_array adalah nama dari array. - size adalah ukuran dari array. q Contoh: int nilai[60]; float ipk[60];
Inisialisasi Data dalam Array Contoh: int a[6] = {8, 4, 6, 3, 4, 10}; 8
4
6
3
4
10
a
char c[]={’i’,’n’,’f’,’o’,’r’,’m’,’a’,’t’,‘i’,‘c’,‘s’}; ‘i’ c
‘n’
‘f’
‘o’
‘r’
‘m’
‘a’
‘t’
‘i’
‘c’
‘s’
Visualisasi Alamat Array(1/2) q Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array a adalah 231016 dan bila diasumsikan pula bahwa ukuran dari tipe data int adalah 4 bytes maka gambar dari array a di atas secara lengkap dengan alamat dari setiap slot adalah: 2310 8 a
2318 4 2314
6
2326 3 2322
4
10 2330
alamat
Visualisasi Alamat Array(2/2) q Untuk array satu dimensi perhitungan jumlah memori yang dibutuhkan adalah: Total Memori(dalam satuan bytes)= sizeof(tipeData)*ukuran_array;
Indeks (subscript) dari Array q Indeks atau subscript dari array dalam ANSI/C selalu dimulai dari 0 sd ukuran array dikurang 1. Contoh: float farr[10]; Visualisasi indeks dari array farr di atas adalah:
Alokasi Memory Array (1/2) q Array dapat dideklarasikan secara global (dideklarasi diluar fungsi main). q Perlu diperhatikan bahwa jika array atau variabel dideklarasikan dalam sebuah fungsi maka array atau variabel tersebut akan bersifat lokal dan tidak dikenal diluar fungsi tersebut. Array atau variabel tersebut akan secara otomatis dihapus ketika fungsi selesai dieksekusi. q Bagi variabel biasa yang mengkonsumsi memori kecil hal tersebut tidak menjadi masalah, tetapi bagi Array, yang umumnya dialokasikan menggunakan memory yang besar (array 'float mydata[50000]' akan membutuhkan memory 200000 bytes) menjadi tidak efisien.
Alokasi Memory Array (2/2) q Oleh karena itu, untuk array dengan ukuran besar dianjurkan untuk dideklarasikan secara global, atau menggunakan pernyataan static (contoh: static float mydata[5000]; q Global array selalu bersifat static, sementara Local arrays selalu bersifat dynamic. q Untuk membuat local array yang bersifat static, pendeklarasian secara eksplisit menggunakan kata kunci static dapat dilakukan, contoh: static short x[200];
Contoh Array Dimensi Satu #include <stdio.h> #include <stdlib.h> #define N 6 int main(void) { int i, a[N]; for(i=0; i
int main(void) { char str[256]; int i; printf("Ketikkan kalimat <maks.256 karakter>:"); gets(str); for (i=0; i<sizeof(str)/sizeof(char); i++){ if (str[i]!='\0'){ if (str[i]==' ') ++blank_cnt; else if (str[i]>='0' && str[i]<='9') ++digit_cnt; else if ((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z')) ++letter_cnt; else ++other_cnt; }else break; } return EXIT_SUCCESS; }
#include <stdio.h> #include <stdlib.h> #define N 10 int main(void) { int x[N]; int i; float fx; for(i=0; i
= 0; --j){ fx = 2 * sqrt(x[j]) + 6 * x[j] + 3; printf("f(x[%d]) = %f\n", j, fx); } return EXIT_SUCCESS; }
Latihan dan Diskusi q Buat program yang menerima input berupa n (n < 10). Kemudian, sebanyak n buah bilangan bulat diinputkan dan ditampung dalam sebuah array. q Setelah itu, jumlahkan semua bilangan yang diinputkan pada urutan ganjil dan tampilkan hasil perjumlahan tersebut. Contoh: n = 5 bil 1 = 2 bil 2 = 4 bil 3 = 1 bil 4 = 7 bil 5 = 6 Hasil penjumlahan data yang diinputkan pada urutan ganjil adalah = 9
References o
o o o
o
http://www.mycplus.com/tutorials/c-programming-tutorials/ loops/ http://www.tenouk.com/Module6a.html http://www.tenouk.com/clabworksheet/labworksheet7.html http://bytes.com/serversidescripting/c++/tutorials/c+ +conditionalstatements/index.html www.informatika.unsyiah.ac.id/tfa