Download download

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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