Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Matakuliah Tahun Versi : T0616 / Algoritma dan Pemrograman : 2007 : 1/0 Pertemuan 21-22 Structure 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menerapkan konsep tipe data structure untuk data majemuk non homogen (C3) 2 Outline Materi Structure • Definisi dan deklarasi structure • Nested structure • Inisialisasi structure • Akses anggota structure • Array of structure • Array vs structure 3 Definisi dan Deklarasi Structure • Structure: tipe data yang digunakan untuk menampung sekelompok data yang berbeda tipe. • Komponen struktur disebut anggota, field atau elemen. • Bersifat heterogen. • Metode akses sekuensial. • Disebut record di bahasa pemrograman lain. 4 Definisi dan Deklarasi Structure • Sintaks struct name { anggota 1; anggota 2; … anggota m; }; struct name v1, …, vn; struct name { anggota 1; anggota 2; … anggota m; } v1, …, vn; • atau • struct adalah keyword • name adalah identifier 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 automobile { int year; char model[8]; int engine_power; float weight; } sedan, pick_up, sport_utility; 7 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, Tempat, Tanggal Lahir – Alamat merupakan struct yang terdiri dari Nama Jalan, Nomor Rumah, Kota, Provinsi – Tanggal Lahir merupakan struct yang berisi Tanggal, Bulan dan Tahun 8 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; 9 Inisialisasi Structure • Sintaks • Struct name variabel = {nilai_1, …, nilai_m}; • Contoh • Struct rekening nasabah1 = {1984, ‘a’, “frenzy”, 200000, 19}; • Operator titik (.) Untuk mengakses anggota/subanggota struktur. • Sintaks • Var_structure.Anggota; • Var_structure.Anggota.Subanggota; • Contoh • nasabah1.norek; • Mhs1.Alamat.NamaJalan 10 Inisialisasi Structure • Contoh : /* Akses ke anggota structure */ #include <stdio.h> struct computer { float cost; int year; int cpu_speed; char cpu_type[16]; } model; main(void) { printf(“Tipe CPU ?\n"); gets(model.cpu_type); printf(“CPU Speed?\n"); scanf("%d", &model.cpu_speed); printf(“Dibuat tahun ?\n"); scanf("%d", &model.year); printf(“Berapa harganya ?\n"); scanf("%f", &model.cost); printf(“Tahun: %d\n", model.year); printf(“Harga: $%6.2f\n", model.cost); printf(“Tipe CPU: %s\n", model.cpu_type); printf(“Speed CPU: %d MHz\n", model.cpu_speed); } 11 Inisialisasi Structure • Contoh : /* Inisialisasi structure */ #include <stdio.h> void main(void) { struct employee { int id; char name[32]; }; struct employee info = {1,"B. Smith"}; printf("Nama Karyawan: %s\n", info.name); printf("ID Karyawan: %04d\n\n", info.id); //inisialisasi printf("Nama Anda ?\n"); gets(info.name); printf("ID Anda ?\n"); scanf("%d", &info.id); printf("Nama Anda: %s\n", info.name); printf("ID Anda : %04d\n", info.id); } 12 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. 13 Array of Structure • Contoh : struct tanggal { int tgl, bln, thn; }; struct rekening { int noRek; char tipeRek; char nama[31]; long saldo; struct tanggal transAkhir; }; struct rekening nasabah[100]; 14 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} }; 15 Nilai Awal Array of Structure • Contoh : /* Array structure */ #include <stdio.h> struct haiku { int start_year; int end_year; char author[16]; char str1[32]; char str2[32]; char str3[32]; }; typedef struct haiku HK; void DataDisplay(HK *ptr_s); 16 Nilai Awal Array of Structure • Contoh : void main(void) { HK poem[2] = { { 1641, 1716, "Sodo", "Leading me along", "my shadow goes back home", "from looking at the moon." }, { 1729, 1781, "Chora", "A storm wind blows", "out from among the grasses", "the full moon grows." } }; int i; for (i=0; i<2; i++) DataDisplay(&poem[i]); } 17 Nilai Awal Array of Structure • Contoh : /* Definisi Fungsi */ void DataDisplay(HK *ptr_s) { printf("%s\n", (*ptr_s).str1); printf("%s\n", (*ptr_s).str2); printf("%s\n", (*ptr_s).str3); printf("--- %s\n", (*ptr_s).author); printf(" (%d-%d)\n\n", (*ptr_s).start_year, (*ptr_s).end_year); } 18 Array vs Structure • Array – Hubungan antar elemen: linear – Homogen – Random akses – Akses elemen dengan index – Elemen di memori: contiguous • Structure – Hubungan antar elemen: linear – Heterogen – Sekuensial akses – Akses elemen dengan field id. – Elemen di memori: noncontiguous 19 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 20 Latihan • Berdasarkan soal sebelumnya, buatlah program untuk menginput data sebanyak 5 mahasiswa (menggunakan array of structure) 21 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. 22 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 23 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. 24 Latihan • Berdasarkan soal sebelumnya, dengan mempertimbangkan bobot grade dan sks : Grade A B C D E BobotGrade 4 3 2 1 0 • Buatlah program menggunakan array of struct untuk menginput 5 nilai matakuliah pada semester 1, kemudian tampilkan IP mahasiswa. 25