Rabu, 18 Januari 2012

STRUKTUR

11.1. Tujuan Pembahasan Materi
1.    Menjelaskan cara mendeklarasikan struktur.
2.    Menjelaskan cara menginisialisasi struktur.
3.    Menjelaskan cara mengakses elemen stuktur.
4.    Menjelaskan pembentukan array dari strukrur.
5.    Menjelaskan hubungan antara fungsi dan struktur.
11.2. Pokok Pembahasan
    Struktur merupakan pengelompokan dari varibel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array, struktur dapat terdiri atas variable-variabel yang berbeda tipenya dalam satu nama struktur. Struktur biasa digunakan  untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan (dalam bahasa PASCAL, struktur disebut dengan record).
    Struktur memiliki variable-variabel dalam pembentukannya, selanjutnya disebut sebagai elemen dari struktur atau field. Dengan demikian, dimungkinkan suatu struktur dapat berisi elemen data berbeda tipe seperti char, int, float, double,  dan lain-lain.
11.3. Dasar Teori
    Structure (struktur) adalah kumpulan elemen-elemen data yang digabungkan menjadi satu kesatuan. Masing-masing elemen data tersebut dikenal dengan sebutan field. Field data tersebut dapat memiliki tipe data yang sama ataupun berbeda. Walaupun fieldfield tersebut berada dalam satu kesatuan, masing-masing field tersebut tetap dapat diakses secara individual.
 Field-field tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam operasinya. Misalnya Anda ingin mencatat data-data mahasiswa dan pelajar dalam sebuah program, Untuk membedakannya Anda dapat membuat sebuah record mahasiswa yang terdiri dari field nim, nama, alamat dan ipk serta sebuah record pelajar yang terdiri dari field-field nama, nonurut, alamat dan jumnilai. Dengan demikian akan lebih mudah untuk membedakan keduanya.
Bentuk umum:
Struct nama struct
{
nama field1
nama field1
nama field1
};   
Contoh :
Struct mahasiswa
{
Char nim [30];
Char nama [25];
Char alamat [50];
};
11.3.1. Mendefinisikan variabel struktur
Apabila suatu struktur telah dideklarasikan, struktur ini dapat digunakan untuk mendefinisikan suatu variabel. Misalnya,
data_tanggal tanggal_lahir;
Merupakan pendefinisian variabel struktur bertipe struktur tanggal lahir. Dengan adanya pendefinisian ini, tanggal_lahir memiliki tiga buah anggota yaitu :
Tahun
bulan
tanggal
11.3.2. Struktur di dalam struktur
Suatu struktur juga bisa mengandung struktur yang lain. Sebagai gambaran ditunjukkan di bawah ini.
struct data_pegawai
{
int nip;
char nama[25];
data_tanggal tanggal_lahir;
} rec_peg;
11.3.3. Mengakses Anggota Struktur
Anggota struktur diakses dengan menggunakan bentuk :
variabel_struktur.nama_anggota
Tanda titik diberikan diantara nama variabel struktur dan nama anggota. Misalnya:
tanggal_lahir.tanggal = 1;
merupakan pernyataan penugasan untuk memberikan nilai1 ke anggota tanggal pada variabel struktur tanggal_lahir. Bagaimana halnya untuk mengakses anggota bernama bulan pada variabel struktur rec_peg seperti pada contoh di depan ?
Misalnya
rec_peg.tanggal_lahir.bulan = 9;
Merupakan contoh untuk memberikan nilai terhadap anggota bulan pada variabel struktur rec_peg.
Contoh program :
//Program pendeklarasian, pendefinisian dan
//pengaksesan struktur
//Nama File struk1.cpp
#include
#include
void main()
{
struct data_tanggal //pendeklarasian
{
int tahun;
int bulan;
int tanggal;
};
data_tanggal tanggal_lahir; //pendefinisian struktur
//pengaksesan anggota struktur
tanggal_lahir.tanggal = 1;
tanggal_lahir.bulan = 9;
tanggal_lahir.tahun = 1964;
cout<<<}

11.3.4. Penugasan struktur
Pemberian nilai terhadap suatu struktur dapat dilakukan dengan bentuk :
var1 = var2;
Sepanjang kedua variabel adalah variabel struktur bertipe sama. Misalnya terdapat
pendefinisian :
data_tanggal tgl1 tgl2;
Penugasan seperti berikut :
tgl2 = tgl1;
Diperkenankan. Dalam hal ini, seluruh anggota pada variabel tgl2 diisi dengan anggota terkait yang ada pada tgl1. Pernyataan di atas merupakan penyederhanaan dari tiga pernyataan berikut :
tgl2.bulan = tgl1.bulan;
tgl2.tahun = tgl1.tahun;
tgl2.tanggal = tgl1.tanggal;
Contoh program :
//Program penugasan struktur
//Nama File Struk2.cpp
#include
#include
void main()
{
struct data_tanggal //pendeklarasian
{
int tahun;
int bulan;
int tanggal;
};
data_tanggal tgl1, tgl2; //pendefinisian struktur
//penugasan per anggota
tgl1.tanggal = 1;
tgl1.bulan = 9;
tgl1.tahun = 1964;
//penugasan antarvariabel struktur
tgl2 = tgl1;
cout<<<}
11.3.5. Array dan Struktur
    Elemen-elemen dari suatu array juga dapat berbentuk sebuah struktur. Misalnya array yang dipakai untuk menyimpan sejumlah data siswa (struct student). Array struktur berdimensi satu ini membentuk suatu table, dengan barisnya menunjukkan elemen dari array-nya dan kolomnya menunjukkan elemen dari struktur. Dalam hal ini maka deklarasi yang dibutuhkan adalah sebagai berikut :
