struct & pointer - cilikibi.files.wordpress.com · c++ struct & pointer ... isi procedure...
Embed Size (px)
TRANSCRIPT

AlgoritmaAlgoritma dandan PemrogramanPemrograman 11
C++C++
Struct & Pointer
Agung Sasongko, M.Kom

PengertianPengertian ““structstruct” / ” / strukturstruktur
struct adalah statement yang berguna
untuk mengkelompokkan sejumlah data
dengan tipe yang berlainan.

BentukBentuk UmumUmum
Pendeklarasian Struktur sebagai berikut:
struct nama_struktur
{
tipe_data var_anggota_struktur;
...
};

ContohContoh DeklarasiDeklarasi StrukturStruktur
struct Mahasiswa
{
char nim[9];
char nama[20];
int thnmasuk;
};

ContohContoh PenggunaanPenggunaan StrukturStruktur
Nama_struktur nama_variabel;
Contoh:
Mahasiswa mhs;
Cara Akses Anggota Struktur:Nama_variabel.nama_anggota
Contoh:
strcpy( mhs.nim, “18111234”);
mhs.thnmasuk = 2011;
cin>>mhs.nim;
cout<<mhs.nama;

Kasus 1Kasus 1
Buatlah sebuah struktur untuk bentuk
data sebagai berikut:
NIM Nama Gender Alamat
char (9) char(30) char(1) char(255)

JawabJawab KasusKasus 11
Bentuk struktur yaitu:
struct data_mhs
{
char nim[9];
char nama[30];
char gender;
char alamat[255]
};
NIM Nama Gender Alamat
char (9) char(30) char(1) char(255)

Kasus 2Kasus 2
Buatlah struktur sebagai berikut:
Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas
char(20) float float float

Jawab Kasus 2Jawab Kasus 2
Bentuk struktur nya yaitu:
struct nilai_mk
{
char nm_mk[20];
float nilai_tugas;
float nilai_uts;
float nilai_uas;
};
Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas
char(20) float float float

Kasus 3Kasus 3
Buatlah struktur kombinasi seperti berikut:
Struktur nilai_mk dependensi dengan
struktur mahasiswa.
NIM Nama Gender Alamat nilai
char (9) char(30) char(1) char(255) nilai_mk
Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas
char(20) float float float
nilai_mk

Jawab Kasus 3Jawab Kasus 3struct 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;
};

ContohContoh KasusKasus
Buatlah Struct bernama Mahasiswa dengananggota 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 bernilai2012
◦ 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();
}

ContohContoh KasusKasus 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 (Pointer (PenunjukPenunjuk))
Merupakan variabel yang bertugas untuk
menunjuk ke alamat memori suatu
variabel.
PembuatanVariabel Pointer:char *nama;
int *a;
float *x;

MenunjukMenunjuk AlamatAlamat MemoriMemoriVariabelVariabel
Untuk memberi informasi mengenai
alamat memori dari suatu variabel maka
gunakan tanda reference (&).
Contoh:
char *x;
char y[10] = “BSI OKE”;
x = &y;

ApaApa yang yang bisabisa dilakukandilakukan pointer?pointer?
Melalui pointer kita dapat mengendalikan isi nilaidari variabel yang telah ditunjuk alamatmemorinya oleh pointer.
Sebagai contoh:
int x = 10;
int *y;
y = &x;
*y = 12;
cout<<x; // Nilai yang tampil x bukan lagi 10, melakinkan 12.

ContohContoh PenerapanPenerapan Pointer 1:Pointer 1:#include <iostream.h>
#include <conio.h>
main()
{
int nilai = 100;
int *x = &nilai;
*x = 9;
cout<<nilai;
getch();
}

ContohContoh PenerapanPenerapan Pointer 2: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 (&)Reference (&)
Digunakan untuk menunjukkan alamatmemori suatu variabel.
Biasanya digunakan untuk memberikanalamat variabel ke pointer
Dapat pula digunakan pada parameter pembautan fungsi atau prosedur untukmenjadi parameter reference
◦ Parameter reference adalah parameter yang dapat digunakan untuk mengendalikan nilaivariabel pemasuknya

ContohContoh PenerapanPenerapan Reference: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 Parameter Reference variabelvariabel
Array???Array??? Untuk membuat parameter reference yang
menerima variabel bertipe array maka lebihmudahnya dapat menggunakan pointer.
Contoh:
void namaproc(int *a)
Procedure diatas memiliki parameter a sebagaipointer bertipe int. Parameter ini dapat sebagaireference untuk variabel array bertipe int.
Penggunaannya sudah barang tentu variabel yang dimasukkan adalah variabel array. Sebagai contoh:
int a[2] = {2,3};
namaproc(a);

ContohContoh#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();
}

ContohContoh KasusKasus 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();
}

LatihanLatihan:: Buatlah struktur data karyawan terdiri dari : nip, nama,
jabatan, golongan
Buatlah procedure isiData untuk mengisi data karyawansesuai masukkan jumlah karyawan
Buatlah fungsi tunjanganJabatan untuk menghasilkan nilaitunjangan 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 pokokkaryawan berdasarkan golongan karyawan
◦ Jika golongan “1” maka gaji pokok 2jtJika golongan “II” maka gaji pokok 2.5jt
Jika golongan “III” maka gaji pokok 3.7jt
Buatlah procedure tampilData untuk menampilkan seluruhdata karyawan yang telah terisi, beserta tunjangan jabatan, gajipokoknya serta total gaji yang diterima karyawan
Buatlah program utamanya dan gunakan struktur sertaprocedure isiData dan tampilData