• Tidak ada hasil yang ditemukan

BAB I - BAB IX Struct

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB I - BAB IX Struct"

Copied!
21
0
0

Teks penuh

(1)

Pe

uct digunak

beda. Bent

k an apabila

uk um um d

engan ist ila

Secara p

i sat u buah

ng ingin di

k larasian st

t u r bo da n

sebagai be

nd c

sian, st ruct

unt uk set

kan m em ili

h sebagai b

c

m pulan dat

(2)

Deklarasi di at as berart i ada suat u t ipe dat a yang bernam a dat a_dosen di

m ana set iap dat a yang ak an dideklarasikan m enggunak an t ipe dat a dat a_dosen akan

m em punyau field nip, nam a, dan alam at . Unt uk dapat m enggunak an t ipe dat a

t ersebut sebuah variabel harus dideklarasikan m enggunakan nam a st ruct nya. Bent uk

um um pendeklarasian variabel st ruct nya adalah sebagai berikut :

na m a _ st r u ct va r ia be l_ 1 ,va r ia be l_ 2 ,…,va r ia be l_ n ;

Adapun cont ohnya sebagai berikut :

1 data_dosen dosen1,dosen2;

Deklarasi dua variabel di at as berart i ada variabel bernam a dosen1 dan

dosen2 di m ana t iap variabel t ersebut m em punyai field sesuai dengan dat a_dosen.

Apabila digam barkan m aka st rukt ur dosen1 dan dosen2 akan sepert i pada gam bar di

baw ah ini:

dosen1 dosen2

nip nam a alam at nip nam a alam at

Gam bar 9.1 St rukt ur dosen1 dan dosen2

Selain deklarasi variabelny a ada hal y ang harus diperhat ikan j uga yait u cara

unt uk m engisi dan m em anggil nilai yang ada di dalam sebuah st ruct . Cara pengisian

nilai dan pem anggilan nilainya adalah sebagai berikut :

/ / un t u k pe n gisia n nila i

va r ia be l_ st r u ct .fie ld_ st r uct = n ila i; / / un t u k pe m a n ggila n n ya

gu na k a n pe r in t a h pr in t f a t a u cou t la lu gu n a k a n for m a t va r ia be l_ st r u ct .fie ld_ st r uct u n t u k

m e m a n ggil n ila in ya

Sebagai cont oh unt uk m engisi nilai pada st ruct dat a_dosen di at as dan m em anggil

nilainy a adalah sebagai berikut :

1 2 3 4 5 6

//untuk mengisi nilai dosen1.nip=41277006024;

dosen1.nama=”adam mukharil b” dosen1.alamat=”bandung”;

atau

(3)

7

//untuk memanggil nilai

printf(“%li\n”,dosen1.nip);//dst

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

typedef struct //deklarasi struct {

long int nip; char nama[31]; char alamat[51]; }data_dosen;

data_dosen dosen1,dosen2;//deklarasi variabel struct

int main(int argc, char *argv[]) {

//input

printf("Data Dosen Pertama\n"); printf("---\n");

printf("NIP : ");scanf("%li",&dosen1.nip);

printf("Nama : ");fflush(stdin);gets(dosen1.nama); printf("Alamat : ");fflush(stdin);gets(dosen1.alamat); printf("\n\n");

printf("Data Dosen Kedua\n"); printf("---\n");

printf("NIP : ");scanf("%li",&dosen2.nip);

printf("Nama : ");fflush(stdin);gets(dosen2.nama); printf("Alamat : ");fflush(stdin);gets(dosen2.alamat); printf("\n\n");

//output

(4)

38

printf("Nama : %s\n",dosen1.nama); printf("Alamat : %s\n",dosen1.alamat); printf("\n\n");

printf("Data Dosen Kedua\n"); printf("---\n");

printf("NIP : %li\n",dosen2.nip); printf("Nama : %s\n",dosen2.nama); printf("Alamat : %s\n",dosen2.alamat); printf("\n\n");

system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

typedef struct //deklarasi struct {

long int nip; char nama[31]; char alamat[51]; }data_dosen;

data_dosen dosen1,dosen2;//deklarasi variabel struct

