algoritma dan struktur data - tipe data compound
DESCRIPTION
Pengenalan tipe data compound yang ada pada C++TRANSCRIPT
Pendahuluan
Tipe data gabungan (compound) adalah sebuah tipe data yang dibentuk dari tipe data primitif atau komposit yang ada pada program.
Proses pembentukan tipe data gabungan ini disebut dengan komposisi (composition)
Larik
Larik merupakan tempat penyimpanan elemen secara kontigu dengan tipe yang seragam pada indeks-indeks tertentu.
Misalkan: ● Larik yang terdiri dari 5 bilangan bulat● Larik yang terdiri dari 10 karakter● dll
Mendefinisikan Larik
Cara mendefinisikan larik adalah dengan:
tipe nama_array[besar_array];
Contoh:
Indeks: 0 1 2 3 4
int foo[5]; // larik bertipe integer dengan besar 5 buahint bar[5] = {46, 93, 99, 27, 26}; // larik bertipe integer yang diinisialisasi
46 93 99 27 26
Contoh operasi terhadap larik
Mengakses Larik
#include <iostream>using namespace std;
int main() { int foo[5]; // array bertipe integer dengan besar 5 buah foo[2] = 13; // mengisi array pada indeks ke-2 cout << “isi array indeks ke-2 adalah: ” << foo[2];}
Pointer
Pointer berkaitan dengan pengaksesan memory tempat menyimpan dari sebuah variabel.
Pointer memungkinkan kita menyimpan alamat penyimpanan suatu variabel pada variabel lainnya. Dan mengambil nilai dari suatu variabel menggunakan alamat yang diketahui.
Pointer - Reference operator (&)
Alamat dari variabel dapat diperoleh dengan menyertakan tanda “&” sebelum nama variabelnya.
Contoh: foo = &contohVar;
Pada contoh tersebut, variabel foo akan diisi dengan alamat dari variabel bernama “contohVar”.
Pointer - Dereference Operator (*)
Dereference operator digunakan untuk mengakses nilai yang dari alamat variabel yang ditunjuk.
Contoh:
varKu = 25;int adr = &varKu; // menyimpan address dalam integerint isi = *adr; // maka variabel “isi” akan bernilai 25
Ilustrasi Pointer
1776
25
25
myVar = 25;foo = &myvar;bar = *foo;
foo
memory
bar
… 1775 1776 1777 1778 ...myVar
Contoh Pointer#include <iostream>
using namespace std;
int main () {
int nilaiPertama, nilaiKedua;
int * pointerku;
pointerku = &nilaiPertama; // arahkan ke variabel nilaiPertama
*pointerku = 10; // isi nilai dari alamat pointerku (nilaiPertama)
pointerku = &nilaiKedua; // arahkan ke variabel nilaiKedua
*pointerku = 20; // isi nilai dari alamat pointerku (nilaiKedua)
cout << "nilai pertama: " << nilaiPertama << '\n'; // bernilai 10
cout << "nilai kedua: " << nilaiKedua << '\n'; // bernilai 20
return 0;
}
Tipe Alias - typedef
Fungsi alias sama seperti artinya dirinya yaitu memberi nama yang lain untuk sesuatu dalam hal ini tipe.
Dengan pendefinisian typedef, maka kita dapat memanggil tipe bentukan dengan alias yang kita tentukan.
Pendefinisian Alias
Pendefinisian alias mengikuti aturan berikut:
typedef tipe nama_tipe;
Contoh:typedef char karakter; // kita dapat memakai karakter sebagai tipe chartypedef char[5] kata; // kita dapat memakai kata sebagai tipe char*
karakter x = “x”;kata perintah = {“d”,”u”,”d”,”u”,”k”}
Struct
Struct digunakan untuk membuat tipe baru yang terdiri dari kumpulan tipe lainnya sehingga lebih tertata.
Biasanya struct terdiri dari data kecil yang bisa dikelompokkan menjadi 1 struktur
Pendefinisian Struct
Pendefinisian struct mengikuti ketentuan berikut:
struct { … } nama_struktur;
Contoh:struct { char golonganDarah; int tinggiBadan; string nama;} Pasien;
// Telah terdefinisi Pasien, kita isi nilainya
Pasien.golonganDarah = “A”;Pasien.tinggiBadan = “180”;Pasien.nama = ”Wico”;
Kombinasi Typedef - Struct
Jika kita akan memakai struktur tipe secara berulang, kita dapat menggunakan typedef sehingga tipe bentukan tersebut dapat dipakai kembali. Contoh:
type struct { char golongan; int kapasitas;} ruangan;
// Telah terdefinisi tipe ruangan, yang dapat dipakairuangan ruangKu, ruangMu;
kelasKu.golongan = ”A”;kelasKu.kapasitas = 100;
kelasMu.golongan = “B”;kelasMu.kapasitas = 50;