Apa yang dimaksud dengan Struct..??
Sebelum lanjut ke pembahasan mengenai Struct, kita sedikit ulas kembali mengenai tipe data.
Didalam bahasa C, Tipe data dibagi menjadi dua macam, yaitu:
- Tipe data standar (standard data type)
- Tipe data yang didefinisikan oleh user (user defined data type)
Tipe data standar merupakan tipe data yang telah didefinisan oleh kompiler / bahasa pemrograman itu sendiri.
Contoh tipe data standar yang sudah sering kita gunakan yaitu, seperti: int
, float
, char
, double
.
Sedangkan, tipe data buatan (user defined data type) merupakan tipe data yang didefinisikan sendiri oleh user sesuai dengan kebutuhan program yang akan dibuat.
Contoh tipe data buatan yang akan kita pelajari pada materi kali ini yaitu struct
.
Struct atau Struktur merupakan tipe data didalam bahasa C yang berisi elemen (field) dari berbagai macam tipe data.
Jika didalam tipe data Array, elemen-elemennya berasal dari satu tipe data yang sama. Sedangkan didalam tipe data struct ini, elemen-elemennya berasal dari beragam tipe data.
Elemen-elemen yang dimaksud didalam Struct ini, merupakan sebuah variabel.
Berikut merupakan pendefinisian tipe data struct
didalam program.
struct student{ char nama[20]; // field I int NRP; // field II char jurusan[20]; // field III };
Dari pendefinisian diatas, dapat kita ketahui karakteristik Struct sebagai berikut:
- Terdiri atas sekumpulan variabel penyusun, atau biasa disebut sebagai field.
- Tipe data dari masing-masing field boleh berbeda.
- Tipe data yang digunakan oleh tiap-tiap field merupakan tipe data standar (
int
,float
,char
, dll.) ataupun tipe data yang didefinisikan oleh user, Misal:struct
. - Elemen-elemen (field) yang ada didalamnya, ditulis diatara tanda kurung kurawal
{ }
.
Struktur / struct didefinisikan dengan kata kunci / key struct
.
Selanjutnya diikuti nama tipenya.
Pada Contoh diatas, struct student
merupakan tipe data.
Jika kalian mengira bahwa struct
merupakan tipe data, dan student
merupakan nama variabel, Kalian salah besar!.
struct
merupakan key / kata kunci untuk membuat tipe data.
Sedangkan student
merupakan tipe datanya.
Yang perlu kalian ingat-ingat bahwa, pada materi kali ini kita sedang membuat tipe data buatan.
Deklarasi Struct
Setelah kita berhasil membuat tipe datanya, saatnya kita untuk mendeklarasikan variabel yang akan digunakan.
Berikut merupakan pendeklarasian variabel yang bertipe struct student
.
#include <stdio.h>
struct student{ char nama[20]; int NRP; char jurusan[20]; }; int main(){ struct student mahasiswa; // Deklarasi variabel mahasiswa yang bertipe struct student return 0; }
Pada contoh diatas, variabel mahasiswa
bertipe struct student
.
Jika masih bingung, perhatikan contoh berikut:
int usia; // Var usia bertipe int char gender; // Var gneder bertipe char char nama[20]; // Var nama[] bertipe Array of char struct student mahasiswa; // Var mahasiswa bertipe struct student
Contoh diatas merupakan nama variabel dengan tipe datanya masing-masing.
Selain cara deklarasi seperti contoh diatas, variabel struct
juga dapat dideklarasikan sebagai berikut.
struct student{ char nama[20]; int NRP; char jurusan[20]; } mahasiswa; // Pendeklarasian secara langsung
Setelah tanda tutup kurung kurawal, disitu kita bisa menuliskan nama variabelnya.
Selain cara deklarasi seperti contoh diatas, kita juga dapat menginisialisasikan langsung nilai variabel data struct
seperti contoh diatas.
Perhatikan program berikut.
#include <stdio.h>
struct student{ char nama[20]; int NRP; char jurusan[20]; }; int main(){ struct student mahasiswa = {"Ahmad", 3122334455, "Informatika"}; return 0; }
Pada saat menginisialisasikan data bertipe struct
, nilai-nilai yang diinputkan harus berurutan sesuai field yang telah didefinisikan tadi.
Mengakses Elemen Struct
Setelah kita berhasil menginisialisasikan data struct
, Agar kita dapat menampilkan hasilnya kelayar, maka kita harus bisa mengakses elemen-elemen dari data struct
tersebut.
Elemen-elemen didalam struct
dapat kita akses dengan menyebutkan nama variabel diikuti tanda titik (.
) beserta nama field-nya.
Perhatikan program berikut.
#include <stdio.h>
struct student{ char nama[20]; int NRP; char jurusan[20]; }; int main(){ struct student mahasiswa = {"Ahmad", 3122334455, "Informatika"}; printf("Nama : %s\n", mahasiswa. nama); printf("NRP : %d\n", mahasiswa. NRP); printf("Jurusan : %s\n", mahasiswa. jurusan); return 0; }
Maka akan menghasilkan output.
Metode diatas sama halnya pada saat kita ingin mengambil data berdasarkan Inputan dari User.
Perhatikan program berikut.
#include <stdio.h>
struct student{ char nama[20]; int NRP; char jurusan[20]; }; int main(){ struct student mahasiswa; printf("Masukkan nama Anda : "); gets(mahasiswa.nama); fflush(stdin); printf("Masukkan NRP Anda : "); scanf("%d", &mahasiswa.NRP); fflush(stdin); printf("Masukkan Jurusan Anda : "); gets(mahasiswa.jurusan); printf("Nama : %s\n", mahasiswa. nama); printf("NRP : %d\n", mahasiswa. NRP); printf("Jurusan : %s\n", mahasiswa. jurusan); return 0; }
Pada program diatas, kita ingin menginputkan nilai-nilai tiap elemen (field) dari variabel mahasiswa
.
Caranya sama yaitu dengan memanggil nama variabel diikuti nama field-nya.
Maka akan menghasilkan output.
Itu tadi contoh input data untuk satu Mahasiswa.
Lalu, bagaimana jika kita ingin menginputkan data sebanyak 50 mahasiswa..??
Apakah kita harus menuliskan hal yang sama sebanyak 50 kali.. 😁.
Kita dapat menggunakan metode perulangan, yang dimana tiap variabel mahasiswa
disimpan didalam Indeks Array.
Perhatikan program berikut.
#include <stdio.h>
struct student{ char nama[20]; int NRP; char jurusan[20]; }; int main(){ struct student mahasiswa[3]; printf("=========INPUT DATA MAHASISWA========="); for(int i= 0; i< 3; i++){ printf("Masukkan nama Anda : "); gets(mahasiswa[i]. nama); fflush(stdin); printf("Masukkan NRP Anda : "); scanf("%d", &mahasiswa[i]. NRP); fflush(stdin); printf("Masukkan Jurusan Anda : "); gets(mahasiswa[i]. jurusan); printf("\n"); } printf("=========OUTPUT DATA MAHASISWA========="); for(int j= 0; j< 3; j++){ printf("Nama : %s\n", mahasiswa[j]. nama); printf("NRP : %d\n", mahasiswa[j]. NRP); printf("Jurusan : %s\n", mahasiswa[j]. jurusan); printf("\n"); } return 0; }
Pada program diatas, struct student mahasiswa[3];
merupakan cara kita mendeklarasikan variabel mahasiswa
yang bertipe Array of struct student.
Jika didalam materi Array, kita mengenal tipe data seperti Array of int, Array of char, Array of float, dsb.
Maka didalam materi struct
ini, variabel Array-nya akan bertipe Array of struct mahasiswa ...Sebagai contoh.
Selanjutnya, Didalam perulangan Input, variabel mahasiswa akan menempati Indeks-nya masing-masing.
Pada contoh diatas, mahasiswa[3]
kita dapat menginputkan data mahasiswa maksimal 3 kali. Mulai dari mahasiswa[0]
, mahasiswa[1]
, dst.
Lalu, didalam perulangan output, variabel mahasiswa
yang ditampilkan kelayar juga akan mengikuti Indeks dari perulangan Input tadi.
Output mahasiswa[0]
akan mengambil data dari Input mahasiswa[0]
, Output mahasiswa[1]
akan mengambil data dari Input mahasiswa[1]
, dst.
Hasil dari program diatas, akan menghasilkan output.
. . .
Dari program-program yang telah kita buat pada contoh diatas, elemen / field-nya diisi dengan tipe data standar. Selanjutnya, kita akan mencoba mengisi elemen struct
dengan tipe data buatan atau struct
itu sendiri.
Perhatikan program berikut.
#include <stdio.h>
struct date{ int hari, bulan, tahun; }; struct student{ char nama[20]; int NRP; char jurusan[20]; struct date tgl_lahir; }; int main(){ struct student mahasiswa[50]; int jumlah; printf("Masukkan Banyaknya mahasiswa : "); scanf("%d", &jumlah); fflush(stdin); printf("=========INPUT DATA MAHASISWA========="); for(int i= 0; i< jumlah; i++){ printf("Masukkan nama Anda : "); gets(mahasiswa[i]. nama); fflush(stdin); printf("Masukkan NRP Anda : "); scanf("%d", &mahasiswa[i]. NRP); fflush(stdin); printf("Masukkan Jurusan Anda : "); gets(mahasiswa[i]. jurusan); fflush(stdin); printf("Masukkan tgl lahir Anda (dd-mm-yyyy) : "); scanf("%d-%d-%d", &mahasiswa[i]. tgl_lahir. hari, &mahasiswa[i]. tgl_lahir. bulan, &mahasiswa[i]. tgl_lahir. tahun, ); fflush(stdin); printf("\n"); } printf("=========OUTPUT DATA MAHASISWA========="); for(int j= 0; j< jumlah; j++){ printf("Nama : %s\n", mahasiswa[j]. nama); printf("NRP : %d\n", mahasiswa[j]. NRP); printf("Jurusan : %s\n", mahasiswa[j]. jurusan); printf("Tgl lahir : %d- %d- %d\n", mahasiswa[j]. tgl_lahir. hari, mahasiswa[j]. tgl_lahir. bulan, mahasiswa[j]. tgl_lahir. tahun ); printf("\n"); } return 0; }
Pada program diatas, kita memiliki dua tipe data struct
, yaitu struct date
dan struct student
.
Didalam struct date
, didalamnya memuat elemen-elemen bertipe int
.
Selanjutnya, didalam struct student
,
... seperti biasa, pada saat kita menambahkan elemen / field baru, tidak lupa untuk menuliskan nama variabel beserta tipe datanya.
Pada contoh diatas, kita menambahkan field baru bernama tgl_lahir
yang bertipe struct date
.
Selanjutnya, didalam fungsi main()
kita deklarasikan variabel mahasiswa yang bertipe Array of struct student
, dengan ukuran maksimal Array sebesar 50, agar bisa menampung banyak data inputan.
Selanjutnya, didalam perulangan kita diminta untuk menginputkan data mahasiswa sesuai field yang telah didefinisikan tadi. Dengan menyebut nama variabel beserta nama field-nya.
Sama halnya pada saat kita mengakses field yang bertipe struct date
, kita tuliskan dengan mahasiswa[i].tgl_lahir.day
secara berurutan sesuai dengan urutan field-nya.
Dari program diatas menghasilkan output.
Penutup
Itulah tadi penjelasan mengenai konsep dasar tipe data struct. Materi diatas merupakan materi penutup untuk tutorial bahasa pemrograman C kali ini. Diawal tutorial C ini, telah kita ketahui bahwa bahasa C ini merupakan bahasa tertua atau Induk dari semua bahasa pemrograman, yang artinya bahwa jika kita paham dan mengerti akan konsep dasar dari bahasa C ini, maka kemungkinan kita bisa paham dan mengerti bahasa pemrograman lain akan sangat terbuka lebar. Kunci sukses belajar pemrograman adalah terus berlatih dan sering mencoba, Jika kalian kalian masih belum paham, ulangi lagi tutorial-tutorialnya dan teruslah mencoba sampai paham.
C by ambis at 28-7-23
Post a Comment
Post a Comment