STRUKTUR KOMPOSISI (RECORD) Algoritma dan Struktur Data //Program pengantar ke materi struct #include <stdio.h> void main() { char nama1[20], nama2[20], nama3[20]; char nim1[8], nim2[8], nim3[8]; float ipk1, ipk2, ipk3; printf("Nama 1: "); scanf("%s",&nama1); printf("NIM 1: "); scanf("%s",&nim1); printf("IPK 1: "); scanf("%f",&ipk1); printf("Nama 2: "); scanf("%s",&nama2); printf("NIM 2: "); scanf("%s",&nim2); printf("IPK 2: "); scanf("%f",&ipk2); printf("Nama 3: "); scanf("%s",&nama3); printf("NIM 3: "); scanf("%s",&nim3); printf("IPK 3: "); scanf("%f",&ipk3); return 0; } Definisi Struktur komposisi adalah sekumpulan variabel yang masing- masing tipe datanya bisa berbeda, dan dikelompokkan ke dalam satu nama. Inisialisasinya menggunakan kata kunci struct. Membuat sebuah struktur komposisi, berarti membuat sebuah record (rekaman data). Kegunaan Struktur Komposisi digunakan untuk menampung sekumpulan data dari suatu objek. Misalkan: Ada 1000 mahasiswa di STMIK Amikom Setiap mahasiswa pasti memiliki data diri, seperti: nama, nim, ipk. Maka, untuk menyimpan ketiga data diri mahasiswa tadi, setiap data diri mahasiswa harus disimpan dalam satu kesatuan. Nama; NIM; IPK Mahasiswa 1 Nama; NIM; IPK Nama; NIM; IPK Mahasiswa 2 Mahasiswa 3 Memiliki atribut/ variabel yang sama Nama; NIM; IPK Mahasiswa Nama; NIM; IPK Mahasiswa 4 Deklarasi Struktur Komposisi struct mahasiswa { char nama[20]; char nim[8]; float ipk; } Menggunakan Struktur Komposisi Jika struktur komposisi “mahasiswa” sudah didefinisikan, berarti kita sudah mempunyai sebuah record yang bernama “mahasiswa”. Selanjutnya, record “mahasiswa” ini bisa digunakan untuk membuat variabel-variabel baru. Menggunakan Struktur Komposisi Syntax untuk membuat variabel baru dengan record “mahasiswa” yang sudah dibuat tadi adalah: struct <nama record> <nama variabel> Contoh: struct mahasiswa dataMhs; Sehingga sekarang kita sudah memiliki sebuah variabel bernama “dataMhs” yang berisi data nama, nim, dan ipk. Pengaksesan Struktur Untuk mengakses anggota dari struktur, digunakan salah satu dari dua operator: Titik (.), jika tipe variabel yang diakses adalah variabel tunggal. 2. Panah (->), jika tipe variabel yang diakses adalah pointer. 1. Pengaksesan Struktur (2) Contoh cara mengisi nilai ke dalam variabel dataMhs: scanf(“%s”, &dataMhs.nama); scanf(“%s”, &dataMhs.nim); scanf(“%f”, &dataMhs.ipk); Contoh cara manampilkan nilai dari variabel dataMhs: printf(“%s”, dataMhs.nama); printf(“%s”, dataMhs.nim); printf(“%f”, dataMhs.ipk); //Program menggunakan STRUCT #include "stdio.h" void main() { struct mahasiswa { char nama[20]; char nim[7]; float ipk; }; struct mahasiswa dataMhs; //Mengisi data mahasiswa printf("Nama Mahasiswa: "); scanf("%s",&dataMhs.nama); printf("NIM: "); scanf("%s",&dataMhs.nim); printf("IPK: "); scanf("%f",&dataMhs.ipk); //Menampilkan data mahasiswa printf("Nama Mahasiswa: %s \n", dataMhs.nama); printf("NIM: %s \n", dataMhs.nim); printf("IPK: %f \n", dataMhs.ipk); return 0; } Alternatif Mendeklarasikan Struktur Komposisi Menggunakan keyword typedef. Dengan menggunakan typedef, maka berarti kita menjadikan record tersebut sebagai sebuah tipe data baru (user defined type). Syntax: typedef struct { <deklarasi variabel> } <nama tipe data>; Penggunaan Typedef Contoh penggunaannya: typedef struct { char nama[20]; char nim[7]; float ipk; }mahasiswa; mahasiswa mhs; //inisialisasi variabel mhs tidak perlu menggunakan “struct” lagi Struktur Komposisi dan Array Jika ada 1000 mahasiswa yang datanya ingin disimpan, maka kita bisa mendefinisikan sebuah array yang bertipe “mahasiswa” yang telah dibuat sebelumnya. Contoh: mahasiswa dataMhs[1000]; Maka, kita sudah mempunyai sebuah array bernama “dataMhs” yang berisi data nama, nim, dan ipk. Pengaksesan Struktur Komposisi dengan Array Cara pengaksesan struktur komposisi dengan array mirip dengan cara pengaksesan struktur komposisi biasa. Contoh cara mengisi nilai ke dalam variabel dataMhs: scanf(“%s”, &dataMhs[i].nama); scanf(“%s”, &dataMhs[i].nim); scanf(“%f”, &dataMhs[i].ipk); Pengaksesan Struktur Komposisi dengan Array Contoh cara manampilkan nilai dari variabel dataMhs: printf(“%s”, dataMhs[i].nama); printf(“%s”, dataMhs[i].nim); printf(“%f”, dataMhs[i].ipk); //Program menggunakan TYPEDEF STRUCT #include "stdio.h" void main() { typedef struct { char nama[20]; char nim[7]; float ipk; } mahasiswa; int i; //pencacah array mahasiswa dataMhs[3]; //Mengisi data mahasiswa for(i=0;i<=2;i++) { printf("Nama Mahasiswa: "); scanf("%s",&dataMhs[i].nama); printf("NIM: "); scanf("%s",&dataMhs[i].nim); printf("IPK: "); scanf("%f",&dataMhs[i].ipk); } //Menampilkan data mahasiswa for(i=0;i<=2;i++) { printf("Nama Mahasiswa: %s \n",dataMhs[i].nama); printf("NIM: %s \n",dataMhs[i].nim); printf("IPK: %f \n",dataMhs[i].ipk); } return 0; } Untuk Dibawa Pulang Buatkan sebuah program untuk menyimpan dan menampilkan data dari 5 buah buku. Data yang dimiliki oleh setiap buku yakni: 1. Judul buku 2. Pengarang (satu orang saja) 3. Penerbit 4. Jumlah halaman 5. Harga buku Kumpulkan HANYA KODE PROGRAMNYA SAJA dalam format .txt. Sertakan juga nama, nim, dan kelas dalam file .txt tersebut. Dikirimkan ke [email protected], paling lambat satu pekan setelah praktikum ini dilaksanakan. Subjek email: prak-06-<kelas>