0% menganggap dokumen ini bermanfaat (0 suara)
113 tayangan40 halaman

Struktur

Structure dan Union digunakan untuk menyimpan data majemuk non homogen. Structure menyimpan data berbeda tipe secara berurutan, sedangkan Union menyimpan data pada memori yang sama.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
113 tayangan40 halaman

Struktur

Structure dan Union digunakan untuk menyimpan data majemuk non homogen. Structure menyimpan data berbeda tipe secara berurutan, sedangkan Union menyimpan data pada memori yang sama.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPT, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 40

Structure dan Union

1
Learning Outcomes

Pada akhir pertemuan ini, diharapkan mahasiswa


akan mampu :
• Menerapkan konsep tipe data structure untuk
data majemuk non homogen

2
Outline Materi

Structure
• Definisi dan deklarasi structure
• Nested structure
• Inisialisasi structure
• Akses anggota structure
• Array of structure
• Array vs structure
• Bit field
• Union
3
Definisi dan Deklarasi Structure
• Structure: tipe data yang digunakan untuk
menampung sekelompok data yang berbeda
tipe, tetapi berkaitan.
• Komponen struktur disebut anggota atau
field atau elemen.
• Bersifat heterogen (karena tipe data dari
setiap field bisa berbeda).
• Structure di bahasa pemrograman lain, sering
disebut dengan record

4
Definisi dan Deklarasi Structure
• variabel structure bisa
• Sintaks
didefinisikan pada saat
struct nama_structure { deklarasi structure.
tipedata1 nama_field1;
tipedata2 nama_field2;
struct nama_structure {

tipedata1 nama_field1;
};
tipedata2 nama_field2;

} nama_variable_structure ;

• Deklarasi variabel structure

struct nama_structure nama_variable_structure;


5
Definisi dan Deklarasi Structure
• Contoh :
struct rekening {
int noRek;
char tipeRek;
char nama[31];
long saldo;
};

struct rekening nasabah1, nasabah2;


ATAU

struct rekening {
int noRek;
char tipeRek;
char nama[31];
long saldo;
} nasabah1, nasabah2;
6
Definisi dan Deklarasi Structure
• Contoh :

struct automobile {
int year;
char model[8];
int engine_power;
float weight;
};

struct Mahasiswa{
int Nim;
char Namal[20];
float IPK;
char JenisKelamin;
};

7
Deklarasi Structure
# include <stdio.h>
# include <string.h>

struct tmhs { // tipe data structure


char nim[11];
char nama[26];
float ipk;
};

void function1 ( ) {
struct tmhs akad_mhs; // variabel structure
...
}

int main (){


...
struct tmhs ali, tono; // variabel structure
...
}
8
Deklarasi Structure
# include <stdio.h>
# include <string.h>

struct tmhs { // tipe data structure


char nim[11];
char nama[26];
float ipk;
} akad_mhs, ali, tono; // global variabel structure

void function1 ( ) {
...
}

int main (){


...
}

9
Deklarasi Structure
• Structure bisa tanpa nama, dan variabel
structure langsung dibuat setelah deklarasi
structure.
# include <stdio.h>

struct {
char nim[11];
char nama[26];
float ipk;
} akad_mhs, tono, ali; // global variabel structure

void function1 ( ) {
...
}

int main (){


...
}
10
AKSES STRUCTURE
Elemen (field) structure diakses dengan operator titik dari
sebuah variabel structure.

# include <stdio.h>
# include <string.h> int main (){
struct mhs lia;
struct mhs { float wipk;
char nim[9];
char nama[26]; scanf("%s", &lia.nim);
float ipk; fflush(stdin);
}; gets(lia.nama);
scanf("%f", &wipk);
lia.ipk = wipk;
printf("%s %s %.2f",
lia.nim, lia.nama, lia.ipk);
return 1;
}

11
DEKLARASI STRUCTURE LOKAL
# include <stdio.h>
# include <math.h> Titik A :
posisi x dan y ? 5 10
void main() {
struct { Titik B :
int x, y; posisi x dan y ? 15 15
} tA, tB;
float dist; Jarak A dan B = 11.18 unit

printf("Titik A : \n ");
printf("posisi x dan y ? ");
scanf("%d %d", &tA.x, &tA.y);
printf("\nTitik B : \n ");
printf("posisi x dan y ? ");
scanf("%d %d", &tB.x, &tB.y);
dist = sqrt(pow((tA.x - tB.x), 2) +
pow((tA.y - tB.y), 2));
printf("\nJarak A dan B = %.2f unit", dist);
}

12
Nested Structure
• Struktur yang salah satu anggotanya adalah
struktur lain.
• Deklarasi struktur lain dilakukan sebelum
deklarasi struktur yang memuatnya.
• Contoh :
– Struct Mhs berisi Nim, Nama, Alamat, Tanggal
Lahir
– Alamat merupakan struct yang terdiri dari Nama
Jalan, Nomor Rumah, Kota, Provinsi
– Tanggal Lahir merupakan struct yang berisi
Tanggal, Bulan dan Tahun

