pe ndahuluan struct · 2010-02-22 · cara pendeklarasian tersebut timbul suatu permasalahan yaitu...

21
DISU DIK Pe mem den Stru berb stru 1 2 3 4 5 6 7 USUN OLEH KTAT PEMR endahu Struct miliki tipe ngan array uct digunak beda. Bent Sebaga uct tersebut //untuk struct { long char char } H : ADAM MU OGRAMAN DIuluan atau lebih data yang yang hany kan apabila uk umum d ai contoh u t akan dide k turbo data_do g int ni r nama[3 r alamat UKHARIL BA I KTAT MATSTRU Strucdikenal de g berbeda. ya memiliki a data yan dari pendek //untuk struct na { tipe_d tipe_d tipe_d }; //untuk typedef s { tipe_d tipe_d tipe_d }nama_s untuk mem eklarasikan & borlan osen ip; 31]; t[51]; ACHTIAR, S. A KULIAH BAB I UCT (RE t engan istila Secara p i satu buah ng ingin di klarasian st turbo dan ma_strucdata_1 var data_2 var data_n var dev-c++ struct data_1 var data_2 var data_n var struct; mbuat struct sebagai be nd c .Kom. PEMROGRA IX ECORD ah record pendeklaras h tipe data ikelompokk truct adalah borland c t riabel_1; riabel_2; riabel_n; riabel_1; riabel_2; riabel_n; t yang me erikut: //untuk typedef { long char char }data_do AMAN I ) adalah kum sian, struct untuk set kan memili h sebagai b c engandung dev-c++ struct int nip nama[31 alamat[ osen; IF mpulan dat t sangat b tiap kumpu ki tipe dat berikut: data dose + p; 1]; [51]; HAL 1 F ta yang berbeda ulannya. ta yang n maka

Upload: others

Post on 01-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

DISU

DIK

Pe

mem

den

Stru

berb

stru

1 2 3 4 5 6 7

USUN OLEH

KTAT PEMR

endahu

Struct

miliki tipe

ngan array

uct digunak

beda. Bent

Sebaga

uct tersebut

//untukstruct { long char char}

H : ADAM MU

ROGRAMAN

DIK

uluan

atau lebih

data yang

yang hany

kan apabila

uk umum d

ai contoh u

t akan dide

k turbo data_do

g int nir nama[3r alamat

UKHARIL BA

I

KTAT MATA

STRU

Struct

dikenal de

g berbeda.

ya memiliki

a data yan

dari pendek

//untuk t

struct na

{

tipe_d

tipe_d

tipe_d

};

//untuk d

typedef s

{

tipe_d

tipe_d

tipe_d

}nama_s

untuk mem

eklarasikan

& borlanosen

ip; 31]; t[51];

ACHTIAR, S.

A KULIAH P

BAB IUCT (RE

t

engan istila

Secara p

i satu buah

ng ingin di

klarasian st

turbo dan

ma_struct

data_1 var

data_2 var

data_n var

dev-c++

struct

data_1 var

data_2 var

data_n var

struct;

mbuat struct

sebagai be

nd c

.Kom.

PEMROGRA

IX ECORD

ah record

pendeklaras

h tipe data

ikelompokk

truct adalah

borland c

t

riabel_1;

riabel_2;

riabel_n;

riabel_1;

riabel_2;

riabel_n;

t yang me

erikut:

//untuk typedef { long char char }data_do

AMAN I

)

adalah kum

sian, struct

untuk set

kan memili

h sebagai b

c

engandung

dev-c++struct

int nipnama[31alamat[

osen;

IF

mpulan dat

t sangat b

tiap kumpu

ki tipe dat

berikut:

data dose

+

p; 1]; [51];

HAL 1

F

ta yang

berbeda

ulannya.

ta yang

n maka

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 2

Deklarasi di atas berarti ada suatu tipe data yang bernama data_dosen di

mana setiap data yang akan dideklarasikan menggunakan tipe data data_dosen akan

mempunyau field nip, nama, dan alamat. Untuk dapat menggunakan tipe data

tersebut sebuah variabel harus dideklarasikan menggunakan nama structnya. Bentuk

umum pendeklarasian variabel structnya adalah sebagai berikut:

nama_struct variabel_1,variabel_2,…,variabel_n;

Adapun contohnya sebagai berikut:

1 data_dosen dosen1,dosen2;

Deklarasi dua variabel di atas berarti ada variabel bernama dosen1 dan

dosen2 di mana tiap variabel tersebut mempunyai field sesuai dengan data_dosen.

Apabila digambarkan maka struktur dosen1 dan dosen2 akan seperti pada gambar di

bawah ini:

dosen1 dosen2

nip nama alamat nip nama alamat

Gambar 9.1 Struktur dosen1 dan dosen2

Selain deklarasi variabelnya ada hal yang harus diperhatikan juga yaitu cara

untuk mengisi dan memanggil nilai yang ada di dalam sebuah struct. Cara pengisian

nilai dan pemanggilan nilainya adalah sebagai berikut:

//untuk pengisian nilai

variabel_struct.field_struct=nilai;

//untuk pemanggilannya

gunakan perintah printf atau cout lalu gunakan

format variabel_struct.field_struct untuk

memanggil nilainya

Sebagai contoh untuk mengisi nilai pada struct data_dosen di atas dan memanggil

nilainya adalah sebagai berikut:

1 2 3 4 5 6

//untuk mengisi nilaidosen1.nip=41277006024; dosen1.nama=”adam mukharil b” dosen1.alamat=”bandung”; atau scanf(“%li”,&dosen1.nip); //dst

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 3

7 8 9 10 11 12 13

atau cin>>dosen1.nip;//dst //untuk memanggil nilai printf(“%li\n”,dosen1.nip);//dst atau cout<<dosen1.nip<<endl;

Untuk lebih jelasnya buatlah 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 33 34 35 36 37

/* Program 9.1 Nama File : Lat-9.1.c 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 printf("Data Dosen Pertama\n"); printf("------------------\n"); printf("NIP : %li\n",dosen1.nip);

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 4

38 39 40 41 42 43 44 45 46 47 48 49

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"); 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 27 28 29 30 31 32

/* Program 9.1 Nama File : Lat-9.1.cpp 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"; cout<<"NIP : ";cin>>dosen2.nip;

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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:

Gambar 9.2 Hasil eksekusi program Lat 9.1

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 6

Struct di Dalam Struct

Suatu struct dapat mengandung struct lainnya untuk dijadikan field di

dalamnya. Sebagai gambaran struct data_dosen mempunyai sebuah field struct

tanggal lahir yang berisi field tanggal, bulan, dan tahun. Bentuk umum

pendeklarasiannya adalah sebagai berikut:

//struct 1

typedef struct

{

tipe_data_1 variabel_1;

tipe_data_2 variabel_2;

tipe_data_n variabel_n;

}nama_struct1;

//struct dalam struct

typedef struct

{

tipe_data_1 variabel_1;

tipe_data_2 variabel_2;

nama_struct1 nama_variabel_struct_1;

}nama_struct_2;

Sebagai contoh untuk kasus data_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]; data_tanggal tanggal_lahir; }data_dosen;

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 7

Untuk lebih jelasnya buatlah 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 33 34 35 36 37 38 39 40 41

/* Program 9.2 Nama File : Lat-9.2.c 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"); printf("NIP = %li\n",dosen.nip); printf("Nama = %s\n",dosen.nama); printf("Alamat = %s\n",dosen.alamat); printf("Tanggal lahir = %i\n",

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 8

42 43 44 45 46 47

dosen.tanggal_lahir.tanggal); printf("Bulan lahir = %i\n", dosen.tanggal_lahir.bulan); printf("Tahun lahir = %i\n", dosen.tanggal_lahir.tahun); 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 27 28 29 30 31 32 33 34 35

/* Program 9.2 Nama File : Lat-9.2.cpp 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 { long int nip; char nama[31]; char alamat[51]; data_tanggal tanggal_lahir; }data_dosen; data_dosen dosen; int main(int argc, char *argv[]) { cout<<"NIP : ";cin>>dosen.nip; cout<<"Nama : ";fflush(stdin); cin.get(dosen.nama,30); cout<<"Alamat : ";fflush(stdin); cin.get(dosen.alamat,50);

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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:

Gambar 9.3 Hasil eksekusi program Lat 9.2

Catatan

Apabila ingin menggunakan struct dalam struct maka struct yang

akan dipanggil di dalam structnya harus sudah terdefinisi terlebih

dahulu (letaknya harus lebih dahulu dibandingkan struct yang akan

memanggil).

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 10

Array Dari Struct (Array of Record)

Pada sub bab sebelumnya telah dipelajari bagaimana cara untuk

mendeklarasikan sebuah variabel dengan tipe data struct yang telah dibuat. Tapi dari

cara pendeklarasian tersebut timbul suatu permasalahan yaitu bagaimana kalau

deklarasi variabel structnya sangat banyak? Permasalahan tersebut dapat

dipecahkan dengan cara mendeklarasikan variabel structnya menggunakan variabel

bertipe array. Cara seperti itu sering disebut sebagai array of struct.

Contoh kasusnya adalah sebuah struct yang menampung 100 data dosen.

Untuk memecahkannya buatlah struct data_dosen yang nantinya akan digunakan

untuk mendeklarasikan variabel dosen yang bertipe array. Untuk lebih jelasnya

buatlah 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"); printf("NIP : ");scanf("%li",&dosen[i].nip);

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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; cout<<"Berapa data dosen? ";cin>>j;

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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:

Gambar 9.4 Hasil eksekusi program Lat 9.3

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 13

Struct Sebagai Parameter Fungsi

Struct juga dapat digunakan sebagai parameter fungsi. Supaya

pendeklarasian variabel structnya tidak berulang kali dan tidak tepat, disarankan

untuk mendeklarasikan variabelnya secara lokal (hanya untuk fungsi yang

membutuhkannya saja). Untuk lebih jelasnya buatlah 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; }

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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"); return EXIT_SUCCESS; }

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 15

Hasil eksekusi:

Gambar 9.5 Hasil eksekusi program Lat 9.4

Struct juga bisa digunakan sebagai parameter masukan dan keluaran. Programnya

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[]) { data_bilangan bilangan;

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 16

25 26 27 28 29 30 31 32 33 34

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); printf("\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 27 28 29 30

/* Program 9.5 Nama File : Lat-9.5.cpp 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; jumlah_bilangan(&bilangan);

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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:

Gambar 9.6 Hasil eksekusi program Lat 9.5

Tanda kurung yang digunakan untuk penulisan (*bilangan).bil.. harus

disertakan karena operator titik mempunyai prioritas lebih tinggi dibandingkan

operator * sehingga bisa menyebabkan kesalahan penunjukkan. Sebenarnya

penulisan (*bilangan).bil.. dapat diganti menjadi bilangan->bil.. (operator panah)

untuk lebih jelasnya buatlah 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. */ #include <stdio.h> #include <stdlib.h>

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 18

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

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); printf("\n"); system("PAUSE"); return 0; }

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

/* Program 9.5 Nama File : Lat-9.5.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; typedef struct { int bil1; int bil2; }data_bilangan;

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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:

Gambar 9.7 Hasil eksekusi program Lat 9.6

Selain sebagai parameter fungsi, struct dapat digunakan juga sebagai nilai

balik suatu fungsi. Sebagai contoh buatlah program berikut ini:

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 20

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

/* Program 9.7 Nama File : Lat-9.7.c 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"); return 0; }

1 2 3 4 5 6 7 8 9 10 11 12

/* Program 9.7 Nama File : Lat-9.7.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> using namespace std; typedef struct

DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

DIKTAT PEMROGRAMAN I HAL 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 9.8 Hasil eksekusi program Lat 9.7