Anda di halaman 1dari 12

LAPORAN RESMI

PRAKTIKUM 29
Konsep Pemrograman

Nama : Muhammad Bima Aria Laksana


Kelas: 1 D4 Teknik Informatika B
NRP: 2110191059
TUJUAN PEMBELAJARAN
1. Memahami cara mendeklarasikan struktur
2. Memahami cara menginisialisasi struktur
3. Memahami cara mengakses elemen struktur
4. Memahami pembentukan dan cara mengakses array dari struktur (array of struct)

PERCOBAAN

1. Untuk semua program yang ada di modul teori Struktur 1 :


- Ketikkan kembali program-program tsb
- Jalankan programnya
- Analisis & buatlah kesimpulan terhadap program-program tsb

- Input

#include <stdio.h>
#define MAKS 20
struct date
{//definisi global dr tipe date
int month, day, year;
};
struct student
{//definisi global dr tipe student
char name[30];
struct date birthday;
};
main()
{
struct student data_mhs[MAKS];
int i=0, jml;
char lagi;
do
{//memasukkan data
printf("Name : ");
gets(data_mhs[i].name);
printf("Birthday (mm-dd-yyyy): ");
scanf("%d-%d-%d", &data_mhs[i].birthday.month,
&data_mhs[i].birthday.day, &data_mhs[i].birthday.year);
i++;
fflush(stdin); //hapus sisa data dlm buffer keyboard
printf("\nMau memasukkan data lagi [Y/T] ? ");
lagi = getchar( ); //baca tombol
fflush(stdin); //hapus sisa data dlm buffer keyboard
}
while(lagi == 'Y' || lagi == 'y');
jml = i;
printf("\nDATA MAHASISWA\n");
for (i=0; i<jml; i++) //menampilkan data
{
printf("%d. Name : %s", i+1, data_mhs[i].name);
printf("\n Birthday : %d-%d-%d\n\n",
data_mhs[i].birthday.month,
data_mhs[i].birthday.day,
data_mhs[i].birthday.year);
}
}

- Output

- Analisis
Program di atas, variabel mhs merupakan variabel array, sehingga elemen-elemen struct
student mhs bisa diisi lebih dari satu sebanyak array.untuk pengisian dan pencetakan variabel,
bisa menggunakan loop seperti saat menggunakan array pada umumnya.
- Kesmpulan
Dengan menggunakan variabel array of struct, maka data yang bisa diisi bisa lebih dari satu
sampai sebanyak jumlah array.
2. Pointer Buatlah 2 variabel (today & tomorrow) bertipe struct date. Isilah variabel today
dengan tanggal hari ini. Temukan tanggal untuk variabel tomorrow.
Keterangan:
- Berikan pengecekan untuk akhir bulan
- Berikan pengecekan untuk akhir tahun
- Berikan pengecekan untuk bulan Februari di tahun kabisat
Tahun kabisat adalah :
- Kelipatan 4, tapi bukan kelipatan 100
- Kelipatan 100 yang juga merupakan kelipatan 400

- Input

