You are on page 1of 3

Review Latihan Slide 10

Algoritme dan
Pemrograman #include <stdio.h>
#include <stdlib.h>
#define SIZE 100
void substring
Kuliah #11 char *dest, const char *source, int a, int n)
Structure {
int i=a;
for (; i<a+n; i++)
dest[i-a]=source[i];
dest[i-a]='\0';
}

DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR

Review Latihan Slide 10 Review Latihan Slide 10


main()
{ † Untuk menampung data nama dan usia, dibuat
int n, i;
char st[50], nama[SIZE][50], t[3];
dua variabel array:
int usia[SIZE], sum=0; char nama[SIZE][50];
scanf("%d\n", &n);
for (i=0; i<n; i++) { int usia[SIZE];
† Bisakah disimpan dalam satu variabel array
gets(st); // baca baris data
substring(nama[i], st, 2,50); // ambil nama mulai kolom 2
substring(t, st, 0, 2);
usia[i]=atoi(t);
//
//
ambil usia mulai kolom 0
ubah usia menjadi integer biasa? Æ TIDAK BISA, karena berbeda tipe.
}
sum += usia[i];
† Beberapa variabel dapat dikemas dalam satu
for (i=0; i<n; i++)
printf("%s\n", nama[i]);
// cetak nama paket (package) dengan menggunakan struct.
printf("%.2f\n", (float)sum/n); // hitung dan cetak rataan usia

return 0;
}

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Pengertian STRUCT Membuat struct

† STRUCT adalah sekumpulan variabel (masing- † Contoh:


masing dapat berbeda tipe) yang struct dataMhs {
dikelompokkan dan dikemas ke dalam satu char *nama;
nama variabel. int usia;
† Untuk mendefinisikan suatu rekord data. };
† Termasuk tipe data yang dibangkitkan (derived † Tipe struct ini diberi nama dataMhs.
data type). † Terdiri atas dua variabel: nama dan usia.
† Pernyataan di atas hanya membuat tipe data
struct baru, TIDAK mendeklarasikan variabel
apapun.

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB
Contoh program ::
Deklarasi struct Merekam data nama dan usia mhs.

† Contoh deklarasi variabel menggunakan tipe #include <stdio.h> Elok Nian 20


struct dataMhs {
struct: Indah Sekali 19
char *nama;
struct dataMhs mhs; int usia;
struct dataMhs arrMhs[100]; } mhs1;
† Dapat juga dilakukan langsung (definisi dan main() {
deklarasi): struct dataMhs mhs2={"Indah Sekali", 19};
struct dataMhs { mhs1.nama = "Elok Nian";
mhs1.usia = 20;
char *nama; printf("%s %d\n", mhs1.nama, mhs1.usia);
int usia; printf("%s %d\n", mhs2.nama, mhs2.usia);
} mhs, arrMhs[100]; return 0;
}
DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Operator pointer pada struct Akses anggota struct


#include <stdio.h> Indah Sekali 19 † Menggunakan salah satu dari dua operator:
struct dataMhs {
Indah Sekali 19 „ operator titik (.)
char *nama;
int usia; „ operator panah (->)
}; tergantung tipe variabel yang dideklarasikan.
main() {
struct dataMhs mhs={"Indah Sekali", 19}; † Jika variabel biasa (selain pointer) maka
struct dataMhs *p; digunakan operator titik, sedangkan jika
p = &mhs;
variabel pointer maka digunakan operator
printf("%s %d\n", mhs.nama, mhs.usia);
printf("%s %d\n", p->nama, p->usia); panah.
return 0;
}
DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Contoh ::
Typedef Menggunakan typedef

• Typedef merupakan mekanisme untuk membuat #include <stdio.h>


Indah Sekali 19
sinonim atau alias dari tipe data yang telah struct dataMhs {
char *nama; Indah Sekali 19
didefinisikan sebelumnya. int usia;
• Contoh: };
typedef struct dataMhs MHS;
typedef struct dataMhs MHS;
main() {
berarti mendefinisikan tipe data baru bernama MHS mhs={"Indah Sekali", 19};
MHS sebagai sinonim untuk struct dataMhs. MHS *p;
p = &mhs;
• Dengan demikian, pernyataan struct dataMhs printf("%s %d\n", mhs.nama, mhs.usia);
untuk selanjutnya dapat diganti dengan MHS printf("%s %d\n", p->nama, p->usia);
saja. return 0;
}

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB
Array of struct Array of struct
#include <stdio.h> main()
#define SIZE 100
{ 3
int n, i;
struct nilaiMhs { NILAI list[SIZE]; G64010234 60 80
char nim[9]; char brs[256], st[4]; G64010235 50 45
int uts, uas; scanf("%d\n", &n);
for (i=0; i<n; i++) { G64010236 90 76
float rataan; gets(brs); // baca per baris data
}; substring(list[i].nim, brs, 0, 9);
typedef struct nilaiMhs NILAI; substring(st, brs, 10, 2); list[i].uts=atoi(st);
substring(st, brs, 13, 2); list[i].uas=atoi(st);
void substring }
(char *dest, const char *source, int a, int n)
for (i=0; i<n; i++) // hitung rataan tiap mhs
{ list[i].rataan=(float) (list[i].uts+list[i].uas)/2.0;
int i=a;
for (; i<a+n; i++) for (i=0; i<n; i++) {
dest[i-a]=source[i]; printf("%s %.2f\n", list[i].nim, list[i].rataan);
dest[i-a]='\0'; }
} return 0;
}
DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Latihan #1 :: Latihan 2 ::
Bilangan Kompleks Data waktu (time)

† Bilangan kompleks (complex numbers) dalam † Buat fungsi untuk menentukan selisih (dalam
matematika terdiri dari dua nilai yang satuan menit) antara dua waktu time1 dan time2.
Masing-masing waktu terdiri atas tiga komponen
direpresentasikan sebagai: nilai, yaitu hour (jam), minute (menit), dan second
a+b√-1 (detik).
dimana a dan b adalah bilangan riil † Contoh penggunaan fungsi:
main() {
† Buat program untuk membaca dua bilangan TIME time1={10,30,0.0};
kompleks dan menampilkan hasil kali TIME time2={11,31,30.0};
keduanya. Gunakan tipe data struct float beda;
† Contoh data masukan: beda=selisih(time1, time2);
printf(".2f\n", beda); // output: 61.50
12.5 2.3 return 0;
10.6 1.9 }

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER


INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB

You might also like