int main(int argc, char *argv[]) {

//input

cout<<"Data Dosen Pertama\n"; cout<<"---\n";

cout<<"NIP : ";cin>>dosen1.nip; cout<<"Nama : ";fflush(stdin); cin.get(dosen1.nama,30);

cout<<"Alamat : ";fflush(stdin); cin.get(dosen1.alamat,50);

cout<<endl<<endl;

cout<<"Data Dosen Kedua\n"; cout<<"---\n";

(5)

33

34

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

cout<<"Nama : ";fflush(stdin); cin.get(dosen2.nama,30);

cout<<"Alamat : ";fflush(stdin); cin.get(dosen2.alamat,50);

cout<<endl<<endl; //output

cout<<"Data Dosen Pertama\n"; cout<<"---\n";

cout<<"NIP : "<<dosen1.nip<<endl; cout<<"Nama : "<<dosen1.nama<<endl; cout<<"Alamat : "<<dosen1.alamat<<endl; cout<<endl<<endl;

cout<<"Data Dosen Kedua\n"; cout<<"---\n";

cout<<"NIP : "<<dosen2.nip<<endl; cout<<"Nama : "<<dosen2.nama<<endl; cout<<"Alamat : "<<dosen2.alamat<<endl; cout<<endl<<endl;

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

(6)

Struct di Dalam Struct

Suat u st ruct dapat m engandung st ruct lainny a unt uk dij adik an field di

dalam nya. Sebagai gam baran st ruct dat a_dosen m em punyai sebuah field st ruct

t anggal lahir yang berisi field t anggal, bulan, dan t ahun. Bent uk um um

pendeklarasiannya adalah sebagai berikut :

/ / st r uct 1 t ype de f st r u ct {

t ipe _ da t a _ 1 v a r ia be l_ 1 ; t ipe _ da t a _ 2 v a r ia be l_ 2 ; t ipe _ da t a _ n va r ia be l_ n; } n a m a _ st r u ct 1 ;

/ / st r uct da la m st r uct t ype de f st r u ct

{

t ipe _ da t a _ 1 v a r ia be l_ 1 ; t ipe _ da t a _ 2 v a r ia be l_ 2 ;

n a m a _ st r uct 1 na m a _ v a r ia be l_ st r u ct _ 1 ; } n a m a _ st r u ct _ 2 ;

Sebagai cont oh unt uk kasus dat a_dosen adalah sebagai berikut :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

//struct pertama typedef struct {

int tanggal; int bulan; int tahun; }data_tanggal;

//struct dalam struct typedef struct

{

long int nip; char nama[31]; char alamat[51];

(7)

Unt uk lebih j elasny a buat lah program berik ut ini:

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

//struct pertama typedef struct {

int tanggal; int bulan; int tahun; }data_tanggal;

//struct dalam struct typedef struct

{

long int nip; char nama[31]; char alamat[51];

data_tanggal tanggal_lahir; }data_dosen;

data_dosen dosen;

int main(int argc, char *argv[]) {

printf("NIP : ");scanf("%li",&dosen.nip); printf("Nama : ");fflush(stdin);

gets(dosen.nama);

printf("Alamat : ");fflush(stdin); gets(dosen.alamat);

printf("Tanggal lahir : ");

scanf("%i",&dosen.tanggal_lahir.tanggal); printf("Bulan lahir : ");

scanf("%i",&dosen.tanggal_lahir.bulan); printf("Tahun lahir : ");

scanf("%i",&dosen.tanggal_lahir.tahun); printf("\n\n");

(8)

42 printf("\n\n");

system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

//struct pertama typedef struct {

int tanggal; int bulan; int tahun; }data_tanggal;

//struct dalam struct typedef struct

