STRUCT (RECORD)

Apakah Struct ?

Turbo C tidak selalu menyediakan tipe data yang sesuai dengan tipe data yang diinginkan. Contoh kasus yaitu ketika kita ingin membuat suatu program mengolah data mahasiswa dimana data mahasiswa terdiri dari NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan Index Prestasinya. Turbo C tidak menyediakan tipe data untuk data tersebut. Oleh karena itu maka kita harus membuat suatu tipe data baru yang cocok dengan keperluan kita. Caranya adalah dengan menggunakan perintah struct.

 

Deklarasi tipe data baru (struct) untuk data mahasiswa dapat dilihat sebagai berikut :

 

struct TMhs

{

char NIM[11];

char Nama[21];

int NilaiUTS,NilaiUAS,NilaiQuiz;

float NilaiAkhir;

char index;

};

 

Deklarasi diatas berarti kita telah membuat suatu tipe data yang bernama TMhs dimana setiap data bertipe TMhs mempunyai field NIM, Nama, NilaiUTS, NilaiUAS, NilaiQuiz, NilaiAkhir dan index.

Untuk mendeklarasikan sebuah variable yang bertipe TMhs caranya adalah seperti berikut :

 

TMhs Mhs1,Mhs2;

 

Deklarasi tersebut berarti bahwa kita membuat suatu variable bernama Mhs1 dan Mhs2 dimana tiap variable tersebut mempunyai field sesuai dengan TMhs.

Kalau digambarkan, maka struktur Mhs1 dan Mhs2 dapat dilihat seperti berikut :

 

MHS1

MHS2

NIM

NAMA

NILAI

UTS

NILAI

UAS

NILAI

QUIZ

NILAI AKHIR

INDEX

NIM

NAMA

NILAI

UTS

NILAI

UAS

NILAI

QUIZ

NILAI AKHIR

INDEX

 

Untuk mengisi Nilai UTS dari Mhs1 maka perintahnya adalah :

 

Mhs1.NilaiUTS=50;

scanf(“%i”,&Mhs1.NilaiUTS);//membaca data dari keyboard

 

Contoh program yang menggunakan variable yang bertipe bentukan dapat dilihat di halaman berikutnya.

 

#include <stdio.h>

#include <conio.h>

#include <string.h>

struct TMhs

{

char NIM[11];

char Nama[21];

int NilaiUTS,NilaiUAS,NilaiQuiz;

float NilaiAkhir;

char index;

};

main()

{

TMhs mhs1,mhs2;

printf(“Pengisian Data”);

printf(“NIM        : “);gets(mhs1.NIM);

printf(“NAMA       : “);gets(mhs1.Nama);

printf(“Nilai QUIZ : “);scanf(“%d”,&mhs1.NilaiQuiz);

printf(“Nilai UTS  : “);scanf(“%d”,&mhs1.NilaiUTS);

printf(“Nilai UTAS : “);scanf(“%d”,&mhs1.NilaiUAS);

mhs1.NilaiAkhir=0.2*mhs1.NilaiQuiz+0.3*mhs1.NilaiUTS+0.5*mhs1.NilaiUAS;

if(mhs1.NilaiAkhir>=80) mhs1.index=’A’;else

if(mhs1.NilaiAkhir>=60) mhs1.index=’B’;else

if(mhs1.NilaiAkhir>=40) mhs1.index=’C’;else

if(mhs1.NilaiAkhir>=20) mhs1.index=’D’;else

if(mhs1.NilaiAkhir>=00) mhs1.index=’E’;

 

mhs2=mhs1; // mengisikan semua data di mhs1 ke mhs2

 

printf(“Data yang telah dimasukan :”);

printf(“NIM        : %s\n“,mhs2.NIM);

printf(“NAMA       : %s\n“,mhs2.Nama);

printf(“Nilai QUIZ : %i\n“,mhs2.NilaiQuiz);

printf(“Nilai UTS  : %d\n”,mhs2.NilaiUTS);

printf(“Nilai UTAS : %d\n”,mhs2.NilaiUAS);

printf(“Nilai Akhir: %.2f\n”,mhs2.NilaiAkhir);

printf(“Index      : %c\n”,mhs2.index);

 

getch();

}

 

 

Array Struct

Setiap tipe data dapat dibuat dalam bentuk array. Begitu juga dengan tipe data yang dibuat dengan perintah struct.

Contoh program di bawah ini dapat menjelaskan cara penggunaan array yang bertipe data buatan.

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define maks 3

struct TMhs

{

      char NIM[9];

      char Nama[21];

      int NilaiUTS,NilaiUAS,NilaiQuis;

      float NilaiAkhir;

      char index;

};

main()

{

   TMhs mhs[maks]; // array struct

   int i;

   for(i=0;i<maks;i++)

   {

       printf(“Pengisian Data Mahasiswa Ke-%i\n”,i+1);

       printf(“NIM        : “);fflush(stdin);gets(mhs[i].NIM);

       printf(“NAMA       : “);fflush(stdin);gets(mhs[i].Nama);

       printf(“Nilai QUIZ : “);scanf(“%d”,&mhs[i].NilaiQuis);

       printf(“Nilai UTS  : “);scanf(“%d”,&mhs[i].NilaiUTS);

       printf(“Nilai UTAS : “);scanf(“%d”,&mhs[i].NilaiUAS);

       mhs[i].NilaiAkhir=0.2*mhs[i].NilaiQuis+0.3*mhs[i].NilaiUTS+0.5*mhs[i].NilaiUAS;

       if(mhs[i].NilaiAkhir>=80) mhs[i].index=’A’;else

       if(mhs[i].NilaiAkhir>=60) mhs[i].index=’B’;else

       if(mhs[i].NilaiAkhir>=40) mhs[i].index=’C’;else

       if(mhs[i].NilaiAkhir>=20) mhs[i].index=’D’;else

       if(mhs[i].NilaiAkhir>=0)  mhs[i].index=’E’;

   };

   clrscr();

   printf(“Data yang telah dimasukan adalah : \n”);

   printf(“———————————————————————-\n”);

   printf(“|    NIM     |       NAMA         | QUIS | UTS | UAS |  N A  | INDEX |\n”);

   printf(“———————————————————————-\n”);

   for(i=0;i<maks;i++)

   {

      printf(“| %-8s | %-20s |  %3i | %3i | %3i | %6.2f |   %c   |\n”,

              mhs[i].NIM,mhs[i].Nama,mhs[i].NilaiQuis,mhs[i].NilaiUTS,

              mhs[i].NilaiUAS,mhs[i].NilaiAkhir,mhs[i].index);

   }

   printf(“———————————————————————-\n”);

   getch();

   return 0;

}

 

 

Kalau program tersebut dijalankan maka jalannya program dalam dilihat di bawah ini :

Pengisian Data Mahasiswa Ke-1

NIM        : 10197025

NAMA       : Andri Heryandi

Nilai QUIZ : 70

Nilai UTS  : 80

Nilai UTAS : 90

Pengisian Data Mahasiswa Ke-2

NIM        : 10197024

NAMA       : Hery Dwi Yulianto

Nilai QUIZ : 12

Nilai UTS  : 56

Nilai UTAS : 90

Pengisian Data Mahasiswa Ke-3

NIM        : 10197001

NAMA       : Irmayanti

Nilai QUIZ : 80

Nilai UTS  : 90

Nilai UTAS : 100

 

Data yang telah dimasukan adalah :

———————————————————————–

|   NIM    |        NAMA          | QUIS | UTS | UAS |   N A  | INDEX |

————————————————————————-

| 10197025 | Andri Heryandi       |   70 |  80 |  90 |  83.00 |   A   |

| 10197024 | Hery Dwi Yulianto    |   12 |  56 |  90 |  64.20 |   B   |

| 10197001 | Irmayanti            |   80 |  90 | 100 |  93.00 |   A   |

      ———————————————————————–

 

About ILMUKAMU

Anak pengangguran yang akan menjadi sukses!!

Posted on November 28, 2011, in C++ and tagged . Bookmark the permalink. Tinggalkan komentar.

Komentarnya Brow...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: