laporan resmi 29-32 konsep pemrograman [struct]

28
8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct] http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 1/28 1 PRAKTIKUM 29 Struct 1 A. Dasar Teori Struktur adalah pengelompokan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel -variabel yang bertipe sama dalam satu nama, maka suatu struktur dapat terdiri atas variabel -variabel yang berbeda tipenya dalam satu nama struktur. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah. Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut sebagai elemen dari struktur atau field. Dengan demikian dimungkinkan suatu struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float, double, dan lain -lain. Contoh sebuah struktur adalah informasi data tanggal date! yang berisi" - day, month dan year Mendefinisikan & Mendeklarasikan Struktur Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh pendefinisian sebuah tipe data struktur " struct date { int month; int day; int year; }; #arena semua field-nya bertipe sama, bisa juga ditulis sbb " struct date { int month, day, year; }; yang mendefinisikan sebuah tipe data struktur bernama date yang memiliki tiga buah elemen field! berupa " - day, month dan year #eterangan untuk definisi struktur ini dapat dilihat lebih jelas pada gambar $%.&. Selanjutnya untuk mendeklarasikan sebuah variabel today yang bertipe struktur date pernyataan yang diperlukan seperti diilustrasikan pada gambar $%.$. 'ernyataan di atas menyatakan bah(a variabel today bertipe struktur date 2110131036 |RENDRA BUDI HUTAMA Laporan Praktikum Konsep Pemrograman – Struct 1

Upload: rendra-budi-hutama

Post on 07-Aug-2018

372 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 1/28

1

PRAKTIKUM 29Struct 1

A. Dasar Teori

Struktur adalah pengelompokan variabel-variabel yang bernaung dalam satu nama yangsama. Berbeda dengan array yang berisi kumpulan variabel -variabel yang bertipe sama

dalam satu nama, maka suatu struktur dapat terdiri atas variabel -variabel yang berbeda

tipenya dalam satu nama struktur. Struktur biasa dipakai untuk mengelompokkan beberapa

informasi yang berkaitan menjadi sebuah.

Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut sebagai elemen dari

struktur atau field. Dengan demikian dimungkinkan suatu struktur dapat berisi elemen-elemen

data berbeda tipe seperti char, int, float, double, dan lain -lain.

Contoh sebuah struktur adalah informasi data tanggal date! yang berisi"

- day, month dan year

Mendefinisikan & Mendeklarasikan Struktur

Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh pendefinisian

sebuah tipe data struktur "

struct date {

int month;

int day;

int year;

};

#arena semua field-nya bertipe sama, bisa juga ditulis sbb "

struct date {

int month, day, year;

};

yang mendefinisikan sebuah tipe data struktur bernama date yang memiliki tiga buah elemen

field! berupa "

- day, month dan year

#eterangan untuk definisi struktur ini dapat dilihat lebih jelas pada gambar $%.&.

Selanjutnya untuk mendeklarasikan sebuah variabel today yang bertipe struktur date pernyataan

yang diperlukan seperti diilustrasikan pada gambar $%.$.

'ernyataan di atas menyatakan bah(a variabel today bertipe struktur date

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 2: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 2/28

2

Mengakses le!en Struktur

)lemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama variabel struktur 

diikuti dengan operator titik *.+! dan nama dari elemen strukturnya. Cara penulisannya

sebagai berikut "

variabel_struktur.nama_field

Menginisialisasi Struktur

Sebuah struktur juga bisa diinisialisasi pada saat dideklarasikan. al ini serupa dengan inisialisasi

array, yaitu elemen-elemennya dituliskan di dalam sepasang kurung kura(al * *! dengan

masing-masing dipisahkan dengan koma. Deklarasi struktur didahului dengan kata kunci static,

contoh

static struct zodiak bintang = {"agitarius", !!, , !, !};

Arra" dan Struktur

)lemen-elemen dari suatu array juga dapat berbentuk sebuah struktur. /isalnya array yang dipakai

untuk menyimpan sejumlah data sis(a struct student!. 0rray struktur berdimensi satu inimembentuk suatu tabel, dengan barisnya menunjukkan elemen dari array-nya dan kolomnya

menunjukkan elemen dari struktur. Dalam hal ini maka deklarasi yang dibutuhkan adalah

sebagai berikut "

#define $%& !'

struct date { ((definisi dari ti)e date

int month;

int day;

int year;

};

struct )erson { ((definisi dari ti)e )ersonchar name*+';

struct date birthday;

};

((deklarasi dari variabel array student

struct )erson student*$%&;

yang artinya, mendeklarasikan array student yang memiliki elemen yang bertipe struct

 person sebanyak /0#S. Setelah array student dideklarasikan, maka ruang yang

disediakan ditunjukkan dalam gambar $%.1.

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 3: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 3/28

3

#. Perco$aan

&. 2ntuk semua program yang ada di modul teori Struktur & "

- #etikkan kembali program-program tsb

- 3alankan programnya

- 0nalisis 4 buatlah kesimpulan terhadap program-program tsb

a. 5isting 'rogram

#include stdio.h

#define $%& !'

struct date{

int month, day, year;

};

struct student {

char name*+';

struct date birthday;};

main/0 {

struct student data_mhs*$%&;

int i=', 1ml;

char lagi;

do

{

fflush/stdin0; ((ha)us sisa data dalam buffer keyboard

)rintf/"2n3ame 4 "0;

gets/data_mhs*i.name0;

fflush/stdin0; ((ha)us sisa data dalam buffer keyboard

)rintf/"5irthday /mm-dd-yyyy0"0;

scanf/"6d-6d-

6d",7data_mhs*i.birthday.month,7data_mhs*i.birthday.day,7data_mhs*i.birthday.year0

;

i88;

fflush/stdin0; ((ha)us sisa data dalam buffer keyboard

)rintf/"2n$au memasukkan data lagi *9(: "0;

lagi = getchar/0; ((ha)us susa data dalam buffer keyboard

} <hile/lagi == 9 >> lagi == y0;

1ml = i;

)rintf/"2n?%:% $%@%AB%2n"0;

for/i=';i1ml;i880

{

)rintf/"6d. 3ame2t2t4 6s",i8,data_mhs*i.name0;

)rintf/"2n 5irthday2t4 6d-6d-

6d2n2n",data_mhs*i.birthday.month,data_mhs*i.birthday.day,data_mhs*i.birthday.year

0;

}

}

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 4: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 4/28

