Algoritma dan Pemrograman 1 C++ Struct & Pointer Agung Sasongko, M.Kom
Pengertian “struct 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 { char char char char };
data_mhs nim[9]; nama[30]; gender; 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 struktur mahasiswa.
dependensi
dengan
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
#include 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 #include 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 { cout<<"No. Barang cout<<"Nama Barang cout<<"Harga Barang cout<<"Stok }
b) : : : :
"<< "<< "<< "<<
b.nobrg <<endl; b.nmbrg <<endl; b.hrgbarang <<endl; 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
: ";
cout<<"Nama Barang
: ";
cin>>b.nobrg;
cin.getline(b.nmbrg, 30);
cin.getline(b.nmbrg, 30);
}
cout<<"Harga Barang
: ";
cin>>b.hrgbarang;
cout<<"Stok
: ";
cin>>b.stok;
Pointer (Penunjuk (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 #include main() { int nilai = 100; int *x = &nilai; *x = 9; cout<
Contoh Penerapan Pointer 2: #include #include 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<
}
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 #include 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 #include 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 #include 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
: ";
cout<<"Nama Barang
: ";
cin>>b[index].nobrg;
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
} }
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:: 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