Algoritma dan Pemrograman 1 C++ Struct & Pointer Agung Sasongko, M.Kom
Pengertian struct / struktur struct adalah statement yang berguna untuk mengkelompokkan sejumlah data dengan tipe yang berlainan.
Bentuk Umum Pendeklarasian Struktur sebagai berikut: struct nama_struktur tipe_data var_anggota_struktur;... ;
Contoh Deklarasi Struktur struct Mahasiswa char nim[9]; char nama[20]; int thnmasuk; ;
Contoh Penggunaan Struktur Nama_struktur Contoh: Mahasiswa nama_variabel; mhs; Cara Akses Anggota Struktur: Nama_variabel.nama_anggota Contoh: strcpy( mhs.nim, 18111234 ); mhs.thnmasuk = 2011; cin>>mhs.nim; cout<<mhs.nama;
Kasus 1 Buatlah sebuah struktur untuk bentuk data sebagai berikut: NIM Nama Gender Alamat char (9) char(30) char(1) char(255)
Jawab Kasus 1 Bentuk struktur yaitu: NIM Nama Gender Alamat char (9) char(30) char(1) char(255) struct data_mhs char nim[9]; char nama[30]; char gender; char alamat[255] ;
Kasus 2 Buatlah struktur sebagai berikut: Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas char(20) float float float
Jawab Kasus 2 Bentuk struktur nya yaitu: Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas char(20) float float float struct nilai_mk char nm_mk[20]; float nilai_tugas; float nilai_uts; float nilai_uas; ;
Kasus 3 Buatlah struktur kombinasi seperti berikut: NIM Nama Gender Alamat nilai char (9) char(30) char(1) char(255) nilai_mk nilai_mk Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas char(20) float float float Struktur nilai_mk dependensi dengan struktur mahasiswa.
Jawab Kasus 3 struct nilai_mk char nm_mk[20]; float nilai_tugas; float nilai_uts; float nilai_uas; ; struct mhs char nim[9]; char nama[30]; char gender; char alamat[255]; nilai_mk nilai; ;
Contoh Kasus Buatlah Struct bernama Mahasiswa dengan anggota elemen: Nim Nama Thnmasuk Struct yang dibuat digunakan di program utama dengan ketentuan NIM telah diisikan melalui koding berisikan nim anda masing2 Bagian Nama meminta user untuk mengisikannya Tahun Masuk ditentukan melalui koding bernilai 2012 Tampilkan output dengan hasil: Mahasiswa NIM. bernama. masuk tahun.
#include <iostream> #include <conio> struct Mahasiswa char nim[9]; char nama[20]; int thnmasuk; ; main() Mahasiswa mhs; strcpy( mhs.nim, "18111234"); cout<<"nim Mahasiswa : "<<mhs.nim<<endl; cout<<"masukkan Nama Mahasiswa : "; cin.getline(mhs.nama, 20); mhs.thnmasuk = 2012; clrscr(); cout<<"mahasiswa NIM "<<mhs.nim<<" bernama "<<mhs.nama; cout<<" masuk tahun "<<mhs.thnmasuk; getch();
Contoh Kasus Buatlah structure bernama barang yang beriisikan anggotanya: Nobrg Nmbrg Hrgbarang Stok Buatlah procedure bernama isidata untuk mengisi struct diatas dengan parameter b bertipe struct barang Isi procedure adalah menampilkan pertanyaan untuk mengisikan masing-masing elemen struct parameter b. Buatlah procedure tampildata untuk menampilkan semua isi data dari parameter b bertipe struct barang Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. Gunakan struct dan kedua procedure dirangkai di program utama.
#include <iostream> #include <conio> struct Barang char nobrg[5]; char nmbrg[30]; long hrgbarang; int stok; ;
void isidata(barang b) cout<<"no. Barang : "; cin>>b.nobrg; cout<<"nama Barang : "; cin.getline(b.nmbrg, 30); cin.getline(b.nmbrg, 30); cout<<"harga Barang : "; cin>>b.hrgbarang; cout<<"stok : "; cin>>b.stok; void tampildata(barang b) cout<<"no. Barang : "<< b.nobrg <<endl; cout<<"nama Barang : "<< b.nmbrg <<endl; cout<<"harga Barang : "<< b.hrgbarang <<endl; cout<<"stok : "<< b.stok <<endl;
main() Barang b; isidata(b); clrscr(); cout<<"isi Data Struct Barang adalah : \n"; tampildata(b); getch();
Lihat hasilnya???? Sekarang coba pada bagian procedure isidata parameter di ubah menjadi seperti ini: void isidata(barang &b) Lengkapnya: void isidata(barang &b) cout<<"no. Barang : "; cin>>b.nobrg; cout<<"nama Barang : "; cin.getline(b.nmbrg, 30); cin.getline(b.nmbrg, 30); cout<<"harga Barang : "; cin>>b.hrgbarang; cout<<"stok : "; cin>>b.stok;
Pointer (Penunjuk) Merupakan variabel yang bertugas untuk menunjuk ke alamat memori suatu variabel. Pembuatan Variabel Pointer: char *nama; int *a; float *x;
Menunjuk Alamat Memori Variabel Untuk memberi informasi mengenai alamat memori dari suatu variabel maka gunakan tanda reference (&). Contoh: char *x; char y[10] = BSI OKE ; x = &y;
Apa yang bisa dilakukan pointer? Melalui pointer kita dapat mengendalikan isi nilai dari variabel yang telah ditunjuk alamat memorinya oleh pointer. Sebagai contoh: int x = 10; int *y; y = &x; *y = 12; cout<<x; // Nilai yang tampil x bukan lagi 10, melakinkan 12.
Contoh Penerapan Pointer 1: #include <iostream.h> #include <conio.h> main() int nilai = 100; int *x = &nilai; *x = 9; cout<<nilai; getch();
Contoh Penerapan Pointer 2: #include <iostream.h> #include <conio.h> main() int nilai[4] = 2,3,5,2; int *x = nilai; int index; x[0] = 9; x[1] = 9; for(index=0;index<4;index++) cout<<nilai[index]<<","; getch();
Reference (&) Digunakan untuk menunjukkan alamat memori suatu variabel. Biasanya digunakan untuk memberikan alamat variabel ke pointer Dapat pula digunakan pada parameter pembautan fungsi atau prosedur untuk menjadi parameter reference Parameter reference adalah parameter yang dapat digunakan untuk mengendalikan nilai variabel pemasuknya
Contoh Penerapan Reference: #include <iostream.h> #include <conio.h> void proc(int &a) a = a + 2; main() int x = 10; proc(x); cout<<x; getch();
Parameter Reference variabel Array??? Untuk membuat parameter reference yang menerima variabel bertipe array maka lebih mudahnya dapat menggunakan pointer. Contoh: void namaproc(int *a) Procedure diatas memiliki parameter a sebagai pointer bertipe int. Parameter ini dapat sebagai reference untuk variabel array bertipe int. Penggunaannya sudah barang tentu variabel yang di masukkan adalah variabel array. Sebagai contoh: int a[2] = 2,3; namaproc(a);
Contoh #include <iostream.h> #include <conio.h> void proc(int *a) a[0] = 100; a[1] = 200; main() int x[] = 2,4,2,1; proc(x); for(int i=0; i<4; i++) cout<<x[i]<<","; getch();
Contoh Kasus Buatlah structure bernama barang yang beriisikan anggotanya: Nobrg Nmbrg Hrgbarang Stok Buatlah procedure bernama isidata untuk mengisi struct diatas dengan parameter pointer b bertipe struct barang, dan n bertipe int Isi procedure adalah melakukan perulang sebanyak nilai parameter n dan menanyakan user untuk mengisikan masing-masing elemen struct parameter b. Buatlah procedure tampildata untuk menampilkan semua isi data dari parameter pointer b bertipe struct barang, dan n bertipe int. Isi Procedure adalah melakukan perulangan sebanyak nilai parameter n dan menampilkan masing-masing anggota yang ada pada struct parameter b. Gunakan struct dan kedua procedure dirangkai di program utama.
#include <iostream> #include <conio> struct Barang char nobrg[5]; char nmbrg[30]; long hrgbarang; int stok; ;
void isidata(barang *b, int n) int index; for(index=0; index < n; index++) cout<<"data ke-"<<(index+1)<<endl; cout<<"no. Barang : "; cin>>b[index].nobrg; cout<<"nama Barang : "; cin.getline(b[index].nmbrg, 30); cin.getline(b[index].nmbrg, 30); cout<<"harga Barang : "; cin>>b[index].hrgbarang; cout<<"stok : "; cin>>b[index].stok;
void tampildata(barang *b, int n) int i; for(i=0;i<n;i++) cout<<"data ke-"<<(i+1)<<endl; cout<<"no. Barang : "<< b[i].nobrg <<endl; cout<<"nama Barang : "<< b[i].nmbrg <<endl; cout<<"harga Barang : "<< b[i].hrgbarang <<endl; cout<<"stok : "<< b[i].stok <<endl;
main() Barang b[10]; isidata(b, 3); clrscr(); cout<<"isi Data Struct Barang adalah : \n"; tampildata(b, 3); getch();
Latihan: Buatlah struktur data karyawan terdiri dari : nip, nama, jabatan, golongan Buatlah procedure isidata untuk mengisi data karyawan sesuai masukkan jumlah karyawan Buatlah fungsi tunjanganjabatan untuk menghasilkan nilai tunjangan berdasarkan jabatan karyawan. Jika jabatan direktur maka tunjangan 5jt Jika jabatan manager maka tunjangan 2jt Jika jabatan staff maka tunjangan 200rb Buatlah fungsi gajipokok untuk menghasilkan nilai gaji pokok karyawan berdasarkan golongan karyawan Jika golongan 1 maka gaji pokok 2jt Jika golongan II maka gaji pokok 2.5jt Jika golongan III maka gaji pokok 3.7jt Buatlah procedure tampildata untuk menampilkan seluruh data karyawan yang telah terisi, beserta tunjangan jabatan, gaji pokoknya serta total gaji yang diterima karyawan Buatlah program utamanya dan gunakan struktur serta procedure isidata dan tampildata