4

 b. Capture 'rogram

c. 0nalisis 'rogram

'rogram ini adalah program untuk mendata tanggal lahir seseorang. Dalam prosesnya,digunakanlah struct yang berada pada struct. Struct pertama adalah struct untuk menyimpan

data mahasis(a yaitu berupa namaname*+'0  dan tanggal lahirdate!. 6anggal lahirdate!

sendiri sebenarnya adalah sebuah struct tersendiri yang memiliki bagian-bagian sendiri pula

yaitu bulanmonth!, hariday! dan tahunyear!.

'ertama untuk meminta input data, program melakukannya secara berulang atau looping

menggunakan do (hile dikarenakan proses input data pasti terjadi minimal sekali. Selanjutnya

untuk menampilkan data yang telah diinputkan ke struct tadi, digunakanlah looping for 

sebanyak jumlah data yang ada pada struct.

$. Buatlah $ variabel today  4 tomorro<! bertipe struct date. 7silah variabel today dengan tanggal

hari ini. 6emukan tanggal untuk variabel tomorro<.

#eterangan"

- Berikan pengecekan untuk akhir bulan

- Berikan pengecekan untuk akhir tahun

- Berikan pengecekan untuk bulan 8ebruari di tahun kabisat

6ahun kabisat adalah "

- #elipatan 1, tapi bukan kelipatan &99

- #elipatan &99 yang juga merupakan kelipatan 199

a. 5isting 'rogram

#include stdio.h

#define $%& !'

struct date{

int day, month, year;

};

int cariCum@ari/int month,int year0;

main/0 {

struct date today,tomorro<;

int 1ml@ari = +';

char lagi;

)rintf/"2nDEFGE%$ DH3I%EA :%3GG%J 5HF&"0;

)rintf/"2n==========================================2n"0;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 5: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 5/28

5

do

{

)rintf/"2n$asukkan tanggal hari ini /mm-dd-yyyy02t4 "0;

scanf/"6d-6d-6d",7today.day,7today.month,7today.year0;

if/today.day 8 cariCum@ari/today.month,today.year00

{

if/today.month == !0

{

((Ganti tahun

tomorro<.day = ;

tomorro<.month = ;

tomorro<.year= today.year 8 ;

}

else

{

((Ganti bulan

tomorro<.day = ;

tomorro<.month = today.month 8 ;

tomorro<.year= today.year;

}

}

else{

tomorro<.day = today.day 8 ;

tomorro<.month= today.month;

tomorro<.year= today.year;

}

)rintf/"$aka tanggal besok adalah 2t2t4 6!d-6!d-

6d",tomorro<.day,tomorro<.month,tomorro<.year0;

fflush/stdin0; ((ha)us sisa data dalam buffer keyboard

)rintf/"2n2n$au memasukkan tanggal lagi *9(: "0;

lagi = getchar/0; ((ha)us sisa data dalam buffer keyboard

} <hile/lagi == 9 >> lagi == y0;

}

int cariCum@ari/int bulan,int tahun0

{

int daftar@ari* = {+,!K,+,+',+,+',+,+,+',+,+',+};

int 1um@ari = daftar@ari*bulan-;

if/bulan == ! 77 tahun 6 L == '0

{

if/tahun 6 '' M= ' >> tahun 6 L'' == '0

1um@ari = !N;

}

return 1um@ari;}

 b. Capture 'rogram

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 6: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 6/28

6

c. 0nalisis 'rogram

'rogram pencari tanggal esok hari menggunakan struct date yang digunakan sebagai

 penampung tanggal hari initoday! dan tanggal besoktomorro<!. 'ada dasarnya program ini

cukup mudah karena kita hanya perlu menambahkan & di struct date today  yang bagian

hariday!. :amun hal tersebut menjadi agak rumit apabila tanggal yang dimasukkan adalah

tanggal di akhir bulan seperti ;9 atau ;&.

#arena itu, perlu diketahui dulu berapa jumlah hari dalam bula tersebut. Disini dibuatlah

fungsi untuk mencari jumlah hari dalam satu bulan yaitu fungsi cariCum@ari/0. 0pabila bulan

yang dimasukkan adalah bulan $8ebruari!, maka perlu juga dicek apakah tahun yang

dimasukkan adalah tahun kabisat atau bukan sesuai kriteria pada soal karena bulan 8ebruari

 jumlahnya berubah-rubah sesuai tahun kabisat tersebut.

;. Sebuah 'erusahaan 0yam goreng dengan nama

<erobak 8ried Chicken yang telah lumayan

 banyak pelanggannya, ingin dibantu

dibuatkan program demi kelancaran

usahanya. <erobak 8ried Chickenmempunyai Daftar arga 0yam sebagaimana

disamping "

#etentuannya " setiap pembeli dikenakan pajak sebesar &9= dari total pembelian'etunjuk "

- <unakan tipe data struct

- Deklarasikan variabel bertipe array of struct- <unakan >t sebagai tabulasi untuk mengatur tampilan

- <unakan ?string.h@ jika diperlukan

a. 5isting 'rogram

#include stdio.h

#include string.h

struct datamenu {

char kode;

int 1umlah;

};

main/0

{

struct datamenu keran1ang*+';

int i = ',1,harga,total=';

char 1<b,1enis*O;

)rintf/":oko GPI-Gerobak Pried Ihicken2n"0;

)rintf/"2n?%P:%E @%EG%"0;

)rintf/"2n&ode Cenis @arga Der Dotong"0;

)rintf/"2n? ?ada E). Q'''.''"0;

)rintf/"2nD Daha E). L'''.''"0;

)rintf/"2n aya) E). +'''.''"0;

)rintf/"2n2n@arga belum termasuk )a1ak 4 ' 66"0;

)rintf/"2n2n$asukkan Desanan %nda"0;

