Struct
![](http://img2.blogblog.com/img/icon18_edit_allbkg.gif)
http://im-informatika.blogspot.com/2015/05/struct.html
Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel yang bertipe data sama, struct dapat memiliki variabel-variabel yang bertipe data sama atau berbeda, bahkan bisa menyimpan variabel yang bertipe data array atau struct.
Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct.
Struct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya:
- NIM yaitu karakter sejumlah 8
- Nama yaitu karakter
- IPK yaitu bilangan pecahan
Struct hampir mirip dengan class pada Java, namun struct tidak memiliki method atau function.
Struct dapat digunakan dengan cara membuat variabel (analogikan dengan obyek pada Java).
Misalnya : obyek anton bertipe struct Mahasiswa obyek erick bertipe struct Mahasiswa
Dengan demikian anton dan erick memiliki NIM, Nama, dan IPK masing-masing
untuk menggunakan struct Mahasiswa dengan membuat variabel mhs dan mhs2 Mahasiswa mhs,mhs2;
untuk menggunakan struct Mahasiswa dengan membuat variabel array m; Mahasiswa m[100];
Contoh 2 :
Berarti kita sudah mempunyai variabel mhs yang bertipe data struct seperti diatas.
- Penggunaan struct dilakukan dengan membuat suatu variabel yang bertipe struct tersebut
- Pengaksesan elemen struct dilakukan secara individual dengan menyebutkan nama variabel struct diikuti dengan operator titik (.)
- Misalnya dengan struct mahasiswa seperti contoh di atas, kita akan akses elemen- elemennya seperti contoh berikut:
Contoh 1 :
Output :
![penggunaan struct dan pengaksesan elemen-elemennya 1 penggunaan struct dan pengaksesan elemen-elemennya 1](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJZ6qql1XlwEo4xYGnYxJhLKNmOpkYPyOuNoOtxU6vIsDdxlmeQU4YPEIZOfcbYHAQYtgSgxSrkcZ4CjZy0IirBKz_H6vyuuP8zCtuerkkGGU9aqTHvmLwIQU1tAKJ4fVsUD7c-yNYShk/?imgmax=800)
Contoh 2
Outputnya :
![image image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOB5hgURNbkqvQb2Xc_fBwU6UObc5QjqA90d-uef6-3X2oICr6136xcKcoDZQAbazY-LmYeHd3guffDWlofbUnelFlgu-VId-XVnTnLI0K-WmR3T18_rQC6pY26maCKom4sIlSXRUwo8I/?imgmax=800)
Contoh:
Output :
![Struct yang berisi struct lain Struct yang berisi struct lain](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb52GomvjX3wUClxwK3Bvzm2A_Ng-4_ecT3druyD-mmLWW-wmxZo3KPK4OYZpmA_-XSSEWmGQNlX4eCidU7_9tKr6iCRDImjuhRdhPRWqVGvqRPVnYNbvcp0tE74PaXQcN9xzHqCUQglI/?imgmax=800)
Contoh
Baca juga tentang ADT (Abstract Data Type) atau Tipe Data Bentukan dan Stack
Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct.
Ilustrasi Struct
Struct bisa diumpamakan sebagai sebuah class, misalnya: MahasiswaStruct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya:
- NIM yaitu karakter sejumlah 8
- Nama yaitu karakter
- IPK yaitu bilangan pecahan
Struct hampir mirip dengan class pada Java, namun struct tidak memiliki method atau function.
Struct dapat digunakan dengan cara membuat variabel (analogikan dengan obyek pada Java).
Misalnya : obyek anton bertipe struct Mahasiswa obyek erick bertipe struct Mahasiswa
Dengan demikian anton dan erick memiliki NIM, Nama, dan IPK masing-masing
Pendeklarasian dan penggunaan Struct
Contoh 1 :typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; };
untuk menggunakan struct Mahasiswa dengan membuat variabel mhs dan mhs2 Mahasiswa mhs,mhs2;
untuk menggunakan struct Mahasiswa dengan membuat variabel array m; Mahasiswa m[100];
Contoh 2 :
struct { char NIM[8]; char nama[50]; float ipk; } mhs;
Berarti kita sudah mempunyai variabel mhs yang bertipe data struct seperti diatas.
Cara penggunaan struct dan pengaksesan elemen-elemennya
- Penggunaan struct dilakukan dengan membuat suatu variabel yang bertipe struct tersebut
- Pengaksesan elemen struct dilakukan secara individual dengan menyebutkan nama variabel struct diikuti dengan operator titik (.)
- Misalnya dengan struct mahasiswa seperti contoh di atas, kita akan akses elemen- elemennya seperti contoh berikut:
Contoh 1 :
#include <stdio.h> #include <conio.h> //Pendeklarasian tipe data baru struct Mahasiswa struct Mahasiswa{ char NIM[9]; char nama[30]; float ipk; }; void main(){ //Buat variabel mhs bertipe data Mahasiswa Mahasiswa mhs; clrscr(); printf("NIM = ");scanf("%s",mhs.NIM); printf("Nama = ");scanf("%s",mhs.nama); printf("IPK = ");scanf("%f",&mhs.ipk); printf("\nData Anda : \n"); printf("NIM : %s\n",mhs.NIM); printf("Nama : %s\n",mhs.nama); printf("IPK : %f\n",mhs.ipk); getch();
}
Output :
Contoh 2
#include <stdio.h> #include <conio.h> #define phi 3.14 //langsung dianggap variabel 'lingkaran' struct { float jari2; float keliling; float luas; } lingkaran; //fungsi void untuk menghitung luas ingkaran void luasLingkaran(){ //langsung menggunakan luas lingkaran asli lingkaran.luas = lingkaran.jari2 * lingkaran.jari2 * phi; printf("\nLuas lingkaran = %f",lingkaran.luas); } //fungsi yang mengembalikan nilai float untuk menghitung keliling lingkaran float kelLingkaran(float j){ return 2*phi*lingkaran.jari2; } int main(){ clrscr(); printf("Jari-jari = ");scanf("%f",&lingkaran.jari2); //panggil fungsi luasLingkaran luasLingkaran(); //panggil fungsi keliling, nilai kembaliannya dikirim ke keliling lingkaran asli lingkaran.keliling = kelLingkaran(lingkaran.jari2); //tampilkan keliling lingkaran asli printf("\nKeliling lingkaran = %f",lingkaran.keliling); getch(); }
Outputnya :
Struct yang berisi struct lain
Contoh:
#include <stdio.h> #include <conio.h> struct Date{ int dd; int mm; int yyyy; }; struct Time{ int h; int m; int s; }; struct Login{ int ID; Date tglLogin; Time waktuLogin; }; int main(){ Login user1; printf("USER 1\n"); printf("ID : ");scanf("%d",&user1.ID); printf("Tanggal Login\n"); printf("Hari : ");scanf("%d",&user1.tglLogin.dd); printf("Bulan : ");scanf("%d",&user1.tglLogin.mm); printf("Tahun : ");scanf("%d",&user1.tglLogin.yyyy); printf("Waktu Login\n"); printf("Jam : ");scanf("%d",&user1.waktuLogin.h); printf("Menit : ");scanf("%d",&user1.waktuLogin.m); printf("Detik : ");scanf("%d",&user1.waktuLogin.s); printf("Terimakasih\n\n"); printf("Data Anda :\n"); printf("ID : %d\n",user1.ID); printf("Date : %d - %d - %d\n",user1.tglLogin.dd,user1.tglLogin.mm,user1.tglLogin.yyyy); printf("Time : %d:%d:%d\n",user1.waktuLogin.h,user1.waktuLogin.m,user1.waktuLogin.s); getch(); }
Output :
Array of Struct
Contoh
#include <stdio.h> #include <conio.h> struct Date{ int dd; int mm; int yyyy; }; struct Time{ int h; int m; int s; }; struct Login{ int ID; Date tglLogin; Time waktuLogin; }; int main(){ Login user[3]; //3 user for(int i=0;i< 3;i++){ printf("\nUSER ke-%d\n",i+1); printf("ID : ");scanf("%d",&user[i].ID); printf("Tanggal Login\n"); printf("Hari : ");scanf("%d",&user[i].tglLogin.dd); printf("Bulan : ");scanf("%d",&user[i].tglLogin.mm); printf("Tahun : ");scanf("%d",&user[i].tglLogin.yyyy); printf("Waktu Login\n"); printf("Jam : ");scanf("%d",&user[i].waktuLogin.h); printf("Menit : ");scanf("%d",&user[i].waktuLogin.m); printf("Detik : ");scanf("%d",&user[i].waktuLogin.s); printf("Terimakasih Atas Pengisiannya\n"); printf("\nData User ke-%d:\n",i+1); printf("Login ID : %d\n",user[i].ID); printf("Login Date : %d - %d - %d\n",user[i].tglLogin.dd,user[i].tglLogin.mm,user[i].tglLogin.yyyy); printf("Login Time : %d:%d:%d\n",user[i].waktuLogin.h,user[i].waktuLogin.m,user[i].waktuLogin.s); } getch(); } Outputnya :
Baca juga tentang ADT (Abstract Data Type) atau Tipe Data Bentukan dan Stack