Berlangganan

About Me


STRUCT

STRUCT

(Struktur)

14

Tujuan Instruksi Umum (TIU):

Mampu memahami konsep struktur data struct sehingga dapat menerapkannya pemeahan masalah yang lebih kompleks

Tujuan Instruksi Khusus (TIK):

• Memahami pengertian dan penggunaan struct dalam pemrograman. • Mangetahui penggunaan struct dalam pemrograman struktur data

Pembahasan Materi:

• Pendeklarasian struktur

• Mengakses elemen dari struktur • Struktur Bertingkat

• Menggunakan struct dalam fungsi • Pointer to structure

Suatu struktur ( structure ) adalah pengelompokkan dari variabel-variabel yang berada dalam satu nama yang sama. Suatu struktur dapat terdiri dari kumpulan variabel-variabel yang berbeda tipenya dalam satu nama tetapi berkaitan. Misalnya data mengenai nama, nopeg, jabatan, gaji seorang pegawai. Keempat data tersebut mempunyai tipe data yang berbeda tetapi masih berhubungan yaitu data pegawai.

Variabel-variabel yang membentuk suatu struktur ini selanjutnya disebut dengan elemen atau anggota struktur. Dengan demikian suatu struktur dimungkinkan dapat berisi dengan elemen-elemen data bertipe int, float, char dan lainnya.

Dengan menggunakan struktur maka data ini dapat diolah per elemen ( field ) atau secara keseluruha (per

struktur, per- record ).

14.1 Pendeklarasian Struktur

Suatu
 struktur
 dideklarasikan
 dengan
 menggunakan
 reserved
 word
 struct .
 Bentuk
 umum

pendeklarasian sebuah struktur adalah sebagai berikut:

struct nama_tipe_struktur {

tipe_data identifier; ......

identifier_n;

}nama_variabel_struktur;

116

-----------------------------------------------------Page 1-----------------------------------------------------

Contoh:
 struct barang

{
 char kode[5];

char nama[25]; int banyak; float harga;

};

Struktur barang mempunyai empat buah anggota, yaitu kode [5] dengan tipe data char , nama [25] dengan tipe data char , unit dengan tipe data int dan harga dengan tipe data float . Barang merupakan nama dari tipe data struktur, bukan nama dari variabel struktur.

Variabel struktur dapat dideklarasikan dengan nama tipe data barang , yang diawali dengan kata kunci

struct seperti berikut ini:

struct barang barang_masuk, barang_keluar;

Dengan demikian, barang_masuk dan barang_keluar merupakan variabel-variabel yang mempunyai tipe data barang.

Cara lain untuk mendeklarasikan variabel-variabel data struktur adalah dengan menggabungkan kedua

deklarasi yang terpisah menjadi sebuah deklarasi sebagai berikut:

struct barang

{
 char kode[5];

char nama[25]; int banyak; float harga;

}barang_masuk, barang_keluar;

14.2 Mengakses Elemen-elemen Struktur

Elemen-elemen dari suatu varaibel struktur dapat diakses secara individual dengan menyebutkan nama variabel strukturnya diikuti dengan operator titik (.) dan nama dari elemen strukturnya. Contoh pengaksesan elemen struktur dapat dilihat pada listing program 14.1.

Listing Program 14.1 Akses Elemen Struktur

#include <stdio.h> #include<stdlib.h>

struct koord{ int x, y ; };

void main()

{ struct koord A, B;

printf("A(x, y)? "); scanf("%d %d", &A.x, &A.y); //akses elemen x dan y dari A printf("B(x, y)? "); scanf("%d %d", &B.x, &B.y); //akses elemen x dan y dari B

printf("\nKoordinat selisih Titik A dan B: "); printf("(%d, %d)", abs(A.x-B.x), abs(A.y-B.y));

}

117

-----------------------------------------------------Page 2-----------------------------------------------------

Hasil Running:

A(x, y)? 13 22

B(x, y)? 34 32

Koordinat selisih Titik A dan B: (21, 10)

14.3 Struktur Bertingkat

Struktur dapat dideklarasikan secara bertingkat, maksudnya salah satu elemen suatu struktur merupakan sebuah struktur juga. Manipulasi elemen seperti ini memerlukan dua buah operator titik . Jika suatu elemen dari struktur dapat diakses dengan sebagai berikut:

nama_variabel.nama_elemen;

Maka sub-elemen dari struktur dapat diakses dengan menuliskan berikut:

nama_variabel.nama_elemen.nama_sub_elemen;

untuk lebih jelasanya dapat dilihat pada listing program 14.2 di bawah ini.

Listing Program 14.2 Struktur Bertingkat

#include<stdio.h>

