elemennya boleh mempunyai tipe data yang berbeda. Record lebih kompleks daripada array karena record merupakan kumpulan beberapa variabel dengan tipe data yang berbeda. Berbeda dengan array yang tiap elemennya ditandai dengan nomer indeks maka record ditandai dengan nama variabel anggotanya.
anggota setelah menyebutkan nama record yang akan diakses. Di antara nama record dan nama variabel anggota dipisahkan tanda titik (.).
Deklarasi Record
Bentuk umum pendeklarasian record seperti di bawah ini:
Type nama_record = record Field1 : tipe_data1 ; Field2 : tipe_data2 ; Field_n : tipe_data_n ; End; Var nama_variabel : nama_record;
Pendeklarasian record selalu diawali oleh nama record, tanda sama dengan (=) dan kata baku record serta diakhiri oleh kata baku end. Field-field dari record tersebut diletakkan diantara kata baku record dan end.
Jika di dalam suatu record terdapat field-field yang bertipe sama dapat dideklarasikan bersamaan dengan dipisahkan oleh tanda (,) sehingga anda tidak perlu menuliskan tipe datanya berulang-ulang. Perhatikan contoh di bawah ini! Type Volumebalok = record Panjang, Lebar, Tinggi : byte ; End;
Implementasi Record
Program Biodata_Mahasiswa; Uses crt; Type Mahasiswa = record NIM : string[10]; Nama : string[20]; Alamat : string[30]; Nilai : real; End; Var Mhs : Mahasiswa;
Struct Nama_Struct
{ Tipe_data1 field1; Tipe_data2 field2 } Main () { Pendeklarasian Struct dengan nama variabel yang berbeda
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.NilaiUA S; 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(); }
LATIHAN 1. Buat struct/record untuk data buku yang berisi tentang : kode buku, nama buku, tahun terbit, pengarang, dan harga. Gunakan struct / record. 2. Cari 2 contoh kasus lain disekitar anda yang dapat menggunakan struct, selain KTP, KTM, SIM, buku.
tipe bentukan berupa array dimana setiap elemennya berisi record TSiswa. Selanjutnya tipe tersebut digunakan untuk mendeklarasikan variable A. Dengan demikian, variabel A itu akan dapat menampung 100 buah record yang berisi TSiswa. Berikut ini contoh program lengkap yang akan menunjukkan implementasi dari array yang di dalamnya berisi record.
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; }