Array of Record
Akmal, S.Si, MT
Erick Paulus, S.Si. M.Kom
Mata Kuliah : Struktur Data
Tujuan
 Mahasiswa dapat menjelaskan pengertian
array of record dan bisa menerangkan
operasi dasar menggunakan record dan
Array or Record dengan benar
 Mahasiswa dapat : Mengoperasikan dan
membuat program dari semua algoritma
menggunakan record dan array of record
dengan benar.
Pokok Bahasan
 Array
 Record
 Array of Record
Array / Larik
 Array adalah suatu tipe data bentukan yang menyimpan
sekumpulan elemen data yang bertipe sama, dan memiliki indeks.
 Indeks array harus tipe data yang menyatakan keterurutan,
misalnya integer atau karakter
 Penyimpanan di memori secara kontigu.
Array 1 Dimensi
 Setiap elemen larik ditulis dengan notasi :
n-1
∑ A[i] = A[ 0 ], A[ 1 ], A[ 2 ], A[ 3 ], A[ 4 ], …. , A[ n-1 ]
i=0
 Angka di dalam kurung siku menyatakan indeks array yang
dimulai dari 0 sampai dengan (n-1) yang diinginkan.
Deklarasi
 Untuk bisa membuat program modular dengan melewatkan
(passing) array baik by value atau by referensi maka
disarankan untuk membuat cara sebagai berikut:
 Definisikan suatu tipe alias dari data bertipe array
 Variabel array kemudian mengacu ke tipe alias tersebut
 Contoh :
typedef int larik[10];
larik A;
A merupakan sebuah variabel yang bertipe array of integer
dengan ukuran maksimal 10 elemen dengan index 0 .. 9
typedef int larik[10]; //pendefinisian alias array int
void banyakData(int& n);
void isiLarik(larik& a, int n);
void printLarik(larik a, int n);
void cariRata(larik a, int n, float& rata);
main() {
larik x; // variabel array x bertipe alias larik
float rata2;
int n;
banyakData(n)
isiLarik(x,n);
printLarik(x,n);
cariRata(x,n,rata2);
cout<<"Rata-rata = "<<rata2<<endl;
}
void banyakData(int& n);{ // Input banyak data
cout<<"Banyak data : "; cin>>n;
}
void isiLarik(larik& a, int n){ // Input data larik
for (int i=0;i<n;i++) {
cout<<"Masukkan data ke- "<<(i+1)<<" : "; cin>>a[i];
}
}
void printLarik(larik a, int n){ //Mencetak data larik
cout <<"Data yang sudah dimasukkan" <<endl;
cout <<"-----------------------------"<<endl;
for(int i=0;i<n;i++) {
cout <<"Data ke-"<<(i+1)<<" = "<< a[i] <<endl;
}
}
void cariRata(larik a, int n, float& rata){
float jumlah=0; // Ubah jadi fungsi ?
for (int i=0;i<n;i++) {
jumlah=jumlah+a[i];
}
rata=jumlah/n;
}
Record / Structure
 Record adalah suatu tipe data bentukan
yang merupakan kumpulan dari atribut-
atribut suatu objek.
 Pada record tipe elemen bisa berbeda-
beda tidak seperti array yang
mengharuskan mempunyai tipe elemen
yang sama.
Deklarasi record / structure
 Cara mengakses variabel di dalam record/struct adalah
dengan operator (.).
 Misalkan terdapat nama record/struct mhs, dan variabel
yang akan diakses di dalamnya adalah NPM, maka cara
mengaksesnya adalah “ mhs.npm “yang artinya kita
mengakses npm yang merupakan satu atribut dari data
mhs.
struct namaRecord {
<tipe Atribut 1> Atribut1;
<tipe Atribut 2> Atribut2;
. . . . . . . . . . . . . . .
<tipe Atribut n> Atributn;
};
Contoh:
 Akan dibuat sebuah program untuk mengelola koordinat kartesius yang memiliki
koordinat (absis, ordinat).
 Program akan dipecah menjadi input, proses dan output.
 Struktur data yang digunakan adalah tipe record.
 A, B, C, D, T adalah titik-titik yang ada
dalam koordinat kartesian
 T merupakan titik tengah dari 2 titik A dan B,
 C merupakan titik hasil dari pencerminan
titik A terhadap sumbu X
 D merupakan titik hasil dari pencerminan
