Struct

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.

Ilustrasi Struct

Struct bisa diumpamakan sebagai sebuah class, misalnya: Mahasiswa 
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

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 :

penggunaan struct dan pengaksesan elemen-elemennya 1



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 :

image



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 :

Struct yang berisi struct lain



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 :





Contoh program Array of Struct 

Baca juga tentang ADT (Abstract Data Type) atau Tipe Data Bentukan dan Stack

Related

Algoritma & Struktur Data 4036810889241598304

Post a Comment

emo-but-icon

Populer

Comments

Translate

Side Ads

item