Title: Struct
1Struct
2Struct
- Pendeklarasian struct
- Struct dalam struct
- Array struct
- Pointer untuk struct
- Pengiriman struct ke fungsi by value dan by
reference
3Pendahuluan
- Tipe data dasar int, float, double, char, void
- Tipe data lain enumeration , structure, bit
field, union - Kata Kunci typedef bukan tipe data tetapi untuk
mendefinisikan suatu nama tipe data menjadi nama
lain
4Struct
- pengelompokan variabel-variabel (dapat
berbeda/sama tipe datanya) yang bernaung dalam
satu nama yang sama - elemen2 dalam array memiliki tipe data yang sama
5Pendeklarasian struct dan pendeklarasian variabel
struct Persediaan char Kode5 char
Nama30 int Unit float Harga
struct Persediaan char Kode5 char
Nama30 int Unit float Harga psd_pusat,
psd_cab C123,Sabun,5,1250.5
6Pendeklarasian var dg tipe data struct
Struct Persediaan psd_pusat, psd_cab Struct
Persediaan psd_pusat, psd_cab C123,Sabun,5,1
250.5 struct char Kode5 char
Nama30 int Unit float Harga psd_pusat,
psd_cab C123,Sabun,5,1250.5
7Struct dalam struct
main() struct Tanggal int hari, bulan,
tahun struct Alamat char
jalan30 char kota20
8Struct dalam struct
struct char Nama40 struct Tanggal
Masuk struct Alamat Tinggal float Gaji
Karyawan "Arief Kurniawan",17,11,87,"Jalan
Raya 5","Yogyakarta",500000
9Struct dalam struct
printf("Menampilkan Data Karyawan\n") printf("Nam
a Karyawan s\n", Karyawan.Nama) printf("Tangga
l Masuk 2d-2d-2d\n", Karyawan.Masuk.hari,
Karyawan.Masuk.bulan, Karyawan.Masuk.tahun) print
f("Alamat s-s\n", Karyawan.Tinggal.jalan
, Karyawan.Tinggal.kota) printf("Gaji/bulan
Rp 10f\n", Karyawan.Gaji)
10Array struct
- Elemen2 dari array dapat berupa struct
- struct Persediaan
- char Kode5
- char Nama30
- int Unit
- float Harga
-
- struct Persediaan Psd100
- "M123","Monitor",5,1000000,
- "D124","Disket",5,50000,
- "P123","Printer",5,600000
-
11Pointer untuk struct
struct Persediaan char Kode5 char
Nama30 int Unit float Harga
psd_pusat, p p psd_pusat
Cara mengakses Persediaan.Kode P-gtKode (p).Kode
12Pointer untuk struct
P pointer yang menunjuk ke alamat variabel
Persediaan (p) menunjukkan nilai data dilokasi
yang ditunjuk oleh pointer p yaitu nilai variabel
struktur Persediaan (p).Kode menunjuk nilai
elemen Kode untuk variabel struktur Persediaan
13Pointer untuk struct
typedef struct char jalan30 char
kota25 alamat struct char Nama25
alamat tinggal int jamkerja6 karyawan,
pk
Untuk mengakses jam kerja hari ke-4 karyawan.jamke
rja3 pk-gtjamkerja3 (pk).jamkerja3 (karyawa
n.jamkerja3) (pk-gtjamkerja3) ((pk).jamkerja3)
14Pengiriman struct ke fungsi by value
main() struct date / definisi lokal dari
tipe date / int month int day int
year today printf("Enter the current date
(mm-dd-yyyy) ") scanf("d-d-d",
today.month, today.day, today.year) cetak_tan
ggal(today.month, today.day, today.year)
15Pengiriman struct ke fungsi by value
void cetak_tanggal(int mm, int dd, int
yy) static char nama_bulan "Wrong
month", "January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October", "November",
"December" printf("Todays date is s d,
d\n\n", nama_bulanmm,dd,yy)
16Struct sbg parameter fungsi scr acuan
main() struct koordinat int x int y
posisi printf("Masukkan koordinat posisi(x,y)
") scanf("d, d", posisi.x, posisi.y)
17printf("x, y semula d, d\n", posisi.x,
posisi.y) tukar_xy(posisi.x, posisi.y) printf(
"x, y sekarang d, d\n", posisi.x,
posisi.y) void tukar_xy(int a, int b) int
z z a a b b z
18Hasil
Enter the current date (mm-dd-yyyy)
5-29-2001 Todays date is May 29, 2001
Masukkan koordinat posisi (x, y) 34, 21 x, y
semula 34, 21 x, y sekarang 21, 34
19Contoh program
main() struct Persediaan char
Kode5 char Nama30 int Unit float
Harga struct Persediaan p ,psd
"M123","Monitor",5,125000.00 p
psd Tampil(psd.Kode,p-gtNama,p-gtUnit,(psd.Harg
a))
20Contoh program
void Tampil(char kode,char nama, int unit,
float harga) printf("Kode Persediaan
s\n",kode) printf("Nama Persediaan
s\n",nama) printf("Unit Persediaan
d\n",unit) printf("Harga Perunit
9.2f\n",harga)
21Fungsi parameternya berupa pointer yg menunjuk ke
struktur
main() struct koordinat posisi printf("Masukk
an koordinat posisi (x,y)") scanf("d, d",
posisi.x, posisi.y) printf("x, y semula
d, d\n", posisi.x, posisi.y) tukar_xy(posi
si) printf("x, y sekarang d, d\n",
posisi.x, posisi.y)
22Fungsi parameternya berupa pointer yg menunjuk ke
struktur
void tukar_xy(struct koordinat pos_xy) int
z z pos_xy-gtx pos_xy-gtx pos_xy-gty
pos_xy-gty z
23Fungsi parameternya berupa pointer yg menunjuk ke
struktur
void tukar_xy(struct koordinat pos_xy) int
z z (pos_xy).x (pos_xy).x
(pos_xy).y (pos_xy).y z (pos_xy).x
pos_xy-gtx
24Pengiriman struct secara acuan
void Ubah(struct Persediaan p) p-gtUnit
p-gtUnit -1 return
void main() struct Persediaan psd
"M123","Monitor",5,125000.00 Ubah(psd)
25Pengiriman struct secara nilai
struct Persediaan Ubah2(struct Persediaan
p) p.Unit p.Unit -1 return(p)
void main() struct Persediaan p,psd
"M123","Monitor",5,125000.00 psd
Ubah2(psd)
26Variabel struktur sebagai var global
struct Persediaan psd "M123","Monitor",5,125000.
00 void main() Ubah() void Ubah(void)
psd.Unit psd.Unit 1 return
27Struct yang berisi pointer
main() struct int_pointers int ptr1,
ptr2 struct int_pointers ptrs int i1
154, i2 ptrs.ptr1 i1 ptrs.ptr2
i2 ptrs.ptr2 -97 printf("i1 d,
ptrs.ptr1 d\n", i1, ptrs.ptr1) printf("i2
d, ptrs.ptr2 d\n", i2, ptrs.ptr2)
28Struct yang berisi pointer