Anda dapat mendeklarasikan dan menginisiasi sebuah variabel dalam bahasa C dengan menetapkan tipe datanya. Misalnya
int i = 0 ;
adalah perintah untuk mencadangkan sebuah lokasi blok memori yang diberi nama i dan akan berisi data bertipe integer, dalam hal ini diisi dengan 0.
int i[5] ;
adalah perintah yang sama dengan di atas hanya saja perintah ini mencadangkan 5 blok memori yang masing-masing blok akan diisi data bertipe integer. Anda pasti ingat bahwa perintah ini adalah untuk mendeklarasikan sebuah array bertipe integer. Dalam array tersebut anda hanya diperbolehkan menyimpan data bertipe yang sama yaitu integer. Bagaimana jika anda ingin menyimpan data tipe berbeda?.
Pada kehidupan nyata, anda pasti pernah melihat sebuah tabel yang terdiri dari beberapa kolom. Misalnya kolom pertama berisi nama, kolom kedua berisi alamat, kolom ke tiga berisi berat badan dst. Jelas bahwa kolom pertama dan kedua bertipe string (array of char) sedangkan tipe ke tiga bertipe integer, atau bisa juga double. Intinya bahwa terdapat perbedaan tipe data pada setiap kolom. Perhatikan tabel beriktu iniPengarang Penerbit No Judul Buku
Amen allan Hebat 1 Methode Penelitian
Amen Iyas Hebat 2 Programming In C
Amen Ubay Hebat 3 Rahasia Asmaul Husna
Inen allan Hebat 4 Tendangan dari langit
Setiap baris dari tabel di atas memiliki tipe data yang berbeda. Jika anda ingin memanipulasi tabel tersebut dengan menggunakan bahasa C, maka cara yang dapat digunakan adalah STRUCTURE.
Structure memungkinkan anda untuk membuat suatu variabel yang dapat menampung beberapa tipe data sekaligus, misalnya integer, string, dll. Structure sering digunakan untuk keperluan manipulasi tabel (database)
Untuk mendefinisikan structure anda harus menggunakan kata kunci struct sbb
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
}; // token ; di akhir struct
Perhatikan bahwa di akhir definisi HARUS diikuti tanda (token) ;
Perintah di atas mendefinisikan struktur data buku yang terdiri dari judul, pengarang dan subject yang semuanya menggunakan array of char, dan satu kode bertipe integer.
Untuk menginisiasi sebuah variabel tipe struct Buku, maka anda dapat memberikan perintah sbb :
struct Buku Buku1;
struct Buku Buku2;
Perintah ini mengalokasikan dua blok memori yang diberi nama Buku1 dan Buku2. Setiap blok dapat menampung 4 data, yaitu 3 bertipe char dan satu integer
Untuk memberikan nilai kepada structure dapat dilakukan dengan memanfaatkan strcpy untuk mengcopy string kepada hasil dari asal. Akses yang digunakan adalah dengan memisahkan nama struct dan variabel (fieldnya) dan dipisahkan dengan tanda titik (.)
strcpy( Buku1.judul, "Programming in C" );
strcpy( Buku1.pengarang, "Sastrawan" );
strcpy( Buku1.subject, "C Programming Tutorial" );
Untuk memberikan nilai yang bertipe integer dapat langsung diberikan sbb
Buku1.kode = 1;
Untuk menampilkan isi dari struct dapat digunakan prinf sbb
printf( "Buku 1 Judul :\t %s\n" , Buku1.judul);
printf( "Buku 1 Pengarang :\t %s\n" , Buku1.pengarang);
printf( "Buku 1 subject :\t %s\n" , Buku1.subject);
printf( "Buku 1 Kode Buku :\t %d\n" , Buku1.kode);
Adapun program selengkapnya tampak sbb :
/* =======================================
* Membuat dan menggunakan STRUCTURE
* Created by: Sastrawan
* Topik : Membuat dan memanfaatkan structure
* file : structure1.c
* ========================================
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
}; // token ; di akhir struct
int main( )
{
struct Buku Buku1;
struct Buku Buku2;
/* Mengisi data Buku 1 */
strcpy( Buku1.judul, "Programming in C" );
strcpy( Buku1.pengarang, "Sastrawan" );
strcpy( Buku1.subject, "C Programming Tutorial" );
Buku1.kode = 1;
/* Mengisi data Buku 2 */
strcpy( Buku2.judul, "Metode Penelitian" );
strcpy( Buku2.pengarang, "Sastrawan" );
strcpy( Buku2.subject, "Metlit Kesehatan" );
Buku2.kode = 2;
/* Menampilkan datanya */
printf( "Buku 1 Judul :\t %s\n" , Buku1.judul);
printf( "Buku 1 Pengarang :\t %s\n" , Buku1.pengarang);
printf( "Buku 1 subject :\t %s\n" , Buku1.subject);
printf( "Buku 1 Kode Buku :\t %d\n" , Buku1.kode);
putchar('\n');
printf( "Buku 2 Judul :\t %s\n" , Buku2.judul);
printf( "Buku 2 Pengarang :\t %s\n" , Buku2.pengarang);
printf( "Buku 2 subject :\t %s\n" , Buku2.subject);
printf( "Buku 2 Kode Buku :\t %d\n" , Buku2.kode);
return 0;
}
Jika program itu dicompile dan dijalankan, maka akan menjadi sbb :
Buku 1 Judul : Programming in C
Buku 1 Pengarang : Sastrawan
Buku 1 subject : C Programming Tutorial
Buku 1 Kode Buku : 1
Buku 2 Judul : Metode Penelitian
Buku 2 Pengarang : Sastrawan
Buku 2 subject : Metlit Kesehatan
Buku 2 Kode Buku : 2
Sama halnya dengan tipe data lainnya, tipe structure juga dapat dibuat dalam bentuk array of structure. Adapun cara membuatnya adalah sebagai berikut :
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} bukuku[2]; // token ; di akhir struct
Perintah ini mencadangkan 2 lokasi blok memory yang langsung diberi nama bukuku
Anda juga dapat melakukan deklarasi dan inisiasi yang bersamaan untuk array tipe struct ini. Contohnya adalah sbb :
struct Brooks
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} bukumu[2] = {
{"Judul1","Amen allan","Hebat",9},
{"Judul2","Inen allan","Hebat",19}}; // token ; di akhir struct
Struktur sebagai argumen / parameter dari sebuah fungsi
Untuk 'mengirim' structure ke dalam suatu fungsi (sebagai argumen atau parameter dari fungsi), dapat menggunakan metode yang sama dengan argumen untuk tipe data lainnya. Sebagai contoh, jika program di atas dimodifikasi dan kita akan menampilkan isi dari database dengan menggunakan sebuah fungsi maka kita dapat membuat fungsi dan memasukkan structure ke dalam fungsi tersebut untuk selanjutkan dicetak atau proses lainnya.
/*** Membuat struct sebagai parameter fungsi
* Created by : Sastrawan
* Topic : Memasukkan / menggunakan array of structure
* sebagai parameter / argumen sebuah fungsi
* Nama File : structure5.c
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} ; // token ; di akhir struct
void cetakDataBase(struct Buku bk) ;
int main( )
{
struct Buku bukuKita[]= {{"Teguran dari Langit", "Mr Amenallan","Religius",99},
{"Aku suka sate","Chef Marinka","Food",76},
{"Information Technology","Prof Simson","Science",23}};
int i;
for(i=0;i<3;i++) cetakDataBase(bukuKita[i]) ;
return 0;
}
void cetakDataBase(struct Buku bk) {
printf( "Judul\t\t :\t %s\n" , bk.judul);
printf( "Pengarang\t :\t %s\n" , bk.pengarang);
printf( "Subject\t\t :\t %s\n" , bk.subject);
printf( "Kode\t\t :\t %d\n" , bk.kode);
}
JIka dikompilasi dan dijalankan akan menghasilkan output sbb :
Judul : Teguran dari Langit
Pengarang : Mr Amenallan
Subject : Religius
Kode : 99
Judul : Aku suka sate
Pengarang : Chef Marinka
Subject : Food
Kode : 76
Judul : Information Technology
Pengarang : Prof Simson
Subject : Science
Kode : 23
Setelah kita mengetahui teknik mengumpankan structure ke dalam fungsi, maka sekarang kita akan maju satu langkah lagi untuk mempelajari hal yang lebih menantang, yaitu penggunaan pointer pada structure.
Menggunakan pointer pada structure tidak sesulit yang anda bayangkan. Saya kembali menggunakan contoh di atas untuk mendemonstrasikan penggunaan pointer pada structure sehingga dapat memudahkan anda untuk memahami bagaimana cara kerja pointer pada structure berikut ini:
/*** Pointer of Structure
* Created by : Sastrawan
* Topic : Membuat dan akses pointer of structure
* Nama File : structure7.c
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} ; // token ; di akhir struct
void cetakDataBasePtr(struct Buku *bk) ;
int main( )
{
struct Buku bukuKita[]= {{"Teguran dari Langit", "Mr Amenallan","Religius",99},
{"Aku suka sate","Chef Marinka","Food",76},
{"Information Technology","Prof Simson Bau","Science",23}};
struct Buku *ptrBuku ; // deklarasi pointer of struct
ptrBuku = &bukuKita[0] ; // ingat pointer yg mengarah ke array selalu menunjuk ke awal array
int i;
for(i=0;i<3;i++) cetakDataBasePtr(ptrBuku+i) ; //cara incrementak pointer structure
return 0;
}
void cetakDataBasePtr(struct Buku *bk) {
printf( "Judul\t\t :\t %s\n" , bk->judul); // Menggunakan tanda -> instead of tanda titik (.)
printf( "Pengarang\t :\t %s\n" , bk->pengarang);
printf( "Subject\t\t :\t %s\n" , bk->subject);
printf( "Kode\t\t :\t %d\n" , bk->kode);
}
Jika dijalankan, program ini juga akan menghasilkan output yang sama dengan di atas. Bedanya adalah bahwa yang kedua menggunakan pointer sebagai argumen dalam fungsi dan menggunakan tanda -> untuk mengakases element structure
Hal penting yang harus diketahui disini adalah bahwa untuk mengakses elemen dari structure dilakukan dengan cara :
int i = 0 ;
adalah perintah untuk mencadangkan sebuah lokasi blok memori yang diberi nama i dan akan berisi data bertipe integer, dalam hal ini diisi dengan 0.
int i[5] ;
adalah perintah yang sama dengan di atas hanya saja perintah ini mencadangkan 5 blok memori yang masing-masing blok akan diisi data bertipe integer. Anda pasti ingat bahwa perintah ini adalah untuk mendeklarasikan sebuah array bertipe integer. Dalam array tersebut anda hanya diperbolehkan menyimpan data bertipe yang sama yaitu integer. Bagaimana jika anda ingin menyimpan data tipe berbeda?.
Pada kehidupan nyata, anda pasti pernah melihat sebuah tabel yang terdiri dari beberapa kolom. Misalnya kolom pertama berisi nama, kolom kedua berisi alamat, kolom ke tiga berisi berat badan dst. Jelas bahwa kolom pertama dan kedua bertipe string (array of char) sedangkan tipe ke tiga bertipe integer, atau bisa juga double. Intinya bahwa terdapat perbedaan tipe data pada setiap kolom. Perhatikan tabel beriktu iniPengarang Penerbit No Judul Buku
Amen allan Hebat 1 Methode Penelitian
Amen Iyas Hebat 2 Programming In C
Amen Ubay Hebat 3 Rahasia Asmaul Husna
Inen allan Hebat 4 Tendangan dari langit
Setiap baris dari tabel di atas memiliki tipe data yang berbeda. Jika anda ingin memanipulasi tabel tersebut dengan menggunakan bahasa C, maka cara yang dapat digunakan adalah STRUCTURE.
Structure memungkinkan anda untuk membuat suatu variabel yang dapat menampung beberapa tipe data sekaligus, misalnya integer, string, dll. Structure sering digunakan untuk keperluan manipulasi tabel (database)
Cara penggunaan Structure
Untuk mendefinisikan structure anda harus menggunakan kata kunci struct sbb
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
}; // token ; di akhir struct
Perhatikan bahwa di akhir definisi HARUS diikuti tanda (token) ;
Perintah di atas mendefinisikan struktur data buku yang terdiri dari judul, pengarang dan subject yang semuanya menggunakan array of char, dan satu kode bertipe integer.
Untuk menginisiasi sebuah variabel tipe struct Buku, maka anda dapat memberikan perintah sbb :
struct Buku Buku1;
struct Buku Buku2;
Perintah ini mengalokasikan dua blok memori yang diberi nama Buku1 dan Buku2. Setiap blok dapat menampung 4 data, yaitu 3 bertipe char dan satu integer
Mengisi structure
Untuk memberikan nilai kepada structure dapat dilakukan dengan memanfaatkan strcpy untuk mengcopy string kepada hasil dari asal. Akses yang digunakan adalah dengan memisahkan nama struct dan variabel (fieldnya) dan dipisahkan dengan tanda titik (.)
strcpy( Buku1.judul, "Programming in C" );
strcpy( Buku1.pengarang, "Sastrawan" );
strcpy( Buku1.subject, "C Programming Tutorial" );
Untuk memberikan nilai yang bertipe integer dapat langsung diberikan sbb
Buku1.kode = 1;
Untuk menampilkan isi dari struct dapat digunakan prinf sbb
printf( "Buku 1 Judul :\t %s\n" , Buku1.judul);
printf( "Buku 1 Pengarang :\t %s\n" , Buku1.pengarang);
printf( "Buku 1 subject :\t %s\n" , Buku1.subject);
printf( "Buku 1 Kode Buku :\t %d\n" , Buku1.kode);
Adapun program selengkapnya tampak sbb :
/* =======================================
* Membuat dan menggunakan STRUCTURE
* Created by: Sastrawan
* Topik : Membuat dan memanfaatkan structure
* file : structure1.c
* ========================================
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
}; // token ; di akhir struct
int main( )
{
struct Buku Buku1;
struct Buku Buku2;
/* Mengisi data Buku 1 */
strcpy( Buku1.judul, "Programming in C" );
strcpy( Buku1.pengarang, "Sastrawan" );
strcpy( Buku1.subject, "C Programming Tutorial" );
Buku1.kode = 1;
/* Mengisi data Buku 2 */
strcpy( Buku2.judul, "Metode Penelitian" );
strcpy( Buku2.pengarang, "Sastrawan" );
strcpy( Buku2.subject, "Metlit Kesehatan" );
Buku2.kode = 2;
/* Menampilkan datanya */
printf( "Buku 1 Judul :\t %s\n" , Buku1.judul);
printf( "Buku 1 Pengarang :\t %s\n" , Buku1.pengarang);
printf( "Buku 1 subject :\t %s\n" , Buku1.subject);
printf( "Buku 1 Kode Buku :\t %d\n" , Buku1.kode);
putchar('\n');
printf( "Buku 2 Judul :\t %s\n" , Buku2.judul);
printf( "Buku 2 Pengarang :\t %s\n" , Buku2.pengarang);
printf( "Buku 2 subject :\t %s\n" , Buku2.subject);
printf( "Buku 2 Kode Buku :\t %d\n" , Buku2.kode);
return 0;
}
Jika program itu dicompile dan dijalankan, maka akan menjadi sbb :
Buku 1 Judul : Programming in C
Buku 1 Pengarang : Sastrawan
Buku 1 subject : C Programming Tutorial
Buku 1 Kode Buku : 1
Buku 2 Judul : Metode Penelitian
Buku 2 Pengarang : Sastrawan
Buku 2 subject : Metlit Kesehatan
Buku 2 Kode Buku : 2
Membuat Array of Structure
Sama halnya dengan tipe data lainnya, tipe structure juga dapat dibuat dalam bentuk array of structure. Adapun cara membuatnya adalah sebagai berikut :
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} bukuku[2]; // token ; di akhir struct
Perintah ini mencadangkan 2 lokasi blok memory yang langsung diberi nama bukuku
Anda juga dapat melakukan deklarasi dan inisiasi yang bersamaan untuk array tipe struct ini. Contohnya adalah sbb :
struct Brooks
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} bukumu[2] = {
{"Judul1","Amen allan","Hebat",9},
{"Judul2","Inen allan","Hebat",19}}; // token ; di akhir struct
Struktur sebagai argumen / parameter dari sebuah fungsi
Untuk 'mengirim' structure ke dalam suatu fungsi (sebagai argumen atau parameter dari fungsi), dapat menggunakan metode yang sama dengan argumen untuk tipe data lainnya. Sebagai contoh, jika program di atas dimodifikasi dan kita akan menampilkan isi dari database dengan menggunakan sebuah fungsi maka kita dapat membuat fungsi dan memasukkan structure ke dalam fungsi tersebut untuk selanjutkan dicetak atau proses lainnya.
/*** Membuat struct sebagai parameter fungsi
* Created by : Sastrawan
* Topic : Memasukkan / menggunakan array of structure
* sebagai parameter / argumen sebuah fungsi
* Nama File : structure5.c
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} ; // token ; di akhir struct
void cetakDataBase(struct Buku bk) ;
int main( )
{
struct Buku bukuKita[]= {{"Teguran dari Langit", "Mr Amenallan","Religius",99},
{"Aku suka sate","Chef Marinka","Food",76},
{"Information Technology","Prof Simson","Science",23}};
int i;
for(i=0;i<3;i++) cetakDataBase(bukuKita[i]) ;
return 0;
}
void cetakDataBase(struct Buku bk) {
printf( "Judul\t\t :\t %s\n" , bk.judul);
printf( "Pengarang\t :\t %s\n" , bk.pengarang);
printf( "Subject\t\t :\t %s\n" , bk.subject);
printf( "Kode\t\t :\t %d\n" , bk.kode);
}
JIka dikompilasi dan dijalankan akan menghasilkan output sbb :
Judul : Teguran dari Langit
Pengarang : Mr Amenallan
Subject : Religius
Kode : 99
Judul : Aku suka sate
Pengarang : Chef Marinka
Subject : Food
Kode : 76
Judul : Information Technology
Pengarang : Prof Simson
Subject : Science
Kode : 23
Setelah kita mengetahui teknik mengumpankan structure ke dalam fungsi, maka sekarang kita akan maju satu langkah lagi untuk mempelajari hal yang lebih menantang, yaitu penggunaan pointer pada structure.
Pointer dan Structure
Menggunakan pointer pada structure tidak sesulit yang anda bayangkan. Saya kembali menggunakan contoh di atas untuk mendemonstrasikan penggunaan pointer pada structure sehingga dapat memudahkan anda untuk memahami bagaimana cara kerja pointer pada structure berikut ini:
/*** Pointer of Structure
* Created by : Sastrawan
* Topic : Membuat dan akses pointer of structure
* Nama File : structure7.c
*/
#include <stdio.h>
#include <string.h>
struct Buku
{
char judul[50];
char pengarang[50];
char subject[100];
int kode;
} ; // token ; di akhir struct
void cetakDataBasePtr(struct Buku *bk) ;
int main( )
{
struct Buku bukuKita[]= {{"Teguran dari Langit", "Mr Amenallan","Religius",99},
{"Aku suka sate","Chef Marinka","Food",76},
{"Information Technology","Prof Simson Bau","Science",23}};
struct Buku *ptrBuku ; // deklarasi pointer of struct
ptrBuku = &bukuKita[0] ; // ingat pointer yg mengarah ke array selalu menunjuk ke awal array
int i;
for(i=0;i<3;i++) cetakDataBasePtr(ptrBuku+i) ; //cara incrementak pointer structure
return 0;
}
void cetakDataBasePtr(struct Buku *bk) {
printf( "Judul\t\t :\t %s\n" , bk->judul); // Menggunakan tanda -> instead of tanda titik (.)
printf( "Pengarang\t :\t %s\n" , bk->pengarang);
printf( "Subject\t\t :\t %s\n" , bk->subject);
printf( "Kode\t\t :\t %d\n" , bk->kode);
}
Jika dijalankan, program ini juga akan menghasilkan output yang sama dengan di atas. Bedanya adalah bahwa yang kedua menggunakan pointer sebagai argumen dalam fungsi dan menggunakan tanda -> untuk mengakases element structure
Hal penting yang harus diketahui disini adalah bahwa untuk mengakses elemen dari structure dilakukan dengan cara :
- Menggunakan tanda titik (.) : contoh bk.judul untuk mengakses judul. Ini hanya bisa dilakukan jika mengakses structure secara langsung, artinya tidak menggunakan pointer. Jika menggunakan pointer untuk menjelajah isi array of structure maka caranya adalah seperti nomor 2.
- Menggunakan tanga minus dan lebih dari ( -> ) contoh : bk -> judul untuk mengakses judul
Tidak ada komentar:
Posting Komentar
Write your comment here