13
• Contoh : Nested Structure
struct Alamat {
char Jalan[40];
int NoRumah;
char Kota[20];
char Propinsi[20];
};

struct TanggalLahir{
int Tangga, Bulan, Tahun;
};

struct Mhs{
int Nim;
char Nama[20];
struct Alamat addr;
struct TanggalLahir tgllahir;
};

14
• Sintaks Inisialisasi Structure
• Struct name variabel = {nilai_1, …, nilai_m};
• Contoh
• Struct rekening nasabah1 = {1984, ‘a’, “frenzy”,
200000, 19};

15
Inisialisasi Structure
• Contoh :

#include <stdio.h>

struct employee {
int id;
char name[32];
};

void main(void)
{
struct employee info = {1,"B. Smith"};
printf("Nama Karyawan: %s\n", info.name);
printf("ID Karyawan: %04d\n\n", info.id);
}

16
Inisialisasi Structure
• Variabel structure bisa diisi dengan variabel structure yang
lain yang nama structurenya sama.
#include <stdio.h>
struct employee {
int id;
char name[32];
};

void main(void)
{
struct employee info = {1,"B. Smith"};
struct employee amir = info;

printf("Nama Karyawan: %s\n", amir.name);


printf("ID Karyawan: %04d\n\n", amir.id);
}

17
Array of Structure
• Tipe data struct dalam kenyataannya hanya
bisa menampung satu record saja, sedangkan
dalam aplikasi biasanya dibutuhkan record
lebih dari satu.
• Maka, dalam penggunaanya tipe data struct
biasanya digabung dengan array.

18
Array of Structure
• Contoh :
struct tanggal {
int tgl, bln, thn;
};

struct rekening {
int noRek;
char tipeRek;
char nama[31];
long saldo;
struct tanggal transAkhir;
};

//Array of structure
struct rekening nasabah[100];

19
Nilai Awal Array of Structure
struct tanggal {
char nama[31];
int tgl, bln, thn;
};

struct tanggal ultah[ ] = {


{“Tata”, 9, 7, 1984},
{“Titi”, 7, 9, 1986},
{“Tutu”, 9, 9, 1990}
};

20
Array of Structure

# include <stdio.h> int main (){


# include <string.h> struct tmhs arr[50], x;
...
struct tmhs {
char nim[9]; scanf("%s", &arr[0].nim);
char nama[26]; ...
float ipk; x = arr[0];
}; arr[0] = arr[1];
arr[1] = x;

for (i = 0; i < 50; i++) {


printf("%s %s %.2f",
arr[i].nim, arr[i].nama,
arr[i].ipk);
}
return 1;
}
21
typedef
• typedef : adalah alias (nama lain)
• Digunakan untuk mempersingkat penulisan, khususnya untuk
nama/identifer yang panjang.
• typedef sering digunakan pada structure
• Contoh:
typedef struct MahasiswaUnmul{
char Nama[20];
int Nim;
float Ipk;
}Mhs;
• Pada contoh diatas Mhs adalah nama lain (alias) dari struct
MahasiswaUnmul, dan berfungsi sebagai tipe data baru.
• Untuk mendefinisikan variabel struct dengan cara sbb
Mhs ali, tono;

22
typedef
#include <stdio.h>
#include <conio.h>

typedef struct employee {


int id;
char name[32];
}EMP;

int main(void)
{
EMP info = {1,"B. Smith"};
printf("Nama Karyawan: %s\n", info.name);
printf("ID Karyawan: %04d\n\n", info.id);

getch();
return 0;
}

23
Bit-Field
• Sebuah struct dimana setiap field jumlah bit-nya
tertentu.

• Sintak:

struct name{
tipe field1: jumlah_bit;
…...
};

• Tipe : hanya boleh unsigned int, signed int, atau int.

24
Bit-Field
• Contoh :

struct {   
unsigned short icon : 8;   
unsigned short color : 4;   
unsigned short underline : 1;   
unsigned short blink : 1;
}screen[25][80];

• Pada contoh diatas, array screen berisi 2000


element, dan setiap element terdiri dari 2-byte. (14-
bit memerlukan 2 byte).
25
UNION

• Union digunakan untuk kongsi memory. Dengan


menggunakan union suatu lokasi memori dapat ditempati
oleh dua atau beberapa variabel dengan masing-masing
tipe data yang berbeda.

• Jumlah memori yang digunakan oleh variabel union


adalah sama dengan memori terbesar di antara elemen
union.

26
UNION

Deklarasi tipe data union

union nama_union{
tipedata1 nama_var1 ;
tipedata2 nama_var2;
……
} nama_var_union;

Deklarasi variabel union

union nama_union nama_var_union;

27
UNION

# include <stdio.h>