do

{)rintf/"2nDesanan ke-6d",i80;

fflush/stdin0;

)rintf/"2nCenis *?(D(2t4 "0;

scanf/"6c",7keran1ang*i.kode0;

fflush/stdin0;

)rintf/"Cumlah 2t2t4 "0;

scanf/"6d",7keran1ang*i.1umlah0;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman –Struct 1

Page 7: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 7/28

Page 8: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 8/28

Page 9: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 9/28

9

PRAKTIKUM '(Struct 2

A. Dasar Teori

Struktur dan )ungsi

/ele(atkan sebuah struktur untuk menjadi parameter sebuah fungsi dapat dilakukan sama

dengan pengiriman parameter berupa variabel biasa. 8ungsi yang mendapat kiriman parameter 

tersebut juga bisa mengirimkan hasil baliknya yang juga berupa sebuah struktur pass by

reference!.

Mele*atkan le!en Struktur ke dala! )ungsi

/ele(atkan parameter berupa elemen struktur dapat dilakukan sebagaimana pengiriman

 parameter berupa variabel biasa, dapat dilakukan baik secara nilai pass by value! maupun

secara acuan pass by reference!.

main/0{

struct date {

int month;

int day;

int year;

} today;

...

cetak_tanggal/today.month, today.day, today.year0;

...

}

void cetak_tanggal/int mm, int dd, int yy0{

static char Snama_bulan* = {

"Brong month", "Canuary", "Pebruary", "$arch",

"%)ril", "$ay", "Cune", "Culy", "%ugust",

"e)tember", "Fctober", "3ovember", "?ecember"

};

)rintf/":odays date is 6s 6d, 6d2n",

nama_bulan*mm,dd,yy0;

}

6ampak bah(a elemen dari struktur dile(atkan ke fungsi memakai bentuk pengaksesan

elemen struktur, berupa "

cetak_tanggal/today.month, today.day, today.year0;

0pabila nilai suatu elemen struktur diharapkan akan diubah oleh fungsi, maka yang

dile(atkan haruslah berupa alamat dari elemen struktur pass by reference!. 2ntuk keperluan ini,

operator alamat ditempatkan di depan nama variabel struktur bukan di depan nama elemen

struktur!.

main/0 {struct koordinat {

int U;

int y;

} )osisi;

...

tukar_Uy/7)osisi.U, 7)osisi.y0;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 10: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 10/28

10

...

}

void tukar_Uy/int Sa, int Sb0 {

int z;

z = Sa;

Sa = Sb;

Sb = z;

}

Mele*atkan Struktur ke dala! )ungsi

'ada program di atas misalnya, semua elemen dari struktur dikirimkan ke fungsi cetaktanggal!,

dengan maksud nilai elemen dari struktur akan ditampilkan di layar. 2ntuk keadaan seperti

ini, lebih baik kalau parameter fungsi diubah menjadi bentuk struktur, sehingga parameter 

fungsi tidak lagi sebanyak tiga buah, melainkan hanya satu. Selengkapnya, perhatikan program

di ba(ah ini.

struct date {

int month;int day;

int year;

};

void cetak_tanggal/struct date0;

main/0 {

struct date today;

...

cetak_tanggal/today0;

...

}

void cetak_tanggal/struct date no<0 {

static char Snama_bulan* = {

"Brong month", "Canuary", "Pebruary", "$arch",

"%)ril", "$ay", "Cune", "Culy", "%ugust",

"e)tember", "Fctober", "3ovember", "?ecember"

};

)rintf/":odays date is 6s 6d, 6d2n2n",

nama_bulan*no<.month, no<.day, no<.year0;

}

#. Perco$aan

&. Buatlah program sbb"

Inut "Data mahasis(a yang terdiri atas nama, nilai 6ugas, nilai 26S, nilai 20S sebanyak n mahasis(a

+utut "

6ampilkan dalam bentuk tabel

 :o, :', :ama /hs, :ilai tugas, nilai 26S, nilai 20S, nilai 0khir, <rade

:ilai 0khir $9= tugas E 19= 26S E 19=20S! dengan ketentuan sbb "

- :ilai akhir @ F9 " <rade 0

- :ilai akhir @ G9 " <rade B

- :ilai akhir @ H9 " <rade C

- :ilai akhir @ A9 " <rade D

- :ilai akhir ? A9 " <rade )Petun,uk  "

- <unakan array of struct

- 'erhatikan contoh tampilan

- :ilai tambah, gunakan array sebagai parameter fungsi misal $ fungsi " input! dan

tampil!!

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 11: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 11/28

11

a. 5isting 'rogram

#include stdio.h

#include string.h

int 1umis<a;

struct nilai {

char nama*+';

float nilai:ugas,nilaiT:,nilaiT%;

};

void in)ut/struct nilai data*0;

void tam)il/struct nilai data*0;

main/0

{

struct nilai mahasis<a*+';

)rintf/"2n$H3G@A:T3G 3AJ%A %&@AE $%:% &TJA%@ &F3HD DH$EFGE%$%3"0;

)rintf/"2n=====================================================2n"0;

in)ut/mahasis<a0;

tam)il/mahasis<a0;

}

