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
© Copyright 2024 Paperzz