titik A terhadap sumbu Y
1 2 3 4 5 6-1-2-3
1
2
3
4
5
-1
-2
-3
A(2,1)
T(4,2)
B(6,3)
C(2,-1)
D(-2,1)
X (Absis)
Y (Ordinat)
struct koordinat {
float absis;
float ordinat;
};
void getPoint( koordinat& ttk){
cout<<"Masukkan absis = ";cin >> ttk.absis;
cout<<"Masukkan ordinat = ";cin >> ttk.ordinat;
}
void printPoint( koordinat ttk){
cout<< "("<<ttk.absis<<","<< ttk.ordinat<<")"<<endl;
}
main(){
koordinat a,b,c;
cout << "Input Titik a "<<endl; getPoint(a);
cout << "Input Titik b "<<endl; getPoint(b);
cout << "Titik a = "; printPoint(a);
cout << "Titik b = "; printPoint(b);
}
Latihan dan Tugas
1. Buatlah fungsi untuk :
a. Mencari titik tengah (T) dari 2 buah koordinat A dan B.
Diketahui rumus untuk titik tengah adalah:
T.absis = (A.absis + B.ordinat) / 2
T.ordina t= (A.ordinat + B.ordinat) / 2
b. Mencari koordinat hasil pencerminan terhadap sumbu X dan terhadap sumbu Y
2. Buatlah program untuk mencari jumlah biaya parkir dari selisih 2 waktu (datang dan
pulang) dengan aturan 1 jam pertama = Rp. 2000 dan per jam berikutnya = Rp.
2000. Skema jam (00-23)
Contoh tampilan yang diinginkan:
Jam Datang =
Jam Pulang = 11 : 13 : 25
Lama Parkir = 1 : 3 : 15
Bayar = Rp. 4000
Array of Record
 Elemen array dapat juga digunakan untuk
data yang bertipe terstruktur (record).
Caranya :
1. membuat tipe nama record / structure
2. membuat nama alias tipe array yang
elemennya record/struct
3. deklarasikan variable-variabel yang
mengacu pada nama tipe alias array.
Contoh deklarasi array of record
 Misalkan akan dibuat 3 buah fungsi untuk menentukan ukuran dari array,
input data dan pencetakan data dengan header sbb :
void banyakData(int& n);
void inputMahasiswa (LarikMhs& Mhs, int n);
void cetakMahasiswa (LarikMhs Mhs, int n);
struct mahasiswa {
char NPM[8] ;
char nama[20];
int nilai;
};
typedef mahasiswa LarikMhs[10];
LarikMhs mhs;
void banyakData(int& n);
void inputMahasiswa (LarikMhs& Mhs, int n);
void cetakMahasiswa(LarikMhs Mhs, int n);
main(){
LarikMhs mhs;
int n;
banyakData(n);
inputMahasiswa(mhs,n);
cetakMahasiswa(mhs,n);
getch();
}
void banyakData(int& n){ // Input banyak data
cout<<"Banyak data : "; cin>>n;
}
void inputMahasiswa (LarikMhs& Mhs, int n) {
for (int i=0;i<n;i++) {
cout<<"masukan data mahasiswa ke- "<<(i+1)<<endl;
cout<<"NPM : "; cin>>Mhs[i].NPM;
cout<<"Nama : "; cin>>Mhs[i].nama;
cout<<"Nilai : "; cin>>Mhs[i].nilai;
}
}
void cetakMahasiswa(LarikMhs Mhs, int n){
cout<<"PENCETAKAN DATA MAHASISWA "<<endl;
for (int i=0;i<n;i++) {
cout<<Mhs[i].NPM<<Mhs[i].nama<<Mhs[i].nilai<<endl;
}
}
Latihan
 Buatlah fungsi untuk
Array of record
mahasiswa:
 Mencari nilai rata-rata
mhs
 Mencari nilai tertinggi mhs
 Mencari nilai terendah
mhs
 Sorting (bubble sort 
ascending) berdasarkan
npm
Tugas
 Buatlah program modular untuk menghitung rata-rata gaji, gaji tertinggi, gaji terendah dan
mengurutkan daftar pegawai berdasarkan NIP secara ascending dari suatu kumpulan data record
pegawai yang memiliki atribut (NIP : string, nama : string dan gol : int). Aturan gaji adalah :
Golongan Gaji
1 2.000.000
2 3.000.000
3 5.000.000
4 8.000.000
 Fungsi yang diperlukan antara lain : main, inputPegawai, cetakDaftar, cariGaji, rataRataGaji,
gajiTerendah, gajiTertinggi, sorting , dll
Bentuk tampilan daftar pegawai adalah sebagai berikut :
DAFTAR GAJI PEGAWAI PT. INGIN SUKSES
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No NIP NAMA Gol Gaji
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 120001 Ali Sukiman 2 3.000.000
2. 120005 Iman Wardiman 3 5.000.000
.......
N ........... .......................... ................
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gaji Tertinggi : 5.000.000
Gaji Terendah : 3.000.000
Rata-rata Gaji : 4.000.000
Pengayaan
 Bagaimana cara input data nama yg lebih
