01 April, 2015

Memahami Struct pada Bahasa C

Memahami struct secara mendasar pada bahasa c, bagaimana cara mendeklarasikan, mendefenisikan nilai dari setiap elemen, menggunakan, mengakses elemen-elemen yang ada pada struct, dan kapan dan untuk apa menggunakan "struct" akan dibahas disini. Pada postingan ini juga, akan membahas bagaimana caranya mengirimkan struct ke sebuah fungsi sebagai parameter dari fungsi yang akan digunakan untuk sebuah keperluan tertentu. Dan topik terakhir yang akan dibahas pada postingan ini ialah bagaimana memperbaharui nilai dari setiap elemen yang dimiliki oleh struct, baik dengan menggunakan sebuah fungsi ataupun sebaliknya.

Pengenalan Struct Pada Bahasa C

Sesuai dengan penamaannya, pengertian struct secara ringkas dan sederhana ialah "sekumpulan data yang terstruktur". Data yang terstruktur seperti yang gimana? Untuk menjawab pertanyaan tersebut, mari mencoba menyimak ilustrasi berikut ini.

Setiap "manusia" memiliki nama yang digunakan untuk identitas pribadinya dalam kehidupan sehari-hari, manusia juga memiliki usia yang digunakan untuk mengetahui sudah berapa lama masa kelangsungan hidupnya di dunia, dan manusia juga memiliki jenis kelamin sebagai identitas pembeda terhadap sesama manusia secara biologis.
"Seseorang" adalah manusia.

Setiap "pegawai" memiliki NIP sebagai identitas personalitas yang digunakan untuk kebutuhan di lingkungan instansi. Setiap pegawai juga memiliki jabatan sebagai identitas kedudukan pegawai yang bersangkutan dengan jenis pekerjaan yang dilakukan di dalam suatu instansi.
"Seseorang" merupakan pegawai di suatu instansi.

Berdasarkan ilustrasi di atas, yang perlu diperhatikan bukanlah makna kesuluruhan kalimat yang disampaikan, tetapi yang terpenting ialah hubungan kata yang bercetak miring (dengan tanda petik) dengan kata yang ditandai dengan pemberian garis bawah (Bercetak tebal). Setiap kata yang diberi garis bawah, merupakan atribut-atribut yang dimiliki oleh "Manusia", "Pegawai", "Seseorang". Atribut-atribut inilah yang disebut dengan data dan keterkaitan yang erat diantara atribut-atribut dengan "Manusia" dan "Pegawai" inilah menjadikan kumpulan data tersebut terstruktur. Untuk sedikit lebih jelasnya lagi, akan diuraikan di bagian berikut ini.


Menggunakan Struct Pada Bahasa C

Kapan seharusnya penggunaan atau menggunakan struct dilakukan dan untuk apa digunakan? Oke, berdasarkan uraian diatas, dituliskan bahwa atribut-atribut merupakan sekumpulan data dan data tersebut memiliki hubungan yang erat terhadap "Manusia", "Pegawai". Untuk itu, ketika ingin menyimpan sesuatu hal yang memiliki sekumpulan data terkait didalamnya, saat itulah "struct" menjadi pilihan satu-satunya. Struct membebaskan pemrogram untuk menyimpan data yang kompleks, data yang disimpan tidak harus bertipe data yang sama dengan data lainnya.

Untuk mendeklarasikan sebuah struct, kita dapat memilih salah satu dari dua metode berikut ini.
Pendeklarasian struct yang pertama (bentuk umum)
struct structName { tipeData namaVariabel; };