#define MAKS 20
-
-
-
struct date {        /*definisi dari tipe data/*
Int month;
Int day;
Int year;
};
Struct person {        /* definisi dari tipe person/*
Char name [30];
Struct date birthday ;
};
/* deklarasi dari variable array student/*
Struct person student [MAKS];
Yang artinya, mendeklarasikan array student yang memiliki elemen yang bertipe struct person sebanyak MAKS. 
    Disamping cara pendeklarasian diatas, struktur juga dapat dideklarasikan dalam erbagai bentuk yang lain, diantaranya sebagai berikut :
Struct date {
    Int month, day, year; } today, tomorrow;
struct person {
    char name [30];
    struct date birthday ;
} student [MAKS};
Yaitu mendefinisikan struktur date, sekaligus mendeklarasikan variable today dan tomorrow dengan tipe struktur date. Demikian juga mendifinisikan struktur person, sekaligus mendeklarasikan variable array student sebanyak MAKS elemen dengan tipe struktur person. Atau cara lainnya mendefinisikan, mendeklarasikan sekaliggus menginisialisasi struktur, sebagai berikut :
Struct date {
    Int month, day, year;
} today = { 15,14,2001}.

11.3.6. Struktur dan Fungsi
    Melewatkan sebuah struktur untuk menjadi parameter sebuah fungsi dapat dilakukan sama dengan pengiriman parameter berupa variable biasa. Fungsi yang mendapat kiriman parameter tersebut juga bisa mengirimkan hasil baliknya yang juga berupa sebuah struktur (pass by reference).

11.3.6.1. Melewatkan Elemen Struktur ke dalam Fungsi
    Melewatkan parameter berupa sebuah elemen struktur dapat dilakukan sebagaimana pengirimannparameter berupa variable biasa, dapat dilakukan baik secara nilai (pass by value) maupun secara acuan (pass by reference).
    Apabila nilai suatu elemen struktur diharapkan akan diuah oleh fungsi, maka yang dilewatkan haruslah berupa alamat dari elemen struktur (pass by reference). Untuk keperluan ini, operator alamat ditempatkan didepan nama variable (bukan di depan nama elemen struktur).


11.3.6.2. Melewatkan Struktur kedalam Fungsi
    Pada program cetak1.c diatas misalnya, semua elemen dari struktur  dikirimkan ke fungsi cetak_tanggal(), dengan maksud nilai elemen dari struktur akan ditampilkan dilayar. Untuk keadaan seperti ini, lebih baik kalau parameter fungsi diubah menjadi bentuk struktur, sehingga parameter fungsi tidak lagi sebanyak tiga buah, melainkan hanya satu.
11.3.7. Struktur dan Pointer (Pointer ke Struktur)
    Jika sebuah struktur mengandung banyak field dan diputuskan bahwa keseluruhan field-nya akan diubah oleh fungsi, maka cara yang efisien adalah dengan melewatkan (passing) alamat dari struktur. Dengan demikian pada pendefinisian fungsi, parameter formalnya berupa pointer yang menunjuk ke pointer.
    Masalah pointer ke struktur dapat diterapkan dalam program posisil.c. argument dari fungsi tukar_xy() dapat disederhanakan menjadi satu argument saja, yakni sebagai berikut :
Void tukar_xy(struct koordinat pos_xy)
{
    Int z;
    z = (*pos_xy). x;
    (*pos_xy). x = (*pos_xy). y;
    (*pos_xy). y = z;
}
Pada definisi fungsi diatas,
    Struct koordinat *pos_xy
Menyatakan bahwa pos_xy adalah pointer yang menunjuk ke obyek bertipe struktur koordinat.
Adapun penulisan :
    (*pos_xy). x;
Menyatakan : elemen bernama x yang ditunjuk oleh pointer pos_xy.
    Perlu diperhatikan bahwa penulisan tanda kurung seperti pada contoh (*pos_xy). x merupakan suatu keharusan. Sebab
    *pos_xy. x;
Mempunyai makna yang berbeda dari :
    (*pos_xy). x;
Ungkapan *pos_xy.x mempunyai makna yaitu “yang ditunjuk oleh *pos_xy.x” (sebab operator titik mempunyi prioritas yang lebih tinggi daripada operato*).
11.4. Percobaan Praktikum
11.4.1. Contoh Program Pemakaian String
 




Out Put :




Tidak ada komentar:

Posting Komentar

Komentar Anda sangat berguna untuk Saya ?!!