400 likes | 435 Views
Learn about pointers, typedef, abstract data types, and function parameters in the context of structures. Enhance your knowledge of pointers in structures and typedef usage. Dive into the basics of ADTs and memory allocation functions like malloc and free. Explore the creation of custom functions.
E N D
StrukturData Review Pointer, Pointers of Structures, Typedef, ADT, Fungsidan Parameter TeknikInformatika S1
Content • Pointer • Pointers of Structures • PenggunaanTypedef • ADT • Fungsidan Parameter
Pointer • Variabel yang dapatmenyimpanalamatdisebutdengan‘pointer’, danalamat yang disimpandalampointerbiasanyaadalahvariabel lain
Pointers of Structures • Samasepertimateri pointer, penggunaan pointer pada structure digunakanuntukmengaksesalamat yang adapada structure • Pointer pdatamenyimpanalamatdarijumlah Hitungjumlah={10,20,30}; pdata = &jumlah;
Pointers of Structures structpekerja{ int id; char nama[20]; }emp; main(){ structpekerja data; structpekerja *pdata; //create a pointer of structure type pdata=&data;//assign address to pointer of structure type strcpy(pdata->nama, “Adi”); pdata->id = 1; printf(“%d %s”, pdata->id,pdata->nama) } Operator -> digunakanuntukmengakses member dalam structure
PenggunaanTypedefPadaStruct • Dalamdeklarasi variable darisebuah structure, harusmenyertakan keyword struct. • Typedefmerupakanalternativedalamdeklarasi variable tanpaharusmenulisstruct. Perintah typedef berguna untuk membuat alias dari suatu tipe data structhitung{ intx,y; }; typedefstructhitungoperasi; operasiJumlah; operasi Kali; structhitung{ intx,y; }; structhitungJumlah; structhitung Kali;
PenggunaanTypedefPadaStruct (2) • Letakkantypedefpadaawaldefinisi structure • Padaakhirdefinisi structure, letakkannama alias untukmelengkapipendefinisianmenggunakantypedef • Deklarasi variable menggunakantypedef, memungkinkandeklarasisamasepertideklarasimenggunakan type data int, char, double type data operasi typedefstructhitungoperasi typedef Definisi structure Nama alias
PenggunaanTypedefpada Pointers of Structures typedefstructpekerja{ int id; char nama[20]; }emp; main(){ emp data; emp *pdata; //create a pointer of structure type pdata=&data;//assign address to pointer of structure type strcpy(pdata->nama, “Adi”); pdata->id = 1; printf(“%d %s”, pdata->id,pdata->nama) } Operator -> digunakanuntukmengakses member dalam structure
TypedefPadaTipe Data Elementer • Perintah typedef berguna untuk membuat alias dari suatu tipe data. Tidakhanyapadatipe data bentukanStruct, namunjugatipe data elementer. • Typedefint Time; • Time hours, minutes, seconds; • Time merupakan alias daritipedasarint (integer). Hours, minutes, seconds bertipe Time
TypedefPadaTipe Data String • Sama halnya juga pada contoh berikut : • typedef char * String; • String namaMhs, alamatMhs; • Dalam C, pointer ke character merupakan satu-satunya cara mendeklarasi tipe data string. Pada contoh diatas, dengan menggunakan typedef, sebuah tipe data baru dengan nama String dideklarasikan
TypedefPada Data Array • int x[100]
Abstract Data Type (ADT) • Type dansekumpulanprimitif (operasidasar) terhadap type tersebut • Definisi type dari ADT dapatmengandungdefinisi ADT lain. Contoh : • ADT Waktu ; ADT Jam, ADT Date • ADT Garis ; 2 Point • ADT Segi4 ; 2 Point (Top/Left) , (Bottom/Right)
Alokasi MemoriSecaraStatis int x; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; ? ? x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113
FungsiAlokasi Memory (Malloc) Mallocadalahfungsiuntukmengalokasikanmemory Contoh dari malloc() : int *x; x = (int*) malloc (3 * sizeof(int)); if(x==NULL) { printf(“Error di malloc\n”); exit(0); } else { printf(“Lakukan operasi memori dinamis”); }
FungsiDealokasi Memory (free) • Penggunaanfungsi free() digunakanuntukmendealokasikanpenggunaan data padamemori void Dealokasi(address *P) { free(*P); }
MembuatFungsiSendiri • Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. • Bentuk umum pendeklarasian fungsi adalah : tipe_fungsi nama_fungsi(parameter_fungsi); • Bentuk umum pendefinisian fungsi adalah : tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement ………... }
StrukturFungsi tipe_fungsi nama_fungsi(parameter1, parameter2,..) { statement fungsi; } Contoh: int tambah(int x, int y) { return(x+y); }
Prototype Fungsi • Bagaimanafungsimenerima input, bagaimanafungsimelakukan return dannilaiapa yang dikembalikan • Prototype = pendeklarasianfungsi tipe_fungsi nama_fungsi(parameter_fungsi); Contoh: intjumlah(int a, int b);
ContohPenggunaanFungsi #include <stdio.h> #include <stdlib.h> int jumlah(int a, int b);//prototipefungsi int a,b,c; main() { printf("masukkan a: ");scanf("%d",&a); printf("masukkan b: ");scanf("%d",&b);//program utama c=jumlah(a,b); printf(“Hasil Penjumlahan= %d",c); } int jumlah(int x, int y) { //fungsi return(x+y); }
Parameter • Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. • Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi.
Parameter Formal • Variable yang adapadadaftar parameter dalamdefinisifungsi Parameter Formal intjumlah(int x, int y){ return (x+y); }
Parameter Aktual • Parameter yang dipakaidalampemanggilanfungsi main(){ . . . . . . c=jumlah(a,b); . . . } Parameter Aktual
TUGAS • Buatlah program untukmendatasuatuKendaraandengan data yang perludiinputmeliputiJenisKendaraanbertipeString, Jumlah BanbertipeInt, danJumlah GearbertipeInt. Buatprosedur/fungsiuntukmelakukan input data tersebutdanmencetaknya. Tentukanstrukturnya (struct) terlebihdahulu. • Compress/zip-kan project yang dibuatkirimmelaluiedmodo. • Deadline tugas: H-1 pertemuanselanjutnya