Sedangkan untuk pendeklarasian cara yang kedua, kita dapat menggunakan fasilitas typedef untuk memberikan nama samaran (alias name) kepada struct yang ingin kita deklarasikan dan gunakan nantinya.
typedef struct { tipeData namaVariabel; }structName;
Jika dilihat dari kedua cara pendeklarasian diatas, hanya terdapat sedikit perbedaan saja, yaitu letak "nama" dari "struct" yang ingin digunakan. Perbedaan dari kedua cara pendeklarasian tersebut diatas akan lebih terlihat ketika melakukan perintah yang berhubungan dengan struct tersebut.
Oke, mari kita lihat langsung contoh dari penggunaan struct dengan bahasa c berikut ini sebagai implementasi dari penjelasan yang telah diuaraikan di atas.

Berdasarkan contoh kode program penggunaan "struct" pada bahasa c di atas, untuk dapat menggunakan data struct yang telah dideklarasikan, kita harus melakukan deklarasi lengkap di bagian fungsi "main" struct pegawai seseorang; . Ini merupakan cara pendeklarasian metode pertama atau cara pendeklarasian yang umum.
Untuk pendefenisian nilai terhadap elemen-elemen atau atribut-atribut dari sebuah struct, caranya sama seperti mendefenisikan elemen-elemen pada sebuah array (larik). Jika masih samar-samar, postingan mengenai array berikut dapat menyegarkan kembali ingatan mengenai array.

Mengakses Elemen pada Struct

Meskipun pendefenisian elemen pada "struct" itu sama seperti pendefenisian nilai pada array, namun untuk mengakses elemen pada struct, cara pengaksesan elemen pada array seseorang[0] tidak bisa dilakukan. Untuk dapat mengakses elemen pada struct, kita harus menggunakan notasi tanda "." (titik) diikuti dengan nama atribut yang ingin diakses (seperti yang terlihat pada contoh kode program diatas). Jika Anda sudah pernah mempelajari materi "Objek" pada JavaScript, Java, maka notasi seperti tentu tidak akan terlihat asing lagi.

Mengirimkan Struct ke Fungsi

