teknik informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/struktur.pdf · 3 struktur...
TRANSCRIPT
![Page 1: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/1.jpg)
Struktur
Tim ALPRO
Teknik Informatika
![Page 2: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/2.jpg)
Overview
• STRUCTURE
• TYPEDEF
• ARRAY OF STRUCTURE
• POINTER & STUCTURES
• STRUCTURE & FUNCTION
![Page 3: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/3.jpg)
3
Struktur
• Abstract Data Type
• Kumpulan variabel yang berelasi di bawah satunama besar /aggregate dan sering digunakanuntuk mendefinisikan object – orang, tempat / record dalam database / file.
• Dapat berisi berbagai macam variabel dengantipe data yang berbeda.
![Page 4: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/4.jpg)
Cara Menggunakan Struktur
1. Definisi Struktur
2. Deklarasi/Inisialisasi instanStruktur
3. Mengakses Anggota dari instanStruktur
![Page 5: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/5.jpg)
Mendefinisikan Struktur
• Proses awal dalam membuat struktur adalahmendefinisikannya menggunakan struct
• Keyword struct untuk mendefinisikan koleksivariabel dari bermacam type
• Dalam penulisan program, keyword structdiikuti oleh brace (“{ }”) dengan variabelindividual didalamnya (member)
struct hitung{
int x,y;
};
![Page 6: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/6.jpg)
6
Latihan Definisi Struktur
Lunchbox
Definisikan struktur dg nama“Lunchbox” yg mempunyaibagian/compartments:
• fruit compartment (jumlah)
• sandwich compartment (jenis)
• drink compartment (liter)
• Struktur adalah sebuah blueprint
• Contoh:
![Page 7: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/7.jpg)
7
Contoh Definisi Struktur
• Anggota yg ditentukan terdiri dari variabel yang berbeda dari struct
• Contoh:
struct LunchBox
{
int fruit;
float drink;
char sandwich[MAXN];
};Lunchbox
![Page 8: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/8.jpg)
Deklarasi Variabel Struktur
• Ketika mendefinisikan struktur menggunakan struct, memory belum dialokasikan untuk struktur, sampaideklarasi variabel dibuat.
• Deklarasi variabel
TipeDataStruct NamaVariabel
• Contoh : struct hitung{
int x,y;
};
struct hitung Jumlah;
Variabel Jumlah dengan type data struct hitung
![Page 9: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/9.jpg)
9
Variabel Struktur
• Instan Struktur: urutan actual yg berdekatandalam penyimpanan di lokasi memori
struct LunchBox kyle;
struct LunchBox stan, cartman, kenny;
struct LunchBox kids[5];
![Page 10: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/10.jpg)
10
Inisialisasi variabel struct
struct LunchBox kyle = { 1, 370.0, “ham”};
![Page 11: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/11.jpg)
11
struct LunchBox kids[5] =
{
{1, 370.0, “ham” },
{2, 100.0, “roast”},
{0, 0.0, “muffin”},
{1, 300.0, “salad”},
{0, 0.0, “”}
};
0 1 2 3 4
Inisialisasi variabel struct
![Page 12: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/12.jpg)
Mengakses Struktur Member
• Akses pada member memudahkan dalam inisialisasi nilai
• Prosedurnya adalah nama variable instan struktur diikutioleh operator dot ( . ) dan nama member
• Contoh :
struct hitung{
int x;
int y;
};
struct hitung Jumlah;
Jumlah.x=10;
Jumlah.y=20;
![Page 13: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/13.jpg)
13
Anggota variabel struct
struct LunchBox stan, kenny;
stan.drink = 0.0;
stan.fruit = 0;
strcpy(stan.sandwich,“fruit cake”);
kenny.fruit = 1;
strcpy(kenny.sandwich, “muffin”);
kenny.drink = 300.0;
![Page 14: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/14.jpg)
14
Anggota variabel struct
struct LunchBox kids[3];
int index = 1;
kids[0].drink = 370.0;
kids[0].fruit = 1;
strcpy(kids[2].sandwich, “ham”);
kids[index].fruit = 2;
0
1
2
![Page 15: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/15.jpg)
15
Input/Output struct
• Library functions printf() dan scanf() tidak memilikiformat conversion specifiers untuk struct
• Input/Output hanya untuk anggota saja
struct LunchBox cartman;
scanf(“%d”, &(cartman.fruit));
scanf(“%f”, &(cartman.drink));
scanf(“%s”, cartman.sandwich);
printf(“%d, %f\n”,
cartman.fruit, cartman.drink);
printf(“%s\n”, cartman.sandwich);
![Page 16: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/16.jpg)
16
Input/Output dr struct
struct LunchBox kids[3];
int i = 0;
for (i=0; i < 3; i++)
{
scanf(“%d %f %s”,
&(kids[i].fruit),&(kids[i].drink),
kids[i].sandwich);
}
for (i=0; i < 3; i++)
{
printf(“%d, %f, %s\n”,
kids[i].fruit, kids[i].drink,
kids[i].sandwich);
}
0
1
2
![Page 17: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/17.jpg)
Catatan Struct
• Kesalahan Umum
struct hitung{
int x,y;
};
Semicolon disini
jangan lupa
![Page 18: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/18.jpg)
18
Catatan struct
• Inisialisasi vs. Assignment
struct StudentRec studA = {“Fermat”, 90};
struct StudentRec studA;
studA = {“Fermat”, 90};
![Page 19: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/19.jpg)
19
Catatan struct
• Var struct tidak dapat di bandingkan
• Kita hanya dapat membandingkan anggotanya saja
if (studA == studB)
{
printf(“Duplikasi data.\n”);
}
if (strcmp(studA.lastname, studB.lastname) == 0
&& (studA.Nilai == studB.Nilai) )
{
printf(“Duplikasi data.\n”);
}
![Page 20: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/20.jpg)
20
Catatan struct
struct StudentRec
{
char lastname[MAXLEN];
float Nilai;
} studA, studB, class[MAXN];
• Kita dapat mendefinisikan struct, dan mendeklarasikan instan utk struktur tsb
Instan
![Page 21: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/21.jpg)
Typedef
• Statement typedef membuat identifer sama
dengan tipe yg ditentukan
• Dalam deklarasi variable dari sebuah structure, harus menyertakan keyword struct.
• Typedef merupakan alternative dalam deklarasivariable tanpa harus menyertakan struct
struct hitung{
int x,y;
};
struct hitung Jumlah;
struct hitung Kali;
struct hitung{
int x,y;
};
typedef struct hitung operasi;
operasi Jumlah;
operasi Kali;
![Page 22: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/22.jpg)
Prosedur Penggunaan Typedef
• Letakkan typedef pada awal definisi structure
• Pada akhir definisi structure, letakkan nama alias untuk melengkapi pendefinisian menggunakantypedef
typedef struct hitung operasi
Definisi structure Nama aliastypedef
type data operasi
![Page 23: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/23.jpg)
Array of Structure
• Proses pembuatan dan kerja array of structure prinsipnya sama dengan kerja array yang didalamnya terdapat tipe data seperti integer, character, float
• Proses pembuatan array of structure menentukanjumlah elemen array yang diletakkan setelahdefinisi structure
• Contoh : typedef struct pekerja{
int id;
char nama[20];
}emp;
emp data[2];
![Page 24: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/24.jpg)
Contoh
typedef struct pekerja{
int id;
char nama[20];
}emp;
main(){
emp data[2];
strcpy(data[0].nama, “Maxidena”);
data[0].id = 0001;
strcpy(data[1].nama, “Rhyne”);
data[1].id = 0002;
int x;
for(x=0;x<3;x++){
printf(“%d %c”, data[x].id,data[x].nama);
}
}
![Page 25: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/25.jpg)
Fungsi Operator Structure
• Setelah mendeklarasikan sebuah Structure, yang tidak kalahpentingnya adalah membuat fungsi operator (fungsi untukmengoperasikan struct).
• Fungsi operator bisa dikategorikan menjadi 4 macam:• Fungsi Constructor : untuk membentuk struct
• Fungsi Selector : untuk mendapatkan nilai elemen/nilai tertentu dari struct
• Fungsi Validator : untuk memvalidasi komponen struct
• Fungsi Manipulator : untuk melakukan operasi-operasi tambahan pada struct
• Contoh:time make_time(int j, int m, int d);
int get_minutes(time waktu);
int time_valid(time waktu);
time add_time(time waktu1, time waktu2);
![Page 26: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/26.jpg)
Fungsi Operator Structure
void print_time(time waktu){
printf("%d:%d:%d\n",
waktu.j, waktu.m, waktu.d);
}
int time_valid(time waktu){
return ((waktu.j < 24) && waktu.j > 0) &&
(waktu.m < 60) && waktu.m > 0) &&
(waktu.d < 60) && waktu.d > 0))
}
time make_time(int j,int m,int d)
{
time waktu;
waktu.j = j;
waktu.m = m;
waktu.d = d;
if(time_valid(waktu)){
return waktu;
} else {
return make_time(0, 0, 0);
}
}
int time_to_seconds(time waktu){
return (waktu.j * 3600) +
(waktu.m * 60) + waktu.d;
}
int get_minutes(time waktu){
return waktu.m;
}
![Page 27: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/27.jpg)
Structure & Functions
• Melewatkan sebuah struktur untukmenjadi parameter sebuah fungsi dapatdilakukan sama dengan pengirimanparameter berupa variabel biasa.
• Pengiriman dapat dilakukan baik secaranilai (pass by value) maupun secara acuan(pass by reference).
![Page 28: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/28.jpg)
28
Mengirim struct ke Function
• Seperti biasa, parameter formal di copy ke aktual parameter
void printRecord ( Student item )
{
printf("Nama: %s\n", item.lastname);
printf(“Nilai: %.1f\n\n", item.Nilai);
}
main()
{
Student studentA = {“Gauss”, 99.0};
printRecord(studentA);
}
![Page 29: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/29.jpg)
29
Function yg mengembalikansuatu struct
• “paket” yg berisi beberapa nilai
main()
{
Student studentA;
studentA = readRecord();
}
Student readRecord ( void )
{
Student newStudent;
printf("Masukan nama dan nilai ");
scanf("%s %f",
newStudent.lastname,&(newStudent.Nilai));
return newStudent;
} Version 1
![Page 30: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/30.jpg)
30
Function yg mengembalikan suatu struct
Student readRecord ( Student newStudent )
{
printf("Masukan nama dan nilai ");
scanf("%s %f",
newStudent.lastname,&(newStudent.Nilai));
return newStudent;
}
main()
{
Student studentA;
studentA = readRecord(studentA);
}
Version 2
• “paket” yg berisi beberapa nilai
![Page 31: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/31.jpg)
Pointer & Structure
• Sama seperti fungsi pointer umumnya, penggunaan pointer pada structure digunakanuntuk mengakses alamat yang ada padastructure
• Pointer pdata menyimpan alamat dari jumlah
hitung jumlah={10,20,30};
pdata = &jumlah;
![Page 32: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/32.jpg)
32
int main()
{
Student studentA;
studentA = readRecord(studentA);
return 0;
}
Student readRecord ( Student newStudent )
{
printf("Masukan nama dan nilai: ");
scanf("%s %f", newStudent.lastname,
&(newStudent.Nilai) );
return newStudent;
}
Mengirim variabel struct
Mengirim seluruhelemen struct
![Page 33: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/33.jpg)
33
Bagaimanajika structbesar ?
Mengirim variabel struct
Student readRecord ( Student newStudent )
{
printf("Masukan nama dan nilai: ");
scanf("%s %f", newStudent.lastname,
&(newStudent.Nilai) );
return newStudent;
}
int main()
{
Student studentA;
studentA = readRecord(StudentA);
return 0;
}
![Page 34: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/34.jpg)
34
Mengirim pointer struct
Mengirim pointerke variabel struct !
lastname:
Nilai:
studentA:
studentPtr:
![Page 35: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/35.jpg)
35
void readRecord ( Student *studentPtr )
{
/* De-reference pointer disini. */
}
int main()
{
Student studentA;
readRecord( &(studentA) );
return 0;
}
Mengirim pointer struct
lastname:
Nilai:
studentA:
studentPtr:
lastname:
![Page 36: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/36.jpg)
36
utk de-reference pointer kestruct variable:
Style 1: Pakai operator *
void readRecord ( Student *studentPtr )
{
printf("Masukan nama dan nilai: ");
scanf("%s %f", (*studentPtr).lastname,
&((*studentPtr).Nilai) );}
Nilais4b.c
Mengirim pointer struct
studentPtr:
Nilai:
studentA:
lastname:
![Page 37: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/37.jpg)
37
utk de-reference pointer ke struct
variable:
Style 2: Pakai operator ->
void readRecord ( Student *studentPtr )
{
printf("Masukan nama dan nilai: ");
scanf("%s %f", studentPtr->lastname,
&(studentPtr->Nilai) );
}
Nilais4c.c
Mengirim pointer struct
studentPtr:
Nilai:
studentA:
lastname:
![Page 38: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/38.jpg)
Contoh
typedef struct pekerja{
int id;
char nama[20];
}emp;
main(){
emp data={0,0};
emp *pdata; //create a pointer of structure type
pdata=&data; //assign address to pointer of structure type
strcpy(pdata->nama, “Maxidena”);
pdata->id = 0001;
printf(“%d %s”, pdata->id,pdata->nama)
}
Operator ->
digunakan untuk
mengakses member
dalam structure
![Page 39: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/39.jpg)
39
Structs Dalam Structs
• Struct dapat menjadi anggota struct lainnya
• Contoh:
– Student record berisi Nama, Nilai (ID Number, alamat dll)
– Daftar Class adalah kumpulan record student (jumlah students, subject code, dll)
– Departmental database adalah kumpulan daftarkelas (department name, jumlah subjects, dsb)
![Page 40: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/40.jpg)
40
Contoh: Student Record
lastname:
Nilai:
struct StudentRec
{
char lastname[MAXLEN];
float Nilai;
};
typedef struct StudentRec Student;
![Page 41: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/41.jpg)
41
class:
lastname:
Nilai:
lastname:
Nilai:
lastname:
Nilai:
Student class[MAXN];
struct StudentRec
{
char lastname[MAXLEN];
float Nilai;
};
typedef struct StudentRec Student;
Contoh: Class Record
![Page 42: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/42.jpg)
42
Informasi yg diperlukan utk mengeloladaftar kelas:• Jumlah students dalam kelas
(<= MAXN)• Subject code
class:
lastname:
Nilai:
lastname:
Nilai:
lastname:
Nilai:
Student class[MAXN];
Contoh: Class Record (lanj)
![Page 43: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/43.jpg)
43
Informasi yg diperlukan utkmengelola daftar kelas:• Jumlah students dalam kelas
(<= MAXN)• Subject code
char subjCode[MAXLEN];
int count;
Student class[MAXN];
count:
class:
lastname:
Nilai:
lastname:
Nilai:
lastname:
Nilai:
subjCode:
Contoh: Class Record (lanj)
![Page 44: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/44.jpg)
44
struct ClassRec
{
char subjCode[MAXLEN];
int count;
Student class[MAXN];
};
typedef struct ClassRec ClassList;
Contoh: Class Record (lanj)
count:
class:
lastname:
Nilai:
lastname:
Nilai:
lastname:
Nilai:
subjCode:“Encapsulates” data
yg diperlukan utk
mengelola daftar
kelas
![Page 45: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/45.jpg)
45
ClassList subject[MAXSUBJ];
Contoh: Department Database
subject:
![Page 46: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/46.jpg)
46
char deptName[MAXLEN];
int count;
ClassList subject[MAXSUBJ];
Contoh: Department Database (lanj)
subject:
deptName:
count:
![Page 47: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/47.jpg)
47
Contoh: Department Database (lanj)
subject:
deptName:
count:
struct DatabaseRec
{
char deptName[MAXLEN];
int count;
ClassList subject[MAXSUBJ];
};
typedef struct DatabaseRec Database;
“Encapsulates” data
yg diperlukan utk
mengelola daftar
kelas
![Page 48: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/48.jpg)
48
Mengakses anggota struct
subject:
deptName:
count:
Bagaiman memasukan nilai 97.5 disana?
Database
finalNilais;
Misal kita deklarasikan
var struct :
![Page 49: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/49.jpg)
49
Mengakses anggota struct
finalNilais
subject:
deptName:
count:
finalNilais:
![Page 50: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/50.jpg)
50
Mengakses anggota struct
finalNilais.subject[1]
subject:
deptName:
count:
finalNilais:
![Page 51: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/51.jpg)
51
Mengakses anggota struct
finalNilais.subject[1].class[0]
subject:
deptName:
count:
finalNilais:
![Page 52: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/52.jpg)
52
Mengakses anggota struct
finalNilais.subject[1].class[0].Nilai = 97.5;
subject:
deptName:
count:
finalNilais:
![Page 53: Teknik Informatika - dinus.ac.iddinus.ac.id/repository/docs/ajar/Struktur.pdf · 3 Struktur •Abstract Data Type •Kumpulan variabel yang berelasi di bawah satu nama besar /aggregate](https://reader030.vdocuments.site/reader030/viewer/2022040105/5d58b32788c993fd418b6b8a/html5/thumbnails/53.jpg)
Terimakasih