dari satu kata (contoh : Erick Paulus)
 Bagaimana membuat sort data untuk tipe
String

2. Array of Record (Struktur Data)

  • 1.
    Array of Record Akmal,S.Si, MT Erick Paulus, S.Si. M.Kom Mata Kuliah : Struktur Data
  • 2.
    Tujuan  Mahasiswa dapatmenjelaskan pengertian array of record dan bisa menerangkan operasi dasar menggunakan record dan Array or Record dengan benar  Mahasiswa dapat : Mengoperasikan dan membuat program dari semua algoritma menggunakan record dan array of record dengan benar.
  • 3.
    Pokok Bahasan  Array Record  Array of Record
  • 4.
    Array / Larik Array adalah suatu tipe data bentukan yang menyimpan sekumpulan elemen data yang bertipe sama, dan memiliki indeks.  Indeks array harus tipe data yang menyatakan keterurutan, misalnya integer atau karakter  Penyimpanan di memori secara kontigu. Array 1 Dimensi  Setiap elemen larik ditulis dengan notasi : n-1 ∑ A[i] = A[ 0 ], A[ 1 ], A[ 2 ], A[ 3 ], A[ 4 ], …. , A[ n-1 ] i=0  Angka di dalam kurung siku menyatakan indeks array yang dimulai dari 0 sampai dengan (n-1) yang diinginkan.
  • 5.
    Deklarasi  Untuk bisamembuat program modular dengan melewatkan (passing) array baik by value atau by referensi maka disarankan untuk membuat cara sebagai berikut:  Definisikan suatu tipe alias dari data bertipe array  Variabel array kemudian mengacu ke tipe alias tersebut  Contoh : typedef int larik[10]; larik A; A merupakan sebuah variabel yang bertipe array of integer dengan ukuran maksimal 10 elemen dengan index 0 .. 9
  • 6.
    typedef int larik[10];//pendefinisian alias array int void banyakData(int& n); void isiLarik(larik& a, int n); void printLarik(larik a, int n); void cariRata(larik a, int n, float& rata); main() { larik x; // variabel array x bertipe alias larik float rata2; int n; banyakData(n) isiLarik(x,n); printLarik(x,n); cariRata(x,n,rata2); cout<<"Rata-rata = "<<rata2<<endl; } void banyakData(int& n);{ // Input banyak data cout<<"Banyak data : "; cin>>n; } void isiLarik(larik& a, int n){ // Input data larik for (int i=0;i<n;i++) { cout<<"Masukkan data ke- "<<(i+1)<<" : "; cin>>a[i]; } } void printLarik(larik a, int n){ //Mencetak data larik cout <<"Data yang sudah dimasukkan" <<endl; cout <<"-----------------------------"<<endl; for(int i=0;i<n;i++) { cout <<"Data ke-"<<(i+1)<<" = "<< a[i] <<endl; } } void cariRata(larik a, int n, float& rata){ float jumlah=0; // Ubah jadi fungsi ? for (int i=0;i<n;i++) { jumlah=jumlah+a[i]; } rata=jumlah/n; }
  • 7.
    Record / Structure Record adalah suatu tipe data bentukan yang merupakan kumpulan dari atribut- atribut suatu objek.  Pada record tipe elemen bisa berbeda- beda tidak seperti array yang mengharuskan mempunyai tipe elemen yang sama.
  • 8.
    Deklarasi record /structure  Cara mengakses variabel di dalam record/struct adalah dengan operator (.).  Misalkan terdapat nama record/struct mhs, dan variabel yang akan diakses di dalamnya adalah NPM, maka cara mengaksesnya adalah “ mhs.npm “yang artinya kita mengakses npm yang merupakan satu atribut dari data mhs. struct namaRecord { <tipe Atribut 1> Atribut1; <tipe Atribut 2> Atribut2; . . . . . . . . . . . . . . . <tipe Atribut n> Atributn; };
  • 9.
    Contoh:  Akan dibuatsebuah program untuk mengelola koordinat kartesius yang memiliki koordinat (absis, ordinat).  Program akan dipecah menjadi input, proses dan output.  Struktur data yang digunakan adalah tipe record.  A, B, C, D, T adalah titik-titik yang ada dalam koordinat kartesian  T merupakan titik tengah dari 2 titik A dan B,  C merupakan titik hasil dari pencerminan titik A terhadap sumbu X  D merupakan titik hasil dari pencerminan titik A terhadap sumbu Y 1 2 3 4 5 6-1-2-3 1 2 3 4 5 -1 -2 -3 A(2,1) T(4,2) B(6,3) C(2,-1) D(-2,1) X (Absis) Y (Ordinat)
  • 10.
    struct koordinat { floatabsis; float ordinat; }; void getPoint( koordinat& ttk){ cout<<"Masukkan absis = ";cin >> ttk.absis; cout<<"Masukkan ordinat = ";cin >> ttk.ordinat; } void printPoint( koordinat ttk){ cout<< "("<<ttk.absis<<","<< ttk.ordinat<<")"<<endl; } main(){ koordinat a,b,c; cout << "Input Titik a "<<endl; getPoint(a); cout << "Input Titik b "<<endl; getPoint(b); cout << "Titik a = "; printPoint(a); cout << "Titik b = "; printPoint(b); }
  • 11.
    Latihan dan Tugas 1.Buatlah fungsi untuk : a. Mencari titik tengah (T) dari 2 buah koordinat A dan B. Diketahui rumus untuk titik tengah adalah: T.absis = (A.absis + B.ordinat) / 2 T.ordina t= (A.ordinat + B.ordinat) / 2 b. Mencari koordinat hasil pencerminan terhadap sumbu X dan terhadap sumbu Y 2. Buatlah program untuk mencari jumlah biaya parkir dari selisih 2 waktu (datang dan pulang) dengan aturan 1 jam pertama = Rp. 2000 dan per jam berikutnya = Rp. 2000. Skema jam (00-23) Contoh tampilan yang diinginkan: Jam Datang = Jam Pulang = 11 : 13 : 25 Lama Parkir = 1 : 3 : 15 Bayar = Rp. 4000
  • 12.
    Array of Record Elemen array dapat juga digunakan untuk data yang bertipe terstruktur (record). Caranya : 1. membuat tipe nama record / structure 2. membuat nama alias tipe array yang elemennya record/struct 3. deklarasikan variable-variabel yang mengacu pada nama tipe alias array.
  • 13.
    Contoh deklarasi arrayof record  Misalkan akan dibuat 3 buah fungsi untuk menentukan ukuran dari array, input data dan pencetakan data dengan header sbb : void banyakData(int& n); void inputMahasiswa (LarikMhs& Mhs, int n); void cetakMahasiswa (LarikMhs Mhs, int n); struct mahasiswa { char NPM[8] ; char nama[20]; int nilai; }; typedef mahasiswa LarikMhs[10]; LarikMhs mhs;
  • 14.
    void banyakData(int& n); voidinputMahasiswa (LarikMhs& Mhs, int n); void cetakMahasiswa(LarikMhs Mhs, int n); main(){ LarikMhs mhs; int n; banyakData(n); inputMahasiswa(mhs,n); cetakMahasiswa(mhs,n); getch(); } void banyakData(int& n){ // Input banyak data cout<<"Banyak data : "; cin>>n; } void inputMahasiswa (LarikMhs& Mhs, int n) { for (int i=0;i<n;i++) { cout<<"masukan data mahasiswa ke- "<<(i+1)<<endl; cout<<"NPM : "; cin>>Mhs[i].NPM; cout<<"Nama : "; cin>>Mhs[i].nama; cout<<"Nilai : "; cin>>Mhs[i].nilai; } } void cetakMahasiswa(LarikMhs Mhs, int n){ cout<<"PENCETAKAN DATA MAHASISWA "<<endl; for (int i=0;i<n;i++) { cout<<Mhs[i].NPM<<Mhs[i].nama<<Mhs[i].nilai<<endl; } }
  • 15.
    Latihan  Buatlah fungsiuntuk Array of record mahasiswa:  Mencari nilai rata-rata mhs  Mencari nilai tertinggi mhs  Mencari nilai terendah mhs  Sorting (bubble sort  ascending) berdasarkan npm
  • 16.
    Tugas  Buatlah programmodular untuk menghitung rata-rata gaji, gaji tertinggi, gaji terendah dan mengurutkan daftar pegawai berdasarkan NIP secara ascending dari suatu kumpulan data record pegawai yang memiliki atribut (NIP : string, nama : string dan gol : int). Aturan gaji adalah : Golongan Gaji 1 2.000.000 2 3.000.000 3 5.000.000 4 8.000.000  Fungsi yang diperlukan antara lain : main, inputPegawai, cetakDaftar, cariGaji, rataRataGaji, gajiTerendah, gajiTertinggi, sorting , dll Bentuk tampilan daftar pegawai adalah sebagai berikut : DAFTAR GAJI PEGAWAI PT. INGIN SUKSES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No NIP NAMA Gol Gaji - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 120001 Ali Sukiman 2 3.000.000 2. 120005 Iman Wardiman 3 5.000.000 ....... N ........... .......................... ................ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gaji Tertinggi : 5.000.000 Gaji Terendah : 3.000.000 Rata-rata Gaji : 4.000.000
  • 17.
    Pengayaan  Bagaimana carainput data nama yg lebih dari satu kata (contoh : Erick Paulus)  Bagaimana membuat sort data untuk tipe String