Top Banner
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]
14

Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

Oct 30, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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]

Page 2: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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).

Page 3: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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

Page 4: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

Inisialisasi Data dalam Array Contoh: int a[6] = {8, 4, 6, 3, 4, 10};

char

c[]={’i’,’n’,’f’,’o’,’r’,’m’,’a’,’t’,‘i’,‘c’,‘s’};

8 4 6 3 4 10 a

‘i’ ‘n’ ‘f’ ‘o’ ‘r’ ‘m’ ‘a’ ‘t’ ‘i’ ‘c’ ‘s’ c

Page 5: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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:

alamat 2330 2322 2314

8 4 6 3 4 10

a

2310 2318 2326

Page 6: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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;

Page 7: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari 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:

Page 8: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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.

Page 9: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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

Page 10: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

Contoh Array Dimensi Satu #include <stdio.h> #include <stdlib.h> #define N 6 int main(void) {

int i, a[N]; for(i=0; i<N; i++) { a[i] = i * 2; } for(i=0; i<N; i++) { printf("%d\n", a[i]);

} return EXIT_SUCCESS;

}

Page 11: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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

Page 12: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

#include <stdio.h> #include <stdlib.h> #define N 10 int main(void) { int x[N]; int i; float fx; for(i=0; i<N;i++) x[i]=i; for(j=N-1; j >= 0; --j){ fx = 2 * sqrt(x[j]) + 6 * x[j] + 3; printf("f(x[%d]) = %f\n", j, fx); } return EXIT_SUCCESS; }

Page 13: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

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

Page 14: Array (Single Dimension)cs.unsyiah.ac.id/~irvanizam/programming/DIK008-Week07.pdfVisualisasi Alamat Array(1/2) ! Bila diasumsikan bahwa alamat dari array a atau slot pertama dari array

References o  http://www.mycplus.com/tutorials/c-programming-tutorials/

loops/ o  http://www.tenouk.com/Module6a.html o  http://www.tenouk.com/clabworksheet/labworksheet7.html o  http://bytes.com/serversidescripting/c++/tutorials/c+

+conditionalstatements/index.html o  www.informatika.unsyiah.ac.id/tfa