Ketika kita memiliki sebuah fungsi untuk menampilkan data dan kita tidak menggunakan struct dalam hal ini, maka fungsi yang harus kita deklarasikan adalah seperti berikut ini
void tampilData(char nama[], int usia, char jabatan[], char nip[]) { //your code here... } Bagaimana jika data kita lebih banyak lagi? Tentunya parameter fungsi kita pun akan semakin banyak. Oke, lalu bagaimana dengan struct? Bagaimana melewatkan struct ke sebuah fungsi? Caranya seperti berikut ini
void tampilData(struct pegawai person) { //your code here... } Sederhananya, kita cukup memberikan sebuah "struct" yang ingin dijadikan sebagai paramater dari sebuah fungsi untuk diproses oleh si fungsi tersebut.

Memperbaharui Nilai Elemen pada Struct

Sejauh ini, kita sudah mengetahui apa itu struct, bagaimana dan untuk apa "struct" itu digunakan, bagaimana cara mendeklarasikan dan pendefenisian setiap elemennya, dan bagaimana cara melemparkan struct menjadi paramater fungsi. Pada topik yang terakhir ini, kita akan melihat bagaiamna caranya memperbaharui nilai dari elemen-elemen pada sebuah struct.

Masih ingat dengan topik bagaimana bahasa c memperlakukan parameter dari sebuah fungsi? Pada dasarnya, bahasa C memperlakukan parameter-parameter sebuah fungsi itu sebagai variabel otomatis yang hanya menyimpan salinan nilai dari variabel yang kita kirimkan ke fungsi tersebut. Postingan ini mungkin dapat menyegarkan pengetahuan kita kembali Fungsi pass by value. Oleh karena sifat tersebut, maka kita harus memberikan alamat keberadaan si struct di dalam memori kepada si fungsi yang ingin kita gunakan, agar si fungsi dapat mengetahui dimana elemen itu berada dan si fungsi dapat merubah nilai dari elemen tersebut. Postingan mengenai fungsi pass by reference mungkin dapat menyegarkan pengetahuan kita juga dalam mendukung pemahaman pada topik ini.

Berikut ini merupakan contoh kode program bahasa c dalam memperbaharui nilai dari elemen-elemen pada sebuah struct.

Pada contoh kode program bahasa c di atas, penulis memanfaatkan fasilitas typedef untuk memberikan nama samaran ("alias name") untuk tiap struct yang dideklarasikan. Dengan cara ini tentunya lebih mudah digunakan dan lebih gampang untuk dibaca oleh pengembang siapa saja. Kita tidak perlu khawatir terhadap proses kompilasi, karena "compiler" cukup pintar untuk mengetahui data apa yang kita berikan.

Coba perhatikan potongan kode items->bahanBakar dan (*items).bahanBakar pada contoh kode program di atas. Kedua cara ini merupakan cara yang dilakukan ketika ingin mengakses elemen yang dimiliki oleh struct, dengan catatan, sebuah struct yang dikirimkan ke fungsi adalah "alamat" dari sebuah variabel struct dan parameter fungsi "harus" merupakan pointer (karena kita akan berinteraksi dengan alamat memori). Untuk menyegarkan kembali pengetahuan mengenai pointer, postingan berikut ini mungkin dapat membantu kita dasar pointer dan aritmatika pointer.

Untuk hasil eksekusi kode program pada postingan ini, dapat dilihat pada screenshot berikut ini.
Memahami struct bahasa C - kodeprogramcpp

Penutup

Demikianlah untuk postingan kali ini. Jika terdapat kekurangan dan tutur kata yang kurang baik, mohon dimaafkan dan jika tidak keberatan mohon menuliskan satu dua kata mengenai postingan ini, baik kritik atau saran agar kedepannya dapat membantu penulis dalam meningkatkan mutu postingan dan pembahasan tentunya. Terima kasih. :)

10 comments:

  1. jika ingin belajar dari awal, klik link ini :

    http://pradsource.blogspot.co.id/2017/04/tutorial-bahasa-c-1-input-dari-keyboard.html

    ReplyDelete
  2. Terima kasih.....
    Koding saudara sangat jelas....

    ReplyDelete
    Replies
    1. Terima kasih juga atas kunjungan dan komentarnya.
      Senang bisa membantu. :)

      Delete
  3. mantab <a href="https://codeprogramcpp.blogspot.co.id/>codeprogramcpp<a/>

    ReplyDelete
  4. Buat modul profilmahasiswa yang berisikan:
    i. Definisi tipe data mahasiswa dengan memakai struct dengan data sbb:
    ▪ String namaLengkap
    ▪ String alamatRumah
    ▪ String asalSekolah
    ▪ int tahunLulus
    ▪ int tahunLahir
    Note: definisi harus di berkas header.
    ii. Fungsi Mahasiswa mintaMasukan() untuk meminta data satu profil
    iii. Fungs void tampilkan(Mahasiswa) untuk menampilkan data yang
    diberikan
    iv. Uji modul ini dengan membuat program ujiprofilmahasiswa.c yang
    meminta data 3 mahasiswa dan tampilkan.

    ReplyDelete
  5. Buat modul profilmahasiswa yang berisikan:
    i. Definisi tipe data mahasiswa dengan memakai struct dengan data sbb:
    ▪ String namaLengkap
    ▪ String alamatRumah
    ▪ String asalSekolah
    ▪ int tahunLulus
    ▪ int tahunLahir
    Note: definisi harus di berkas header.
    ii. Fungsi Mahasiswa mintaMasukan() untuk meminta data satu profil
    iii. Fungs void tampilkan(Mahasiswa) untuk menampilkan data yang
    diberikan
    iv. Uji modul ini dengan membuat program ujiprofilmahasiswa.c yang
    meminta data 3 mahasiswa dan tampilkan.

    ReplyDelete

Berikan komentar, Kritik dan saran teman-teman mengenai blog ini. Komentar, Kritik dan saran teman-teman sangat berarti untuk perkembangan Blog ini.
Salam Blogger, salam kodeprogramcpp.

Lihat Juga Berita Pilihan Ini