MODUL IV ARRAY DAN STRUCTURE I. II. TUJUAN 1. Memahami konsep dasar array 1 dimesi dan array multidimensi 2. Mampu menerapkan konsep array dalam studi kasus nyata 3. Memahami konsep dasar structure dan mampu menerapkannya dalam studi kasus nyata DASAR TEORI 1. ARRAY a. Pengertian Array Array adalah kumpulan data yang bertipe sama. Dengan menggunakan array, sama yang menggunakan nama yang sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan nomor elemen (subscript/indeks) Variabel dapat dideklarasikan ber-type array dari suatu type tertentu. Setiap elemen array diakses dengan alamat berupa indeks yang bertype integer. Contoh : int TabInt[10]; Array bernama TabInt Setiap elemen bertype integer, Dengan ukuran 10 elemen, Dengan alamat setiap elemen array (indeks) adalah dari indeks ke-0 s.d. 9. b. Deklarasi Array int main() { // Kamus int TabJumlahHari[12]; float TabNilai[15]; char TabHuruf[100]; string TabKata[100]; Point TabTitik[20]; // Algoritma ….. // // // // // indeks indeks indeks indeks indeks 0..11 0..14 0..99 0..99 0..19 Elemen dari array dapat diakses langsung jika dan hanya jika indeks terdefinisi Cara mengacu sebuah elemen : TabInt[2] TabInt[i] jika i terdefinisi IV - 1 c. Mengisi Array Mengisi array merupakan aktifitas memberi nilai elemen array Pemberian nilai satu elemen Contoh : TabInt[0]=31; Pemberian nilai beberapa elemen for (i=0;i<10;i++) { TabInt[i]=i*10; } d. Mengisi Dan Membaca Isi Array Elemen array yang telah diberi nilai dapat diakses kembali. Contoh : menampilkan semua isi array ke layar #include <iostream> using namespace std; int main () { // Kamus int TabInt[10]; int i; // Algoritma mengisi array for (i=0; i<10; i++) { TabInt[i]=i*10; } // Algoritma membaca dan menuliskan // isi array ke layar for (i=0; i<10; i++) { cout << TabInt[i] << endl; } return 0; 2. STRUCTURE a. Pengertian Structure Structure adalah kumpulan data yang saling berhubungan, yang disimpan dalam satu unit penyimpanan. Misalkan pada suatu database peyimpanan data pegawai, dimana setiap pegawai akan menyimpan nama, alamat dan gaji. Bila menggunakan array biasa, maka diperlukan tiga variable yang bebas satu dengan yang lain, yaitu variabel nama, alamat dan gaji. Dengan menggunakan structure, data tersebut diorganisasikan dalam satu kesatuan. Gambar IV.1. Perbedaan Array dan Structure IV - 2 b. Deklarasi Dan Menginisialisai Structure Contoh : Biodata pegawai mempunyai properties nama, alamat, dan gaji. Bila menggunakan array biasa, maka diperlukan tiga variable yang bebas satu dengan yang lain, yaitu variabel nama, alamat dan gaji dengan deklarasi sebagai berikut. int main() { // Kamus string TabNama[10]; string TabAlamat[10]; int TabGaji[10]; // Algoritma // indeks 0..9 // indeks 0..9 // indeks 0..9 Dengan menggunakan structure, data tersebut diorganisasikan dalam satu kesatuan struct data //Deklarasi structure { char name[20]; char address[20]; int salary; }; data employee1; //Inisialisasi variabel structure c. Memanggil Elemen Tertentu Dari Suatu Structure int main() { printf("Tanggal lahir : %s-%s-%s", tgl_lahir.tanggal, tgl_lahir.bulan, tgl_lahir.tahun); return 0; } return 0; } Memanggil elemen tanggal pada structure tgl_lahir (Inisialisasi variabel structure Data) IV - 3 III. GUIDED ARRAY 1. Array Dengan Elemen Diinisialiasi #include <stdio.h> int main() { int A[5] = {10, 20, 30, 40, 50}; int B[5] = {10}; int C[5] = {10, 0, 30}; int j; /* Menampilkan nilai dari elemen array */ for (j=0; j<5; j++) { printf("A[%d] = %2d, B[%d] = %2d, C[%d] = %2d\n", j, A[j],j, B[j], j, C[j]); } return 0; } 2. Pencarian Data Dalam Array #include <stdio.h> #define MAX_ELEMEN 100 int main() { int BIL[MAX_ELEMEN]; int N, X; printf("Masukkan banyaknya elemen yang diinginkan: "); scanf("%d",&N); /* Mengisikan elemen array */ for (int j=0; j<N; j++) { printf("BIL[%d] = ", j); scanf("%d", &BIL[j]); } printf("Masukkan nilai yang akan dicari : "); scanf("%d", &X); /* Melakukan pencarian elemen array */ int k=0; while ((k<N) && (BIL[k] != X)) { k++; } /* Menyimpulkan hasil pencarian */ if (BIL[k] == X) { printf("%d ditemukan dalam array, yaitu pada indeks ke%d", X, k); } else { printf("%d tidak ditemukan dalam array", X); } return 0; } IV - 4 3. Membuat Matrik Dengan Array Multidimensi #include <stdio.h> int main(void) { /* Membuat tipe data bentukan untuk merepresentasikan matrik ordo 3x2 */ typedef int Matrik32 [3][2]; /* Mendeklarasikan variabel A,B dan C yang bertipe Matrik32 */ Matrik32 A, B, C; /*Mendeklarasikan variabel j dan k untuk indeks pengulangan */ int j, k; /* Mengisikan nilai ke dalam elemen-elemen matrikA */ printf(“Mengisikan elemen matrik A:\n”); for (j=0; j<3; j++) { for (k=0; k<2; k++) { printf(“A[%d][%d] = ”, j, k); scanf(“%d”, &A[j][k]); } } /* Mengisikan nilai ke dalam elemen-elemen matrikB */ printf(“\nMengisikan elemen matrik B:\n”); for (j=0; j<3; j++) { for (k=0; k<2; k++) { printf(“B[%d][%d] = ”, j, k); scanf(“%d”, &B[j][k]); } } /* Melakukan penjumlahan matrik A dan B dan menyimpannya ke dalam matrik C */ for (j=0; j<3; j++) { for (k=0; k<2; k++) { C[j][k] = A[j][k] + B[j][k]; } } /* Menampilkan hasil penjumlahan matrik di atas */ printf(“\nHasil penjumlahan matrik A dan B:\n”); for (j=0; j<3; j++) { for (k=0; k<2; k++) { printf(“C[%d][%d] = %d\n”, j, k, C[j][k]); } } return 0; } IV - 5 IV. UNGUIDED ARRAY Buatlah program dalam bahasa C yang berisi menu dengan sturktur perulangan sebagai berikut : MENU 1. Input Array 2. Tampil Array 3. Cari Nilai Minimum 4. Cari Nilai Maksimum 5. EXIT Cari Nilai Minimum untuk menampilkan isi array yang nilainya paling kecil Cari Nilai Maksimum untuk menampilkan isi array yang nilainya paling besar Gunakan prosedur untuk melakukan setiap fungsi menunya. V. GUIDED STRUCTURE 1. Membuat Titik Koordinat #include <stdio.h> /* Mendefinisikan struktur TITIK sekaligus mendeklarasikan variabel T1 */ struct TITIK { int x; int y; } T1; / * struktur T1 merupakan variabel global */ int main(void) { /* Mendeklarasikan struktur T2 */ struct TITIK T2; /* struktur T2 merupakan variabel lokal dalam fungsi main() */ /* Membaca nilai x dan y untuk struktur T1 */ printf("Menentukan koordinat T1:\n"); printf("Nilai x = "); scanf("%d", &T1.x); printf("Nilai y = "); scanf("%d", &T1.y); /* Membaca nilai x dan y untuk struktur T2 */ printf("\nMenentukan koordinat T2:\n"); printf("Nilai x = "); scanf("%d", &T2.x); printf("Nilai y = "); scanf("%d", &T2.y); /* Menampilkan nilai yang terdapat pada struktur */ printf("\nT1(%d,%d)\n", T1.x, T1.y); printf("\nT2(%d,%d)\n", T2.x, T2.y); return 0; } IV - 6 2. Membuat Segi Empat DenganTitik Koordinat struct SEGIEMPAT { struct TITIK T1; struct TITIK T2; }; int main(void) { struct SEGIEMPAT S; int panjang, lebar, luas; /* Mengisikan nilai ke struktur SEGIEMPAT */ printf("Titik ke-1:\n"); printf("Nilai x = "); scanf("%d", &S.T1.x); printf("Nilai y = "); scanf("%d", &S.T1.y); printf("\nTitik ke-2:\n"); printf("Nilai x = "); scanf("%d", &S.T2.x); printf("Nilai y = "); scanf("%d", &S.T2.y); /* Menggunakan fungsi abs untuk mendapatkan nilai absolut */ panjang = abs(S.T2.x - S.T1.x); lebar = abs(S.T2.y - S.T1.y); /* Menghitung luas segiempat */ luas = panjang * lebar; /* Menampilkan hasil perhitungan */ printf("\nLuas segi empat = %d", luas); return 0; } IV - 7