Untuk menyimpan banyak data pada satu variable, biasanya kita menggunakan array. Array mampu menyimpan banyak data dalam satu variable, yaitu dengan ditempatkan dalam index yang berbeda. Tapi kita juga bisa menyimpan banyak data dalam satu index, bahkan dengan tipe data yang berbeda. Untuk dapat melakukan hal ini, kita menggunakan structure.
Structure adalah kumpulan dari beberapa variable yang dikelompokan dalam satu nama untuk kemudahan dalam penggunaan variable-variable tersebut. Structure mampu mengelompokan variable dengan tipe data yang bebrbeda dalam satu nama. Structure sangat diperlukan terutama dalam program-program yang besar. Karena, biasanya program-program yang besar menggunakan data yang kompleks, yang harus diolah dan digunakan secara bersamaan. Strucutre pada beberapa bahasa pemrograman lain disebut "record", misalnya pascal.
Contoh penggunaan structure misalnya pada seorang mahasiswa. Dalam program, kita bisa membuat mahasiswa sebagai sebuah variable. tapi dalam dunia nyata mahasiswa memiliki banyak data, antara lain alamat, nama, umur, NIM, dll. Pada program yang besar, data-data yang dimiliki mahasiswa harus dikelola secara bersamaan. Dan pada program, kita akan sangat kerepotan apabila menggunakan satu buah variable saja. Untuk mengatasi masalah ini, kita memerlukan structure untuk mengelompokan data dan mempermudah dalam mengolahnya.
Structure adalah kumpulan dari beberapa variable yang dikelompokan dalam satu nama untuk kemudahan dalam penggunaan variable-variable tersebut. Structure mampu mengelompokan variable dengan tipe data yang bebrbeda dalam satu nama. Structure sangat diperlukan terutama dalam program-program yang besar. Karena, biasanya program-program yang besar menggunakan data yang kompleks, yang harus diolah dan digunakan secara bersamaan. Strucutre pada beberapa bahasa pemrograman lain disebut "record", misalnya pascal.
Contoh penggunaan structure misalnya pada seorang mahasiswa. Dalam program, kita bisa membuat mahasiswa sebagai sebuah variable. tapi dalam dunia nyata mahasiswa memiliki banyak data, antara lain alamat, nama, umur, NIM, dll. Pada program yang besar, data-data yang dimiliki mahasiswa harus dikelola secara bersamaan. Dan pada program, kita akan sangat kerepotan apabila menggunakan satu buah variable saja. Untuk mengatasi masalah ini, kita memerlukan structure untuk mengelompokan data dan mempermudah dalam mengolahnya.
Operasi yang bisa dilakukan terhadap structure antara lain, penggandaan (copy), sebagai parameter fungsi, dan sebagai nilai kembalian dari fungsi. Structure juga bisa digabungkan dengan array, yaitu dengan memberi index pada nama structure.
format deklarasi structure adalah sebagai berikut:
struct <NamaStructure>
{
member
member
member
}
struct <NamaStructure>
{
member
member
member
}
v Data structures
Struct merupakan suatu struktur data yang menggabungkan beberapa data dengan berbagai tipe data yang memiliki ukuran yang berbeda (heterogen) di kelompokan dalam satu deklarasi unik dan saling berkaitan, dengan format sbb :
struct model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;
Dimana model_name adalah nama untuk model tipe stukturnya dan parameter optional object_name merupakan identifier yang valid untuk objek struktur. Diantara kurung kurawal { } berupa tipe dan sub-identifier yang mengacu ke elemen pembentuk struktur. Jika pendefinisian stuktur menyertakan parameter model_name (optional), maka parameter tersebut akan menjadi nama tipe yang valid ekuivalen dengan
struktur. Contoh :
struct products {
char name [30];
float price;
} ;
products apple;
products orange, melon;
Didefinisikan model struktur products dengan dua field : name dan price, dengan tipe yang berbeda. Kemudian tipe struktur tadi (products) digunakan untuk mendeklarasikan tiga objek : apple, orange dan melon. Ketika dideklarasikan, products menjadi nama tipe yang valid seperti tipe dasar int, char atau short dan dapat mendeklarasikan objects (variables) dari tipe tersebut. Optional field yaitu object_name dapat dituliskan pada akhir deklarasi struktur untuk secara langsung mendeklarasikan object dari tipe struktur. Contoh :
struct products {
char name [30];
float price;
} apple, orange, melon;
Sangat penting untuk membedakan antara structure model, dan structure object. model adalah type, dan object adalah variable. Kita dapat membuat banyak objects (variables) dari satu model (type). Struct dapat dideklarasikan secara bertingkat, yaitu salah satu field struct bertipe struct lainnya (nested Structure) . Selain itu struct juga dapat digabungkan dengan array, struct yang field-nya berupa array atau array yang setiap elemennya berupa structure.
Deklarasi, Input, dan Output Structure pada Bahasa C
Structure adalah sebuah tipe data yang bisa menampung banyak tipe data yang berbeda. Dengan structure kita seperti membuat tipe data kita sendiri. Structure terdiri dari beberapa anggota. Anggota dari structure disebut member, member inilah yang merupakan variable biasa, yang menampung data sebenarnya. Member dalam sebuah structure bisa terdiri dari tipe data yang berbeda, misalnya pointer, integer, character, dan lain-lain. Berikut ini contoh structure.
#include <stdio.h>main()
{
struct mahasiswa //deklarasi structure
char nama[30];
char nim[10];
int sks;
int umur;
}data;
printf("Masukan data mahasiswa:\n"); //input data mahasiswa
printf("Nama (tanpa spasi): ");scanf("%s",&data.nama);
printf("NIM : ");scanf("%s",&data.nim);
printf("Jumlah SKS : ");scanf("%d",&data.sks);
printf("Umur : ");scanf("%d",&data.umur);
printf("\n\nData mahasiswa yang dimasukan:"); //cetak data mahasiswa
printf("\nNama : %s",data.nama);
printf("\nNIM : %s",data.nim);
printf("\nJumlah SKS : %d",data.sks);
printf("\nUmur : %d",data.umur);
printf("\n");
}
Structure sebagai parameter
Structure dapat dikirim ke function sebagai parameter, jika structure ini hanya merupakan data masukan, maka dapat dikirimkan dengan call by value, tetapi bila structure yang dikirimkan akan mengalami perubahan nilai maka pengiriman parameter harus dengan call by reference dengan mengirimkan pointer to struct. Struct juga dapat menjadi return type sebuah function.
Contoh struct1 (pass by reference):
#include<stdio.h>
#include<conio.h>
struct t_hitung{
int x;
int y;
};
int Hitung(struct t_hitung *Nilai){
int y;
y=Nilai->y*5+2;
Nilai->x=25;
return y;
}
int main(){
struct t_hitung *Angka;
int m;
Angka->x=5, Angka->y=10;
m = Hitung(Angka);
printf("x= %d\ny= %d\nm= %d",Angka->x,Angka->y, m);
return 0;
}
Contoh struct2 (array structures) :
#include<stdio.h>
#include<conio.h>
#define X 5
struct products{
char name[30];
float price;
};
int main(){
int i, j, jml;
struct products Apple[X];
char temp[30];
float Harga;
printf("Berapa jenis apel [Max %d]: ", X);
scanf("%d", &jml);
for(i=0;i<jml;i++){
printf("Masukkan nama buah ke-%d: ", i+1);
flushall();gets(temp);strcpy(Apple[i].name, temp);
printf("Masukkan harga buah : ");
scanf("%f", &Harga);Apple[i].price=Harga;
}
printf("\n\nHasil :\n");
for(j=0;j<jml;j++)
printf("%s Rp %.2f\n",Apple[j].name, Apple[j].price);
return 0;
}
String
Konstanta string, seperti : "I am a string" merupakan array bertipe karakter. Direpresentasikan dalam bahasa C dengan menggunakan Double quote dan diakhiri dengan karakter khusus null “\0'' sehingga program dapat menemukan akhir dari suatu string. Konstanta string sering digunakan dalam menampilkan output dari suatu program dengan menggunakan keyword printf, contoh :
printf("Hello, world\n");
printf("The value of a is: %f\n", a);
Contoh String 1 :
//String example
#include <stdio.h>
void main(){
char text_1[100], text_2[100], text_3[100];
char *ta, *tb;
char message[] = "Hello, I am a string; what are you?";
int i;
printf("Original message: %s\n", message);
// copy the message to text_1 the hard way
i=0;
while ((text_1[i] = message[i]) != '\0' )
i++;
printf("Text_1: %s\n", text_1);
//use explicit pointer arithmetic
ta=message;
tb=text_2;
while ( ( *tb++ = *ta++ ) != '\0' )
;
printf("Text_2: %s\n", text_2);
printf("\n\nSelesai");
getch(); }
Output :
Library standard “string'' terdiri dari beberapa function yang sangat berguna untuk
manipulasii, berikut beberapa contoh fungsi untuk manipulasi string :
char *strcpy(s,ct) → menyalin string ct ke string s, termasuk :\0''; dan
mengembalikan s
char *strncpy(s,ct,n) → menyalin n buah karakter dari string ct ke string s, dan
mengembalikan s
char *strncat(s,ct) → menggabungkan string ct keakhir string s dan mengembalikan
s
char *strncat(s,ct,n) → menggabungkan n buah karakter dari string ct ke akhir
string s, diakhiri dengan “\0”, dan mengembalikan s
int strcmp(cs,ct) → membandingkan string cs dan string ct; mengembalikan 0 jika
cs=ct, >0 jika cs>ct, <0 jika cs<ct
char *strchr(cs,ct) → mengembalikan pointer ke urutan pertama dari string ct atau
Null jika tidak ada
size_t strlen(cs → mengembalikan panjang string cs (s dan t merupakan char*, cs
dan ct merupakan konstanta char*.
Contoh String 2 :
#include<stdio.h>
#include < string.h>
void main( ) {
char line[100], *sub_text;
strcpy(line,"hello, I am a string;");
printf("Line: %s\n", line);
//add to end of string
strcat(line," what are you?");
printf("Line: %s\n", line);
//find length of string, strlen brings back, length as type size_t
printf("Length of line: %d\n", (int)strlen(line));
// find occurence of substrings
if ( (sub_text = strchr ( line, 'W' ) )!= NULL )
printf("String starting with \"W\" ->%s\n", sub_text);
if ( ( sub_text = strchr ( line, 'w' ) )!= NULL )
printf("String starting with \"w\" ->%s\n", sub_text);
if ( ( sub_text = strchr ( sub_text, 'u' ) )!= NULL )
printf("String starting with \"w\" ->%s\n", sub_text);
}
Output :
mohon di bantu
BalasHapusbagaimana cara menhitung frekuensi kemunculan kata pada sebuah file text dengan mengurutkan kata kemudian tampilkan kata terpendek namun mengandung huruf vokal terbanyak
terimakasih
artikelnya bermanfaat kak, ini sya jga punya artikel tentang Tipe Data Struct dalam Bahasa C, smoga dpt saling melengkapi
BalasHapusTipe Data Struct (Struktur) dalam Bahasa C
Kumpulan Materi Bahasa C, Lengkap dengan contoh program