void main() {

struct tanggal{

unsigned int hari; unsigned int bulan; unsigned int tahun;

};

struct alamat{ char jalan[30]; char kota[20];

};

struct{

char nama[40];

struct tanggal tgl_masuk; struct alamat rumah; float gaji;

}pegawai={"Nana Sutrisna", 16, 12, 1985,

"Joglo Raya No.52", "Jakarta Barat", 2500000};

printf("Nama Pegawai = %s", pegawai.nama);

printf("\nTanggal masuk = %d-%d-%d", pegawai.tgl_masuk.hari,

pegawai.tgl_masuk, pegawai.tgl_masuk.tahun);

printf("\nAlamat rumah = Jalan %s, %s", pegawai.rumah.jalan,

pegawai.rumah.kota);

printf("\nGaji Pokok = %5.2f", pegawai.gaji);

}

118

-----------------------------------------------------Page 3-----------------------------------------------------

Hasil Running:

Nama Pegawai
 = Nana Sutrisna

Tanggal masuk = 16-12-1985

Alamat rumah

Gaji Pokok

= Jalan Joglo Raya No.52, Jakarta Barat

= 2500000.00

14.4 Pointer To Structure

Sebagaimana pointer dapat mengacu ke alamat data tunggal dan jamak, maka pointer juga dapat mengacu ke struktur. Pengaksesan elemen suatu struktur melalui pointer yang mengacu ke struktur ini dapat dilakukan dengan menggunakan indirection operator * dan inderect membership operator ->

Listing Program 14.3 Pointer to Structure

#include<stdio.h>

struct s_ujian{

char nim[10];

char mt_kul[20]; float nilai;

};

void main(){

struct s_ujian ujian, *p_ujian; p_ujian= &ujian;

printf("Masukkan NIM : "); scanf("%s",&(*p_ujian).nim); flushall();

printf("Masukkan Mt. Kuliah : "); gets(p_ujian->mt_kul); printf("Masukkan Nilai : "); scanf("%f", &(*p_ujian).nilai);

printf("\nNilai Mahasiswa: \n");

printf("%s %s %2.1f", ujian.nim, p_ujian->mt_kul, p_ujian->nilai);

}

Hasil Running:

Masukkan NIM : 50496434

Masukkan Mt. Kuliah : Aljabar Linear Masukkan Nilai : 78

Nilai Mahasiswa:

50496434 Aljabar Linear
 78

119

-----------------------------------------------------Page 4-----------------------------------------------------

14.5 Menggunakan struct dalam fungsi

Struktur dapat dikirim ke fungsi sebagai parameter. Bila struktur ini hanya merupakan data masukan maka dapat dikirim dengan pendekatan pengiriman parameter secara nilai ( call by value ). Apabila struktur yang dikirim ke fungsi akan mengalami perubahan nilai maka pengiriman parameter harus secara acuan ( call by reference ) dengan mengirimkan pointer ke struktur (menggunakan pointer to structure ). Struktur juga dapat menjadi tipe data untuk nilai balik dari sebuah fungsi.

Listing Program 14.4 Struktur dalam Fungsi

#include<stdio.h> #include<math.h>

struct koord{ int x, y ; };

struct koord data_koord(char label) //definisi fungsi {

struct koord A;

printf("\nTitik %c : \n", label);

printf("Posisi x dan y? "); scanf("%d %d", &A.x, &A.y); return A;

}

float hitung_jarak(struct koord t1, struct koord t2) {

float jarak;

jarak= sqrt(pow((t1.x-t2.x),2) + pow((t1.y-t2.y),2)); return jarak;

}

void main()

{ struct koord tA, tB; float jarak;

tA= data_koord('A'); tB= data_koord('B');

jarak= hitung_jarak(tA, tB);

printf("\nKoordinat jarak Titik A dan B: %.2f unit ", jarak);

}

Hasil Running:

Titik A :

Posisi x dan y? 23 34

Titik B :

Posisi x dan y? 12 -5

Koordinat jarak Titik A dan B: 40.52 unit

120

-----------------------------------------------------Page 5-----------------------------------------------------

Latihan:

1. Apakah perbedaan struktur dengan array? 2. Apakah elemen struktur dapat berupa array?

3. Apakah struktur dapat menjadi elemen dari sebuah array?

4. Dapatkah sebuah struktur mempunyai elemen sebuah struktur juga? Bagaimana cara mengaksesnya? 5. Apakah sebuah pointer dapat menunjuk alamat dari sebuah struktur? Operator apakah yang harus digunakan?

Tugas Mandiri:

Tulislah program untuk menampilkan sejumlah data pegawai yang terdiri dari Nomor pegawai, nama pegawai, alamat, jabatan, gaji dan jenis kelamin. Banyaknya jumlah pegawai ditentukan oleh pengguna.

==============

Referensi:

Cheltenham Computer Training, C Programming , www.cctglobal.com , United Kingdom, 1997

Deitel & Deitel, C How to Program 3rd Edition , Prentice Hall, New Jersey, 2001

Jogiyanto, Konsep Dasar Pemrograman Bahasa C , Andi Offset, Yogyakarta, 1993

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C , Salemba Teknika, Jakarta, 2004

☺☺☺

121

-----------------------------------------------------Page 6-----------------------------------------------------

0 Response to "STRUCT"

Post a Comment