STRUKTUR/RECORD
PERTEMUAN 03
MATA KULIAH : STRUKTUR DATA
STRUKTUR/RECORD
Dalam database, data terdiri dari : field, record, dan file.
- Field : satuan terkecil dari data
- Record : kumpulan dari field
- File : kumpulan dari record
Dalam bahasa C, record disebut structure
Mendefinisikan record :
Yang ditulis dengan hurup tebal (struct, char, int) adalah kata kunci yang tidak boleh diganti
snilai, enilai : structure variable
NIM, Nama, Nilai : member
typenilai : structure tag
Struktur dari snilai maupun enilai dapat diilustrasikan sbb:
Contoh 1 :
#include<iostream.h>
typedef struct {
char NIM[10];
char nama[20];
int nilai;
}mhs;
mhs mahasiswa;
void main(void) {
//Menginput dari kb
cout<<"Masukan NIM : ";cin>>mahasiswa.NIM;
cout<<"Masukan Nama : ";cin>>mahasiswa.nama;
cout<<"Masukan Nilai : ";cin>>mahasiswa.nilai;
//Mencetak hasil inputan
cout<<"NIM : "<<mahasiswa.NIM<<endl;
cout<<"Nama : "<<mahasiswa.nama<<endl;
cout<<"Nilai : "<<mahasiswa.nilai<<endl;
}
Contoh 2:
#include<iostream.h>
void main(void)
{
typedef struct{
char FirstName[10];
char LastName[10];
}nametype;
typedef struct{
char street[30];
char city[20];
char state[15];
char zip[10];
}addrtype;
typedef struct{
nametype name;
addrtype address;
}Mhstype;
Mhstype Mahasiswa;
//Menginput dari kb
cout<<"Masukan Nama Depan : "; cin.getline(Mahasiswa.name.FirstName,10);
cout<<"Masukan Nama Keluarga : "; cin.getline(Mahasiswa.name.LastName,10);
cout<<"Masukan Alamat : "; cin.getline(Mahasiswa.address.street,30);
cout<<"Masukan Kota : "; cin.getline(Mahasiswa.address.city,20);
cout<<"Masukan Propinsi : "; cin.getline(Mahasiswa.address.state,15);
cout<<"Masukan Kode Pos : "; cin.getline(Mahasiswa.address.zip,10);
//Mencetak hasil inputan
cout<<endl;
cout<<Mahasiswa.name.FirstName<<" ";
cout<<Mahasiswa.name.LastName<<endl;
cout<<Mahasiswa.address.street<<endl;
cout<<Mahasiswa.address.city<<endl;
cout<<Mahasiswa.address.state<<endl;
cout<<Mahasiswa.address.zip<<endl;
}
Contoh 2 akan terbentuk struktur variabel yang dapat diilustrasikan sbb :
Contoh 3 :
#include<iostream.h>
#include<stdlib.h>
#define LEBAR_FN 30 //Lebar String Nama Depan
#define LEBAR_LN 30 //Lebar String Nama Belakang
#define LEBAR_CITY 30 //Lebar String City
#define LEBAR_STR 30 //Lebar String Street
#define LEBAR_STATE 15 //Lebar String State
#define LEBAR_ZIP 10 //Lebar String Zip
#define LEBAR_INCOME 10 //Lebar String Income
void main(void)
{
typedef struct{
char FirstName[LEBAR_FN];
char LastName[LEBAR_LN];
}strNama;
typedef struct{
char street[LEBAR_STR];
char city[LEBAR_CITY];
char state[LEBAR_STATE];
char zip[LEBAR_ZIP];
}strAlamat;
typedef struct{
strNama NamaKeluarga;
strAlamat AlamatKeluarga;
int Income;
}strKeluarga;
strKeluarga Keluarga[2];
char tmpIncome[LEBAR_INCOME];
/*******Menginput dari kb***************/
for(int i=0;i<=1;i++)
{
cout<<endl<<"Memasukan Data Keluarga ke-"<<i+1<<endl;
cout<<"Masukan Nama Depan : ";
cin.getline(Keluarga[i].NamaKeluarga.FirstName, LEBAR_FN)
cout<<"Masukan Nama Belakang : ";
cin.getline(Keluarga[i].NamaKeluarga.LastName, LEBAR_LN);
cout<<"Masukan Alamat : ";
cin.getline(Keluarga[i].AlamatKeluarga.street, LEBAR_STR);
cout<<"Masukan Kota : ";
cin.getline(Keluarga[i].AlamatKeluarga.city,LEBAR_CITY);
cout<<"Masukan Propinsi : ";
cin.getline(Keluarga[i].AlamatKeluarga.state, LEBAR_STATE);
cout<<"Masukan Kode Pos : ";
cin.getline(Keluarga[i].AlamatKeluarga.zip,LEBAR_ZIP);
cout<<"Masukan Penghasilan : ";
cin.getline(tmpIncome,LEBAR_INCOME);
Keluarga[i].Income=atoi(tmpIncome);
cout<<endl; }
/*************Mencetak hasil inputan***********/
cout<<endl;
for(i=0;i<=1;i++) {
cout<<"Keluarga ke-"<<i+1<<endl;
cout<<Keluarga[i].NamaKeluarga.FirstName<<" ";
cout<<Keluarga[i].NamaKeluarga.LastName<<endl;
cout<<Keluarga[i].AlamatKeluarga.street<<endl;
cout<<Keluarga[i].AlamatKeluarga.city<<endl;
cout<<Keluarga[i].AlamatKeluarga.state<<endl;
cout<<Keluarga[i].AlamatKeluarga.zip<<endl;
cout<<"Penghasilan = "<<Keluarga[i].Income<<endl;
}
}
Contoh 3 akan terbentuk struktur variabel yang dapat diilustrasikan sbb :
VARIABEL DINAMIS
Variabel dinamis : dapat disiapkan dan dihapus saat program sedang dijalankan.
Perhatikan program berikut :
Keterangan :
int *P : menyiapkan sebuah pointer P bertipe int
P = (int*)malloc(sizeof(int)) : menyiapkan suatu area bebas, tanpa nama, selebar sizeof(int), alamatnya dicatat dalam pointer P.
Untuk membebaskan area tersebut dapat digunakan instruksi : free(P)
Program diatas dapat diilustrasikan sbb :
Variabel struktur yang bersifat dinamis :
#include<iostream.h>
#include<stdlib.h>
void main(void) {
typedef struct{
int No;
int Nilai;
}strNode;
strNode *P;
P=(strNode*)malloc(sizeof(strNode));
P->No=25;
P->Nilai=87;
cout<<"No = "<<P->No<<endl;
cout<<"Nilai = "<<P->Nilai<<endl;
}
Program diatas dapat diilustrasikan sbb :
DAFTAR PUSTAKA
Buku
- Esakov, Jeffrey, Tom Weiss, Data Structures An Advanced Approach Using C, Prentice-Hall, Inc. 1989
- Hariyanto, Bambang, Struktur Data, Informatika Bandung, Pebruari 2000
- Kadir, Abdul, Pemrograman Dasar Turbo C, Andi Offset, Yogyakarta, 1991
- Kruse, Robert L. Data Structures & Program Design, Prentice-Hall, Inc. 1987
- Standish, Thomas A. Data Structures, Algorithms & Software Principles In C, Addison Wesley, 1995
Komentar
Posting Komentar