250 likes | 558 Views
Pertemuan 21-22 Structure. Matakuliah : T0616 / Algoritma dan Pemrograman Tahun : 2007 Versi : 1/0. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Menerapkan konsep tipe data structure untuk data majemuk non homogen (C3). Outline Materi. Structure
E N D
Pertemuan 21-22Structure Matakuliah : T0616 / Algoritma dan Pemrograman Tahun : 2007 Versi : 1/0
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menerapkan konsep tipe data structure untuk data majemuk non homogen (C3)
Outline Materi Structure • Definisi dan deklarasi structure • Nested structure • Inisialisasi structure • Akses anggota structure • Array of structure • Array vs structure
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.
Definisi dan Deklarasi Structure • Sintaks struct name { anggota 1; anggota 2; … anggota m; } ; struct name v1, …, vn; • atau struct name { anggota 1; anggota 2; … anggota m; } v1, …, vn; • struct adalah keyword • name adalah identifier structure
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;
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;
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
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;
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
Inisialisasi Structure /* 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); } • Contoh :
Inisialisasi Structure • Contoh : /* Inisialisasi structure */ #include <stdio.h> void main(void) { struct employee { int id; char name[32]; }; struct employee info = {1,"B. Smith"}; //inisialisasi printf("Nama Karyawan: %s\n", info.name); printf("ID Karyawan: %04d\n\n", info.id); 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); }
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.
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];
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} };
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);
Nilai Awal Array of Structure 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]); } • Contoh :
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); }
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: non-contiguous
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
Latihan • Berdasarkan soal sebelumnya, buatlah program untuk menginput data sebanyak 5 mahasiswa (menggunakan array of structure)
Latihan • Berdasarkan struct berikut : • Buatlah aplikasi menggunakan array of structure untuk menginput 5 jenis mobil, kemudian tampilkan dalam format yang layak. struct automobile { int year; char model[8]; int engine_power; float weight; };
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
Latihan • Buatlah sebuah struct : • Buat program (tanpa menggunakan array) untuk menginput struct tersebut, kemudian tampilkan nim, nama, kodemtk, sks, grade. struct nilaimhs { char Nim[11]; char Nama [30]; char KodeMtk [5]; int sks; char grade; };
Latihan • Berdasarkan soal sebelumnya, dengan mempertimbangkan bobot grade dan sks : • Buatlah program menggunakan array of struct untuk menginput 5 nilai matakuliah pada semester 1, kemudian tampilkan IP mahasiswa. Grade BobotGrade A 4 B 3 C 2 D 1 E 0