download soal

T0616
ALGORITMA DAN PEMROGRAMAN
(19-20)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
STRUCTURE
•
•
•
•
•
•
•
•
•
DEFINISI DAN DEKLARASI
NESTED STRUCTURE
INISIALISASI
ARRAY OF STRUCTURE
OPERATOR TITIK
TYPEDEF
POINTER DAN STRUCTURE
OPERATOR ->
PASSING STRUCTURE KE FUNGSI
7/11/2017
T0616 - Algoritma dan Pemrograman
2
DEFINISI DAN DEKLARASI
• STRUCTURE: TIPE DATA YANG DIGUNAKAN
UNTUK MENAMPUNG SEKELOMPOK DATA YANG
BERBEDA TIPE.
• KOMPONEN STRUKTUR DISEBUTANGGOTA,
FIELD ATAU ELEMEN.
• HETEROGEN.
• METODE AKSES SEKUENSIAL.
• DISEBUT RECORD DI BAHASA PEMROGRAMAN
LAIN.
7/11/2017
T0616 - Algoritma dan Pemrograman
3
DEFINISI DAN DEKLARASI
• SINTAKS
STRUCT TAG {
ANGGOTA 1;
ANGGOTA 2;
…
ANGGOTA M;
};
STRUCT V1, …, VN;
• ATAU
7/11/2017
STRUCT TAG {
ANGGOTA 1;
ANGGOTA 2;
…
ANGGOTA M;
} STRUCT V1, …, VN;
• STRUCT ADALAH
KEYWORD
• TAG ADALAH IDENTIFIER
STRUCTURE.
T0616 - Algoritma dan Pemrograman
4
DEFINISI DAN DEKLARASI
CONTOH
struct rekening {
int noRek;
char tipeRek;
char nama{31];
long saldo;
};
struct nasabah1, nasabah2;
7/11/2017
T0616 - Algoritma dan Pemrograman
5
NESTED STRUCTURE
• STRUKTUR YANG SALAH SATU ANGGOTANYA
ADALAH STRUKTUR LAIN.
• DEKLARASI STRUKTUR LAIN DILAKUKAN
SEBELUM DEKLARASI STRUKTUR YANG
MEMUATNYA.
7/11/2017
T0616 - Algoritma dan Pemrograman
6
NESTED STRUCTURE
CONTOH
struct tanggal {
int tgl, bln, thn;
};
struct rekening {
int noRek;
char tipeRek;
char nama{31];
long saldo;
struct tanggal transAkhir;
};
struct rekening nasabah1, nasabah2;
7/11/2017
T0616 - Algoritma dan Pemrograman
7
NILAI AWAL VARIABEL
STRUKTUR
• HANYA UNTUK STATIC DAN EKSTERNAL.
• SINTAKS
• KLAS_PENYIMPANAN TAG VARIABEL = {NILAI_1, …,
NILAI_M};
• CONTOH
• static struct rekening nasabah = {1947, ‘D’, “Susi”,
2000000, 19, 09, 04};
7/11/2017
T0616 - Algoritma dan Pemrograman
8
ARRAY OF STRUCTURE
• ARRAY DENGAN
ANGGOTA STRUKTUR.
• CONTOH
struct tanggal {
int tgl, bln, thn;
};
7/11/2017
struct rekening {
int noRek;
char tipeRek;
char nama{31];
long saldo;
struct tanggal transAkhir;
};
struct rekning nasabah[100];
T0616 - Algoritma dan Pemrograman
9
NILAI AWAL ARRAY OF
STRUCTURE
struct tanggal {
char nama[31];
int tgl, bln, thn;
};
static struct tanggal ulTah[ ] = {
{“Susi”, 9, 7, 1990},
{“Susy”, 7, 9, 1992},
{“Suzy”, 9, 9, 2002}
};
7/11/2017
T0616 - Algoritma dan Pemrograman
10
OPERATOR TITIK
• UNTUK MENGAKSES ANGGOTA/SUBANGGOTA
STRUKTUR.
• SINTAKS
= (node_t*)malloc(sizeof(node_t));
• newPtr
VAR_STRUCTURE.ANGGOTA;
• VAR_STRUCTURE.ANGGOTA.SUBANGGOTA;
• CONTOH
• nasabah1.noRek;
• ulTah[2].nama;
7/11/2017
T0616 - Algoritma dan Pemrograman
11
TYPE DEF
• MENDEFINISIKAN TIPE DATA BARU YA NG EKUIVALEN DENGAN TIPE DATA YANG SUDAH ADA.
• SINTAKS
= (node_t*)malloc(sizeof(node_t));
• newPtr
TYPEDEF
TIPE TIPE_BARU;
• DI MANA
• TYPEDEF ADALAH KEYWORD.
• TIPE ADALAH TIPE DATA YANG SUDAH ADA .
• CONTOH
• typedef int usia;
• usia laki_laki, perempuan;
7/11/2017
T0616 - Algoritma dan Pemrograman
12
TYPE DEF
• BERMANFAAT UNTUK
MENDEFINISIKAN
STRUKTUR KARENA
DAPAT MENGURANGI
PENGULANGAN
PENULISAN STRUCT TAG.
• CONTOH
typedef struct {
int tgl, bln, thn;
} tanggal;
7/11/2017
typedef struct {
int noRek;
char tipeRek;
char nama[31];
float saldo;
struct tanggal
transAkhir;
} record;
record nasabah[100];
T0616 - Algoritma dan Pemrograman
13
POINTER DAN STRUKTUR
• MISALKAN VAR ADALAH VARIABEL TIPE
STRUKTUR MAKA &VAR ADALAH ALAMAT
VARIABEL TERSEBUT.
• DEKLARASI VARIABEL POINTER KE STRUKTUR
• TYPE_OF_STRUCT *PT_VAR;
• ARAHKAN VARIABEL POINTER KE STRUKTUR
• PT_VAR = &VAR;
7/11/2017
T0616 - Algoritma dan Pemrograman
14
POINTER DAN STRUKTUR
typedef struct {
int noRek;
char tipeRek;
char nama[31];
long saldo;
} rekening;
rekening nasabah *rek;
7/11/2017
struct {
int noRek;
char tipeRek;
char nama[31];
long saldo;
} nasabah, *rek;
rek = &nasabah;
T0616 - Algoritma dan Pemrograman
15
OPERATOR ->
• UNTUK MENGAKSES ANGGOTA STRUKTUR
YANG DITUNJUK OLEH POINTER PT_VAR.
• DAPAT DIKOMBINASIKAN DENGAN OPERATOR
TITIK UNTUK MENGAKSES SUBANGGOTA.
• SINTAKS
• PT_VAR -> ANGGOTA;
• PT_VAR -> ANGGOTA.SUB_ANGGOTA;
• PT_VAR -> ANGGOTA[NON_NEGATIF INTEGER];
7/11/2017
T0616 - Algoritma dan Pemrograman
16
OPERATOR ->
• NOMOR REKENING NASABAH DIAKSES SBB:
• (*rek). noRek;
• rek -> noRek;
• nasabah.noRek;
7/11/2017
T0616 - Algoritma dan Pemrograman
17
PASSING STRUKTUR KE FUNGSI
• PASS ANGGOTA
STRUKTUR SECARA
INDIVIDUAL.
• PASS BY VALUE.
main() {
typedef struct {
int tgl, bln, thn;
} tanggal;
struct {
int noRek;
char tipeRek;
7/11/2017
char nama[31];
float saldo;
tanggal transAkhir;
} nasabah;
…
nasabah.saldo =
adjust(
nasabah,noRek,
nasabah.saldo);
…
}
T0616 - Algoritma dan Pemrograman
18
PASSING STRUKTUR KE FUNGSI
• float adjust(int noRek, float saldo) {
float saldoBaru;
…
saldoBaru = …
…
return (saldoBaru);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
19
PASSING STRUKTUR KE FUNGSI
• PASS SELURUH
STRUKTUR.
• PASS BY REFERENCE
typedef struct {
char *nama;
int noRek;
char tipeRek;
float saldo;
} record;
7/11/2017
void adjust(record *pt) {
pt->nama = “Susy”;
pt->noRek = 9999;
pt->tipeRek = ‘T’;
pt->saldo = 99.99;
return;
}
T0616 - Algoritma dan Pemrograman
20
PASSING STRUKTUR KE FUNGSI
void main() {
static record nasabah = {“Susi”, 3333, ‘G’, 33.33};
printf(“\n%s %d %c %.2f”, nasabah.nama,
nasabah.noRek, nasabah.tipeRek,
nasabah.saldo);
adjust(&nasabah);
printf(“\n%s %d %c %.2f”, nasabah.nama,
nasabah.noRek, nasabah.tipeRek,
nasabah.saldo);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
21
ARRAY VS STRUCTURE
• ARRAY
• STRUCTURE
– HUBUNGAN ANTAR
ELEMEN: LINEAR
– HOMOGEN
– RANDOM AKSES
– AKSES ELEMEN
DENGAN INDEX
– ELEMEN DI MEMORI:
CONTIGUOUS
7/11/2017
– HUBUNGAN ANTAR
ELEMEN: LINEAR
– HETEROGEN
– SEKUENSIAL AKSES
– AKSES ELEMEN
DENGAN FIELD ID.
– ELEMEN DI MEMORI:
(MUNGKIN) NONCONTIGUOUS
T0616 - Algoritma dan Pemrograman
22
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
23