Array Bag 1 1 Topik Array Deklarasi Inisialisasi
Array (Bag 1) 1
Topik • Array – Deklarasi – Inisialisasi – Input/Output – Pengiriman array ke fungsi 2
Array • Kelompok lokasi memori yang berdekatan yang biasanya disimpan secara berurutan dari nilai yang berhubungan (satu tipe) • Nama array adalah pointer ke elemen pertama • Seluruh nilai mempunyai tipe yang sama • Elemen individu dari array dpt di akses melalui index integer: array[index] • Elemen di awali dari 0: array[0] adl elemen pertama 3
Inisialisasi • Array may be initialized with a list of suitable values • No need to specify the number of elements for a 1 D (1 -dimensional) array 4
Contoh: Curah. Hujan. Bulanan Problem: Memakai Tabel Curah hujan • input month • output mean curah hujan bulanan 5
Contoh (cont): Curah. Hujan(v. 1) #include <stdio. h> int main() { int month; int table[12] = { 30, 45, 95, 130, 220, 210, 185, 135, 80, 45 }; printf("Masukan Bulan: "); scanf("%d", &month); printf("Rata-rata Curah. Hujan: %d mm. n", table[month 1]); return 0; } Curah. Huja n 1. c 6
Contoh (cont): Curah. Hujan(v. 1) #include <stdio. h> int main() { int month; int table[12] = { 30, 45, 95, 130, 220, 210, 185, 135, 80, 45 }; printf("Masukan Bulan: "); scanf("%d", &month); printf("Rata-rata Curah. Hujan: %d mm. n", table[month 1]); return 0; } Curah. Huja n 1. c 7
Input / Output Array • Pustaka fungsi/Library functions printf() dan scanf() tidak tahu mengenai Array Jd kita hrs melakukan I/O sendiri 8
Contoh: IOCurah. Hujan-1 #include <stdio. h> #define NMONTHS 12 /* Simpan dan cetak Curah. Hujan */ int main() { int data[NMONTHS]; int month; for ( month=0; month < NMONTHS; month++ ) { scanf("%d", &data[month] ); }. . . rainio 1. c 9
Contoh (cont): IOCurah. Hujan-1 #include <stdio. h> #define NMONTHS 12 /* Simpan dan cetak Curah. Hujan */ int main() { int data[NMONTHS]; int month; for ( month=0; month < NMONTHS; month++ ) { scanf("%d", &data[month] ); }. . . rainio 1. c 10
Contoh (cont): IOCurah. Hujan-2 (v. 1) #include <stdio. h> #define NMONTHS 12. . . /* Cetak dr januari sd Desember */ for ( month=0; month < NMONTHS; month++ ) { printf( "%d ", data[month] ); } printf("n"); /* Cetak dr Desember sd Januari */ for ( month = NMONTHS - 1; month >= 0; month-- ) { printf( "%d ", data[month] ); } printf("n"); return 0; } rainio 1. c 11
Contoh (cont): IOCurah. Hujan-2 (v. 1) #include <stdio. h> #define NMONTHS 12. . . /* Cetak dr januari sd Desember */ for ( month=0; month < NMONTHS; month++ ) { printf( "%d ", data[month] ); } printf("n"); /* Cetak dr Desember sd Januari */ for ( month = NMONTHS - 1; month >= 0; month-- ) { printf( "%d ", data[month] ); } printf("n"); return 0; } rainio 1. c 12
Contoh (cont): IOCurah. Hujan-2 (v. 2) #include <stdio. h> #define NMONTHS 12. . . /* Cetak dr januari sd Desember */ for ( month=0; month < NMONTHS; month++ ) { printf( "%5 d ” , data[month] ); } printf("n"); /* Cetak dr Desember sd Januari */ for ( month = NMONTHS - 1; month >= 0; month-- ) { printf( "%5 d ” , data[month] ); } printf("n"); return 0; } rainio 2. c 13
Character Array vs. Character String • character string adalah char array • character string HARUS memakai terminating character (’ ’) • Terminating character mengijinkan scanf() dan printf() utk menangani character string 14
Handling Peng-index-an • Array memiliki ukuran tetap • Tidak ada cara (buit-in) yang dpt dipakai utk mengecek tersedianya index dalam suatu range. • Kita hrs mengecek index sendiri. 15
Contoh (cont): Curah. Hujan(v. 2) #include <stdio. h> #define MAXLEN 1024 int main() { int month; char line[MAXLEN]; char dummy[MAXLEN]; int table[12] = { 30, 45, 95, 130, 220, 210, 185, 135, 80, 45 }; while(1) { printf("Masukan bulan atau ctrl-c selesai: "); fgets(line, MAXLEN, stdin); if (sscanf(line, "%d%s", &month, dummy) != 1) /* Input benar? */ { printf(“Input tdk benar. Coba lagi. n"); } else if (1 <= month && month <= 12) /* Input dlm range? */ { printf("Rata-rata Curah. Hujan sebulan %d is %d mm. n", month, table[month 1]); } else { printf("Bulan berada dalam 1 dan 12. Coba lagi. n"); Curah. Huja } n 2. c } 16 return 0;
Contoh (cont): Curah. Hujan-1 (v. 3) #include <stdio. h> #define MAXLEN 1024 int Curah. Hujan(int month); /* Program utama utk men-test fungsi Curah. Hujan() */ int main() { int month; char line[MAXLEN]; char dummy[MAXLEN]; while(1) { printf("Masukan bulan atau ctrl-c selesai: "); fgets(line, MAXLEN, stdin); if (sscanf(line, "%d%s", &month, dummy) != 1) { printf("Input tdk benar. Coba lagi. n"); } else if (1 <= month && month <= 12) { printf("Rata-rata Curah. Hujan sebulan %d is %d mm. n", month, Curah. Hujan(month -1)); } else { printf("Bulan berada dalam 1 dan 12. Coba lagi. n"); Curah. Huja } n 3. c } 17 return 0; }
Contoh (cont): Monthly. Curah. Hujan-2 (v. 3) /***************************** * NAMA: * int Curah. Hujan(int month) * DESKRIPSI: * Mengembalikan mean bulanan Curah. Hujan (dlm millimeters) * dg input bulan * PRE: * Integer `month' hrs berada pada 0 and 11, dimana * 0 = January, 1 = February, dst. Jika tidak, Respon program * adalah tidak terdefinisi * Tabel lokal array diinit berisi * Rata-rata Curah Hujan dalam bulan itu * POST: * Prg mengembalikan nilai integer berhub. Dg mean * Curah. Hujan (dlm millimeters) dr bulan yg diberikan *****************************/ int Curah. Hujan ( int month ) { int table[12] = { 30, 45, 95, 130, 220, 210, 185, 135, 80, 45 }; return (table[month]); } Curah. Huja 18 n 3. c
Contoh (cont): Monthly. Curah. Hujan-2 (v. 3) /***************************** * NAMA: * int Curah. Hujan(int month) * DESKRIPSI: * Mengembalikan mean bulanan Curah. Hujan (dlm millimeters) * dg input bulan * PRE: * Integer `month' hrs berada pada 0 and 11, dimana * 0 = January, 1 = February, dst. Jika tidak, Respon program * adalah tidak terdefinisi * Tabel lokal array diinit berisi * Rata-rata Curah Hujan dalam bulan itu * POST: * Prg mengembalikan nilai integer berhub. Dg mean * Curah. Hujan (dlm millimeters) dr bulan yg diberikan *****************************/ int Curah. Hujan ( int month ) { int table[12] = { 30, 45, 95, 130, 220, 210, 185, 135, 80, 45 }; return (table[month]); } Curah. Huja 19 n 3. c
Mengirim Array ke Function • Array dikirimkan – Utk array yg tdk dispesifikasikan ukurannya (int array[]) ATAU – Sbg pointer (int *array) • Perubahan array dlm fungsi berakibat pada “original” array 20
Contoh (cont): IOCurah. Hujan-1 (v. 3) #include <stdio. h> #define NMONTHS 12 void load. Rain ( int array. Ptr[] ) { int month; for (month=0; month < NMONTHS; month++) { scanf("%d", &array. Ptr[month]); } } rainio 3. c 21
Contoh (cont): IOCurah. Hujan-2 (v. 3) void print. Rain ( const int array. Ptr[] ) { int month; for (month=0; month < NMONTHS; month++) { printf("%5 d", array. Ptr[month]); } printf("n"); } rainio 3. c 22
Contoh (cont): IOCurah. Hujan-3 (v. 3) #include <stdio. h> #define NMONTHS 12 void load. Rain ( int array. Ptr[] ); void print. Rain ( const int array. Ptr[] ); /* Simpan dan cetak Curah. Hujan */ int main() { int data[NMONTHS]; load. Rain(data); print. Rain(data); return 0; } rainio 3. c 23
Contoh: IOCurah. Hujan -- v. 3 (cont) #include <stdio. h> #define NMONTHS 12 void load. Rain ( int array. Ptr[] ); void print. Rain ( const int array. Ptr[] ); /* Simpan dan cetak Curah. Hujan */ int main() { int data[NMONTHS]; load. Rain(data); print. Rain(data); return 0; } /* Baca dlm Curah. Hujan tiap bulan*/ void load. Rain ( int array. Ptr[] ) { int month; for (month=0; month < NMONTHS; month++) { scanf("%d", &array. Ptr[month]); } } /* Cetak Curah. Hujan tiap bulan*/ void print. Rain ( const int array. Ptr[] ) { int month; for (month=0; month < NMONTHS; month++) { printf("%5 d", array. Ptr[month]); } printf("n"); } rainio 3. c 24
- Slides: 24