void in)ut/struct nilai data*0

{

int i;

fflush/stdin0;

)rintf/"2n5era)a 1umlah mahasis<a "0;

scanf/"6d",71umis<a0;

)rintf/"2n$asukan data mahasis<a"0;

)rintf/"2n=====================================================2n"0;

for/i=';i1umis<a;i880

{

)rintf/"2n?ata ke-6d",i80;

fflush/stdin0;

)rintf/"2n3ama2t2t= "0;

scanf/"6s",data*i.nama0;fflush/stdin0;

)rintf/"3ilai tugas2t= "0;

scanf/"6f",7data*i.nilai:ugas0;

fflush/stdin0;

)rintf/"3ilai T:2t= "0;

scanf/"6f",7data*i.nilaiT:0;

)rintf/"3ilai T%2t= "0;

scanf/"6f",7data*i.nilaiT%0;

}

}

void tam)il/struct nilai data*0

{

int i,1;

float akhir;

char grade;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 12: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 12/28

12

)rintf/"2n2t2t2t2t?%P:%E 3AJ%A"0;

)rintf/"2n2t2t2t$%:%&TJA%@ &F3HD DH$EFGE%$%3"0;

)rintf/"2n=================================================================="0;

)rintf/"2n3o2t3ama $ahasis<a2t:ugas2tT:2tT%2t%khir2tGrade"0;

)rintf/"2n=================================================================="0;

for/1=';11umis<a;1880

{

akhir = /'.! S data*1.nilai:ugas0 8 /'.L S data*1.nilaiT%0 8 8 /'.L S

data*1.nilaiT:0;

if/akhir=K'0

grade = %;

else if/akhir=V'0

grade = 5;

else if/akhir=O'0

grade = I;

else if/akhir=Q'0grade = ?;

else

grade = H;

)rintf/"2n6d2t6s2t2t6.'f2t6.'f2t6.'f2t6.'f2t

6c",18,data*1.nama,data*1.nilai:ugas,data*1.nilaiT:,data*1.nilaiT%,akhir,grade0;

}

)rintf/"2n=================================================================="0;

)rintf/"2n2n:otal mahasis<a = 6d",1umis<a0;

}

 b. Capture 'rogram

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 13: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 13/28

13

c. 0nalisis 'rogram

'ada program penghitung nilai akhir mata kuliah konsep pemrograman ini, digunakan

sebuah struct untuk menyimpan data nilai mahasis(a yang terdiri dari field nama, nilai tugas,

nilai 26S dan nilai 20S. Struct itu sendiri nantinya akan berupa array sehingga dapat

menyimpan data nilai dari beberapa mahasis(a pula.

2ntuk memasukkan atau menginput data, dibuatlah fungsi input! dengan parameter 

array of struct nilai. 0rray of struct nilai tadi kemudian diisi secara looping satu persatu

hingga user menja(ab tidak :!.

6erakhir untuk menampilkan data yang telah diinputkan, dibuatlah fungsi tampil! dengan

 parameter array of struct nilai itu pula. Data ditampilkan per struct, disetiap prosesnya

dicari nilai akhir sesuai ketentuan yang telah ada. #emudian nilai akhir tersebut diseleksi

menggunakan 78 untuk mencari grade dari mahasis(a tersebut.

$. 6oko I507SJ menjual baju jadi dengan berbagai ukuran dengan daftar harga sbb"

Ketentuan rosesn"a s$$ -

- 3ika membeli lebih dari &9 potong, akan mendapat diskon $9= dari jumlah harga, jika kurang

atau sama dengan &9 potong, maka tidak ada diskon

- 'ajak diberikan sebesar &9= dari harga-diskon!

Petun,uk -- <unakan >t sebagai tabulasi untuk mengatur tampilan

- <unakan ?string.h@ jika diperlukan

- <unakan array of struct

- <unakan array sebagai parameter fungsi misal $ fungsi " input! dan nota!!

a. 5isting 'rogram

#include stdio.h

#include string.h

struct databarang {char kode;

int 1umlah;

};

int n = ';

void in)ut/struct databarang data*0;

void tam)il/struct databarang data*0;

main/0

{

struct databarang keran1ang*+';

)rintf/"2t:oko Jaris"0;

)rintf/"2n2t?aftar @arga"0;

)rintf/"2n================================="0;

)rintf/"2nTkuran2t3ama2t@arga Der Dotong"0;

)rintf/"2n================================="0;

)rintf/"2n2t$%JJ2tE). +O.''',-"0;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 14: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 14/28

14

)rintf/"2n$2t$H?AT$2tE). L+.''',-"0;

)rintf/"2nJ2tJ%EGH2tE). O!.''',-"0;

)rintf/"2n================================="0;

)rintf/"2n2n?a)atkan diskon !' 66 untuk )embelian lebih dari ' )otongM"0;

)rintf/"2nCangan lu)a, )a1aknya ya... ' 66 U /harga - diskon0"0;

in)ut/keran1ang0;

tam)il/keran1ang0;

}

void in)ut/struct databarang data*0

{

char 1<b;

)rintf/"2n2n================================="0;

)rintf/"2n$asukkan Desanan %nda"0;

do

{

)rintf/"2n2nDesanan ke-6d",n80;

fflush/stdin0;

)rintf/"2nTkuran *($(J2t4 "0;

scanf/"6c",7data*n.kode0;fflush/stdin0;

)rintf/"Cumlah 2t2t4 "0;

scanf/"6d",7data*n.1umlah0;

n88;

fflush/stdin0;

)rintf/"5eli lagi *y(n "0;

1<b = getchar/0;

}<hile/1<b == 9 >> 1<b == y0;

}

void tam)il/struct databarang data*0