{

data_dosen dosen;

int main(int argc, char *argv[]) {

cout<<"NIP : ";cin>>dosen.nip; cout<<"Nama : ";fflush(stdin); cin.get(dosen.nama,30);

(9)

36

37

38

39 40 41 42 43

44

45

46 47 48 49

cout<<"Tanggal lahir : ";

cin>>dosen.tanggal_lahir.tanggal; cout<<"Bulan lahir : ";

cin>>dosen.tanggal_lahir.bulan; cout<<"Tahun lahir : "; cin>>dosen.tanggal_lahir.tahun; cout<<endl<<endl;

cout<<"NIP = "<<dosen.nip<<endl; cout<<"Nama = "<<dosen.nama<<endl; cout<<"Alamat = "<<dosen.alamat<<endl; cout<<"Tanggal lahir = "

<<dosen.tanggal_lahir.tanggal<<endl; cout<<"Bulan lahir = "

<<dosen.tanggal_lahir.bulan<<endl; cout<<"Tahun lahir = "

<<dosen.tanggal_lahir.tahun<<endl; cout<<endl<<endl;

system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 9.3 Hasil eksekusi program Lat 9.2

Cat at an Apabila ingin m enggunakan st ruct dalam st ruct m aka st ruct yang

akan dipanggil di dalam st ruct nya harus sudah t erdefinisi t erlebih

dahulu ( let aknya harus lebih dahulu dibandingkan st ruct yang akan

(10)

Array Dari Struct (Array of Record)

Pada sub bab sebelum ny a t elah dipelaj ari bagaim ana cara unt uk

m endeklarasikan sebuah variabel dengan t ipe dat a st ruct y ang t elah dibuat . Tapi dari

cara pendeklarasian t ersebut t im bul suat u perm asalahan yait u bagaim ana kalau

deklarasi variabel st ruct nya sangat banyak? Perm asalahan t ersebut dapat

dipecahkan dengan cara m endeklarasikan variabel st ruct nya m enggunakan variabel

bert ipe array. Cara sepert i it u sering disebut sebagai array of st ruct .

Cont oh kasusnya adalah sebuah st r uct yang m enam pung 100 dat a dosen.

Unt uk m em ecahkannya buat lah st ruct dat a_dosen yang nant inya akan digunakan

unt uk m endeklarasikan variabel dosen yang bert ipe array. Unt uk lebih j elasnya

buat lah program berikut ini:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

/*

Program 9.3

Nama File : Lat-9.3.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

#define maks 100 //maksimal array

typedef struct {

long int nip; char nama[31]; char alamat[51]; }data_dosen;

data_dosen dosen[maks];//array of struct

int main(int argc, char *argv[]) {

int i,j;

printf("Berapa data dosen? ");scanf("%i",&j); printf("\n");

for(i=0;i<j;i++) {

printf("Data dosen ke-%i\n",i+1); printf("---\n");

(11)

31

32

33 34 35 36 37 38 39 40 41 42 43 44 45 46

printf("Nama : ");fflush(stdin); gets(dosen[i].nama);

printf("Alamat : ");fflush(stdin); gets(dosen[i].alamat);

printf("\n\n"); }

for(i=0;i<j;i++) {

printf("Data dosen ke-%i\n",i+1); printf("---\n");

printf("NIP = %li\n",dosen[i].nip); printf("Nama = %s\n",dosen[i].nama); printf("Alamat = %s\n",dosen[i].alamat); printf("\n\n");

}

system("PAUSE"); return 0;

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

/*

Program 9.3

Nama File : Lat-9.3.cpp

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

#define maks 100 //maksimal array

using namespace std;

typedef struct {

long int nip; char nama[31]; char alamat[51]; }data_dosen;

data_dosen dosen[maks];//array of struct

int main(int argc, char *argv[]) {

int i,j;

(12)

27 28 29 30 31 32 33

34

35 36 37 38 39 40 41 42 43 44 45 46 47 48

cout<<endl;

for(i=0;i<j;i++) {

cout<<"Data dosen ke-"<<i+1<<endl; cout<<"---"<<endl; cout<<"NIP : ";cin>>dosen[i].nip; cout<<"Nama : ";fflush(stdin); cin.get(dosen[i].nama,30);

cout<<"Alamat : ";fflush(stdin); cin.get(dosen[i].alamat,50); cout<<endl<<endl;

}

for(i=0;i<j;i++) {

cout<<"Data dosen ke-"<<i+1<<endl; cout<<"---"<<endl;

cout<<"NIP = "<<dosen[i].nip<<endl; cout<<"Nama = "<<dosen[i].nama<<endl; cout<<"Alamat = "<<dosen[i].alamat<<endl; cout<<endl<<endl;

} system("PAUSE"); return EXIT_SUCCESS; }

Hasil eksekusi:

(13)

Struct Sebagai Parameter Fungsi

St ruct j uga dapat digunakan sebagai param et er fungsi. Supaya

pendeklarasian v ariabel st ruct nya t idak berulang kali dan t idak t epat , disarankan

unt uk m endeklarasikan variabelnya secara lokal ( hanya unt uk fungsi yang

m em but uhkannya saj a) . Unt uk lebih j elasnya buat lah program berikut ini:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

26

27 28 29 30 31 32

/*

Program 9.4

Nama File : Lat-9.4.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

typedef struct {

int bil1; int bil2; }data_bilangan;

void tampil_bilangan(data_bilangan bilangan) {

printf("Bilangan pertama = %i\n",bilangan.bil1); printf("Bilangan kedua = %i\n",bilangan.bil2); }

int main(int argc, char *argv[]) {

data_bilangan bilangan;

printf("Masukkan bilangan pertama : "); scanf("%i",&bilangan.bil1);

printf("Masukkan bilangan kedua : "); scanf("%i",&bilangan.bil2);

printf("\n");

tampil_bilangan(bilangan); printf("\n");

system("PAUSE"); return 0;

(14)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

28

29 30 31 32 33 34

/*

Program 9.4

Nama File : Lat-9.4.cpp

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

typedef struct {

int bil1; int bil2; }data_bilangan;

void tampil_bilangan(data_bilangan bilangan) {

cout<<"Bilangan pertama = "<<bilangan.bil1<<endl; cout<<"Bilangan kedua = "<<bilangan.bil2<<endl; }

int main(int argc, char *argv[]) {

data_bilangan bilangan;

cout<<"Masukkan bilangan pertama : "; cin>>bilangan.bil1;

cout<<"Masukkan bilangan kedua : "; cin>>bilangan.bil2;

cout<<endl;

tampil_bilangan(bilangan); cout<<endl; system("PAUSE");

(15)

Hasil eksekusi:

Gam bar 9.5 Hasil eksekusi program Lat 9.4

St ruct j uga bisa digunakan sebagai param et er m asukan dan keluaran. Program nya

sebagai berikut :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

/*

Program 9.5

Nama File : Lat-9.5.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

typedef struct {

int bil1; int bil2; }data_bilangan;

void jumlah_bilangan(data_bilangan *bilangan) {

(*bilangan).bil1=(*bilangan).bil1+1; (*bilangan).bil2=(*bilangan).bil2+2; }

int main(int argc, char *argv[]) {

(16)

25

printf("Masukkan bilangan pertama : "); scanf("%i",&bilangan.bil1);

printf("Masukkan bilangan kedua : "); scanf("%i",&bilangan.bil2);

printf("\n");

jumlah_bilangan(&bilangan);

printf("Bilangan pertama ditambah satu = %i\n" ,bilangan.bil1);

printf("Bilangan kedua ditambah dua = %i\n" ,bilangan.bil2);

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

typedef struct {

int bil1; int bil2; }data_bilangan;

void jumlah_bilangan(data_bilangan *bilangan) {

(*bilangan).bil1=(*bilangan).bil1+1; (*bilangan).bil2=(*bilangan).bil2+2; }

int main(int argc, char *argv[]) {

data_bilangan bilangan;

cout<<"Masukkan bilangan pertama : "; cin>>bilangan.bil1;

cout<<"Masukkan bilangan kedua : "; cin>>bilangan.bil2;

cout<<endl;

(17)

31

32

33 34 35 36

cout<<"Bilangan pertama ditambah satu = " <<bilangan.bil1<<endl;

cout<<"Bilangan kedua ditambah dua = " <<bilangan.bil2<<endl;

cout<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 9.6 Hasil eksekusi program Lat 9.5

Tanda kurung yang digunakan unt uk penulisan ( * bila n ga n ) .bil.. harus disert akan karena operat or t it ik m em punyai pr ior it as lebih t inggi dibandingkan

operat or * sehingga bisa m enyebabkan kesalahan penunj ukkan. Sebenarnya

penulisan ( * bila n ga n) .bil.. dapat digant i m enj adi bila n ga n - > bil.. ( operat or panah) unt uk lebih j elasnya buat lah program berikut ini:

1 2 3 4 5 6 7 8 9

/*

Program 9.6

Nama File : Lat-9.6.c

Programmer : Adam Mukharil Bachtiar, S.Kom. */

(18)

10

typedef struct {

int bil1; int bil2; }data_bilangan;

void jumlah_bilangan(data_bilangan *bilangan) {

bilangan->bil1=bilangan->bil1+1; bilangan->bil2=bilangan->bil2+2; }

int main(int argc, char *argv[]) {

data_bilangan bilangan;

printf("Masukkan bilangan pertama : "); scanf("%i",&bilangan.bil1);

printf("Masukkan bilangan kedua : "); scanf("%i",&bilangan.bil2);

printf("\n");

jumlah_bilangan(&bilangan);

printf("Bilangan pertama ditambah satu = %i\n" ,bilangan.bil1);

printf("Bilangan kedua ditambah dua = %i\n" ,bilangan.bil2);

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

typedef struct {

(19)

18 19 20 21 22 23 24 25 26 27

28

29 30 31

32

33 34 35 36

void jumlah_bilangan(data_bilangan *bilangan) {

bilangan->bil1=bilangan->bil1+1; bilangan->bil2=bilangan->bil2+2; }

int main(int argc, char *argv[]) {

data_bilangan bilangan;

cout<<"Masukkan bilangan pertama : "; cin>>bilangan.bil1;

cout<<"Masukkan bilangan kedua : "; cin>>bilangan.bil2;

cout<<endl;

jumlah_bilangan(&bilangan);

cout<<"Bilangan pertama ditambah satu = " <<bilangan.bil1<<endl;

cout<<"Bilangan kedua ditambah dua = " <<bilangan.bil2<<endl;

cout<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

Gam bar 9.7 Hasil eksekusi program Lat 9.6

Selain sebagai param et er fungsi, st ruct dapat digunakan j uga sebagai nilai

(20)

1

Programmer : Adam Mukharil Bachtiar, S.Kom. */

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

typedef struct {

int tahun; int bulan; int tanggal; }data_tanggal;

data_tanggal tanggal_lahir() {

data_tanggal tgl; tgl.tahun=1986; tgl.bulan=6; tgl.tanggal=5; return tgl; }

int main(int argc, char *argv[]) {

data_tanggal tanggal;

tanggal=tanggal_lahir(); printf("Tanggal Lahir = %i-%i-%i\n\n"

,tanggal.tanggal,tanggal.bulan,tanggal.tahun); system("PAUSE");

Programmer : Adam Mukharil Bachtiar, S.Kom. */

#include <cstdlib> #include <iostream>

using namespace std;

(21)

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

33 34 35

{

int tahun; int bulan; int tanggal; }data_tanggal;

data_tanggal tanggal_lahir() {

data_tanggal tgl; tgl.tahun=1986; tgl.bulan=6; tgl.tanggal=5; return tgl; }

int main(int argc, char *argv[]) {

data_tanggal tanggal;

tanggal=tanggal_lahir();

cout<<"Tanggal Lahir = "<<tanggal.tanggal<<"-"

<<tanggal.bulan<<"-"<<tanggal.tahun<<endl<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

Gambar

Gambar 9.1 Struktur dosen1 dan dosen2
Gambar 9.2 Hasil eksekusi program Lat 9.1
Gambar 9.3 Hasil eksekusi program Lat 9.2
Gambar 9.4 Hasil eksekusi program Lat 9.3
+5

Referensi

Garis besar

Dokumen terkait

variasi mlati. Sehingga mempunyai kesan praktis dan tidak mengganggu gerak penari apalagi ada satu penari pada adegan tertentu menaiki burung garuda. Perlu

2 IMPLEMENTASI TIME DRIVEN ACTIVITY BASED COSTING (TDABC) PADA USAHA KECIL MENENGAH (UKM) TAPE HANDAYANI 82 BONDOWOSO.. Jurnal Akuntansi

BERHASRAT, untuk meningkatkan dan memperkokoh hubungan persahabatan dan kerja sama antara kedua negara dan bangsa berdasarkan persamaan derajat, saling menghormati

Events adalah termasuk notasi utama dalam BPMN yang merepresentasikan sesuatu yang terjadi selama berjalannya proses yang dapat mempengaruhi alur proses. Events

Penelitian ini bertujuan (1) menghitung nilai ekonomi total hutan kota (nilai guna langsung, nilai guna tidak langsung, nilai pilihan, nilai warisan, dan nilai

Peraturan Pemerintah ini merupakan landasan bagi penyelenggaraan kegiatan akuntansi mulai dari satuan kerja Pengguna Anggaran, penyusunan Laporan Keuangan oleh Entitas Pelaporan

Evaluasi Administrasi hanya dilakukan pada hal-hal yang tidak dinilai pada penilaian kualifikasi. Unsur-unsur yang dinilai meliputi Kelengkapan Persyaratan yang

PENERAPAN MODIFIKASI BOLA DAN LAPANGAN UNTUK MENINGKATKAN HASIL BELAJAR PERMAINAN KASTI.. Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu