Abstract Data Type ( ADT ) didefinisikan sebagai tempat penyimpanan data secara berkelompok yang mampu berisi berbagai tipe data baik homogen maupun heterogen.
ADT Homogen adalah Array, yang mampu menampung beberapa variabel yang memiliki tipe data yang sama.
ADT Heterogen adalah Struct, yaitu tipe data bentukan yang berisi kumpulan variabel dengan tipe data sama atau berbeda, struct juga dapat menyimpan variabel array dan struct (disebut juga nested struct, yang berarti struct dalam struct).
Contoh struct yang paling mudah adalah Struct Data Mahasiswa yang biasanya berisi elemen-elemen seperti :
Ø NIM, berupa char yang terdiri dari 10 digit angka
Ø Nama, berupa char
Ø Nilai TM, berupa integer
Ø Nilai UTP, berupa integer
Ø Nilai UAS, berupa integer
Ø IPK, berupa float
Cara pengaksesan struct
Operator dot (.) untuk mengakses member struct dg variable biasa / array
Operator arrow (->) untuk mengakses member struct dg variable pointer/ref
Typedef digunakan Untuk memberikan nama alias dari suatu tipe data.
Contoh coding menghitung nilai IPK Mahasiswa
#include "iostream.h"
#include "stdio.h"
#include "string.h"
struct Mtk
{ char kode[5];
char nMtk[20];
int sks;
int nilai;
int grade;
int bobot;
};
typedef struct Mahasiswa // contoh typedef
{ char nim[11];
char nama[25];
Mtk x[50]; // contoh nested struct
} Mhs;
void ini (int x) // function untuk mengkonversi nilai ke grade
{ char grade;
if((x>=85)&&(x<=100))
grade = 'A';
if((x>=75)&&(x<=84))
grade = 'B';
if((x>=65)&&(x<=74))
grade = 'C';
if((x>=50)&&(x<=64))
grade = 'D';
if((x<=49)&&(x>=0))
grade = 'E';
cout << "Grade = " << grade << endl;
}
int itu(int x) // function untuk mengkonversi nilai ke bobot
{ int bbt;
if(x>=85) bbt=4 ;
if((x>=75)&&(x<=84)) bbt=3;
if((x>=65)&&(x<=74)) bbt=2;
if((x>=50)&&(x<=64)) bbt=1;
if(x<=49) bbt=0;
return(bbt);
}
void main()
{
int bobot,ttl[10],i,jum;
float js=0, IPK=0;
{
Mhs data;
cout << "Nama : ";
cin >> data.nama;
cin.clear();
cin.sync();
cout << "NIM : ";
cin >> data.nim;
cin.clear();
cin.sync();
do{ cout << "Jumlah mata kuliah : ";
cin >> jum;
cin.clear();
cin.sync();
} while(jum<2||jum>10);
cout << endl;
for(i=0;i
{
cout << "Kode Mata Kuliah : ";
cin >> data.x[i].kode;
cin.clear();
cin.sync();
cout << "Nama Mata Kuliah : ";
cin >> data.x[i].nMtk;
cin.clear();
cin.sync();
cout << "Jumlah SKS : ";
cin >> data.x[i].sks;
cin.clear();
cin.sync();
cout << "Nilai : ";
cin >> data.x[i].nilai;
cin.clear();
cin.sync();
ini(data.x[i].nilai);
bobot = itu (data.x[i].nilai);
cout << "Bobot = " << bobot << endl;
ttl[i]=(data.x[i].sks*bobot);
IPK+=ttl[i];
js+=data.x[i].sks;
cout << endl;
}
cout.precision(2);
cout.setf(ios::fixed);
cout << "Nilai IPK = " << (IPK/js);
cin.clear();
cin.sync();
}
cin.get();
}