Transcript
Page 1: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

AlgoritmaAlgoritma dandan PemrogramanPemrograman 11

C++C++

Struct & Pointer

Agung Sasongko, M.Kom

Page 2: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

PengertianPengertian ““structstruct” / ” / strukturstruktur

struct adalah statement yang berguna

untuk mengkelompokkan sejumlah data

dengan tipe yang berlainan.

Page 3: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

BentukBentuk UmumUmum

Pendeklarasian Struktur sebagai berikut:

struct nama_struktur

{

tipe_data var_anggota_struktur;

...

};

Page 4: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

ContohContoh DeklarasiDeklarasi StrukturStruktur

struct Mahasiswa

{

char nim[9];

char nama[20];

int thnmasuk;

};

Page 5: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

Page 6: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

Kasus 1Kasus 1

Buatlah sebuah struktur untuk bentuk

data sebagai berikut:

NIM Nama Gender Alamat

char (9) char(30) char(1) char(255)

Page 7: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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)

Page 8: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

Kasus 2Kasus 2

Buatlah struktur sebagai berikut:

Nama_matakuliah Nilai tugas Nilai_uts Nilai_uas

char(20) float float float

Page 9: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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

Page 10: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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

Page 11: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

};

Page 12: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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 ….”

Page 13: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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

}

Page 14: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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.

Page 15: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

#include <iostream>

#include <conio>

struct Barang

{

char nobrg[5];

char nmbrg[30];

long hrgbarang;

int stok;

};

Page 16: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

}

Page 17: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

main()

{

Barang b;

isiData(b);

clrscr();

cout<<"Isi Data Struct Barang adalah : \n";

tampilData(b);

getch();

}

Page 18: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

}

Page 19: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

Pointer (Pointer (PenunjukPenunjuk))

Merupakan variabel yang bertugas untuk

menunjuk ke alamat memori suatu

variabel.

PembuatanVariabel Pointer:char *nama;

int *a;

float *x;

Page 20: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

Page 21: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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.

Page 22: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

ContohContoh PenerapanPenerapan Pointer 1:Pointer 1:#include <iostream.h>

#include <conio.h>

main()

{

int nilai = 100;

int *x = &nilai;

*x = 9;

cout<<nilai;

getch();

}

Page 23: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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();

}

Page 24: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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

Page 25: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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();

}

Page 26: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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);

Page 27: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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();

}

Page 28: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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.

Page 29: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

#include <iostream>

#include <conio>

struct Barang

{

char nobrg[5];

char nmbrg[30];

long hrgbarang;

int stok;

};

Page 30: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

}

}

Page 31: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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;

}

}

Page 32: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

main()

{

Barang b[10];

isiData(b, 3);

clrscr();

cout<<"Isi Data Struct Barang adalah : \n";

tampilData(b, 3);

getch();

}

Page 33: Struct & Pointer - cilikibi.files.wordpress.com · C++ Struct & Pointer ... Isi Procedure adalah menampilkan masing-masing anggota yang ada pada struct parameter b. ... Pointer (Penunjuk)

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


Top Related