{int 1,harga,total=',diskon;

char 1enis*V;

)rintf/"2n2n================================="0;

)rintf/"2n2n3ota 5elan1a %nda 4 2n"0;

)rintf/"2n2t2t2t:oko Jaris2n"0;

)rintf/"2n============================================================================"0;

)rintf/"2n3o2t3ama Tkuran2t@arga atuan2tRty2t?iskon2t2tCumlah @arga"0;

)rintf/"2n============================================================================"0;

for/1=';1n;1880

{

s<itch/data*1.kode0{

case 4 case s 4

strc)y/1enis,"$%JJ"0;

harga = +O''';

break;

case $4 case m 4

strc)y/1enis,"$H?AT$"0;

harga = L!''';

break;

case J4 case l 4

strc)y/1enis,"J%EGH"0;

harga = OL''';

break;

}

if/data*1.1umlah '0

diskon = harga S data*1.1umlah S '.;

else

diskon = ';

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 15: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 15/28

15

)rintf/"2n6d2t6s2t2tE). 6d2t6d2tE). 6Qd2tE). 6Kd",18, 1enis, harga,

data*1.1umlah,diskon, harga S data*1.1umlah - diskon0;

total = total 8 harga S data*1.1umlah - diskon;

}

)rintf/"2n============================================================================"0;

)rintf/"2n2t2t2t2t2t2tCumlah bayar2tE). 6Kd",total0;

)rintf/"2n2t2t2t2t2t2tDa1ak '662tE). 6Kd",total ( '0;

)rintf/"2n2t2t2t2t2t2t:otal bayar2tE). 6Kd",total 8 total ( '0;

)rintf/"2n2n2t2t:HEA$% &%A@ %:% &T3CT3G%339%2n"0;

}}

 b. Capture 'rogram

Bagian input data "

Bagian cetak nota "

c. 0nalisis 'rogram

2ntuk program no $ ini, struct digunakan sebagai penyimpan pesanan yang telah

dimasukkan oleh user. Struct pesanan atau keranjang belanjastruct databarang! tersebut

terdiri dari dua field yaitu kode dan jumlah dari barang yang akan dibeli tersebut. ampir 

sama dengan program pada soal pertama, pada program kasir 6oko 5aris ini menggunakan dua

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 2

Page 16: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 16/28

Page 17: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 17/28

17

PRAKTIKUM '1Struct '

A. Dasar Teori

3ika sebuah struktur mengandung banyak field dan diputuskan bah(a keseluruhan field-nya akan

diubah oleh fungsi, maka cara yang efisien adalah dengan mele(atkan passing! alamat dari

struktur. Dengan demikian pada pendefinisian fungsi, parameter formalnya berupa pointer yang

menunjuk ke struktur.

/asalah pointer ke struktur dapat diterapkan dalam program sebelumnya. 0rgumen dari

fungsi tukarKy! dapat disederhanakan menjadi satu argumen saja, yakni sebagai berikut "

void tukar_Uy/struct koordinat S)os_Uy0{

int z;z = /S)os_Uy0.U;

/S)os_Uy0.U = /S)os_Uy0.y;

/S)os_Uy0.y = z;

}

'ada definisi fungsi di atas,

struct koordinat S)os_Uy

menyatakan bah(a posKy adalah pointer yang menunjuk ke obyek bertipe struktur 

koordinat. 0dapun penulisan "

/S)os_Uy0.U

menyatakan " elemen bernama K yang ditunjuk oleh pointer posKy

'erlu diperhatikan bah(a penulisan tanda kurung seperti pada contoh LposKy!.K merupakan

suatu keharusan. Sebab

S)os_Uy.U

mempunyai makna yang berbeda dengan

/S)os_Uy0.U

2ngkapan LposKy.K mempunyai makna yaitu " Myang ditunjuk oleh posKy.K M sebab

operator titik mempunyai prioritas yang lebih tinggi daripada operator L!.

#include stdio.h

struct koordinat {

int U;

int y;

};

void tukar_Uy/struct koordinat S0;

main/0{

struct koordinat )osisi;

)rintf/"$asukkan koordinat )osisi /U, y0 4 "0;

scanf/"6d, 6d", 7)osisi.U, 7)osisi.y0;

)rintf/"U, y semula = 6d, 6d2n", )osisi.U,)osisi.y0;

tukar_Uy/7)osisi0;

)rintf/"U,y sekarang= 6d, 6d2n", )osisi.U,)osisi.y0;}

void tukar_Uy/struct koordinat S)os_Uy0{

int z;

z = /S)os_Uy0.U;

/S)os_Uy0.U = /S)os_Uy0.y;

/S)os_Uy0.y = z;

}

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 18: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 18/28

18

Contoh eksekusi "

$asukkan koordinat )osisi /U, y0 4 +L, !

U, y semula = +L, !

U, y sekarang = !, +L

Bentuk semacam "

/S)os_Uy0.U

dapat ditulis dengan bentuk lain menjadi

)os_Uy-U

Dalam C operator -@ berupa tanda minus - diikuti dengan tanda lebih dari @! disebut sebagai

operator panah. Dengan menggunakan operator panah, maka fungsi tukarKy! dalam

 program posisi$.c dapat ditulis menjadi

void tukar_Uy/struct koordinat S)os_Uy0{

int z;

z = )os_Uy-U;

)os_Uy-U = )os_Uy-y;

)os_Uy-y = z;}

#. Perco$aan

&. 2ntuk semua program yang ada di modul teori Struktur $ "

- #etikkan kembali program-program tsb

- 3alankan programnya

- 0nalisis 4 buatlah kesimpulan terhadap program-program tsb

cetak1.c

a. 5isting 'rogram

#include stdio.h

void cetak_tanggal/int, int, int0;

main/0

{

struct date {

int month, day, year;

} today;

)rintf/"Hnter the current date /mm-dd-yyyy04 "0;

scanf/"6d-6d-6d", 7today.month, 7today.day, 7today.year0;

cetak_tanggal/today.month, today.day, today.year0;

getch/0;

}

void cetak_tanggal/int mm, int dd, int yy0{

char Snama_bulan* = {

"Brong month", "Canuary", "Pebruary", "$arch",

"%)ril", "$ay", "Cune", "Culy", "%ugust",

"e)tember", "Fctober", "3ovember", "?ecember"

};

)rintf/":odays date is 6s 6d, 6d2n2n", nama_bulan*mm,dd,yy0;

}

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 19: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 19/28

19

 b. Capture 'rogram

c. 0nalisis 'rogram

'ada percobaan ini struct digunakan untuk menyimpan tanggal sekarang yang terdiri dari field

 bulan, hari dan tahunstruct date!. Selanjutnya struct date  dile(atkan ke dalam fungsi

cetak_tanggal/0  dengan cara menjadikannya parameter satu persatu untuk masing-masing

elemen dalam struct date.

cetak2.c

a. 5isting 'rogram

#include stdio.hstruct date {

int month, day, year;

};

void cetak_tanggal/struct date0;

main/0 {

struct date today;

)rintf/"Hnter the current date /mm-dd-yyyy04 "0;

scanf/"6d-6d-6d", 7today.month, 7today.day, 7today.year0;

cetak_tanggal/today0;

}

void cetak_tanggal/struct date no<0

{

char Snama_bulan* = {

"Brong month", "Canuary", "Pebruary", "$arch", "%)ril", "$ay", "Cune",

"Culy", "%ugust", "e)tember", "Fctober","3ovember", "?ecember"

};

)rintf/":odays date is 6s 6d, 6d2n2n",nama_bulan*no<.month, no<.day, no<.year0;

}

 b. Capture 'rogram

c. 0nalisis 'rogram

'ada percobaan ini masih sama dengan percobaan sebelumnyacetak&.c!. Struct masih

digunakan untuk menyimpan tanggal sekarang yang terdiri dari field bulan, hari dan

tahunstruct date!. 'erbedaannya disini adalah pada pemanggilan fungsi cetak_tanggal/0,

struct date langsung dijadikan parameter tanpa memecah elemennya satu persatu.

osisi1.c

a. 5isting 'rogram

#include stdio.h

void tukar_Uy/int S, int S0;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 20: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 20/28

20

main/0

{

struct koordinat {

int U, y;

} )osisi;

)rintf/"$asukkan koordinat )osisi /U, y0 4 "0;

scanf/"6d, 6d", 7)osisi.U, 7)osisi.y0;

)rintf/"U, y semula = 6d, 6d2n", )osisi.U, )osisi.y0;

tukar_Uy/7)osisi.U, 7)osisi.y0;

)rintf/"U, y sekarang = 6d, 6d2n", )osisi.U, )osisi.y0;

getch/0;

}

void tukar_Uy/int Sa, int Sb0

{

int z;

z = Sa;

Sa = Sb;

Sb = z;

}

 b. Capture 'rogram

c. 0nalisis 'rogram

'ada program ini, struct digunakan untuk menyimpan koordinat yang terdiri dari nilai K

dan ystruct koordinat!. Selanjutnya, program ini akan menukar isi dari masing-masing K

dan y tadi. #arena itu digunakanlah pointer agar perubahan variabel pada fungsi lain ikut

merubah nilai aslinya di fungsi main/0.

Nang dikirim ke fungsi tukar_Uy/0 adalah alamat dari masing-masing element struct date.

Nang kemudian pada fungsi tukar_Uy/0 nilai yang ditunjuk keduanya ditukar menggunakan

 bantuan variabel ketiga yaitu O.

osisi2.c

a. 5isting 'rogram

#include stdio.h

struct koordinat {

int U, y;

};

void tukar_Uy/struct koordinat S0;

main/0 {

struct koordinat )osisi;

)rintf/"$asukkan koordinat )osisi /U, y0 4 "0;

scanf/"6d, 6d", 7)osisi.U, 7)osisi.y0;

)rintf/"U, y semula = 6d, 6d2n", )osisi.U, )osisi.y0;

tukar_Uy/7)osisi0;

)rintf/"U, y sekarang = 6d, 6d2n", )osisi.U, )osisi.y0;

}

void tukar_Uy/struct koordinat S)os_Uy0

{

int z;

z = /S)os_Uy0.U;

/S)os_Uy0.U = /S)os_Uy0.y;

/S)os_Uy0.y = z;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 21: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 21/28

21

}

 b. Capture 'rogram

c. 0nalisis 'rogram

'ada program ini, struct masih digunakan untuk menyimpan koordinat yang terdiri dari

nilai K dan ystruct koordinat!. Selanjutnya, program ini akan menukar isi dari masing-masing

K dan y tadi. #arena itu digunakanlah pointer agar perubahan variabel pada fungsi lain ikut

merubah nilai aslinya di fungsi main!.

'erbedaannya apabila pada soal posisi&.c yang dikirim sebagai parameter ke fungsi

tukarKy! adalah alamat dari masing-masing element struct date, pada percobaan ini yang

dikirim sebagai parameter ke fungsi tukarKy! adalah alamat dari struct koordinat tersebut.Nang selanjutnya pada fungsi tukarKy! nilai yang ditunjuk oleh struct koordinat pada kedua

fieldnya ditukar menggunakan bantuan variabel ketiga yaitu O.

$. Dengan menggunakan typedef, buatlah tipe data struct untuk menyimpan informasi

 pega(ai misal tipe pega(ai! berupa " no 7D, nama, tgl lahir, jenis kelamin 5P'! dan gajiPbulan.

• Di main! deklarasikan sebuah var bertipe array of pega(ai misal em)*0 

•   panggil fungsi input! untuk memasukkan data-datanya dengan pengiriman parameter secara

 pass by reference

•  panggil fungsi tampil! untuk menampilkan semua data yang telah diinputkan dengan

 pengiriman parameter secara pass by reference

Petun,uk -

- 2ntuk no id, gunakan auto increment tanpa input!

- 3ika diperlukan, gunakan fungsi strcpy! dari ?string.h@

a. 5isting 'rogram

#include stdio.h

int n;

struct date {

int hari, bulan, tahun;

};

struct datakarya<an {

int id,ga1i;

char nama*+!, 1enis;

struct date tglJahir;

};

ty)edef struct datakarya<an )ega<ai;

void in)ut/)ega<ai Sdata0;

void tam)il/)ega<ai Sdata0;

main/0

{

)ega<ai dataDega<ai*+';

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 22: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 22/28

22

)rintf/"2n?ata Dega<ai"0;

)rintf/"2n===================================2n"0;

fflush/stdin0;

)rintf/"2n5era)a 1umlah )ega<ai "0;

scanf/"6d",7n0;

in)ut/dataDega<ai0;

tam)il/dataDega<ai0;

}

void in)ut/)ega<ai Sdata0

{

int i;

)rintf/"2n===================================2n"0;

for/i=';in;i880

{

)rintf/"2n2n?ata )ega<ai ke-6d",i80;

fflush/stdin0;

)rintf/"2n3ama2t2t2t= "0;

scanf/"6s",/Sdata0.nama0;fflush/stdin0;

)rintf/":gl lahir *dd-mm-yyyy2t= "0;

scanf/"6d-6d-

6d",7/Sdata0.tglJahir.hari,7/Sdata0.tglJahir.bulan,7/Sdata0.tglJahir.tahun0;

fflush/stdin0;

)rintf/"Cenis &elamin *J(D2t= "0;

scanf/"6c",7/Sdata0.1enis0;

)rintf/"Ga1i )erbulan2t2t= "0;

scanf/"6d",7/Sdata0.ga1i0;

data88;

}

}

void tam)il/)ega<ai Sdata0

{

int i;

)rintf/"2n===================================2n"0;

)rintf/"2n?ata )ega<ai yang telah diin)utkan 2n"0;

for/i=';in;i880

{

)rintf/"2n?ata )ega<ai ke-6d",i80;

)rintf/"2n3ama2t2t= 6s",/Sdata0.nama0;

)rintf/"2n:anggal lahir2t= 6d-6d-6d",/Sdata0.tglJahir.hari,

/Sdata0.tglJahir.bulan,/Sdata0.tglJahir.tahun0;

if//Sdata0.1enis == J0

)rintf/"2nCenis &elamin2t= Jaki-laki"0;else

)rintf/"2nCenis &elamin2t= Derem)uan"0;

)rintf/"2nGa1i )erbulan2t= E). 6d",/Sdata0.ga1i0;

data88;

}

}

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 23: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 23/28

23

 b. Capture 'rogram

 

c. 0nalisis 'rogram

'ada program input data pega(ai ini sebenarnya hamper mirip dengan program input data

yang lain. :amun perbedaanya disini struct karya<an  terlebih dahulu diubah namanya

sehingga menjadi lebih singkat yaitu )ega<ai  saja menggunakan perintah ty)edef. al ini

tentu saja memudahkan kita dalam penyebutan struct selanjutnya di dalam program.

Selanjutnya )ega<ai tadi dibuat sebagai array agar dapat menyimpan banyak data pega(ai.

'erbedaan lainnnya yang cukup mencolok disini adalah array of )ega<ai dikirimkan ke

fungsi secara pass by reference sehingga pada fungsi array of )ega<ai yang merupakan nama

lain dari array of struct karya(an tidak lagi diakses dengan indeksnya, namun langsung

menggunakan pointer contohnya /Sdata0.nama

;. /odifikasi program dari modul S62C6 $ soal no &.

- 2bah nama tipe data dengan menggunakan typedef

- 'anggillah fungsi input! dan tampil! dengan cara pass by reference

Petun,uk -2ntuk soal nomor $ 4 ;, perhatikan cara membaca array dengan menggunakan pointer,

 buka kembali modul teori pointer to array

a. 5isting 'rogram

#include stdio.h

#include string.h

int 1umis<a;

struct nilai {

char nama*+';

float nilai:ugas,nilaiT:,nilaiT%;

};

ty)edef struct nilai daftar3ilai;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 24: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 24/28

Page 25: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 25/28

25

)rintf/"2n6d2t6s2t2t6.'f2t6.'f2t6.'f2t6.'f2t6c",18,/Sdata0.nama,

/Sdata0.nilai:ugas,/Sdata0.nilaiT:,/Sdata0.nilaiT%,akhir,grade0;

data88;

}

)rintf/"2n=================================================================="0;

)rintf/"2n2n:otal mahasis<a = 6d",1umis<a0;

}

 b. Capture 'rogram

Bagian input data "

Bagian Qutput data "

c. 0nalisis 'rogram

/erupakan modifikasi dari soal struct $ praktikum ;9 soal no & program ini sama-sama

 berfungsi untuk menghitung nilai akhir dari mata kuliah konsep pemrograman. 'erbedaannya

dalam program ini sudah menggunakan typedef sebagai peyingkat nama struct. Selain itu

dalam pemanggilan fungsi, yang dikirim ke fungsi sebagai parameter adalah alamat dari struct

yang telah ditypedef namanya tersebut.

#arena yang dikirim adalah alamat, maka yang menerima dalam fungsi adalah pointer.

Dengan bantuan pointer tersebut, pemanggilan nilai struct tidak perlu lagi menggunakan

indeks dari arraynya, cukup dengan pemanggilan nilai yang ditunjuk pointer tersebut.

1. 2ntuk soal no ; diatas, pada tampilan output, tambahkan informasi " nama 4 nilai akhir 

mahasis(a yang tertinggi

Petun,uk-

- buatlah tipe data struct baru misal dengan nama maks dengan $ field " nama 4 nilai

untuk menyimpan informasi mahasis(a dengan nilai tertinggi

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 26: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 26/28

26

- Sertakan ?string.h@ agar bisa menggunakan fungsi strcpy! untuk mengcopy nama

a. 5isting 'rogram#include stdio.h

#include string.h

int 1umis<a;

struct nilai {char nama*+';

float nilai:ugas,nilaiT:,nilaiT%;

};

struct maks {

char nama*+';

float nilai;

};

ty)edef struct nilai daftar3ilai;

void in)ut/daftar3ilai S0;

void tam)il/daftar3ilai S0;

main/0

{

struct nilai mahasis<a*+';

)rintf/"2n$H3G@A:T3G 3AJ%A %&@AE $%:% &TJA%@ &F3HD DH$EFGE%$%3"0;

)rintf/"2n=====================================================2n"0;

in)ut/mahasis<a0;

tam)il/mahasis<a0;

}

void in)ut/daftar3ilai Sdata0

{

int i;

fflush/stdin0;

)rintf/"2n5era)a 1umlah mahasis<a "0;

scanf/"6d",71umis<a0;

)rintf/"2n$asukan data mahasis<a"0;

)rintf/"2n=====================================================2n"0;

for/i=';i1umis<a;i880

{

)rintf/"2n?ata ke-6d",i80;

fflush/stdin0;)rintf/"2n3ama2t2t= "0;

scanf/"6s",/Sdata0.nama0;

fflush/stdin0;

)rintf/"3ilai tugas2t= "0;

scanf/"6f",7/Sdata0.nilai:ugas0;

fflush/stdin0;

)rintf/"3ilai T:2t= "0;

scanf/"6f",7/Sdata0.nilaiT:0;

)rintf/"3ilai T%2t= "0;

scanf/"6f",7/Sdata0.nilaiT%0;

data88;

}

}

void tam)il/daftar3ilai Sdata0

{

int i,1;

float akhir;

char grade;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 27: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 27/28

27

struct maks daftar$aks;

)rintf/"2n2t2t2t2t?%P:%E 3AJ%A"0;

)rintf/"2n2t2t2t$%:%&TJA%@ &F3HD DH$EFGE%$%3"0;

)rintf/"2n=================================================================="0;

)rintf/"2n3o2t3ama $ahasis<a2t:ugas2tT:2tT%2t%khir2tGrade"0;

)rintf/"2n=================================================================="0;

for/1=';11umis<a;1880

{

akhir = /'.! S /Sdata0.nilai:ugas0 8 /'.L S /Sdata0.nilaiT%0 8 8 /'.L S

/Sdata0.nilaiT:0;

if/1 == ' >> daftar$aks.nilai akhir0

{

strc)y/daftar$aks.nama,/Sdata0.nama0;

daftar$aks.nilai = akhir;

}

if/akhir=K'0

grade = %;

else if/akhir=V'0

grade = 5;else if/akhir=O'0

grade = I;

else if/akhir=Q'0

grade = ?;

else

grade = H;

)rintf/"2n6d2t6s2t2t6.'f2t6.'f2t6.'f2t6.'f2t6c",18,/Sdata0.nama,

/Sdata0.nilai:ugas,/Sdata0.nilaiT:,/Sdata0.nilaiT%,akhir,grade0;

data88;

}

)rintf/"2n=================================================================="0;

)rintf/"2n2n:otal mahasis<a2t= 6d",1umis<a0;)rintf/"2n2n3ilai :ertinggi"0;

)rintf/"2n3ama mahasis<a2t= 6s",daftar$aks.nama0;

)rintf/"2n3ilai2t= 6.!f",daftar$aks.nilai0;

}

 b. Capture 'rogram

Bagian input data "

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman– Struct 3

Page 28: Laporan Resmi 29-32 Konsep Pemrograman [Struct]

8/20/2019 Laporan Resmi 29-32 Konsep Pemrograman [Struct]

http://slidepdf.com/reader/full/laporan-resmi-29-32-konsep-pemrograman-struct 28/28

Bagian output data "

c. 0nalisis 'rogram

/asih merupakan modifikasi dari soal struct $ praktikum ;9 soal no &. 'rogram ini

merupakan program untuk mencari nilai akhir dari mata kuliah konsep pemrograman.

'erbedaannya dalam program ini sudah menggunakan pass by reference sesuai soal no ; pada pengiriman array of struct nilainya.

Sedikit tambahan pada program ini adalah adanya fitur untuk mengetahui nilai tertinggi

dari mahasis(a. 2ntuk itu diperlukanlah sebuah struct baru yang nantinya digunakan untuk 

menyimpan data nilai tertinggi. Struct baru tersebut adalah struct maks. Defaultnya struct

maks akan bernilai sama dengan nilai element struct nilai pertama. :amun nantinya akan

 berubah jika menemui nilai yang lebih besar darinya hingga pengulangan untuk penampilan

struct berakhir. Dan terkhir tinggal kita tampilkan isi dari masing-masing element dari struct

maks tadi.

%. Kesi!ulan

&. Suatu struct dapat diakses menggunakan variabel pointer.

$. Dalam penulisan pointer pada struct perlu diperhatikan bah(a penulisan tanda kurung

seperti pada contoh

/S)os_Uy0.U merupakan suatu keharusan.

SebabS)os_Uy.U

mempunyai makna yang berbeda dengan/S)os_Uy0.U

2ngkapan LposKy.K mempunyai makna yaitu " Myang ditunjuk oleh posKy.K M sebab

operator titik mempunyai prioritas yang lebih tinggi daripada operator L!.