#include <stdio.h>
#include <stdlib.h>
struct date
{
int day,month,year;
};
int kabisat (int);
int validasi (int, int, int);
main()
{
struct date today,tomorrow;
int is_kabisat, is_valid;
printf("Percobaan Struktur 1 : Today dan Tomorrow\n\n");
printf("Masukkan tanggal hari ini (dd-mm-yyyy) : ");
scanf("%d-%d-%d", &today.day, &today.month, &today.year);
if(today.month==12 && today.day==31)
{
tomorrow.day=1;
tomorrow.month=1;
today.year++;
tomorrow.year=today.year;
}
else if(today.month==4,6,9,11 && today.day==30)
{
tomorrow.day=1;
today.month++;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
else if(today.month!=2,4,6,9,11 && today.day==31)
{
tomorrow.day=1;
today.month++;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
else if(today.month==2)
{
is_kabisat=kabisat(today.year);
if((today.day==29 && is_kabisat==1) || (today.day==28 && is_kabisat==0))
{
tomorrow.day=1;
today.month++;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
else
{
today.day++;
tomorrow.day=today.day;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
}
else
{
today.day++;
tomorrow.day=today.day;
tomorrow.month=today.month;
tomorrow.year=today.year;
}
is_valid = validasi(today.day, today.month, today.year);
if(is_valid == 1){
printf("Besok adalah : %d-%d-%d", tomorrow.day, tomorrow.month,
tomorrow.year);
}
else{
printf("TIDAK VALID!");
}
return 0;
}
int kabisat (int year)
{
if (year%4==0 && year%100!=0)
{
return 1;
}
else if (year%100==0 && year%400==0)
{
return 1;
}
else
return 0;
}
int validasi (int day, int month,int year)
{
int ini_kabisat=kabisat(year);
if(month>12 && month<1 || year==0)
{
return 0;
}
else if((month==1,3,5,7,8,10,12) && (day>=1 && day<=31))
{
return 1;
}
else if(month==2 && day>=1 && day<=29)
{
if(ini_kabisat==1)
{
return 1;
}
else if(day<=28)
{
return 1;
}
else
{
return 0;
}
}
else if((month==4,6,9,11) && day>=1 && day<=30)
{
return 1;
}
else
{
return 0;
}
}

- Output
- Analisis
Pada program di atas, dilakukan pencetakan hari esoknya dari tanggal yang diinputkan oleh user.
Jika tanggal yang diinputkan adalah 31 Desember, maka tahun akan bertambah dan tanggal
berubah menjadi 1 Januari. Jika tanggal yang diinputkan adalah akhir bulan, maka bulan akan
bertambah dan tanggal berubah menjadi tanggal 1 sedangkan tahun akan tetap. Khusus untuk bulan
Februari, sebelum pengecekan tanggal akhir dilakukan pengecekan bulan kabisat terlebih dahulu.
Jika kabisat, maka tanggal bertambah 1. Jika bukan kabisat, maka bulan bertambah dan tanggal
menjadi tanggal 1. Selain syarat-syarat diatas, tanggal hanya akan bertambah 1.

3. Sebuah Perusahaan Ayam goreng dengan nama Gerobak Fried Chicken yang telah lumayan
banyak pelanggannya, ingin dibantu dibuatkan program demi kelancaran usahanya. Gerobak
Fried Chicken mempunyai Daftar Harga Ayam sebagai berikut:

Kode Jenis Harga


D Dada Rp.5000,-
P Paha Rp.4000,-
S Sayap Rp.3000,-
Ketentuannya : setiap pembeli dikenakan
pajak sebesar 10% dari total pembelian
Petunjuk :
- Gunakan tipe data struct
- Deklarasikan variabel bertipe array of struct
- Gunakan \t sebagai tabulasi untuk mengatur tampilan
- Gunakan <string.h> jika diperlukan

- Input

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

struct datamenu {
char kode;
int jumlah;
};
main()
{
struct datamenu keranjang[30];
int i = 0,j,harga,total=0;
char jwb,jenis[6];

printf("Toko GFC-Gerobak Fried Chicken\n");


printf("\nDAFTAR HARGA");
printf("\nKode Jenis Harga Per Potong");
printf("\nD Dada Rp. 5000.00");
printf("\nP Paha Rp. 4000.00");
printf("\nS Sayap Rp. 3000.00");
printf("\n\nHarga belum termasuk pajak : 10 %%");
printf("\n\nMasukkan Pesanan Anda");

do
{
printf("\nPesanan ke-%d",i+1);
fflush(stdin);
printf("\nJenis [D/P/S]\t: ");
scanf("%c",&keranjang[i].kode);
fflush(stdin);
printf("Jumlah \t\t: ");
scanf("%d",&keranjang[i].jumlah);

i++;
fflush(stdin);
printf("\nMau pesan lagi [y/n] ?");
jwb = getchar();
}while(jwb == 'Y' || jwb == 'y');
printf("\n\nNota Belanja Anda : \n");
printf("\n GEROBAK FRIED CHICKEN\n");
printf("\n=============================================================
===");
printf("\nNo\tJenis Potong\tHarga Satuan\tQty\tJumlah Harga");
printf("\n=============================================================
===");

for(j=0;j<i;j++)
{
switch(keranjang[j].kode)
{
case 'D': case 'd' :
strcpy(jenis,"DADA");
harga = 5000;
break;
case 'P': case 'p' :
strcpy(jenis,"PAHA");
harga = 4000;
break;
case 'S': case 's' :
strcpy(jenis,"SAYAP");
harga = 3000;
break;
}

printf("\n%d\t%s\t\tRp. %.2d\t%d\tRp. %6.2d",j+1, jenis,


harga, keranjang[j].jumlah, harga * keranjang[j].jumlah);
total = total + harga * keranjang[j].jumlah;
}
printf("\n=============================================================
===");
printf("\n Jumlah bayar\tRp. %6.2d",total);
printf("\n Pajak 10%%\t\tRp. %6.2d",total / 10);
printf("\n Total bayar\tRp. %6.2d",total + total /
10);
printf("\n\n TERIMA KASIH ATAS KUNJUNGANNYA\n");
}
- Output
- Analisis
Pada program ini digunakan struct gfc yang berisi kode, jenis, harga, qty, dan jumlah. Struct gfc
dideklarasikan di main() menggunakan variabel menu[3] dan order[10]. Menu[] digunakan sebagai
data menu, sedangkan order[] digunakan untuk pencetakan struk. Pertama-tama, elemen-elemen
order[] diisi satu persatu sesuai dengan input user dan mencocokkannya dengan isi dari menu[].
Lalu dilakukan perhitungan-perhitungan dan kemudian dicetak dalam bentuk nota menggunakan
data-data order[] yang sudah diisi dan dihitung.
KESIMPULAN
Struktur (struct) adalah sekumpulan data yang dibedakan melalui nama field-nya. Tipe data tiap
struct boleh berbeda dan dapat juga menggunakan nama yang sama. Varabel-varabel yang
membentuk suatu struktur, selanjutnya disebut elemen dari struktur atau field.

Anda mungkin juga menyukai