Program ini membahas tentang array of record, yang merupakan array dimana elemennya adalah record. Program ini menjelaskan konsep array, record, dan array of record beserta contoh kode programnya. Program ini juga memberikan latihan dan tugas untuk mempraktikkan penggunaan array of record dalam mengolah data mahasiswa dan pegawai.
2. 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.
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 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
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 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)
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 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;
14. 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;
}
}
15. 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
16. 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
17. Pengayaan
Bagaimana cara input data nama yg lebih
dari satu kata (contoh : Erick Paulus)
Bagaimana membuat sort data untuk tipe
String