void main() {
union tbil{
unsigned int di;
unsigned char dc[2]; di = 321
} bil_x;
dc[0] = 65
bil_x.di = 321; dc[1] = 1
printf("di = %d \n", bil_x.di);
printf("dc[0] = %d \n", bil_x.dc[0]);
printf("dc[1] = %d\n", bil_x.dc[1]);
}
//asumsi size untuk tipe int = 2 byte

321= 101000001

28
UNION
#include <stdio.h> union byte{
unsigned char ch;
struct biner{ struct biner bit;
unsigned bit0:1; unsigned bit1:1; };
unsigned bit2:1; unsigned bit3:1;
unsigned bit4:1; unsigned bit5:1;
unsigned bit6:1; unsigned bit7:1;
};

int main()
{
unsigned char ch;
union byte x;
printf("masukkan bilangan (0-255): ");
scanf("%d",&ch);
x.ch=ch;
printf("%d binernya = %d%d%d%d%d%d%d%d\n",
ch,x.bit.bit7,x.bit.bit6,x.bit.bit5,x.bit.bit4,
x.bit.bit3,x.bit.bit2,x.bit.bit1,x.bit.bit0);
getch();
return 0;
}

Contoh program untuk mengkonversi 1 byte bilangan desimal (0-255)


ke bilangan biner dengan menggunakan UNION dan BIT-FIELD
29
ENUMERATION

• Enumaration adalah suatu tipe data yang jumlah datanya


sudah ditentukan. Jumlah data yang terbatas ini diberi
nama dengan tujuan untuk memperjelas program.

• Deklarasi tipe data enumeration

enum nama_tipe {
konstanta1, konstanta2,… konstanta_n
}nama_var;

• Deklarasi variabel enumeration

enum nama_tipe nama_var;

30
ENUMERATION
# include <stdio.h>
enum boolean {false, true};

enum boolean ujigenap(int n) { 100


enum boolean hasiluji; genap
if (n % 2 == 0) hasiluji = true;
else hasiluji = false;
Return hasiluji;
}
37
int main () { ganjil
int bil;
enum boolean hasil;

scanf("%d", &bil);
hasil = ujigenap(bil);
if (hasil == true) printf("genap");
else printf("ganjil");
return 1;
}
31
ENUMERATION

# include <stdio.h>
# include <conio.h>

enum tipehari {minggu, senin, selasa, rabu,


kamis, jumat, sabtu};

void main() {
enum tipehari hari;

clrscr();
for (hari = minggu; hari <= sabtu; hari++)
printf("%d ", hari);
...
}
0 1 2 3 4 5 6
32
ENUMERATION
#include <stdio.h>
typedef enum boolen {TRUE, FALSE} BOOL;

int main()
{
BOOL b;
b=TRUE;
if(b==TRUE) printf("b=TRUE\n");
getch();
return 0;
}

Untuk mempersingkat penulisan enumeration bisa


digunakan typedef seperti contoh diatas.

33
Latihan

• Buatlah struct sebagai berikut :


– Struct Mhs berisi Nim, Nama, Alamat, Tempat,
TanggalLahir
– Alamat merupakan struct yang terdiri dari
NamaJalan, NomorRumah, Kota, Provinsi
– TanggalLahir merupakan struct yang berisi
Tanggal, Bulan dan Tahun

34
Latihan

• Berdasarkan soal sebelumnya, buatlah


program untuk menginput data sebanyak 5
mahasiswa (menggunakan array of structure)

35
Latihan

• Berdasarkan struct berikut :


struct automobile {
int year;
char model[8];
int engine_power;
float weight;
};

• Buatlah aplikasi menggunakan array of structure


untuk menginput 5 jenis mobil, kemudian tampilkan
dalam format yang layak.
36
Latihan

• Menggunakan struct berikut :


struct ipkmhs {
char nim[11];
char nama[30];
float ipk;
};
• Buatlah program untuk menginput data 5 mahasiswa, dan
tampilkan data mahasiswa ipk >= 3.0 dan ipk < 3.0
• Contoh :
Mhs ipk >=3.0 :
Andi
Budi
Candra
Mhs ipk < 3.0 :
Dadu
Emin

37
Latihan

• Buatlah sebuah struct :


struct nilaimhs {
char Nim[11];
char Nama [30];
char KodeMtk [5];
int sks;
char grade;
};

• Buat program (tanpa menggunakan array) untuk


menginput struct tersebut, kemudian tampilkan nim,
nama, kodemtk, sks, grade.
38
Latihan

• Berdasarkan soal sebelumnya, dengan


mempertimbangkan bobot grade dan sks :
Grade BobotGrade
A 4
B 3
C 2
D 1
E 0

• Buatlah program menggunakan array of struct untuk


menginput 5 nilai matakuliah pada semester 1,
kemudian tampilkan IP mahasiswa.

39
Latihan
• Buat program untuk mengkonversi 4 byte
bilangan unsigned integer ke bilangan
heksadesimal dengan menggunakan UNION
dan BIT-FIELD

40

Anda mungkin juga menyukai